下面列出了com.fasterxml.jackson.databind.deser.BeanDeserializerFactory#com.fasterxml.jackson.databind.cfg.DeserializerFactoryConfig 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
public ObjectMapper getContext(Class<?> type) {
// TypeResolver
SimpleAbstractTypeResolver abstractTypeResolver = new SimpleAbstractTypeResolver();
abstractTypeResolver.addMapping(List.class, ArrayList.class);
abstractTypeResolver.addMapping(Set.class, HashSet.class);
abstractTypeResolver.addMapping(Map.class, HashMap.class);
// Serializer
DefaultSerializerProvider serializerProvider = new DefaultSerializerProvider.Impl();
// Deserializer
DeserializerFactoryConfig deserializerFactoryConfig = new DeserializerFactoryConfig().withAbstractTypeResolver(abstractTypeResolver);
BeanDeserializerFactory deserializerFactory = new BeanDeserializerFactory(deserializerFactoryConfig);
DefaultDeserializationContext.Impl deserializationContext = new DefaultDeserializationContext.Impl(deserializerFactory);
// ObjectMapper
ObjectMapper objectMapper = new ObjectMapper(null, serializerProvider, deserializationContext);
objectMapper = objectMapper.enableDefaultTypingAsProperty(ObjectMapper.DefaultTyping.OBJECT_AND_NON_CONCRETE, "type");
objectMapper = objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
objectMapper = objectMapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
return objectMapper;
}
/**
* Method used by module registration functionality, to construct a new bean
* deserializer factory
* with different configuration settings.
*/
@Override
public DeserializerFactory withConfig(DeserializerFactoryConfig config)
{
if (_factoryConfig == config) {
return this;
}
/* 22-Nov-2010, tatu: Handling of subtypes is tricky if we do immutable-with-copy-ctor;
* and we pretty much have to here either choose between losing subtype instance
* when registering additional deserializers, or losing deserializers.
* Instead, let's actually just throw an error if this method is called when subtype
* has not properly overridden this method; this to indicate problem as soon as possible.
*/
ClassUtil.verifyMustOverride(BeanDeserializerFactory.class, this, "withConfig");
return new BeanDeserializerFactory(config);
}
@Override
public DeserializerFactory withConfig(DeserializerFactoryConfig config)
{
if (_factoryConfig == config) {
return this;
}
return new StrictDeserializerFactory(config);
}
private StrictObjectMapper(BlockAllocator allocator)
{
super(JSON_FACTORY);
_serializerFactory = SERIALIZER_FACTORY;
ImmutableMap<Class<?>, JsonDeserializer<?>> desers = ImmutableMap.of(
FederationRequest.class, createRequestDeserializer(allocator),
FederationResponse.class, createResponseDeserializer(allocator),
LambdaFunctionException.class, new LambdaFunctionExceptionSerDe.Deserializer());
SimpleDeserializers deserializers = new SimpleDeserializers(desers);
DeserializerFactoryConfig dConfig = new DeserializerFactoryConfig().withAdditionalDeserializers(deserializers);
_deserializationContext = new DefaultDeserializationContext.Impl(new StrictDeserializerFactory(dConfig));
// required by LambdaInvokerFactory
disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
}
private StrictDeserializerFactory(DeserializerFactoryConfig config)
{
super(config);
}
private static DeserializerFactoryConfig getDeserializerFactoryConfig(ObjectMapper objectMapper) {
return ((BasicDeserializerFactory) objectMapper.getDeserializationContext().getFactory()).getFactoryConfig();
}
private static DeserializerFactoryConfig getDeserializerFactoryConfig(ObjectMapper objectMapper) {
return ((BasicDeserializerFactory) objectMapper.getDeserializationContext().getFactory()).getFactoryConfig();
}
private static DeserializerFactoryConfig getDeserializerFactoryConfig(ObjectMapper objectMapper) {
return ((BasicDeserializerFactory) objectMapper.getDeserializationContext().getFactory()).getFactoryConfig();
}
private static DeserializerFactoryConfig getDeserializerFactoryConfig(ObjectMapper objectMapper) {
return ((BasicDeserializerFactory) objectMapper.getDeserializationContext().getFactory()).getFactoryConfig();
}
protected BasicDeserializerFactory(DeserializerFactoryConfig config) {
_factoryConfig = config;
}
public BeanDeserializerFactory(DeserializerFactoryConfig config) {
super(config);
}
public CustomBeanDeserializerFactory(DeserializerFactoryConfig config) {
super(config);
}
private static DeserializerFactoryConfig getDeserializerFactoryConfig(ObjectMapper objectMapper) {
return ((BasicDeserializerFactory) objectMapper.getDeserializationContext().getFactory()).getFactoryConfig();
}
private static DeserializerFactoryConfig getDeserializerFactoryConfig(ObjectMapper objectMapper) {
return ((BasicDeserializerFactory) objectMapper.getDeserializationContext().getFactory()).getFactoryConfig();
}
/**
* Method for getting current {@link DeserializerFactoryConfig}.
*<p>
* Note that since instances are immutable, you can NOT change settings
* by accessing an instance and calling methods: this will simply create
* new instance of config object.
*/
public DeserializerFactoryConfig getFactoryConfig() {
return _factoryConfig;
}
protected abstract DeserializerFactory withConfig(DeserializerFactoryConfig config);