@SuppressWarnings({"unchecked", "rawtypes"}) public Converter<?> create(Type type, Genson genson) { Converter<?> converter; Serializer<?> serializer = provide(Serializer.class, type, serializersMap, genson); Deserializer<?> deserializer = provide(Deserializer.class, type, deserializersMap, genson); if (serializer instanceof Converter && deserializer instanceof Converter) { converter = (Converter<?>) deserializer; } else { converter = new DelegatedConverter(serializer, deserializer); } return converter; }
@Override protected Converter<?> create(Type type, Genson genson, Converter<?> nextConverter) { return new DefaultConverters.WrappedRootValueConverter<Object>( inputKey, outputKey, (Converter<Object>) nextConverter ); } });
void setDelegateConverter(Converter<T> delegate) { decorate(delegate); } }
@SuppressWarnings("unchecked") private <K, V> DefaultConverters.MapConverter<K, V> createConverter(Class<?> typeOfMap, DefaultConverters.KeyAdapter<K> keyAdapter, Converter<V> valueConverter) { if (Properties.class.equals(typeOfMap)) return new DefaultConverters.PropertiesConverter(keyAdapter, valueConverter); if (Hashtable.class.equals(typeOfMap)) return new DefaultConverters.HashTableConverter<>(keyAdapter, valueConverter); if (TreeMap.class.equals(typeOfMap)) return new DefaultConverters.TreeMapConverter<>(keyAdapter, valueConverter); if (LinkedHashMap.class.equals(typeOfMap)) return new DefaultConverters.LinkedHashMapConverter<>(keyAdapter, valueConverter); return new DefaultConverters.HashMapConverter<>(keyAdapter, valueConverter); } }
/** * You should override this method if you want to add custom * {@link com.owlike.genson.convert.ChainedFactory ChainedFactory} or if you need to chain * them differently. * * @return the converter <u>factory instance that will be used to resolve * <strong>ALL</strong> converters</u>. */ protected Factory<Converter<?>> createConverterFactory() { ChainedFactory chainHead = new CircularClassReferenceConverterFactory(); chainHead.append(new NullConverterFactory(failOnNullPrimitive)); if (useRuntimeTypeForSerialization) chainHead.append(new RuntimeTypeConverter.RuntimeTypeConverterFactory()); chainHead.append(new ClassMetadataConverter.ClassMetadataConverterFactory(classMetadataWithStaticType)); if (customFactoryChain != null) chainHead.append(customFactoryChain); if (withBeanViewConverter) chainHead.append(new BeanViewConverter.BeanViewConverterFactory( getBeanViewDescriptorProvider())); ContextualFactoryDecorator ctxFactoryDecorator = new ContextualFactoryDecorator( new BasicConvertersFactory(getSerializersMap(), getDeserializersMap(), getFactories(), getBeanDescriptorProvider())); chainHead.append(ctxFactoryDecorator); return chainHead; }
protected void addDefaultContextualFactories(List<ContextualFactory<?>> factories) { factories.add(new DefaultConverters.DateContextualFactory()); factories.add(new DefaultConverters.PropertyConverterFactory()); }
/** * Override this method if you want to change the default converter factories. * * @param factories list, is not null. */ protected void addDefaultConverterFactories(List<Factory<? extends Converter<?>>> factories) { factories.add(DefaultConverters.ArrayConverterFactory.instance); factories.add(DefaultConverters.CollectionConverterFactory.instance); factories.add(DefaultConverters.MapConverterFactory.instance); factories.add(DefaultConverters.EnumConverterFactory.instance); factories.add(DefaultConverters.PrimitiveConverterFactory.instance); factories.add(DefaultConverters.UntypedConverterFactory.instance); factories.add(new DefaultConverters.CalendarConverterFactory( new DefaultConverters.DateConverter(dateFormat, useDateAsTimestamp) )); }
@Override public void serialize(Collection object, ObjectWriter writer, Context ctx) throws Exception { defaultConverter.serialize(object, writer, ctx); }
public CalendarConverterFactory(DateConverter dateConverter) { this.calendarConverter = new CalendarConverter(dateConverter); }
@Override public <A extends Annotation> A getAnnotation(Class<A> aClass) { A a = null; if (serializer != null) a = toAnnotatedElement(serializer).getAnnotation(aClass); if (deserializer != null && a == null) a = toAnnotatedElement(deserializer).getAnnotation(aClass); return a; }
@SuppressWarnings("unchecked") private <K, V> MapConverter<K, V> createConverter(Class<?> typeOfMap, KeyAdapter<K> keyAdapter, Converter<V> valueConverter) { if (Properties.class.equals(typeOfMap)) return new PropertiesConverter(keyAdapter, valueConverter); if (Hashtable.class.equals(typeOfMap)) return new HashTableConverter<K, V>(keyAdapter, valueConverter); if (TreeMap.class.equals(typeOfMap)) return new TreeMapConverter<K, V>(keyAdapter, valueConverter); if (LinkedHashMap.class.equals(typeOfMap)) return new LinkedHashMapConverter<K, V>(keyAdapter, valueConverter); return new HashMapConverter<K, V>(keyAdapter, valueConverter); } }
@SuppressWarnings({"unchecked", "rawtypes"}) public Converter<?> create(Type type, Genson genson) { Converter<?> converter; Serializer<?> serializer = provide(Serializer.class, type, serializersMap, genson); Deserializer<?> deserializer = provide(Deserializer.class, type, deserializersMap, genson); if (serializer instanceof Converter && deserializer instanceof Converter) { converter = (Converter<?>) deserializer; } else { converter = new DelegatedConverter(serializer, deserializer); } return converter; }
protected void addDefaultContextualFactories(List<ContextualFactory<?>> factories) { factories.add(new DefaultConverters.DateContextualFactory()); factories.add(new DefaultConverters.PropertyConverterFactory()); }
/** * Override this method if you want to change the default converter factories. * * @param factories list, is not null. */ protected void addDefaultConverterFactories(List<Factory<? extends Converter<?>>> factories) { factories.add(DefaultConverters.ArrayConverterFactory.instance); factories.add(DefaultConverters.CollectionConverterFactory.instance); factories.add(DefaultConverters.MapConverterFactory.instance); factories.add(DefaultConverters.EnumConverterFactory.instance); factories.add(DefaultConverters.PrimitiveConverterFactory.instance); factories.add(DefaultConverters.UntypedConverterFactory.instance); factories.add(new DefaultConverters.CalendarConverterFactory( new DefaultConverters.DateConverter(dateFormat, useDateAsTimestamp) )); }
@Override protected Converter<?> create(Type type, Genson genson, Converter<?> nextConverter) { return new DefaultConverters.WrappedRootValueConverter<Object>( inputKey, outputKey, (Converter<Object>) nextConverter ); } });
void setDelegateConverter(Converter<T> delegate) { decorate(delegate); } }
@Override public void serialize(Collection object, ObjectWriter writer, Context ctx) throws Exception { defaultConverter.serialize(object, writer, ctx); }
public CalendarConverterFactory(DateConverter dateConverter) { this.calendarConverter = new CalendarConverter(dateConverter); }
@Override public boolean isAnnotationPresent(Class<? extends Annotation> annotationClass) { if (serializer != null) return toAnnotatedElement(serializer).isAnnotationPresent(annotationClass); if (deserializer != null) return toAnnotatedElement(deserializer).isAnnotationPresent(annotationClass); return false; } }
@SuppressWarnings("unchecked") private <K, V> MapConverter<K, V> createConverter(Class<?> typeOfMap, KeyAdapter<K> keyAdapter, Converter<V> valueConverter) { if (Properties.class.equals(typeOfMap)) return new PropertiesConverter(keyAdapter, valueConverter); if (Hashtable.class.equals(typeOfMap)) return new HashTableConverter<K, V>(keyAdapter, valueConverter); if (TreeMap.class.equals(typeOfMap)) return new TreeMapConverter<K, V>(keyAdapter, valueConverter); if (LinkedHashMap.class.equals(typeOfMap)) return new LinkedHashMapConverter<K, V>(keyAdapter, valueConverter); return new HashMapConverter<K, V>(keyAdapter, valueConverter); } }