@@ -32,17 +32,6 @@ public class EnumSetDeserializer
32
32
33
33
protected JsonDeserializer <Enum <?>> _enumDeserializer ;
34
34
35
- /**
36
- * If element instances have polymorphic type information, this
37
- * is the type deserializer that can handle it.
38
- *<p>
39
- * NOTE: only added in 2.17 due to new {@code DefaultType} choices
40
- * that allow polymorphic deserialization of {@code Enum} types.
41
- *
42
- * @since 2.17
43
- */
44
- protected final TypeDeserializer _valueTypeDeserializer ;
45
-
46
35
/**
47
36
* Handler we need for dealing with nulls.
48
37
*
@@ -74,11 +63,12 @@ public class EnumSetDeserializer
74
63
*/
75
64
76
65
/**
77
- * @since 2.17
66
+ * Main constructor for the deserializer.
67
+ *<p>
68
+ * NOTE: was temporarily deprecated in 2.17 - 2.18, restored in 2.19
78
69
*/
79
70
@ SuppressWarnings ("unchecked" )
80
- public EnumSetDeserializer (JavaType enumType , JsonDeserializer <?> deser ,
81
- TypeDeserializer valueTypeDeser )
71
+ public EnumSetDeserializer (JavaType enumType , JsonDeserializer <?> deser )
82
72
{
83
73
super (EnumSet .class );
84
74
_enumType = enumType ;
@@ -87,19 +77,19 @@ public EnumSetDeserializer(JavaType enumType, JsonDeserializer<?> deser,
87
77
throw new IllegalArgumentException ("Type " +enumType +" not Java Enum type" );
88
78
}
89
79
_enumDeserializer = (JsonDeserializer <Enum <?>>) deser ;
90
- _valueTypeDeserializer = valueTypeDeser ;
91
80
_unwrapSingle = null ;
92
81
_nullProvider = null ;
93
82
_skipNullValues = false ;
94
83
}
95
84
96
85
/**
97
- * @deprecated Since 2.17
86
+ * @deprecated Since 2.19 (was added in 2.17)
98
87
*/
99
88
@ Deprecated
100
- public EnumSetDeserializer (JavaType enumType , JsonDeserializer <?> deser )
89
+ public EnumSetDeserializer (JavaType enumType , JsonDeserializer <?> deser ,
90
+ TypeDeserializer valueTypeDeser )
101
91
{
102
- this (enumType , deser , null );
92
+ this (enumType , deser );
103
93
}
104
94
105
95
/**
@@ -121,7 +111,6 @@ protected EnumSetDeserializer(EnumSetDeserializer base,
121
111
super (base );
122
112
_enumType = base ._enumType ;
123
113
_enumDeserializer = (JsonDeserializer <Enum <?>>) deser ;
124
- _valueTypeDeserializer = base ._valueTypeDeserializer ;
125
114
_nullProvider = nuller ;
126
115
_skipNullValues = NullsConstantProvider .isSkipper (nuller );
127
116
_unwrapSingle = unwrapSingle ;
@@ -135,29 +124,18 @@ public EnumSetDeserializer withDeserializer(JsonDeserializer<?> deser) {
135
124
}
136
125
137
126
/**
138
- * @since 2.10.1
127
+ * @since 2.19
139
128
*/
140
129
public EnumSetDeserializer withResolved (JsonDeserializer <?> deser ,
141
- TypeDeserializer valueTypeDeser ,
142
130
NullValueProvider nuller , Boolean unwrapSingle ) {
143
131
if ((Objects .equals (_unwrapSingle , unwrapSingle ))
144
132
&& (_enumDeserializer == deser )
145
- && (_valueTypeDeserializer == valueTypeDeser )
146
133
&& (_nullProvider == deser )) {
147
134
return this ;
148
135
}
149
136
return new EnumSetDeserializer (this , deser , nuller , unwrapSingle );
150
137
}
151
138
152
- /**
153
- * @deprecated Since 2.17
154
- */
155
- @ Deprecated
156
- public EnumSetDeserializer withResolved (JsonDeserializer <?> deser ,
157
- NullValueProvider nuller , Boolean unwrapSingle ) {
158
- return withResolved (deser , _valueTypeDeserializer , nuller , unwrapSingle );
159
- }
160
-
161
139
/*
162
140
/**********************************************************
163
141
/* Basic metadata
@@ -171,9 +149,7 @@ public EnumSetDeserializer withResolved(JsonDeserializer<?> deser,
171
149
@ Override
172
150
public boolean isCachable () {
173
151
// One caveat: content deserializer should prevent caching
174
- if ((_enumType .getValueHandler () != null )
175
- // Another: polymorphic deserialization
176
- || (_valueTypeDeserializer != null )) {
152
+ if (_enumType .getValueHandler () != null ) {
177
153
return false ;
178
154
}
179
155
return true ;
@@ -220,12 +196,7 @@ public JsonDeserializer<?> createContextual(DeserializationContext ctxt,
220
196
} else { // if directly assigned, probably not yet contextual, so:
221
197
deser = ctxt .handleSecondaryContextualization (deser , property , _enumType );
222
198
}
223
- // and finally, type deserializer needs context as well
224
- TypeDeserializer valueTypeDeser = _valueTypeDeserializer ;
225
- if (valueTypeDeser != null ) {
226
- valueTypeDeser = valueTypeDeser .forProperty (property );
227
- }
228
- return withResolved (deser , valueTypeDeser ,
199
+ return withResolved (deser ,
229
200
findContentNullProvider (ctxt , property , deser ), unwrapSingle );
230
201
}
231
202
@@ -261,10 +232,8 @@ public EnumSet<?> deserialize(JsonParser p, DeserializationContext ctxt,
261
232
protected final EnumSet <?> _deserialize (JsonParser p , DeserializationContext ctxt ,
262
233
EnumSet result ) throws IOException
263
234
{
264
- JsonToken t ;
265
- final TypeDeserializer typeDeser = _valueTypeDeserializer ;
266
-
267
235
try {
236
+ JsonToken t ;
268
237
while ((t = p .nextToken ()) != JsonToken .END_ARRAY ) {
269
238
// What to do with nulls? Fail or ignore? Fail, for now (note: would fail if we
270
239
// passed it to EnumDeserializer, too, but in general nulls should never be passed
@@ -275,10 +244,8 @@ protected final EnumSet<?> _deserialize(JsonParser p, DeserializationContext ctx
275
244
continue ;
276
245
}
277
246
value = (Enum <?>) _nullProvider .getNullValue (ctxt );
278
- } else if (typeDeser == null ) {
279
- value = _enumDeserializer .deserialize (p , ctxt );
280
247
} else {
281
- value = ( Enum <?>) _enumDeserializer .deserializeWithType (p , ctxt , typeDeser );
248
+ value = _enumDeserializer .deserialize (p , ctxt );
282
249
}
283
250
if (value != null ) {
284
251
result .add (value );
0 commit comments