Changeset 399 for tapas/common
- Timestamp:
- 03/07/12 12:24:08 (12 years ago)
- Location:
- tapas/common/implementation/com/ether
- Files:
-
- 4 added
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
tapas/common/implementation/com/ether/JSONHelperImpl.java
r396 r399 13 13 import org.springframework.beans.factory.InitializingBean; 14 14 15 import java.lang.reflect.TypeVariable; 15 import java.util.AbstractCollection; 16 import java.util.ArrayList; 16 17 import java.util.Collection; 17 18 import java.util.Collections; 19 import java.util.List; 18 20 import java.util.Map; 19 21 … … 79 81 { 80 82 final JSONArray jsonArray = JSONArray.fromObject( json, _jsonConfig ); 81 if( beanClass.isArray() ) 83 final Class<? super T> superclass = beanClass.getSuperclass(); 84 if( superclass.isAssignableFrom( AbstractCollection.class ) ) 82 85 { 83 final Class<?> componentType = beanClass.getComponentType();84 //json.sf.net does not support Long[] or long[]85 if( Long.class.equals( componentType ) || Long.TYPE.equals( componentType ))86 final Tapas tapas = new Tapas(); 87 final List<Request> requests = new ArrayList<Request>(); 88 for( final Object jsonElement : jsonArray ) 86 89 { 87 final Integer[] integers = (Integer[]) JSONArray.toArray( jsonArray, Integer.class ); 88 if( Long.class.equals( componentType ) ) 89 { 90 final Long[] resultArray = new Long[integers.length]; 91 for( int i = 0; i < integers.length; ++i ) 92 resultArray[i] = integers[i].longValue(); 93 return (T) resultArray; 94 } 95 if( Long.TYPE.equals( componentType ) ) 96 { 97 final long[] resultArray = new long[integers.length]; 98 for( int i = 0; i < integers.length; ++i ) 99 resultArray[i] = integers[i].longValue(); 100 return (T) resultArray; 101 } 90 final Request request = fromJSON( (JSON) jsonElement, Request.class ); 91 requests.add( request ); 102 92 } 103 return (T) JSONArray.toArray( jsonArray, componentType ); 93 tapas.setRequests( requests ); 94 return (T) tapas; 104 95 } 105 if( beanClass.isAssignableFrom( Collection.class ) ) 106 { 107 final TypeVariable<Class<T>>[] typeParameters = beanClass.getTypeParameters(); 108 if( null == typeParameters || typeParameters.length != 1 || null == typeParameters[0] ) 109 return (T) JSONArray.toCollection( jsonArray ); 110 return (T) JSONArray.toCollection( jsonArray, typeParameters[0].getGenericDeclaration() ); 111 } 96 // 97 // if( beanClass.isArray() ) 98 // { 99 // final Class<?> componentType = beanClass.getComponentType(); 100 // //json.sf.net does not support Long[] or long[] 101 // if( Long.class.equals( componentType ) || Long.TYPE.equals( componentType ) ) 102 // { 103 // final Integer[] integers = (Integer[]) JSONArray.toArray( jsonArray, Integer.class ); 104 // if( Long.class.equals( componentType ) ) 105 // { 106 // final Long[] resultArray = new Long[integers.length]; 107 // for( int i = 0; i < integers.length; ++i ) 108 // resultArray[i] = integers[i].longValue(); 109 // return (T) resultArray; 110 // } 111 // if( Long.TYPE.equals( componentType ) ) 112 // { 113 // final long[] resultArray = new long[integers.length]; 114 // for( int i = 0; i < integers.length; ++i ) 115 // resultArray[i] = integers[i].longValue(); 116 // return (T) resultArray; 117 // } 118 // } 119 // return (T) JSONArray.toArray( jsonArray, componentType ); 120 // } 121 // if( beanClass.isAssignableFrom( Collection.class ) ) 122 // { 123 // final TypeVariable<Class<T>>[] typeParameters = beanClass.getTypeParameters(); 124 // if( null == typeParameters || typeParameters.length != 1 || null == typeParameters[0] ) 125 // return (T) JSONArray.toCollection( jsonArray ); 126 // return (T) JSONArray.toCollection( jsonArray, typeParameters[0].getGenericDeclaration() ); 127 // } 112 128 } 113 129 final JSONObject jsonObject = JSONObject.fromObject( json, _jsonConfig );
Note: See TracChangeset
for help on using the changeset viewer.