@@ -93,7 +93,7 @@ public class ObjectReader
93
93
* Filter to be consider for JsonParser.
94
94
* Default value to be null as filter not considered.
95
95
*/
96
- private TokenFilter _filter ;
96
+ private final TokenFilter _filter ;
97
97
98
98
/*
99
99
/**********************************************************
@@ -275,6 +275,21 @@ protected ObjectReader(ObjectReader base, JsonFactory f)
275
275
_filter = base ._filter ;
276
276
}
277
277
278
+ protected ObjectReader (ObjectReader base , TokenFilter filter ) {
279
+ _config = base ._config ;
280
+ _context = base ._context ;
281
+ _rootDeserializers = base ._rootDeserializers ;
282
+ _parserFactory = base ._parserFactory ;
283
+ _valueType = base ._valueType ;
284
+ _rootDeserializer = base ._rootDeserializer ;
285
+ _valueToUpdate = base ._valueToUpdate ;
286
+ _schema = base ._schema ;
287
+ _injectableValues = base ._injectableValues ;
288
+ _unwrapRoot = base ._unwrapRoot ;
289
+ _dataFormatReaders = base ._dataFormatReaders ;
290
+ _filter = filter ;
291
+ }
292
+
278
293
/**
279
294
* Method that will return version information stored in and read from jar
280
295
* that contains this class.
@@ -1084,7 +1099,7 @@ public <T> T readValue(InputStream src)
1084
1099
return (T ) _detectBindAndClose (_dataFormatReaders .findFormat (src ), false );
1085
1100
}
1086
1101
1087
- return (T ) _bindAndClose (considerFilter (_parserFactory .createParser (src )));
1102
+ return (T ) _bindAndClose (_considerFilter (_parserFactory .createParser (src )));
1088
1103
}
1089
1104
1090
1105
/**
@@ -1101,7 +1116,7 @@ public <T> T readValue(Reader src)
1101
1116
_reportUndetectableSource (src );
1102
1117
}
1103
1118
1104
- return (T ) _bindAndClose (considerFilter (_parserFactory .createParser (src )));
1119
+ return (T ) _bindAndClose (_considerFilter (_parserFactory .createParser (src )));
1105
1120
}
1106
1121
1107
1122
/**
@@ -1118,7 +1133,7 @@ public <T> T readValue(String src)
1118
1133
_reportUndetectableSource (src );
1119
1134
}
1120
1135
1121
- return (T ) _bindAndClose (considerFilter (_parserFactory .createParser (src )));
1136
+ return (T ) _bindAndClose (_considerFilter (_parserFactory .createParser (src )));
1122
1137
}
1123
1138
1124
1139
/**
@@ -1135,7 +1150,7 @@ public <T> T readValue(byte[] src)
1135
1150
return (T ) _detectBindAndClose (src , 0 , src .length );
1136
1151
}
1137
1152
1138
- return (T ) _bindAndClose (considerFilter (_parserFactory .createParser (src )));
1153
+ return (T ) _bindAndClose (_considerFilter (_parserFactory .createParser (src )));
1139
1154
}
1140
1155
1141
1156
/**
@@ -1152,7 +1167,7 @@ public <T> T readValue(byte[] src, int offset, int length)
1152
1167
return (T ) _detectBindAndClose (src , offset , length );
1153
1168
}
1154
1169
1155
- return (T ) _bindAndClose (considerFilter (_parserFactory .createParser (src , offset , length )));
1170
+ return (T ) _bindAndClose (_considerFilter (_parserFactory .createParser (src , offset , length )));
1156
1171
}
1157
1172
1158
1173
@ SuppressWarnings ("unchecked" )
@@ -1163,7 +1178,7 @@ public <T> T readValue(File src)
1163
1178
return (T ) _detectBindAndClose (_dataFormatReaders .findFormat (_inputStream (src )), true );
1164
1179
}
1165
1180
1166
- return (T ) _bindAndClose (considerFilter (_parserFactory .createParser (src )));
1181
+ return (T ) _bindAndClose (_considerFilter (_parserFactory .createParser (src )));
1167
1182
}
1168
1183
1169
1184
/**
@@ -1180,7 +1195,7 @@ public <T> T readValue(URL src)
1180
1195
return (T ) _detectBindAndClose (_dataFormatReaders .findFormat (_inputStream (src )), true );
1181
1196
}
1182
1197
1183
- return (T ) _bindAndClose (considerFilter (_parserFactory .createParser (src )));
1198
+ return (T ) _bindAndClose (_considerFilter (_parserFactory .createParser (src )));
1184
1199
}
1185
1200
1186
1201
/**
@@ -1198,7 +1213,7 @@ public <T> T readValue(JsonNode src)
1198
1213
_reportUndetectableSource (src );
1199
1214
}
1200
1215
1201
- return (T ) _bindAndClose (considerFilter (treeAsTokens (src )));
1216
+ return (T ) _bindAndClose (_considerFilter (treeAsTokens (src )));
1202
1217
}
1203
1218
1204
1219
/**
@@ -1217,7 +1232,7 @@ public JsonNode readTree(InputStream in)
1217
1232
return _detectBindAndCloseAsTree (in );
1218
1233
}
1219
1234
1220
- return _bindAndCloseAsTree (considerFilter (_parserFactory .createParser (in )));
1235
+ return _bindAndCloseAsTree (_considerFilter (_parserFactory .createParser (in )));
1221
1236
}
1222
1237
1223
1238
/**
@@ -1236,7 +1251,7 @@ public JsonNode readTree(Reader r)
1236
1251
_reportUndetectableSource (r );
1237
1252
}
1238
1253
1239
- return _bindAndCloseAsTree (considerFilter (_parserFactory .createParser (r )));
1254
+ return _bindAndCloseAsTree (_considerFilter (_parserFactory .createParser (r )));
1240
1255
}
1241
1256
1242
1257
/**
@@ -1255,7 +1270,7 @@ public JsonNode readTree(String json)
1255
1270
_reportUndetectableSource (json );
1256
1271
}
1257
1272
1258
- return _bindAndCloseAsTree (considerFilter (_parserFactory .createParser (json )));
1273
+ return _bindAndCloseAsTree (_considerFilter (_parserFactory .createParser (json )));
1259
1274
}
1260
1275
1261
1276
/*
@@ -1310,7 +1325,7 @@ public <T> MappingIterator<T> readValues(InputStream src)
1310
1325
return _detectBindAndReadValues (_dataFormatReaders .findFormat (src ), false );
1311
1326
}
1312
1327
1313
- return _bindAndReadValues (considerFilter (_parserFactory .createParser (src )));
1328
+ return _bindAndReadValues (_considerFilter (_parserFactory .createParser (src )));
1314
1329
}
1315
1330
1316
1331
/**
@@ -1323,7 +1338,7 @@ public <T> MappingIterator<T> readValues(Reader src)
1323
1338
if (_dataFormatReaders != null ) {
1324
1339
_reportUndetectableSource (src );
1325
1340
}
1326
- JsonParser p = considerFilter (_parserFactory .createParser (src ));
1341
+ JsonParser p = _considerFilter (_parserFactory .createParser (src ));
1327
1342
_initForMultiRead (p );
1328
1343
p .nextToken ();
1329
1344
DeserializationContext ctxt = createDeserializationContext (p );
@@ -1342,7 +1357,7 @@ public <T> MappingIterator<T> readValues(String json)
1342
1357
if (_dataFormatReaders != null ) {
1343
1358
_reportUndetectableSource (json );
1344
1359
}
1345
- JsonParser p = considerFilter (_parserFactory .createParser (json ));
1360
+ JsonParser p = _considerFilter (_parserFactory .createParser (json ));
1346
1361
_initForMultiRead (p );
1347
1362
p .nextToken ();
1348
1363
DeserializationContext ctxt = createDeserializationContext (p );
@@ -1358,7 +1373,7 @@ public <T> MappingIterator<T> readValues(byte[] src, int offset, int length)
1358
1373
if (_dataFormatReaders != null ) {
1359
1374
return _detectBindAndReadValues (_dataFormatReaders .findFormat (src , offset , length ), false );
1360
1375
}
1361
- return _bindAndReadValues (considerFilter (_parserFactory .createParser (src )));
1376
+ return _bindAndReadValues (_considerFilter (_parserFactory .createParser (src )));
1362
1377
}
1363
1378
1364
1379
/**
@@ -1379,7 +1394,7 @@ public <T> MappingIterator<T> readValues(File src)
1379
1394
return _detectBindAndReadValues (
1380
1395
_dataFormatReaders .findFormat (_inputStream (src )), false );
1381
1396
}
1382
- return _bindAndReadValues (considerFilter (_parserFactory .createParser (src )));
1397
+ return _bindAndReadValues (_considerFilter (_parserFactory .createParser (src )));
1383
1398
}
1384
1399
1385
1400
/**
@@ -1394,7 +1409,7 @@ public <T> MappingIterator<T> readValues(URL src)
1394
1409
return _detectBindAndReadValues (
1395
1410
_dataFormatReaders .findFormat (_inputStream (src )), true );
1396
1411
}
1397
- return _bindAndReadValues (considerFilter (_parserFactory .createParser (src )));
1412
+ return _bindAndReadValues (_considerFilter (_parserFactory .createParser (src )));
1398
1413
}
1399
1414
1400
1415
/*
@@ -1467,9 +1482,9 @@ protected Object _bind(JsonParser p, Object valueToUpdate) throws IOException
1467
1482
/**
1468
1483
* Consider filter when creating JsonParser.
1469
1484
*/
1470
- private JsonParser considerFilter (final JsonParser p ) {
1471
- return _filter == null || FilteringParserDelegate .class .isInstance (p )
1472
- ? p : new FilteringParserDelegate (p , _filter , false , false );
1485
+ protected JsonParser _considerFilter (final JsonParser p ) {
1486
+ return _filter == null || FilteringParserDelegate .class .isInstance (p )
1487
+ ? p : new FilteringParserDelegate (p , _filter , false , false );
1473
1488
}
1474
1489
1475
1490
protected Object _bindAndClose (JsonParser p ) throws IOException
@@ -1790,19 +1805,16 @@ protected JsonDeserializer<Object> _prefetchRootDeserializer(JavaType valueType)
1790
1805
* {@link JsonPointerBasedFilter} is registered and will be used for parsing later.
1791
1806
* @since 2.6
1792
1807
*/
1793
- public ObjectReader at (final String value ) {
1794
- _filter = new JsonPointerBasedFilter (value );
1795
- return this ;
1796
- }
1808
+ public ObjectReader at (final String value ) {
1809
+ return new ObjectReader (this , new JsonPointerBasedFilter (value ));
1810
+ }
1797
1811
1798
1812
/**
1799
1813
* Convenience method to bind from {@link JsonPointer}
1800
1814
* {@link JsonPointerBasedFilter} is registered and will be used for parsing later.
1801
1815
* @since 2.6
1802
1816
*/
1803
- public ObjectReader at (final JsonPointer pointer ) {
1804
- _filter = new JsonPointerBasedFilter (pointer );
1805
- return this ;
1806
- }
1807
-
1817
+ public ObjectReader at (final JsonPointer pointer ) {
1818
+ return new ObjectReader (this , new JsonPointerBasedFilter (pointer ));
1819
+ }
1808
1820
}
0 commit comments