resolvers.add(mutatorAccessorResolver); beanViewDescriptorProvider = new BeanViewDescriptorProvider( new AbstractBeanDescriptorProvider.ContextualConverterFactory(contextualFactories), registeredViews, createBeanPropertyFactory(), new BeanMutatorAccessorResolver.CompositeResolver(resolvers), getPropertyNameResolver()
resolvers.add(mutatorAccessorResolver); beanViewDescriptorProvider = new BeanViewDescriptorProvider( new AbstractBeanDescriptorProvider.ContextualConverterFactory(contextualFactories), registeredViews, createBeanPropertyFactory(), new BeanMutatorAccessorResolver.CompositeResolver(resolvers), getPropertyNameResolver()
/** * Creates the standard BeanDescriptorProvider that will be used to provide * {@link com.owlike.genson.reflect.BeanDescriptor BeanDescriptor} instances for * serialization/deserialization of all types that couldn't be handled by standard and * custom converters and converter factories. * * @return the BeanDescriptorProvider instance. */ protected BeanDescriptorProvider createBeanDescriptorProvider() { ContextualConverterFactory contextualConverterFactory = new ContextualConverterFactory(contextualFactories); BeanPropertyFactory beanPropertyFactory = createBeanPropertyFactory(); List<BeanDescriptorProvider> providers = new ArrayList<BeanDescriptorProvider>(); for (GensonBundle bundle : _bundles) { BeanDescriptorProvider provider = bundle.createBeanDescriptorProvider(contextualConverterFactory, beanPropertyFactory, getMutatorAccessorResolver(), getPropertyNameResolver(), this); if (provider != null) providers.add(provider); } providers.add(new BaseBeanDescriptorProvider( new AbstractBeanDescriptorProvider.ContextualConverterFactory(contextualFactories), createBeanPropertyFactory(), getMutatorAccessorResolver(), getPropertyNameResolver(), useGettersAndSetters, useFields, true )); return new CompositeBeanDescriptorProvider(providers); }
/** * Creates the standard BeanDescriptorProvider that will be used to provide * {@link com.owlike.genson.reflect.BeanDescriptor BeanDescriptor} instances for * serialization/deserialization of all types that couldn't be handled by standard and * custom converters and converter factories. * * @return the BeanDescriptorProvider instance. */ protected BeanDescriptorProvider createBeanDescriptorProvider() { ContextualConverterFactory contextualConverterFactory = new ContextualConverterFactory(contextualFactories); BeanPropertyFactory beanPropertyFactory = createBeanPropertyFactory(); List<BeanDescriptorProvider> providers = new ArrayList<BeanDescriptorProvider>(); for (GensonBundle bundle : _bundles) { BeanDescriptorProvider provider = bundle.createBeanDescriptorProvider(contextualConverterFactory, beanPropertyFactory, getMutatorAccessorResolver(), getPropertyNameResolver(), this); if (provider != null) providers.add(provider); } providers.add(new BaseBeanDescriptorProvider( new AbstractBeanDescriptorProvider.ContextualConverterFactory(contextualFactories), createBeanPropertyFactory(), getMutatorAccessorResolver(), getPropertyNameResolver(), useGettersAndSetters, useFields, true )); return new CompositeBeanDescriptorProvider(providers); }
private Converter<Object> provide(BeanProperty property, Genson genson) { // contextual converters must not be retrieved from cache nor stored in cache, by first // trying to create it and reusing it during the // call to genson.provideConverter we avoid retrieving it from cache, and by setting // DO_NOT_CACHE_CONVERTER to true we tell genson not to store // this converter in cache @SuppressWarnings("unchecked") Converter<Object> converter = (Converter<Object>) contextualConverterFactory.provide( property, genson); if (converter != null) { ThreadLocalHolder.store(DO_NOT_CACHE_CONVERTER_KEY, true); ThreadLocalHolder.store(CONTEXT_KEY, converter); } try { return genson.provideConverter(property.type); } finally { if (converter != null) { ThreadLocalHolder.remove(DO_NOT_CACHE_CONVERTER_KEY, Boolean.class); ThreadLocalHolder.remove(CONTEXT_KEY, Converter.class); } } }
private Converter<Object> provide(BeanProperty property, Genson genson) { // contextual converters must not be retrieved from cache nor stored in cache, by first // trying to create it and reusing it during the // call to genson.provideConverter we avoid retrieving it from cache, and by setting // DO_NOT_CACHE_CONVERTER to true we tell genson not to store // this converter in cache @SuppressWarnings("unchecked") Converter<Object> converter = (Converter<Object>) contextualConverterFactory.provide( property, genson); if (converter != null) { ThreadLocalHolder.store(DO_NOT_CACHE_CONVERTER_KEY, true); ThreadLocalHolder.store(CONTEXT_KEY, converter); } try { return genson.provideConverter(property.type); } finally { if (converter != null) { ThreadLocalHolder.remove(DO_NOT_CACHE_CONVERTER_KEY, Boolean.class); ThreadLocalHolder.remove(CONTEXT_KEY, Converter.class); } } }