6
6
7
7
import com .fasterxml .jackson .annotation .JsonInclude ;
8
8
import com .fasterxml .jackson .databind .JavaType ;
9
- import com .fasterxml .jackson .databind .introspect .AnnotatedMethod ;
9
+ import com .fasterxml .jackson .databind .introspect .AnnotatedMember ;
10
10
11
11
/**
12
12
* Helper class that contains functionality needed by both serialization
@@ -20,17 +20,16 @@ public class BeanUtil
20
20
/**********************************************************
21
21
*/
22
22
23
- public static String okNameForGetter (AnnotatedMethod am , boolean stdNaming ) {
23
+ public static String okNameForGetter (AnnotatedMember am ) {
24
24
String name = am .getName ();
25
- String str = okNameForIsGetter (am , name , stdNaming );
25
+ String str = okNameForIsGetter (am , name );
26
26
if (str == null ) {
27
- str = okNameForRegularGetter (am , name , stdNaming );
27
+ str = okNameForRegularGetter (am , name );
28
28
}
29
29
return str ;
30
30
}
31
31
32
- public static String okNameForRegularGetter (AnnotatedMethod am , String name ,
33
- boolean stdNaming )
32
+ public static String okNameForRegularGetter (AnnotatedMember am , String name )
34
33
{
35
34
if (name .startsWith ("get" )) {
36
35
/* 16-Feb-2009, tatu: To handle [JACKSON-53], need to block
@@ -50,38 +49,27 @@ public static String okNameForRegularGetter(AnnotatedMethod am, String name,
50
49
return null ;
51
50
}
52
51
}
53
- return stdNaming
54
- ? stdManglePropertyName (name , 3 )
55
- : legacyManglePropertyName (name , 3 );
52
+ return stdManglePropertyName (name , 3 );
56
53
}
57
54
return null ;
58
55
}
59
56
60
- /**
61
- * @since 2.5
62
- */
63
- public static String okNameForIsGetter (AnnotatedMethod am , String name ,
64
- boolean stdNaming )
57
+ public static String okNameForIsGetter (AnnotatedMember am , String name )
65
58
{
66
59
if (name .startsWith ("is" )) { // plus, must return a boolean
67
60
Class <?> rt = am .getRawType ();
68
61
if (rt == Boolean .class || rt == Boolean .TYPE ) {
69
- return stdNaming
70
- ? stdManglePropertyName (name , 2 )
71
- : legacyManglePropertyName (name , 2 );
62
+ return stdManglePropertyName (name , 2 );
72
63
}
73
64
}
74
65
return null ;
75
66
}
76
67
77
- public static String okNameForMutator (AnnotatedMethod am , String prefix ,
78
- boolean stdNaming )
68
+ public static String okNameForMutator (AnnotatedMember am , String prefix )
79
69
{
80
70
String name = am .getName ();
81
71
if (name .startsWith (prefix )) {
82
- return stdNaming
83
- ? stdManglePropertyName (name , prefix .length ())
84
- : legacyManglePropertyName (name , prefix .length ());
72
+ return stdManglePropertyName (name , prefix .length ());
85
73
}
86
74
return null ;
87
75
}
@@ -148,7 +136,7 @@ public static Object getDefaultValue(JavaType type)
148
136
* indeed injectect by Cglib. We do this by verifying that the
149
137
* result type is "net.sf.cglib.proxy.Callback[]"
150
138
*/
151
- protected static boolean isCglibGetCallbacks (AnnotatedMethod am )
139
+ protected static boolean isCglibGetCallbacks (AnnotatedMember am )
152
140
{
153
141
Class <?> rt = am .getRawType ();
154
142
// Ok, first: must return an array type
@@ -173,21 +161,10 @@ protected static boolean isCglibGetCallbacks(AnnotatedMethod am)
173
161
return false ;
174
162
}
175
163
176
- /**
177
- * Similar to {@link #isCglibGetCallbacks}, need to suppress
178
- * a cyclic reference.
179
- */
180
- protected static boolean isGroovyMetaClassSetter (AnnotatedMethod am )
181
- {
182
- Class <?> argType = am .getRawParameterType (0 );
183
- String pkgName = ClassUtil .getPackageName (argType );
184
- return (pkgName != null ) && pkgName .startsWith ("groovy.lang" );
185
- }
186
-
187
164
/**
188
165
* Another helper method to deal with Groovy's problematic metadata accessors
189
166
*/
190
- protected static boolean isGroovyMetaClassGetter (AnnotatedMethod am )
167
+ protected static boolean isGroovyMetaClassGetter (AnnotatedMember am )
191
168
{
192
169
String pkgName = ClassUtil .getPackageName (am .getRawType ());
193
170
return (pkgName != null ) && pkgName .startsWith ("groovy.lang" );
@@ -199,45 +176,9 @@ protected static boolean isGroovyMetaClassGetter(AnnotatedMethod am)
199
176
/**********************************************************
200
177
*/
201
178
202
- /**
203
- * Method called to figure out name of the property, given
204
- * corresponding suggested name based on a method or field name.
205
- *
206
- * @param basename Name of accessor/mutator method, not including prefix
207
- * ("get"/"is"/"set")
208
- */
209
- protected static String legacyManglePropertyName (final String basename , final int offset )
210
- {
211
- final int end = basename .length ();
212
- if (end == offset ) { // empty name, nope
213
- return null ;
214
- }
215
- // next check: is the first character upper case? If not, return as is
216
- char c = basename .charAt (offset );
217
- char d = Character .toLowerCase (c );
218
-
219
- if (c == d ) {
220
- return basename .substring (offset );
221
- }
222
- // otherwise, lower case initial chars. Common case first, just one char
223
- StringBuilder sb = new StringBuilder (end - offset );
224
- sb .append (d );
225
- int i = offset +1 ;
226
- for (; i < end ; ++i ) {
227
- c = basename .charAt (i );
228
- d = Character .toLowerCase (c );
229
- if (c == d ) {
230
- sb .append (basename , i , end );
231
- break ;
232
- }
233
- sb .append (d );
234
- }
235
- return sb .toString ();
236
- }
237
-
238
- /**
239
- * @since 2.5
240
- */
179
+ // 24-Sep-2017, tatu: note that "std" here refers to earlier (1.x, 2.x) distinction
180
+ // between "legacy" (slightly non-conforming) and "std" (fully conforming): with 3.x
181
+ // only latter exists.
241
182
protected static String stdManglePropertyName (final String basename , final int offset )
242
183
{
243
184
final int end = basename .length ();
0 commit comments