20
20
* Note that although types (delegate, target) may be related, they must not be same; trying
21
21
* to do this will result in an exception.
22
22
*<p>
23
- * Since 2.5 There is {@link StdNodeBasedDeserializer} that is a simplified version
24
- * for cases where intermediate type is {@link JsonNode}
23
+ * Also note that in Jackson 2.x, this class was named {@code StdDelegatingDeserializer}
25
24
*
26
25
* @param <T> Target type to convert to, from delegate type
27
26
*
28
27
* @see StdNodeBasedDeserializer
29
28
* @see Converter
30
29
*/
31
- public class StdDelegatingDeserializer <T >
30
+ public class StdConvertingDeserializer <T >
32
31
extends StdDeserializer <T >
33
32
{
34
33
private static final long serialVersionUID = 1L ;
@@ -49,13 +48,13 @@ public class StdDelegatingDeserializer<T>
49
48
protected final JsonDeserializer <Object > _delegateDeserializer ;
50
49
51
50
/*
52
- /**********************************************************
51
+ /**********************************************************************
53
52
/* Life-cycle
54
- /**********************************************************
53
+ /**********************************************************************
55
54
*/
56
55
57
56
@ SuppressWarnings ("unchecked" )
58
- public StdDelegatingDeserializer (Converter <?,T > converter )
57
+ public StdConvertingDeserializer (Converter <?,T > converter )
59
58
{
60
59
super (Object .class );
61
60
_converter = (Converter <Object ,T >)converter ;
@@ -64,7 +63,7 @@ public StdDelegatingDeserializer(Converter<?,T> converter)
64
63
}
65
64
66
65
@ SuppressWarnings ("unchecked" )
67
- public StdDelegatingDeserializer (Converter <Object ,T > converter ,
66
+ public StdConvertingDeserializer (Converter <Object ,T > converter ,
68
67
JavaType delegateType , JsonDeserializer <?> delegateDeserializer )
69
68
{
70
69
super (delegateType );
@@ -73,10 +72,7 @@ public StdDelegatingDeserializer(Converter<Object,T> converter,
73
72
_delegateDeserializer = (JsonDeserializer <Object >) delegateDeserializer ;
74
73
}
75
74
76
- /**
77
- * @since 2.5
78
- */
79
- protected StdDelegatingDeserializer (StdDelegatingDeserializer <T > src )
75
+ protected StdConvertingDeserializer (StdConvertingDeserializer <T > src )
80
76
{
81
77
super (src );
82
78
_converter = src ._converter ;
@@ -88,17 +84,17 @@ protected StdDelegatingDeserializer(StdDelegatingDeserializer<T> src)
88
84
* Method used for creating resolved contextual instances. Must be
89
85
* overridden when sub-classing.
90
86
*/
91
- protected StdDelegatingDeserializer <T > withDelegate (Converter <Object ,T > converter ,
87
+ protected StdConvertingDeserializer <T > withDelegate (Converter <Object ,T > converter ,
92
88
JavaType delegateType , JsonDeserializer <?> delegateDeserializer )
93
89
{
94
- ClassUtil .verifyMustOverride (StdDelegatingDeserializer .class , this , "withDelegate" );
95
- return new StdDelegatingDeserializer <T >(converter , delegateType , delegateDeserializer );
90
+ ClassUtil .verifyMustOverride (StdConvertingDeserializer .class , this , "withDelegate" );
91
+ return new StdConvertingDeserializer <T >(converter , delegateType , delegateDeserializer );
96
92
}
97
93
98
94
/*
99
- /**********************************************************
95
+ /**********************************************************************
100
96
/* Contextualization
101
- /**********************************************************
97
+ /**********************************************************************
102
98
*/
103
99
104
100
// Note: unlikely to get called since most likely instances explicitly constructed;
@@ -109,7 +105,6 @@ public void resolve(DeserializationContext ctxt)
109
105
{
110
106
if (_delegateDeserializer != null ) {
111
107
_delegateDeserializer .resolve (ctxt );
112
-
113
108
}
114
109
}
115
110
@@ -133,9 +128,9 @@ public JsonDeserializer<?> createContextual(DeserializationContext ctxt, BeanPro
133
128
}
134
129
135
130
/*
136
- /**********************************************************
131
+ /**********************************************************************
137
132
/* Accessors
138
- /**********************************************************
133
+ /**********************************************************************
139
134
*/
140
135
141
136
@ Override
@@ -148,17 +143,25 @@ public Class<?> handledType() {
148
143
return _delegateDeserializer .handledType ();
149
144
}
150
145
151
- @ Override // since 2.9
146
+ /**
147
+ * Let's assume that as long as delegate is cachable, we are too.
148
+ */
149
+ @ Override
150
+ public boolean isCachable () {
151
+ return (_delegateDeserializer != null ) && _delegateDeserializer .isCachable ();
152
+ }
153
+
154
+ @ Override
152
155
public Boolean supportsUpdate (DeserializationConfig config ) {
153
156
return _delegateDeserializer .supportsUpdate (config );
154
157
}
155
158
156
159
/*
157
- /**********************************************************
160
+ /**********************************************************************
158
161
/* Serialization
159
- /**********************************************************
162
+ /**********************************************************************
160
163
*/
161
-
164
+
162
165
@ Override
163
166
public T deserialize (JsonParser p , DeserializationContext ctxt ) throws IOException
164
167
{
@@ -209,8 +212,6 @@ public T deserialize(JsonParser p, DeserializationContext ctxt, Object intoValue
209
212
* an operation that can be permitted, and the default behavior is to throw exception.
210
213
* Sub-classes may choose to try alternative approach if they have more information on
211
214
* exact usage and constraints.
212
- *
213
- * @since 2.6
214
215
*/
215
216
protected Object _handleIncompatibleUpdateValue (JsonParser p , DeserializationContext ctxt , Object intoValue )
216
217
throws IOException
@@ -219,11 +220,11 @@ protected Object _handleIncompatibleUpdateValue(JsonParser p, DeserializationCon
219
220
("Cannot update object of type %s (using deserializer for type %s)"
220
221
+intoValue .getClass ().getName (), _delegateType ));
221
222
}
222
-
223
+
223
224
/*
224
- /**********************************************************
225
+ /**********************************************************************
225
226
/* Overridable methods
226
- /**********************************************************
227
+ /**********************************************************************
227
228
*/
228
229
229
230
/**
0 commit comments