Skip to content

Commit a936f43

Browse files
committed
Implement #787
1 parent 0abef48 commit a936f43

26 files changed

+194
-181
lines changed

release-notes/VERSION

+2
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ Project: jackson-databind
3636
#769: Fix `JacksonAnnotationIntrospector.findDeserializer` to return `Object` (as per
3737
`AnnotationIntrospector`); similarly for other `findXxx(De)Serializer(...)` methods
3838
#781: Support handling of `@JsonProperty.required` for Creator methods
39+
#787: Add `ObjectMapper setFilterProvider(FilterProvider)` to allow chaining
40+
(suggested by rgoldberg@githin)
3941
- Remove old cglib compatibility tests; cause problems in Eclipse
4042

4143
2.5.4 (not yet released)

src/main/java/com/fasterxml/jackson/databind/ObjectMapper.java

+134-123
Large diffs are not rendered by default.

src/test/java/com/fasterxml/jackson/databind/BaseMapTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ protected ObjectReader objectReader() {
136136
}
137137

138138
protected ObjectReader objectReader(Class<?> cls) {
139-
return SHARED_MAPPER.reader(cls);
139+
return SHARED_MAPPER.readerFor(cls);
140140
}
141141

142142
/*

src/test/java/com/fasterxml/jackson/databind/TestJDKSerialization.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public void testObjectWriter() throws IOException
7676

7777
public void testObjectReader() throws IOException
7878
{
79-
ObjectReader origReader = MAPPER.reader(MyPojo.class);
79+
ObjectReader origReader = MAPPER.readerFor(MyPojo.class);
8080
final String JSON = "{\"x\":1,\"y\":2}";
8181
MyPojo p1 = origReader.readValue(JSON);
8282
assertEquals(2, p1.y);

src/test/java/com/fasterxml/jackson/databind/TestRootName.java

+7-7
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public void testRootViaWriterAndReader() throws Exception
4747
ObjectMapper mapper = rootMapper();
4848
String json = mapper.writer().writeValueAsString(new Bean());
4949
assertEquals("{\"rudy\":{\"a\":3}}", json);
50-
Bean bean = mapper.reader(Bean.class).readValue(json);
50+
Bean bean = mapper.readerFor(Bean.class).readValue(json);
5151
assertNotNull(bean);
5252
}
5353

@@ -67,14 +67,14 @@ public void testReconfiguringOfWrapping() throws Exception
6767
Bean result = mapper.readValue(jsonUnwrapped, Bean.class);
6868
assertNotNull(result);
6969
try { // must not have extra wrapping
70-
result = mapper.reader(Bean.class).with(DeserializationFeature.UNWRAP_ROOT_VALUE)
70+
result = mapper.readerFor(Bean.class).with(DeserializationFeature.UNWRAP_ROOT_VALUE)
7171
.readValue(jsonUnwrapped);
7272
fail("Should have failed");
7373
} catch (JsonMappingException e) {
7474
verifyException(e, "Root name 'a'");
7575
}
7676
// except wrapping may be expected:
77-
result = mapper.reader(Bean.class).with(DeserializationFeature.UNWRAP_ROOT_VALUE)
77+
result = mapper.readerFor(Bean.class).with(DeserializationFeature.UNWRAP_ROOT_VALUE)
7878
.readValue(jsonWrapped);
7979
assertNotNull(result);
8080
}
@@ -87,7 +87,7 @@ public void testRootUsingExplicitConfig() throws Exception
8787
String json = writer.writeValueAsString(new Bean());
8888
assertEquals("{\"wrapper\":{\"a\":3}}", json);
8989

90-
ObjectReader reader = mapper.reader(Bean.class).withRootName("wrapper");
90+
ObjectReader reader = mapper.readerFor(Bean.class).withRootName("wrapper");
9191
Bean bean = reader.readValue(json);
9292
assertNotNull(bean);
9393

@@ -102,16 +102,16 @@ public void testRootUsingExplicitConfig() throws Exception
102102
json = wrapping.writer().withoutRootName().writeValueAsString(new Bean());
103103
assertEquals("{\"a\":3}", json);
104104

105-
bean = wrapping.reader(Bean.class).withRootName("").readValue(json);
105+
bean = wrapping.readerFor(Bean.class).withRootName("").readValue(json);
106106
assertNotNull(bean);
107107
assertEquals(3, bean.a);
108108

109-
bean = wrapping.reader(Bean.class).withoutRootName().readValue("{\"a\":4}");
109+
bean = wrapping.readerFor(Bean.class).withoutRootName().readValue("{\"a\":4}");
110110
assertNotNull(bean);
111111
assertEquals(4, bean.a);
112112

113113
// and back to defaults
114-
bean = wrapping.reader(Bean.class).readValue("{\"rudy\":{\"a\":7}}");
114+
bean = wrapping.readerFor(Bean.class).readValue("{\"rudy\":{\"a\":7}}");
115115
assertNotNull(bean);
116116
assertEquals(7, bean.a);
117117
}

src/test/java/com/fasterxml/jackson/databind/contextual/TestContextAttributeWithDeser.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,13 @@ static class TestPOJO
5050
public void testSimplePerCall() throws Exception
5151
{
5252
final String INPUT = aposToQuotes("[{'value':'a'},{'value':'b'}]");
53-
TestPOJO[] pojos = MAPPER.reader(TestPOJO[].class).readValue(INPUT);
53+
TestPOJO[] pojos = MAPPER.readerFor(TestPOJO[].class).readValue(INPUT);
5454
assertEquals(2, pojos.length);
5555
assertEquals("a/0", pojos[0].value);
5656
assertEquals("b/1", pojos[1].value);
5757

5858
// and verify that state does not linger
59-
TestPOJO[] pojos2 = MAPPER.reader(TestPOJO[].class).readValue(INPUT);
59+
TestPOJO[] pojos2 = MAPPER.readerFor(TestPOJO[].class).readValue(INPUT);
6060
assertEquals(2, pojos2.length);
6161
assertEquals("a/0", pojos2[0].value);
6262
assertEquals("b/1", pojos2[1].value);
@@ -65,13 +65,13 @@ public void testSimplePerCall() throws Exception
6565
public void testSimpleDefaults() throws Exception
6666
{
6767
final String INPUT = aposToQuotes("{'value':'x'}");
68-
TestPOJO pojo = MAPPER.reader(TestPOJO.class)
68+
TestPOJO pojo = MAPPER.readerFor(TestPOJO.class)
6969
.withAttribute(KEY, Integer.valueOf(3))
7070
.readValue(INPUT);
7171
assertEquals("x/3", pojo.value);
7272

7373
// as above, should not carry on state
74-
TestPOJO pojo2 = MAPPER.reader(TestPOJO.class)
74+
TestPOJO pojo2 = MAPPER.readerFor(TestPOJO.class)
7575
.withAttribute(KEY, Integer.valueOf(5))
7676
.readValue(INPUT);
7777
assertEquals("x/5", pojo2.value);
@@ -80,7 +80,7 @@ public void testSimpleDefaults() throws Exception
8080
public void testHierarchic() throws Exception
8181
{
8282
final String INPUT = aposToQuotes("[{'value':'x'},{'value':'y'}]");
83-
ObjectReader r = MAPPER.reader(TestPOJO[].class).withAttribute(KEY, Integer.valueOf(2));
83+
ObjectReader r = MAPPER.readerFor(TestPOJO[].class).withAttribute(KEY, Integer.valueOf(2));
8484
TestPOJO[] pojos = r.readValue(INPUT);
8585
assertEquals(2, pojos.length);
8686
assertEquals("x/2", pojos[0].value);

src/test/java/com/fasterxml/jackson/databind/creators/RequiredCreatorTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public FascistPoint(@JsonProperty(value="x", required=true) int x,
1818
}
1919
}
2020

21-
private final ObjectReader POINT_READER = objectMapper().reader(FascistPoint.class);
21+
private final ObjectReader POINT_READER = objectMapper().readerFor(FascistPoint.class);
2222

2323
public void testRequiredAnnotatedParam() throws Exception
2424
{

src/test/java/com/fasterxml/jackson/databind/creators/TestPolymorphicCreators.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ public void testManualPolymorphicCatWithReorder() throws Exception
130130
public void testManualPolymorphicWithNumbered() throws Exception
131131
{
132132
final ObjectWriter w = MAPPER.writerFor(AbstractRoot.class);
133-
final ObjectReader r = MAPPER.reader(AbstractRoot.class);
133+
final ObjectReader r = MAPPER.readerFor(AbstractRoot.class);
134134

135135
AbstractRoot input = AbstractRoot.make(1, "oh hai!");
136136
String json = w.writeValueAsString(input);

src/test/java/com/fasterxml/jackson/databind/creators/TestValueUpdate.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ void setB(String b) {
4040
public void testValueUpdateWithCreator() throws Exception
4141
{
4242
Bean bean = new Bean("abc", "def");
43-
new ObjectMapper().reader(Bean.class).withValueToUpdate(bean).readValue("{\"a\":\"ghi\",\"b\":\"jkl\"}");
43+
new ObjectMapper().readerFor(Bean.class).withValueToUpdate(bean).readValue("{\"a\":\"ghi\",\"b\":\"jkl\"}");
4444
assertEquals("ghi", bean.getA());
4545
assertEquals("jkl", bean.getB());
4646
}

src/test/java/com/fasterxml/jackson/databind/deser/TestAnnotationIgnore.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public void testSimpleIgnore() throws Exception
5757

5858
public void testFailOnIgnore() throws Exception
5959
{
60-
ObjectReader r = MAPPER.reader(NoYOrZ.class);
60+
ObjectReader r = MAPPER.readerFor(NoYOrZ.class);
6161

6262
// First, fine to get "x":
6363
NoYOrZ result = r.readValue(aposToQuotes("{'x':3}"));

src/test/java/com/fasterxml/jackson/databind/deser/TestBeanDeserializer.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,7 @@ public void testPOJOFromEmptyString() throws Exception
269269
assertValidLocation(e.getLocation());
270270
}
271271
// should be ok to enable dynamically
272-
ObjectReader r = MAPPER.reader(Bean.class)
272+
ObjectReader r = MAPPER.readerFor(Bean.class)
273273
.with(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT);
274274
Bean result = r.readValue(quote(""));
275275
assertNull(result);
@@ -291,7 +291,7 @@ public void testPOJOFromEmptyArray() throws Exception
291291
}
292292

293293
// should be ok to enable dynamically:
294-
ObjectReader r = MAPPER.reader(Bean.class)
294+
ObjectReader r = MAPPER.readerFor(Bean.class)
295295
.with(DeserializationFeature.ACCEPT_EMPTY_ARRAY_AS_NULL_OBJECT);
296296
Bean result = r.readValue(JSON);
297297
assertNull(result);
@@ -318,7 +318,7 @@ public void testCaseInsensitiveDeserialization() throws Exception
318318
// Definitely not OK to enable dynamically - the BeanPropertyMap (which is the consumer of this particular feature) gets cached.
319319
mapper = new ObjectMapper();
320320
mapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);
321-
ObjectReader r = mapper.reader(Issue476Bean.class);
321+
ObjectReader r = mapper.readerFor(Issue476Bean.class);
322322
Issue476Bean result = r.readValue(JSON);
323323
assertEquals(result.value1.name, "fruit");
324324
assertEquals(result.value1.value, "apple");

src/test/java/com/fasterxml/jackson/databind/deser/TestDateDeserialization.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -390,7 +390,7 @@ public void testCustomDateWithAnnotation() throws Exception
390390

391391
// 27-Mar-2014, tatu: Let's verify that changing Locale won't break it;
392392
// either via context Locale
393-
result = MAPPER.reader(DateAsStringBean.class)
393+
result = MAPPER.readerFor(DateAsStringBean.class)
394394
.with(Locale.GERMANY)
395395
.readValue(INPUT);
396396
assertNotNull(result);
@@ -405,7 +405,7 @@ public void testCustomDateWithAnnotation() throws Exception
405405
assertEquals(25, c.get(Calendar.DAY_OF_MONTH));
406406

407407
// or, via annotations
408-
DateAsStringBeanGermany result2 = MAPPER.reader(DateAsStringBeanGermany.class).readValue(INPUT);
408+
DateAsStringBeanGermany result2 = MAPPER.readerFor(DateAsStringBeanGermany.class).readValue(INPUT);
409409
assertNotNull(result2);
410410
assertNotNull(result2.date);
411411
l = result2.date.getTime();

src/test/java/com/fasterxml/jackson/databind/deser/TestEnumDeserialization.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,7 @@ public void testNumbersToEnums() throws Exception
275275
assertSame(TestEnum.RULES, value);
276276

277277
// but can also be changed to errors:
278-
ObjectReader r = MAPPER.reader(TestEnum.class)
278+
ObjectReader r = MAPPER.readerFor(TestEnum.class)
279279
.with(DeserializationFeature.FAIL_ON_NUMBERS_FOR_ENUMS);
280280
try {
281281
value = r.readValue("1");

src/test/java/com/fasterxml/jackson/databind/deser/TestMapDeserialization.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,7 @@ public void testMapFromEmptyArray() throws Exception
312312
verifyException(e, "START_ARRAY token");
313313
}
314314
// should be ok to enable dynamically:
315-
ObjectReader r = MAPPER.reader(Map.class)
315+
ObjectReader r = MAPPER.readerFor(Map.class)
316316
.with(DeserializationFeature.ACCEPT_EMPTY_ARRAY_AS_NULL_OBJECT);
317317

318318
Map<?,?> result = r.readValue(JSON);

src/test/java/com/fasterxml/jackson/databind/deser/TestNullHandling.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public void testCustomRootNulls() throws Exception
4343
assertEquals("funny", str);
4444

4545
// as well as via ObjectReader
46-
ObjectReader reader = mapper.reader(String.class);
46+
ObjectReader reader = mapper.readerFor(String.class);
4747
str = reader.readValue("null");
4848
assertNotNull(str);
4949
assertEquals("funny", str);
@@ -67,7 +67,7 @@ public void testListOfNulls() throws Exception
6767
assertEquals(list.get(0), deser.get(0));
6868

6969
// as well as via ObjectReader
70-
ObjectReader reader = mapper.reader(type);
70+
ObjectReader reader = mapper.readerFor(type);
7171
deser = reader.readValue("[null]");
7272
assertNotNull(deser);
7373
assertEquals(1, deser.size());
@@ -90,7 +90,7 @@ public void testMapOfNulls() throws Exception
9090
assertEquals("funny", deser.get("key"));
9191

9292
// as well as via ObjectReader
93-
ObjectReader reader = mapper.reader(type);
93+
ObjectReader reader = mapper.readerFor(type);
9494
deser = reader.readValue("{\"key\":null}");
9595
assertNotNull(deser);
9696
assertEquals(1, deser.size());

src/test/java/com/fasterxml/jackson/databind/deser/TestSimpleTypes.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -422,7 +422,7 @@ public void testBase64Variants() throws Exception
422422
Assert.assertArrayEquals(INPUT, MAPPER.readValue(
423423
quote("YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoxMjM0NTY3ODkwYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoxMjM0NTY3ODkwWA=="),
424424
byte[].class));
425-
ObjectReader reader = MAPPER.reader(byte[].class);
425+
ObjectReader reader = MAPPER.readerFor(byte[].class);
426426
Assert.assertArrayEquals(INPUT, (byte[]) reader.with(Base64Variants.MIME_NO_LINEFEEDS).readValue(
427427
quote("YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoxMjM0NTY3ODkwYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoxMjM0NTY3ODkwWA=="
428428
)));

src/test/java/com/fasterxml/jackson/databind/filter/TestUnknownPropertyDeserialization.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ public void testUnknownHandlingIgnoreWithHandlerAndObjectReader()
163163
{
164164
ObjectMapper mapper = new ObjectMapper();
165165
mapper.clearProblemHandlers();
166-
TestBean result = mapper.reader(TestBean.class).withHandler(new MyHandler()).readValue(new StringReader(JSON_UNKNOWN_FIELD));
166+
TestBean result = mapper.readerFor(TestBean.class).withHandler(new MyHandler()).readValue(new StringReader(JSON_UNKNOWN_FIELD));
167167
assertNotNull(result);
168168
assertEquals(1, result._a);
169169
assertEquals(-1, result._b);

src/test/java/com/fasterxml/jackson/databind/jsontype/TestPolymorphicWithDefaultImpl.java

+8-8
Original file line numberDiff line numberDiff line change
@@ -115,48 +115,48 @@ static class ImplFor656 extends BaseFor656 {
115115

116116
public void testDeserializationWithObject() throws Exception
117117
{
118-
Inter inter = MAPPER.reader(Inter.class).readValue("{\"type\": \"mine\", \"blah\": [\"a\", \"b\", \"c\"]}");
118+
Inter inter = MAPPER.readerFor(Inter.class).readValue("{\"type\": \"mine\", \"blah\": [\"a\", \"b\", \"c\"]}");
119119
assertTrue(inter instanceof MyInter);
120120
assertFalse(inter instanceof LegacyInter);
121121
assertEquals(Arrays.asList("a", "b", "c"), ((MyInter) inter).blah);
122122
}
123123

124124
public void testDeserializationWithString() throws Exception
125125
{
126-
Inter inter = MAPPER.reader(Inter.class).readValue("\"a,b,c,d\"");
126+
Inter inter = MAPPER.readerFor(Inter.class).readValue("\"a,b,c,d\"");
127127
assertTrue(inter instanceof LegacyInter);
128128
assertEquals(Arrays.asList("a", "b", "c", "d"), ((MyInter) inter).blah);
129129
}
130130

131131
public void testDeserializationWithArray() throws Exception
132132
{
133-
Inter inter = MAPPER.reader(Inter.class).readValue("[\"a\", \"b\", \"c\", \"d\"]");
133+
Inter inter = MAPPER.readerFor(Inter.class).readValue("[\"a\", \"b\", \"c\", \"d\"]");
134134
assertTrue(inter instanceof LegacyInter);
135135
assertEquals(Arrays.asList("a", "b", "c", "d"), ((MyInter) inter).blah);
136136
}
137137

138138
public void testDeserializationWithArrayOfSize2() throws Exception
139139
{
140-
Inter inter = MAPPER.reader(Inter.class).readValue("[\"a\", \"b\"]");
140+
Inter inter = MAPPER.readerFor(Inter.class).readValue("[\"a\", \"b\"]");
141141
assertTrue(inter instanceof LegacyInter);
142142
assertEquals(Arrays.asList("a", "b"), ((MyInter) inter).blah);
143143
}
144144

145145
// [Databind#148]
146146
public void testDefaultAsNoClass() throws Exception
147147
{
148-
Object ob = MAPPER.reader(DefaultWithNoClass.class).readValue("{ }");
148+
Object ob = MAPPER.readerFor(DefaultWithNoClass.class).readValue("{ }");
149149
assertNull(ob);
150-
ob = MAPPER.reader(DefaultWithNoClass.class).readValue("{ \"bogus\":3 }");
150+
ob = MAPPER.readerFor(DefaultWithNoClass.class).readValue("{ \"bogus\":3 }");
151151
assertNull(ob);
152152
}
153153

154154
// same, with 2.5 and Void.class
155155
public void testDefaultAsVoid() throws Exception
156156
{
157-
Object ob = MAPPER.reader(DefaultWithVoidAsDefault.class).readValue("{ }");
157+
Object ob = MAPPER.readerFor(DefaultWithVoidAsDefault.class).readValue("{ }");
158158
assertNull(ob);
159-
ob = MAPPER.reader(DefaultWithVoidAsDefault.class).readValue("{ \"bogus\":3 }");
159+
ob = MAPPER.readerFor(DefaultWithVoidAsDefault.class).readValue("{ \"bogus\":3 }");
160160
assertNull(ob);
161161
}
162162

src/test/java/com/fasterxml/jackson/databind/node/TestTreeWithType.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ public void testIssue353() throws Exception
118118

119119
SavedCookie savedCookie = new SavedCookie("key", "v");
120120
String json = mapper.writeValueAsString(savedCookie);
121-
SavedCookie out = mapper.reader(SavedCookie.class).readValue(json);
121+
SavedCookie out = mapper.readerFor(SavedCookie.class).readValue(json);
122122

123123
assertEquals("key", out.name);
124124
assertEquals("v", out.value);

src/test/java/com/fasterxml/jackson/databind/objectid/TestObjectIdDeserialization.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,7 @@ public void testUnresolvedForwardReference()
345345
// [databind#299]: Allow unresolved ids to become nulls
346346
public void testUnresolvableAsNull() throws Exception
347347
{
348-
IdWrapper w = MAPPER.reader(IdWrapper.class)
348+
IdWrapper w = MAPPER.readerFor(IdWrapper.class)
349349
.without(DeserializationFeature.FAIL_ON_UNRESOLVED_OBJECT_IDS)
350350
.readValue(aposToQuotes("{'node':123}"));
351351
assertNotNull(w);
@@ -433,7 +433,7 @@ public void testCustomPoolResolver() throws Exception
433433
pool.put(5, new WithCustomResolution(5, 5));
434434
ContextAttributes attrs = MAPPER.getDeserializationConfig().getAttributes().withSharedAttribute(POOL_KEY, pool);
435435
String content = "{\"data\":[1,2,3,4,5]}";
436-
CustomResolutionWrapper wrapper = MAPPER.reader(CustomResolutionWrapper.class).with(attrs).readValue(content);
436+
CustomResolutionWrapper wrapper = MAPPER.readerFor(CustomResolutionWrapper.class).with(attrs).readValue(content);
437437
assertFalse(wrapper.data.isEmpty());
438438
for (WithCustomResolution ob : wrapper.data) {
439439
assertSame(pool.get(ob.id), ob);

src/test/java/com/fasterxml/jackson/databind/seq/ObjectReaderTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public void testParserFeatures() throws Exception
1212
{
1313
final String JSON = "[ /* foo */ 7 ]";
1414
// default won't accept comments, let's change that:
15-
ObjectReader reader = MAPPER.reader(int[].class)
15+
ObjectReader reader = MAPPER.readerFor(int[].class)
1616
.with(JsonParser.Feature.ALLOW_COMMENTS);
1717

1818
int[] value = reader.readValue(JSON);

src/test/java/com/fasterxml/jackson/databind/seq/ReadRecoveryTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ static class Bean {
2525
public void testRootBeans() throws Exception
2626
{
2727
final String JSON = aposToQuotes("{'a':3} {'b':5}");
28-
MappingIterator<Bean> it = MAPPER.reader(Bean.class).readValues(JSON);
28+
MappingIterator<Bean> it = MAPPER.readerFor(Bean.class).readValues(JSON);
2929
// First one should be fine
3030
assertTrue(it.hasNextValue());
3131
Bean bean = it.nextValue();

0 commit comments

Comments
 (0)