@Override public Converter<Calendar> create(Type type, Genson genson) { if (!Calendar.class.isAssignableFrom(TypeUtil.getRawClass(type))) throw new IllegalStateException( "CalendarConverterFactory create method can be called only for Calendar type and subtypes."); return calendarConverter; } }
@SuppressWarnings("unchecked") protected GenericType() { Type superType = getClass().getGenericSuperclass(); if (superType instanceof Class<?>) { throw new IllegalArgumentException("You must specify the parametrized type!"); } type = ((ParameterizedType) superType).getActualTypeArguments()[0]; rawClass = (Class<T>) TypeUtil.getRawClass(type); }
@SuppressWarnings("unchecked") protected GenericType() { Type superType = getClass().getGenericSuperclass(); if (superType instanceof Class<?>) { throw new IllegalArgumentException("You must specify the parametrized type!"); } type = ((ParameterizedType) superType).getActualTypeArguments()[0]; rawClass = (Class<T>) TypeUtil.getRawClass(type); }
@SuppressWarnings({"rawtypes", "unchecked"}) public Converter<Enum<?>> create(Type type, Genson genson) { Class<?> rawClass = TypeUtil.getRawClass(type); return rawClass.isEnum() || Enum.class.isAssignableFrom(rawClass) ? new EnumConverter( rawClass, caseSensitive) : null; } }
@SuppressWarnings({"unchecked", "rawtypes"}) @Override protected Converter<?> create(Type type, Genson genson, Converter<?> nextConverter) { if (nextConverter == null) throw new IllegalArgumentException( "RuntimeTypeConverter can not be last Converter in the chain."); return (Converter<?>) new RuntimeTypeConverter(TypeUtil.getRawClass(type), nextConverter); } }
@SuppressWarnings({"unchecked", "rawtypes"}) @Override protected Converter<?> create(Type type, Genson genson, Converter<?> nextConverter) { if (nextConverter == null) throw new IllegalArgumentException( "RuntimeTypeConverter can not be last Converter in the chain."); return (Converter<?>) new RuntimeTypeConverter(TypeUtil.getRawClass(type), nextConverter); } }
@Override public Converter<?> create(Type type, Genson genson) { if (Object.class.equals(TypeUtil.getRawClass(type))) return new JsonValueConverterWithClassMetadataForDeser(); else return null; } });
@Override public PropertyMutator createMutator(String name, Method method, Type ofType, Genson genson) { if (method.getParameterTypes().length == 1) { Type newType = getType(method, method.getReturnType(), ofType); if (newType != null) { return new PropertyMutator.MethodMutator(name, method, newType, getRawClass(ofType)); } } return null; }
@Override public PropertyAccessor createAccessor(String name, Method method, Type ofType, Genson genson) { Type newType = getType(method, method.getReturnType(), ofType); if (newType != null) { return new PropertyAccessor.MethodAccessor(name, method, newType, getRawClass(ofType)); } return null; }
public PropertyMutator createMutator(String name, Field field, Type ofType, Genson genson) { Class<?> ofClass = getRawClass(ofType); Type expandedType = TypeUtil.expandType(field.getGenericType(), ofType); return new PropertyMutator.FieldMutator(name, field, expandedType, ofClass); }
public PropertyAccessor createAccessor(String name, Field field, Type ofType, Genson genson) { Class<?> ofClass = getRawClass(ofType); Type expandedType = TypeUtil.expandType(field.getGenericType(), ofType); return new PropertyAccessor.FieldAccessor(name, field, expandedType, ofClass); }
@Override public PropertyAccessor createAccessor(String name, Method method, Type ofType, Genson genson) { Type newType = getType(method, method.getReturnType(), ofType); if (newType != null) { return new PropertyAccessor.MethodAccessor(name, method, newType, getRawClass(ofType)); } return null; }
public PropertyMutator createMutator(String name, Field field, Type ofType, Genson genson) { Class<?> ofClass = getRawClass(ofType); Type expandedType = TypeUtil.expandType(field.getGenericType(), ofType); return new PropertyMutator.FieldMutator(name, field, expandedType, ofClass); }
@Override public PropertyMutator createMutator(String name, Field field, Type ofType, Genson genson) { Type newType = getType(field, field.getGenericType(), ofType); if (newType != null) { return new PropertyMutator.FieldMutator(name, field, newType, getRawClass(ofType)); } return null; }
public PropertyAccessor createAccessor(String name, Method method, Type ofType, Genson genson) { Type expandedType = TypeUtil.expandType(method.getGenericReturnType(), ofType); return new PropertyAccessor.MethodAccessor(name, method, expandedType, getRawClass(ofType)); }
public PropertyMutator createMutator(String name, Method method, Type ofType, Genson genson) { Type expandedType = TypeUtil.expandType(method.getGenericParameterTypes()[0], ofType); return new PropertyMutator.MethodMutator(name, method, expandedType, getRawClass(ofType)); }
public BeanCreator createCreator(Type ofType, Method method, String[] resolvedNames, Genson genson) { return new BeanCreator.MethodBeanCreator(method, resolvedNames, expandTypes( method.getGenericParameterTypes(), ofType), getRawClass(ofType)); }
public BeanCreator createCreator(Type ofType, Constructor<?> ctr, String[] resolvedNames, Genson genson) { return new BeanCreator.ConstructorBeanCreator(getRawClass(ofType), ctr, resolvedNames, expandTypes(ctr.getGenericParameterTypes(), ofType)); }
@Override public PropertyAccessor createAccessor(String name, Field field, Type ofType, Genson genson) { Type newType = getType(field, field.getGenericType(), ofType); if (newType != null) { return new PropertyAccessor.FieldAccessor(name, field, newType, getRawClass(ofType)); } return null; }
@Override protected Converter<?> create(Type type, Genson genson, Converter<?> nextConverter) { Class<?> clazz = TypeUtil.getRawClass(type); XmlRootElement ann = clazz.getAnnotation(XmlRootElement.class); if (ann != null) { String name = "##default".equals(ann.name()) ? firstCharToLower(clazz.getSimpleName()) : ann.name(); return new WrappedRootValueConverter<Object>(name, name, (Converter<Object>) nextConverter); } return null; } });