@@ -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,29 +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 );
103
- }
104
-
105
- /**
106
- * @since 2.7
107
- * @deprecated Since 2.10.1
108
- */
109
- @ Deprecated
110
- protected EnumSetDeserializer (EnumSetDeserializer base ,
111
- JsonDeserializer <?> deser , Boolean unwrapSingle ) {
112
- this (base , deser , base ._nullProvider , unwrapSingle );
92
+ this (enumType , deser );
113
93
}
114
94
115
95
/**
@@ -121,7 +101,6 @@ protected EnumSetDeserializer(EnumSetDeserializer base,
121
101
super (base );
122
102
_enumType = base ._enumType ;
123
103
_enumDeserializer = (JsonDeserializer <Enum <?>>) deser ;
124
- _valueTypeDeserializer = base ._valueTypeDeserializer ;
125
104
_nullProvider = nuller ;
126
105
_skipNullValues = NullsConstantProvider .isSkipper (nuller );
127
106
_unwrapSingle = unwrapSingle ;
@@ -135,29 +114,18 @@ public EnumSetDeserializer withDeserializer(JsonDeserializer<?> deser) {
135
114
}
136
115
137
116
/**
138
- * @since 2.10.1
117
+ * @since 2.19
139
118
*/
140
119
public EnumSetDeserializer withResolved (JsonDeserializer <?> deser ,
141
- TypeDeserializer valueTypeDeser ,
142
120
NullValueProvider nuller , Boolean unwrapSingle ) {
143
121
if ((Objects .equals (_unwrapSingle , unwrapSingle ))
144
122
&& (_enumDeserializer == deser )
145
- && (_valueTypeDeserializer == valueTypeDeser )
146
123
&& (_nullProvider == deser )) {
147
124
return this ;
148
125
}
149
126
return new EnumSetDeserializer (this , deser , nuller , unwrapSingle );
150
127
}
151
128
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
129
/*
162
130
/**********************************************************
163
131
/* Basic metadata
@@ -171,9 +139,7 @@ public EnumSetDeserializer withResolved(JsonDeserializer<?> deser,
171
139
@ Override
172
140
public boolean isCachable () {
173
141
// One caveat: content deserializer should prevent caching
174
- if ((_enumType .getValueHandler () != null )
175
- // Another: polymorphic deserialization
176
- || (_valueTypeDeserializer != null )) {
142
+ if (_enumType .getValueHandler () != null ) {
177
143
return false ;
178
144
}
179
145
return true ;
@@ -220,12 +186,7 @@ public JsonDeserializer<?> createContextual(DeserializationContext ctxt,
220
186
} else { // if directly assigned, probably not yet contextual, so:
221
187
deser = ctxt .handleSecondaryContextualization (deser , property , _enumType );
222
188
}
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 ,
189
+ return withResolved (deser ,
229
190
findContentNullProvider (ctxt , property , deser ), unwrapSingle );
230
191
}
231
192
@@ -261,10 +222,8 @@ public EnumSet<?> deserialize(JsonParser p, DeserializationContext ctxt,
261
222
protected final EnumSet <?> _deserialize (JsonParser p , DeserializationContext ctxt ,
262
223
EnumSet result ) throws IOException
263
224
{
264
- JsonToken t ;
265
- final TypeDeserializer typeDeser = _valueTypeDeserializer ;
266
-
267
225
try {
226
+ JsonToken t ;
268
227
while ((t = p .nextToken ()) != JsonToken .END_ARRAY ) {
269
228
// What to do with nulls? Fail or ignore? Fail, for now (note: would fail if we
270
229
// passed it to EnumDeserializer, too, but in general nulls should never be passed
@@ -275,10 +234,8 @@ protected final EnumSet<?> _deserialize(JsonParser p, DeserializationContext ctx
275
234
continue ;
276
235
}
277
236
value = (Enum <?>) _nullProvider .getNullValue (ctxt );
278
- } else if (typeDeser == null ) {
279
- value = _enumDeserializer .deserialize (p , ctxt );
280
237
} else {
281
- value = ( Enum <?>) _enumDeserializer .deserializeWithType (p , ctxt , typeDeser );
238
+ value = _enumDeserializer .deserialize (p , ctxt );
282
239
}
283
240
if (value != null ) {
284
241
result .add (value );
0 commit comments