@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); } }
@Override public void serialize(Collection<E> array, ObjectWriter writer, Context ctx) throws Exception { TreeSet<E> treeSet = (TreeSet<E>) array; if (treeSet.comparator() != null) { throw new UnsupportedOperationException("Serialization and deserialization of TreeSet with Comparator is not supported. " + "You need to implement a custom Converter to handle it."); } super.serialize(array, writer, ctx); }
@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); } }
@Override public void serialize(Collection<E> array, ObjectWriter writer, Context ctx) throws Exception { PriorityQueue<E> queue = (PriorityQueue<E>) array; if (queue.comparator() != null) { throw new UnsupportedOperationException("Serialization and deserialization of PriorityQueue with Comparator is not supported. " + "You need to implement a custom Converter to handle it."); } super.serialize(array, writer, ctx); }
@Override public void serialize(Collection object, ObjectWriter writer, Context ctx) throws Exception { defaultConverter.serialize(object, writer, ctx); }
@Override public void serialize(Collection object, ObjectWriter writer, Context ctx) throws Exception { defaultConverter.serialize(object, writer, ctx); }
@Override public Collection deserialize(ObjectReader reader, Context ctx) throws Exception { ValueType vt = reader.getValueType(); if (vt != ValueType.ARRAY && vt != ValueType.NULL ) { Object object = defaultConverter.getElementConverter().deserialize(reader, ctx); Collection result = defaultConverter.create(); result.add(object); return result; } else return defaultConverter.deserialize( reader, ctx ); } };
@Override public Collection deserialize(ObjectReader reader, Context ctx) throws Exception { ValueType vt = reader.getValueType(); if (vt != ValueType.ARRAY && vt != ValueType.NULL ) { Object object = defaultConverter.getElementConverter().deserialize(reader, ctx); Collection result = defaultConverter.create(); result.add(object); return result; } else return defaultConverter.deserialize( reader, ctx ); } };
@Override public void serialize(Collection<E> array, ObjectWriter writer, Context ctx) throws Exception { PriorityQueue<E> queue = (PriorityQueue<E>) array; if (queue.comparator() != null) { throw new UnsupportedOperationException("Serialization and deserialization of PriorityQueue with Comparator is not supported. " + "You need to implement a custom Converter to handle it."); } super.serialize(array, writer, ctx); }
public Collection<E> deserialize(ObjectReader reader, Context ctx) throws Exception { reader.beginArray(); Collection<E> col = create(); for (; reader.hasNext(); ) { reader.next(); E e = elementConverter.deserialize(reader, ctx); col.add(e); } reader.endArray(); return col; }
@Override public void serialize(Collection<E> array, ObjectWriter writer, Context ctx) throws Exception { TreeSet<E> treeSet = (TreeSet<E>) array; if (treeSet.comparator() != null) { throw new UnsupportedOperationException("Serialization and deserialization of TreeSet with Comparator is not supported. " + "You need to implement a custom Converter to handle it."); } super.serialize(array, writer, ctx); }
public Collection<E> deserialize(ObjectReader reader, Context ctx) throws Exception { reader.beginArray(); Collection<E> col = create(); for (; reader.hasNext(); ) { reader.next(); E e = elementConverter.deserialize(reader, ctx); col.add(e); } reader.endArray(); return col; }