1
1
package com .fasterxml .jackson .databind .util ;
2
2
3
- import com .fasterxml .jackson .databind .AnnotationIntrospector ;
4
-
5
3
import java .lang .reflect .Method ;
6
4
import java .util .*;
7
5
6
+ import com .fasterxml .jackson .databind .AnnotationIntrospector ;
7
+
8
8
/**
9
9
* Helper class used to resolve String values (either JSON Object field
10
10
* names or regular String values) into Java Enum instances.
11
11
*/
12
12
public class EnumResolver implements java .io .Serializable
13
13
{
14
- private static final AnnotationIntrospector defaultAnnotationInstrospector = null ;
15
-
16
14
private static final long serialVersionUID = 1L ;
17
15
18
16
protected final Class <Enum <?>> _enumClass ;
@@ -60,9 +58,8 @@ public static EnumResolver constructFor(Class<Enum<?>> enumCls, AnnotationIntros
60
58
* @deprecated Since 2.8, use {@link #constructUsingToString(Class, AnnotationIntrospector)} instead
61
59
*/
62
60
@ Deprecated
63
- public static EnumResolver constructUsingToString (Class <Enum <?>> enumCls )
64
- {
65
- return constructUsingToString (enumCls , defaultAnnotationInstrospector );
61
+ public static EnumResolver constructUsingToString (Class <Enum <?>> enumCls ) {
62
+ return constructUsingToString (enumCls , null );
66
63
}
67
64
68
65
/**
@@ -71,7 +68,8 @@ public static EnumResolver constructUsingToString(Class<Enum<?>> enumCls)
71
68
*
72
69
* @since 2.8
73
70
*/
74
- public static EnumResolver constructUsingToString (Class <Enum <?>> enumCls , AnnotationIntrospector ai )
71
+ public static EnumResolver constructUsingToString (Class <Enum <?>> enumCls ,
72
+ AnnotationIntrospector ai )
75
73
{
76
74
Enum <?>[] enumValues = enumCls .getEnumConstants ();
77
75
HashMap <String , Enum <?>> map = new HashMap <String , Enum <?>>();
@@ -80,8 +78,7 @@ public static EnumResolver constructUsingToString(Class<Enum<?>> enumCls, Annota
80
78
Enum <?> e = enumValues [i ];
81
79
map .put (e .toString (), e );
82
80
}
83
-
84
- Enum <?> defaultEnum = ai .findDefaultEnumValue (enumCls );
81
+ Enum <?> defaultEnum = (ai == null ) ? null : ai .findDefaultEnumValue (enumCls );
85
82
return new EnumResolver (enumCls , enumValues , map , defaultEnum );
86
83
}
87
84
@@ -90,13 +87,14 @@ public static EnumResolver constructUsingToString(Class<Enum<?>> enumCls, Annota
90
87
*/
91
88
@ Deprecated
92
89
public static EnumResolver constructUsingMethod (Class <Enum <?>> enumCls , Method accessor ) {
93
- return constructUsingMethod (enumCls , accessor , defaultAnnotationInstrospector );
90
+ return constructUsingMethod (enumCls , accessor , null );
94
91
}
95
92
96
93
/**
97
94
* @since 2.8
98
95
*/
99
- public static EnumResolver constructUsingMethod (Class <Enum <?>> enumCls , Method accessor , AnnotationIntrospector ai )
96
+ public static EnumResolver constructUsingMethod (Class <Enum <?>> enumCls , Method accessor ,
97
+ AnnotationIntrospector ai )
100
98
{
101
99
Enum <?>[] enumValues = enumCls .getEnumConstants ();
102
100
HashMap <String , Enum <?>> map = new HashMap <String , Enum <?>>();
@@ -112,7 +110,6 @@ public static EnumResolver constructUsingMethod(Class<Enum<?>> enumCls, Method a
112
110
throw new IllegalArgumentException ("Failed to access @JsonValue of Enum value " +en +": " +e .getMessage ());
113
111
}
114
112
}
115
-
116
113
Enum <?> defaultEnum = (ai != null ) ? ai .findDefaultEnumValue (enumCls ) : null ;
117
114
return new EnumResolver (enumCls , enumValues , map , defaultEnum );
118
115
}
@@ -137,7 +134,7 @@ public static EnumResolver constructUnsafe(Class<?> rawEnumCls, AnnotationIntros
137
134
@ Deprecated
138
135
public static EnumResolver constructUnsafeUsingToString (Class <?> rawEnumCls )
139
136
{
140
- return constructUnsafeUsingToString (rawEnumCls , defaultAnnotationInstrospector );
137
+ return constructUnsafeUsingToString (rawEnumCls , null );
141
138
}
142
139
143
140
/**
@@ -159,7 +156,7 @@ public static EnumResolver constructUnsafeUsingToString(Class<?> rawEnumCls, Ann
159
156
*/
160
157
@ Deprecated
161
158
public static EnumResolver constructUnsafeUsingMethod (Class <?> rawEnumCls , Method accessor ) {
162
- return constructUnsafeUsingMethod (rawEnumCls , accessor , defaultAnnotationInstrospector );
159
+ return constructUnsafeUsingMethod (rawEnumCls , accessor , null );
163
160
}
164
161
165
162
/**
@@ -169,7 +166,8 @@ public static EnumResolver constructUnsafeUsingMethod(Class<?> rawEnumCls, Metho
169
166
* @since 2.8
170
167
*/
171
168
@ SuppressWarnings ({ "unchecked" })
172
- public static EnumResolver constructUnsafeUsingMethod (Class <?> rawEnumCls , Method accessor , AnnotationIntrospector ai )
169
+ public static EnumResolver constructUnsafeUsingMethod (Class <?> rawEnumCls , Method accessor ,
170
+ AnnotationIntrospector ai )
173
171
{
174
172
// wrong as ever but:
175
173
Class <Enum <?>> enumCls = (Class <Enum <?>>) rawEnumCls ;
0 commit comments