@HandleClassMetadata public static class ArrayDequeConverter<E> extends CollectionConverter<E> { public ArrayDequeConverter(Class<E> eClass, Converter<E> elementConverter) { super(eClass, elementConverter); } @Override protected Collection<E> create() { return new ArrayDeque<E>(); } }
@SuppressWarnings({"unchecked", "rawtypes"}) @Override protected Converter<?> create(Type type, Genson genson, Converter<?> nextConverter) { if (nextConverter == null) throw new IllegalArgumentException( "nextConverter must be not null for ClassMetadataConverter, " + "as ClassMetadataConverter can not be the last converter in the chain!"); Class<?> rawClass = TypeUtil.getRawClass(type); HandleClassMetadata handleClassMetadata = Wrapper.toAnnotatedElement(nextConverter) .getAnnotation(HandleClassMetadata.class); boolean writeClassMetadata = handleClassMetadata == null || !handleClassMetadata.serialization(); boolean readClassMetadata = handleClassMetadata == null || !handleClassMetadata.deserialization(); if (genson.isWithClassMetadata() && (writeClassMetadata || readClassMetadata)) return new ClassMetadataConverter( rawClass, nextConverter, classMetadataWithStaticType, writeClassMetadata, readClassMetadata ); else return nextConverter; } }
@HandleClassMetadata public static class LinkedListConverter<E> extends CollectionConverter<E> { public LinkedListConverter(Class<E> eClass, Converter<E> elementConverter) { super(eClass, elementConverter); } @Override protected Collection<E> create() { return new LinkedList<E>(); } }
@HandleClassMetadata public static class LinkedHashSetConverter<E> extends CollectionConverter<E> { public LinkedHashSetConverter(Class<E> eClass, Converter<E> elementConverter) { super(eClass, elementConverter); } @Override protected Collection<E> create() { return new LinkedHashSet<E>(); } }
@HandleClassMetadata public static class SetConverter<E> extends CollectionConverter<E> { public SetConverter(Class<E> eClass, Converter<E> elementConverter) { super(eClass, elementConverter); } @Override protected Collection<E> create() { return new HashSet<E>(); } }
@HandleClassMetadata public static class LinkedListConverter<E> extends CollectionConverter<E> { public LinkedListConverter(Class<E> eClass, Converter<E> elementConverter) { super(eClass, elementConverter); } @Override protected Collection<E> create() { return new LinkedList<E>(); } }
@HandleClassMetadata public static class LinkedHashSetConverter<E> extends CollectionConverter<E> { public LinkedHashSetConverter(Class<E> eClass, Converter<E> elementConverter) { super(eClass, elementConverter); } @Override protected Collection<E> create() { return new LinkedHashSet<E>(); } }
@HandleClassMetadata public static class SetConverter<E> extends CollectionConverter<E> { public SetConverter(Class<E> eClass, Converter<E> elementConverter) { super(eClass, elementConverter); } @Override protected Collection<E> create() { return new HashSet<E>(); } }
@HandleClassMetadata public static class ArrayDequeConverter<E> extends CollectionConverter<E> { public ArrayDequeConverter(Class<E> eClass, Converter<E> elementConverter) { super(eClass, elementConverter); } @Override protected Collection<E> create() { return new ArrayDeque<E>(); } }
@HandleClassMetadata public static class EnumSetConverter<E> extends CollectionConverter<E> { private final Class<E> eClass; public EnumSetConverter(Class<E> eClass, Converter<E> elementConverter) { super(eClass, elementConverter); this.eClass = eClass; } @SuppressWarnings({"unchecked", "rawtypes"}) @Override protected Collection<E> create() { return EnumSet.noneOf((Class) eClass); } }
@HandleClassMetadata public static class EnumSetConverter<E> extends CollectionConverter<E> { private final Class<E> eClass; public EnumSetConverter(Class<E> eClass, Converter<E> elementConverter) { super(eClass, elementConverter); this.eClass = eClass; } @SuppressWarnings({"unchecked", "rawtypes"}) @Override protected Collection<E> create() { return EnumSet.noneOf((Class) eClass); } }
@HandleClassMetadata(serialization = true, deserialization = false) private class JsonValueConverterWithClassMetadataForDeser extends JsonValueConverter {}
@HandleClassMetadata public final static class ByteArrayConverter implements Converter<byte[]> { public static final ByteArrayConverter instance = new ByteArrayConverter(); private ByteArrayConverter() { } @Override public void serialize(byte[] object, ObjectWriter writer, Context ctx) { writer.writeValue(object); } @Override public byte[] deserialize(ObjectReader reader, Context ctx) { return reader.valueAsByteArray(); } }
@HandleClassMetadata public final static class ByteArrayConverter implements Converter<byte[]> { public static final ByteArrayConverter instance = new ByteArrayConverter(); private ByteArrayConverter() { } @Override public void serialize(byte[] object, ObjectWriter writer, Context ctx) { writer.writeValue(object); } @Override public byte[] deserialize(ObjectReader reader, Context ctx) { return reader.valueAsByteArray(); } }
@HandleClassMetadata(serialization = true, deserialization = false) public final static class UntypedConverter implements Converter<Object> { final static UntypedConverter instance = new UntypedConverter(); private UntypedConverter() { } public Object deserialize(ObjectReader reader, Context ctx) { return ctx.genson.deserialize(GenericType.of(reader.getValueType().toClass()), reader, ctx); } public void serialize(Object obj, ObjectWriter writer, Context ctx) { if (Object.class.equals(obj.getClass())) throw new UnsupportedOperationException( "Serialization of type Object is not supported by default serializers."); ctx.genson.serialize(obj, obj.getClass(), writer, ctx); } }
@HandleClassMetadata public static class PriorityQueueConverter<E> extends CollectionConverter<E> { public PriorityQueueConverter(Class<E> eClass, Converter<E> elementConverter) { super(eClass, 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 protected Collection<E> create() { return new PriorityQueue<E>(); } }
@HandleClassMetadata public static class TreeSetConverter<E> extends CollectionConverter<E> { public TreeSetConverter(Class<E> eClass, Converter<E> elementConverter) { super(eClass, 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); } @Override protected Collection<E> create() { return new TreeSet<E>(); } }
@HandleClassMetadata public static class TreeSetConverter<E> extends CollectionConverter<E> { public TreeSetConverter(Class<E> eClass, Converter<E> elementConverter) { super(eClass, 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); } @Override protected Collection<E> create() { return new TreeSet<E>(); } }
@HandleClassMetadata public static class PriorityQueueConverter<E> extends CollectionConverter<E> { public PriorityQueueConverter(Class<E> eClass, Converter<E> elementConverter) { super(eClass, 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 protected Collection<E> create() { return new PriorityQueue<E>(); } }
@HandleClassMetadata public static class ByteArrayAsIntArrayConverter implements Converter<byte[]> { public static final ByteArrayAsIntArrayConverter instance = new ByteArrayAsIntArrayConverter(); private ByteArrayAsIntArrayConverter() { } @Override public void serialize(byte[] object, ObjectWriter writer, Context ctx) throws Exception { writer.beginArray(); for (int i = 0; i < object.length; i++) writer.writeValue(object[i]); writer.endArray(); } @Override public byte[] deserialize(ObjectReader reader, Context ctx) throws Exception { byte[] array = new byte[256]; reader.beginArray(); int i; for (i = 0; reader.hasNext(); i++) { reader.next(); Operations.expandArray(array, i, 2); array[i] = (byte) reader.valueAsInt(); } reader.endArray(); return Operations.truncateArray(array, i); } }