3434public class ASMUtil {
3535 /**
3636 * Append the call of proper autoboxing method for the given primitive type.
37+ *
38+ * @param mv MethodVisitor
39+ * @param clz expected class
3740 */
3841 public static void autoBoxing (MethodVisitor mv , Class <?> clz ) {
3942 autoBoxing (mv , Type .getType (clz ));
@@ -69,72 +72,78 @@ static public Accessor[] getAccessors(Class<?> type, FieldFilter filter) {
6972
7073 /**
7174 * Append the call of proper autoboxing method for the given primitive type.
75+ *
76+ * @param mv MethodVisitor
77+ * @param fieldType expected class
7278 */
7379 protected static void autoBoxing (MethodVisitor mv , Type fieldType ) {
7480 switch (fieldType .getSort ()) {
7581 case Type .BOOLEAN :
76- mv .visitMethodInsn (INVOKESTATIC , "java/lang/Boolean" , "valueOf" , "(Z)Ljava/lang/Boolean;" );
82+ mv .visitMethodInsn (INVOKESTATIC , "java/lang/Boolean" , "valueOf" , "(Z)Ljava/lang/Boolean;" , false );
7783 break ;
7884 case Type .BYTE :
79- mv .visitMethodInsn (INVOKESTATIC , "java/lang/Byte" , "valueOf" , "(B)Ljava/lang/Byte;" );
85+ mv .visitMethodInsn (INVOKESTATIC , "java/lang/Byte" , "valueOf" , "(B)Ljava/lang/Byte;" , false );
8086 break ;
8187 case Type .CHAR :
82- mv .visitMethodInsn (INVOKESTATIC , "java/lang/Character" , "valueOf" , "(C)Ljava/lang/Character;" );
88+ mv .visitMethodInsn (INVOKESTATIC , "java/lang/Character" , "valueOf" , "(C)Ljava/lang/Character;" , false );
8389 break ;
8490 case Type .SHORT :
85- mv .visitMethodInsn (INVOKESTATIC , "java/lang/Short" , "valueOf" , "(S)Ljava/lang/Short;" );
91+ mv .visitMethodInsn (INVOKESTATIC , "java/lang/Short" , "valueOf" , "(S)Ljava/lang/Short;" , false );
8692 break ;
8793 case Type .INT :
88- mv .visitMethodInsn (INVOKESTATIC , "java/lang/Integer" , "valueOf" , "(I)Ljava/lang/Integer;" );
94+ mv .visitMethodInsn (INVOKESTATIC , "java/lang/Integer" , "valueOf" , "(I)Ljava/lang/Integer;" , false );
8995 break ;
9096 case Type .FLOAT :
91- mv .visitMethodInsn (INVOKESTATIC , "java/lang/Float" , "valueOf" , "(F)Ljava/lang/Float;" );
97+ mv .visitMethodInsn (INVOKESTATIC , "java/lang/Float" , "valueOf" , "(F)Ljava/lang/Float;" , false );
9298 break ;
9399 case Type .LONG :
94- mv .visitMethodInsn (INVOKESTATIC , "java/lang/Long" , "valueOf" , "(J)Ljava/lang/Long;" );
100+ mv .visitMethodInsn (INVOKESTATIC , "java/lang/Long" , "valueOf" , "(J)Ljava/lang/Long;" , false );
95101 break ;
96102 case Type .DOUBLE :
97- mv .visitMethodInsn (INVOKESTATIC , "java/lang/Double" , "valueOf" , "(D)Ljava/lang/Double;" );
103+ mv .visitMethodInsn (INVOKESTATIC , "java/lang/Double" , "valueOf" , "(D)Ljava/lang/Double;" , false );
98104 break ;
99105 }
100106 }
101107
102108 /**
103109 * Append the call of proper extract primitive type of an boxed object.
110+ *
111+ * @param mv MethodVisitor
112+ * @param fieldType expected class
104113 */
105114 protected static void autoUnBoxing1 (MethodVisitor mv , Type fieldType ) {
106115 switch (fieldType .getSort ()) {
107116 case Type .BOOLEAN :
108117 mv .visitTypeInsn (CHECKCAST , "java/lang/Boolean" );
109- mv .visitMethodInsn (INVOKEVIRTUAL , "java/lang/Boolean" , "booleanValue" , "()Z" );
118+ mv .visitMethodInsn (INVOKEVIRTUAL , "java/lang/Boolean" , "booleanValue" , "()Z" , false );
110119 break ;
111120 case Type .BYTE :
112121 mv .visitTypeInsn (CHECKCAST , "java/lang/Byte" );
113- mv .visitMethodInsn (INVOKEVIRTUAL , "java/lang/Byte" , "byteValue" , "()B" );
122+ mv .visitMethodInsn (INVOKEVIRTUAL , "java/lang/Byte" , "byteValue" , "()B" , false );
114123 break ;
115124 case Type .CHAR :
116125 mv .visitTypeInsn (CHECKCAST , "java/lang/Character" );
117- mv .visitMethodInsn (INVOKEVIRTUAL , "java/lang/Character" , "charValue" , "()C" );
126+ mv .visitMethodInsn (INVOKEVIRTUAL , "java/lang/Character" , "charValue" , "()C" , false );
118127 break ;
119128 case Type .SHORT :
120129 mv .visitTypeInsn (CHECKCAST , "java/lang/Short" );
121- mv .visitMethodInsn (INVOKEVIRTUAL , "java/lang/Short" , "shortValue" , "()S" );
130+ mv .visitMethodInsn (INVOKEVIRTUAL , "java/lang/Short" , "shortValue" , "()S" , false );
122131 break ;
123132 case Type .INT :
124133 mv .visitTypeInsn (CHECKCAST , "java/lang/Integer" );
125- mv .visitMethodInsn (INVOKEVIRTUAL , "java/lang/Integer" , "intValue" , "()I" );
134+ mv .visitMethodInsn (INVOKEVIRTUAL , "java/lang/Integer" , "intValue" , "()I" , false );
126135 break ;
127136 case Type .FLOAT :
128137 mv .visitTypeInsn (CHECKCAST , "java/lang/Float" );
129- mv .visitMethodInsn (INVOKEVIRTUAL , "java/lang/Float" , "floatValue" , "()F" );
138+ mv .visitMethodInsn (INVOKEVIRTUAL , "java/lang/Float" , "floatValue" , "()F" , false );
130139 break ;
131140 case Type .LONG :
132141 mv .visitTypeInsn (CHECKCAST , "java/lang/Long" );
133- mv .visitMethodInsn (INVOKEVIRTUAL , "java/lang/Long" , "longValue" , "()J" );
142+ mv .visitMethodInsn (INVOKEVIRTUAL , "java/lang/Long" , "longValue" , "()J" , false );
134143 break ;
135144 case Type .DOUBLE :
136145 mv .visitTypeInsn (CHECKCAST , "java/lang/Double" );
137- mv .visitMethodInsn (INVOKEVIRTUAL , "java/lang/Double" , "doubleValue" , "()D" );
146+ mv .visitMethodInsn (INVOKEVIRTUAL , "java/lang/Double" , "doubleValue" , "()D" , false );
138147 break ;
139148 case Type .ARRAY :
140149 mv .visitTypeInsn (CHECKCAST , fieldType .getInternalName ());
@@ -147,40 +156,43 @@ protected static void autoUnBoxing1(MethodVisitor mv, Type fieldType) {
147156 /**
148157 * Append the call of proper extract primitive type of an boxed object. this
149158 * method use Number interface to unbox object
159+ *
160+ * @param mv MethodVisitor
161+ * @param fieldType expected class
150162 */
151163 protected static void autoUnBoxing2 (MethodVisitor mv , Type fieldType ) {
152164 switch (fieldType .getSort ()) {
153165 case Type .BOOLEAN :
154166 mv .visitTypeInsn (CHECKCAST , "java/lang/Boolean" );
155- mv .visitMethodInsn (INVOKEVIRTUAL , "java/lang/Boolean" , "booleanValue" , "()Z" );
167+ mv .visitMethodInsn (INVOKEVIRTUAL , "java/lang/Boolean" , "booleanValue" , "()Z" , false );
156168 break ;
157169 case Type .BYTE :
158170 mv .visitTypeInsn (CHECKCAST , "java/lang/Number" );
159- mv .visitMethodInsn (INVOKEVIRTUAL , "java/lang/Number" , "byteValue" , "()B" );
171+ mv .visitMethodInsn (INVOKEVIRTUAL , "java/lang/Number" , "byteValue" , "()B" , false );
160172 break ;
161173 case Type .CHAR :
162174 mv .visitTypeInsn (CHECKCAST , "java/lang/Character" );
163- mv .visitMethodInsn (INVOKEVIRTUAL , "java/lang/Character" , "charValue" , "()C" );
175+ mv .visitMethodInsn (INVOKEVIRTUAL , "java/lang/Character" , "charValue" , "()C" , false );
164176 break ;
165177 case Type .SHORT :
166178 mv .visitTypeInsn (CHECKCAST , "java/lang/Number" );
167- mv .visitMethodInsn (INVOKEVIRTUAL , "java/lang/Number" , "shortValue" , "()S" );
179+ mv .visitMethodInsn (INVOKEVIRTUAL , "java/lang/Number" , "shortValue" , "()S" , false );
168180 break ;
169181 case Type .INT :
170182 mv .visitTypeInsn (CHECKCAST , "java/lang/Number" );
171- mv .visitMethodInsn (INVOKEVIRTUAL , "java/lang/Number" , "intValue" , "()I" );
183+ mv .visitMethodInsn (INVOKEVIRTUAL , "java/lang/Number" , "intValue" , "()I" , false );
172184 break ;
173185 case Type .FLOAT :
174186 mv .visitTypeInsn (CHECKCAST , "java/lang/Number" );
175- mv .visitMethodInsn (INVOKEVIRTUAL , "java/lang/Number" , "floatValue" , "()F" );
187+ mv .visitMethodInsn (INVOKEVIRTUAL , "java/lang/Number" , "floatValue" , "()F" , false );
176188 break ;
177189 case Type .LONG :
178190 mv .visitTypeInsn (CHECKCAST , "java/lang/Number" );
179- mv .visitMethodInsn (INVOKEVIRTUAL , "java/lang/Number" , "longValue" , "()J" );
191+ mv .visitMethodInsn (INVOKEVIRTUAL , "java/lang/Number" , "longValue" , "()J" , false );
180192 break ;
181193 case Type .DOUBLE :
182194 mv .visitTypeInsn (CHECKCAST , "java/lang/Number" );
183- mv .visitMethodInsn (INVOKEVIRTUAL , "java/lang/Number" , "doubleValue" , "()D" );
195+ mv .visitMethodInsn (INVOKEVIRTUAL , "java/lang/Number" , "doubleValue" , "()D" , false );
184196 break ;
185197 case Type .ARRAY :
186198 mv .visitTypeInsn (CHECKCAST , fieldType .getInternalName ());
@@ -193,8 +205,7 @@ protected static void autoUnBoxing2(MethodVisitor mv, Type fieldType) {
193205 /**
194206 * return a array of new Label (used for switch/case generation)
195207 *
196- * @param cnt
197- * number of label to return
208+ * @param cnt number of label to return
198209 */
199210 public static Label [] newLabels (int cnt ) {
200211 Label [] r = new Label [cnt ];
@@ -203,6 +214,10 @@ public static Label[] newLabels(int cnt) {
203214 return r ;
204215 }
205216
217+ /**
218+ * @param key the field name
219+ * @return setter name
220+ */
206221 public static String getSetterName (String key ) {
207222 int len = key .length ();
208223 char [] b = new char [len + 3 ];
@@ -219,6 +234,10 @@ public static String getSetterName(String key) {
219234 return new String (b );
220235 }
221236
237+ /**
238+ * @param key the field name
239+ * @return getter name
240+ */
222241 public static String getGetterName (String key ) {
223242 int len = key .length ();
224243 char [] b = new char [len + 3 ];
@@ -235,6 +254,10 @@ public static String getGetterName(String key) {
235254 return new String (b );
236255 }
237256
257+ /**
258+ * @param key the boolean field name
259+ * @return boolean getter name
260+ */
238261 public static String getIsName (String key ) {
239262 int len = key .length ();
240263 char [] b = new char [len + 2 ];
0 commit comments