@SuppressWarnings({"rawtypes", "unchecked"}) public Converter<Object> create(Type forType, Genson genson) { if (forType instanceof GenericArrayType || (forType instanceof Class<?> && ((Class<?>) forType).isArray())) { if (byte.class.equals(getCollectionType(forType))) { return (Converter) ByteArrayConverter.instance; } else { Converter<?> elementConverter = genson.provideConverter(TypeUtil .getCollectionType(forType)); return new ArrayConverter(TypeUtil.getRawClass(TypeUtil .getCollectionType(forType)), elementConverter); } } return null; } }
@SuppressWarnings({"rawtypes", "unchecked"}) public Converter<Object> create(Type forType, Genson genson) { if (forType instanceof GenericArrayType || (forType instanceof Class<?> && ((Class<?>) forType).isArray())) { if (byte.class.equals(getCollectionType(forType))) { return (Converter) ByteArrayConverter.instance; } else { Converter<?> elementConverter = genson.provideConverter(TypeUtil .getCollectionType(forType)); return new ArrayConverter(TypeUtil.getRawClass(TypeUtil .getCollectionType(forType)), elementConverter); } } return null; } }
@SuppressWarnings({"rawtypes", "unchecked"}) public Converter<Collection<?>> create(Type forType, Genson genson) { Converter<?> elementConverter = genson.provideConverter(TypeUtil.getCollectionType(forType)); Class<?> parameterRawClass = TypeUtil.getRawClass(TypeUtil.getCollectionType(forType)); Class<?> rawClass = getRawClass(forType); if (EnumSet.class.isAssignableFrom(rawClass) && parameterRawClass.isEnum()) return new EnumSetConverter(parameterRawClass, elementConverter); if (LinkedHashSet.class.isAssignableFrom(rawClass)) return new LinkedHashSetConverter(parameterRawClass, elementConverter); if (TreeSet.class.isAssignableFrom(rawClass)) return new TreeSetConverter(parameterRawClass, elementConverter); if (Set.class.isAssignableFrom(rawClass)) return new SetConverter(parameterRawClass, elementConverter); if (LinkedList.class.isAssignableFrom(rawClass)) return new LinkedListConverter(parameterRawClass, elementConverter); if (ArrayDeque.class.isAssignableFrom(rawClass)) return new ArrayDequeConverter(parameterRawClass, elementConverter); if (PriorityQueue.class.isAssignableFrom(rawClass)) return new PriorityQueueConverter(parameterRawClass, elementConverter); return new CollectionConverter(parameterRawClass, elementConverter); } }
@SuppressWarnings({"rawtypes", "unchecked"}) public Converter<Collection<?>> create(Type forType, Genson genson) { Converter<?> elementConverter = genson.provideConverter(TypeUtil.getCollectionType(forType)); Class<?> parameterRawClass = TypeUtil.getRawClass(TypeUtil.getCollectionType(forType)); Class<?> rawClass = getRawClass(forType); if (EnumSet.class.isAssignableFrom(rawClass) && parameterRawClass.isEnum()) return new EnumSetConverter(parameterRawClass, elementConverter); if (LinkedHashSet.class.isAssignableFrom(rawClass)) return new LinkedHashSetConverter(parameterRawClass, elementConverter); if (TreeSet.class.isAssignableFrom(rawClass)) return new TreeSetConverter(parameterRawClass, elementConverter); if (Set.class.isAssignableFrom(rawClass)) return new SetConverter(parameterRawClass, elementConverter); if (LinkedList.class.isAssignableFrom(rawClass)) return new LinkedListConverter(parameterRawClass, elementConverter); if (ArrayDeque.class.isAssignableFrom(rawClass)) return new ArrayDequeConverter(parameterRawClass, elementConverter); if (PriorityQueue.class.isAssignableFrom(rawClass)) return new PriorityQueueConverter(parameterRawClass, elementConverter); return new CollectionConverter(parameterRawClass, elementConverter); } }