@@ -139,7 +139,7 @@ private static String genSource(String cacheKey, Class clazz, Type[] typeArgs) {
139139
140140 private static String genMap (Class clazz , Type valueType ) {
141141 StringBuilder lines = new StringBuilder ();
142- append (lines , "public Object decode(java.lang.reflect.Type type, com.jsoniter.Jsoniter iter) {" );
142+ append (lines , "public Object decode(com.jsoniter.Jsoniter iter) {" );
143143 append (lines , "{{clazz}} map = new {{clazz}}();" );
144144 append (lines , "for (String field = iter.readObject(); field != null; field = iter.readObject()) {" );
145145 append (lines , "map.put(field, {{op}});" );
@@ -151,7 +151,7 @@ private static String genMap(Class clazz, Type valueType) {
151151
152152 private static String genNative (Class clazz ) {
153153 StringBuilder lines = new StringBuilder ();
154- append (lines , "public Object decode(java.lang.reflect.Type type, com.jsoniter.Jsoniter iter) {" );
154+ append (lines , "public Object decode(com.jsoniter.Jsoniter iter) {" );
155155 append (lines , "return " + NATIVE_READS .get (clazz .getName ()) + ";" );
156156 append (lines , "}" );
157157 return lines .toString ();
@@ -197,15 +197,15 @@ private static String genObject(Class clazz, String cacheKey) {
197197 }
198198 if (map .isEmpty ()) {
199199 StringBuilder lines = new StringBuilder ();
200- append (lines , "public Object decode(java.lang.reflect.Type type, com.jsoniter.Jsoniter iter) {" );
200+ append (lines , "public Object decode(com.jsoniter.Jsoniter iter) {" );
201201 append (lines , "{{clazz}} obj = new {{clazz}}();" );
202202 append (lines , "iter.skip();" );
203203 append (lines , "return obj;" );
204204 append (lines , "}" );
205205 return lines .toString ().replace ("{{clazz}}" , clazz .getName ());
206206 }
207207 StringBuilder lines = new StringBuilder ();
208- append (lines , "public Object decode(java.lang.reflect.Type type, com.jsoniter.Jsoniter iter) {" );
208+ append (lines , "public Object decode(com.jsoniter.Jsoniter iter) {" );
209209 append (lines , "{{clazz}} obj = new {{clazz}}();" );
210210 append (lines , "for (com.jsoniter.Slice field = iter.readObjectAsSlice(); field != null; field = iter.readObjectAsSlice()) {" );
211211 append (lines , "switch (field.len) {" );
@@ -334,18 +334,9 @@ private static String genReadOp(Type type) {
334334 ParameterizedType pType = (ParameterizedType ) type ;
335335 Class clazz = (Class ) pType .getRawType ();
336336 Type [] args = pType .getActualTypeArguments ();
337- switch (args .length ) {
338- case 1 :
339- return String .format ("(%s)iter.read(\" %s\" , %s.class, %s.class);" ,
340- clazz .getCanonicalName (), TypeLiteral .generateCacheKey (type ),
341- clazz .getCanonicalName (), ((Class ) args [0 ]).getCanonicalName ());
342- case 2 :
343- return String .format ("(%s)iter.read(\" %s\" , %s.class, %s.class, %s.class);" ,
344- clazz .getCanonicalName (), TypeLiteral .generateCacheKey (type ),
345- clazz .getCanonicalName (), ((Class ) args [0 ]).getCanonicalName (), ((Class ) args [1 ]).getCanonicalName ());
346- default :
347- throw new IllegalArgumentException ("unsupported number of type arguments: " + type );
348- }
337+ String cacheKey = TypeLiteral .generateCacheKey (type );
338+ getDecoder (cacheKey , clazz , args ); // set the decoder to cache
339+ return String .format ("(%s)iter.read(\" %s\" )" , clazz .getCanonicalName (), cacheKey );
349340 }
350341 throw new IllegalArgumentException ("unsupported type: " + type );
351342 }
@@ -356,7 +347,7 @@ private static String genArray(Class clazz) {
356347 throw new IllegalArgumentException ("nested array not supported: " + clazz .getCanonicalName ());
357348 }
358349 StringBuilder lines = new StringBuilder ();
359- append (lines , "public Object decode(java.lang.reflect.Type type, com.jsoniter.Jsoniter iter) {" );
350+ append (lines , "public Object decode(com.jsoniter.Jsoniter iter) {" );
360351 append (lines , "if (!iter.readArray()) {" );
361352 append (lines , "return new {{comp}}[0];" );
362353 append (lines , "}" );
@@ -398,7 +389,7 @@ private static String genArray(Class clazz) {
398389
399390 private static String genCollectionWithCapacity (Class clazz , Type compType ) {
400391 StringBuilder lines = new StringBuilder ();
401- append (lines , "public Object decode(java.lang.reflect.Type type, com.jsoniter.Jsoniter iter) {" );
392+ append (lines , "public Object decode(com.jsoniter.Jsoniter iter) {" );
402393 append (lines , "if (!iter.readArray()) {" );
403394 append (lines , "return new {{clazz}}(0);" );
404395 append (lines , "}" );
@@ -442,7 +433,7 @@ private static String genCollectionWithCapacity(Class clazz, Type compType) {
442433
443434 private static String genCollection (Class clazz , Type compType ) {
444435 StringBuilder lines = new StringBuilder ();
445- append (lines , "public Object decode(java.lang.reflect.Type type, com.jsoniter.Jsoniter iter) {" );
436+ append (lines , "public Object decode(com.jsoniter.Jsoniter iter) {" );
446437 append (lines , "if (!iter.readArray()) {" );
447438 append (lines , "return new {{clazz}}();" );
448439 append (lines , "}" );
0 commit comments