@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); } }