protected BeanMutatorAccessorResolver createBeanMutatorAccessorResolver() { List<BeanMutatorAccessorResolver> resolvers = new ArrayList<BeanMutatorAccessorResolver>(); resolvers.add(new BeanMutatorAccessorResolver.GensonAnnotationsResolver()); resolvers.add(new BeanMutatorAccessorResolver.StandardMutaAccessorResolver(propertyFilter, methodFilter, constructorFilter)); return new BeanMutatorAccessorResolver.CompositeResolver(resolvers); }
protected BeanMutatorAccessorResolver createBeanMutatorAccessorResolver() { List<BeanMutatorAccessorResolver> resolvers = new ArrayList<BeanMutatorAccessorResolver>(); resolvers.add(new BeanMutatorAccessorResolver.GensonAnnotationsResolver()); resolvers.add(new BeanMutatorAccessorResolver.StandardMutaAccessorResolver(propertyFilter, methodFilter, constructorFilter)); return new BeanMutatorAccessorResolver.CompositeResolver(resolvers); }
@Override public void configure(GensonBuilder builder) { // forcing here the order of GensonAnnotationsResolver and AnnotationPropertyNameResolver allows // us to give them preference over Jaxb annotations. We can not assume it true for any bundle, // as in some cases a bundle might want to have preference over all std Genson components builder.withConverters(new XMLGregorianCalendarConverter(), new DurationConveter()) .with(new BeanMutatorAccessorResolver.GensonAnnotationsResolver(), new JaxbAnnotationsResolver()) .with(new PropertyNameResolver.AnnotationPropertyNameResolver(), new JaxbNameResolver()) .withConverterFactory(new EnumConverterFactory()) .withBeanPropertyFactory(new JaxbBeanPropertyFactory()) .withContextualFactory(new XmlTypeAdapterFactory()); if (wrapRootValues) builder.withConverterFactory(new ChainedFactory() { @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; } }); }
@Override public void configure(GensonBuilder builder) { // forcing here the order of GensonAnnotationsResolver and AnnotationPropertyNameResolver allows // us to give them preference over Jaxb annotations. We can not assume it true for any bundle, // as in some cases a bundle might want to have preference over all std Genson components builder.withConverters(new XMLGregorianCalendarConverter(), new DurationConveter()) .with(new BeanMutatorAccessorResolver.GensonAnnotationsResolver(), new JaxbAnnotationsResolver()) .with(new PropertyNameResolver.AnnotationPropertyNameResolver(), new JaxbNameResolver()) .withConverterFactory(new EnumConverterFactory()) .withBeanPropertyFactory(new JaxbBeanPropertyFactory()) .withContextualFactory(new XmlTypeAdapterFactory()); if (wrapRootValues) builder.withConverterFactory(new ChainedFactory() { @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; } }); }