List of usage examples for com.fasterxml.jackson.databind.deser BeanDeserializerModifier BeanDeserializerModifier
BeanDeserializerModifier
From source file:io.gravitee.management.rest.mapper.ObjectMapperResolver.java
public ObjectMapperResolver() { mapper = new GraviteeMapper(); SimpleModule module = new SimpleModule(); module.setDeserializerModifier(new BeanDeserializerModifier() { @Override//from w w w . j a v a 2 s .com public JsonDeserializer<Enum> modifyEnumDeserializer(DeserializationConfig config, final JavaType type, BeanDescription beanDesc, final JsonDeserializer<?> deserializer) { return new JsonDeserializer<Enum>() { @Override public Enum deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException { Class<? extends Enum> rawClass = (Class<Enum<?>>) type.getRawClass(); return Enum.valueOf(rawClass, jp.getValueAsString().toUpperCase()); } }; } }); module.addSerializer(Enum.class, new StdSerializer<Enum>(Enum.class) { @Override public void serialize(Enum value, JsonGenerator jgen, SerializerProvider provider) throws IOException { jgen.writeString(value.name().toLowerCase()); } }); mapper.registerModule(module); }
From source file:com.microsoft.rest.serializer.FlatteningDeserializer.java
/** * Gets a module wrapping this serializer as an adapter for the Jackson * ObjectMapper.//from w w w. ja va 2 s .com * * @param mapper the object mapper for default deserializations * @return a simple module to be plugged onto Jackson ObjectMapper. */ public static SimpleModule getModule(final ObjectMapper mapper) { SimpleModule module = new SimpleModule(); module.setDeserializerModifier(new BeanDeserializerModifier() { @Override public JsonDeserializer<?> modifyDeserializer(DeserializationConfig config, BeanDescription beanDesc, JsonDeserializer<?> deserializer) { if (beanDesc.getBeanClass().getAnnotation(JsonFlatten.class) != null) { return new FlatteningDeserializer(beanDesc.getBeanClass(), deserializer, mapper); } return deserializer; } }); return module; }
From source file:com.github.jonpeterson.jackson.module.interceptor.JsonInterceptorModule.java
public JsonInterceptorModule() { super("JsonInterceptor"); setDeserializerModifier(new BeanDeserializerModifier() { @Override// w w w . j a v a2 s . com public JsonDeserializer<?> modifyDeserializer(DeserializationConfig config, BeanDescription beanDescription, JsonDeserializer<?> deserializer) { if (deserializer instanceof StdDeserializer) { JsonInterceptors jsonInterceptors = beanDescription.getClassAnnotations() .get(JsonInterceptors.class); if (jsonInterceptors != null) { Class<? extends JsonInterceptor>[] interceptors = jsonInterceptors.beforeDeserialization(); if (interceptors.length > 0) return createInterceptingDeserializer((StdDeserializer) deserializer, interceptors); } } return deserializer; } // here just to make generics work without warnings private <T> JsonInterceptingDeserializer<T> createInterceptingDeserializer( StdDeserializer<T> deserializer, Class<? extends JsonInterceptor>[] interceptors) { return new JsonInterceptingDeserializer<T>(deserializer, interceptors); } }); setSerializerModifier(new BeanSerializerModifier() { @Override public JsonSerializer<?> modifySerializer(SerializationConfig config, BeanDescription beanDescription, JsonSerializer<?> serializer) { if (serializer instanceof StdSerializer) { JsonInterceptors jsonInterceptors = beanDescription.getClassAnnotations() .get(JsonInterceptors.class); if (jsonInterceptors != null) { Class<? extends JsonInterceptor>[] interceptors = jsonInterceptors.afterSerialization(); if (interceptors.length > 0) return createInterceptingSerializer((StdSerializer) serializer, interceptors); } } return serializer; } // here just to make generics work without warnings private <T> JsonInterceptingSerializer<T> createInterceptingSerializer(StdSerializer<T> serializer, Class<? extends JsonInterceptor>[] interceptors) { return new JsonInterceptingSerializer<T>(serializer, interceptors); } }); }
From source file:nebula.plugin.metrics.dispatcher.AbstractMetricsDispatcher.java
/** * Register Jackson module that maps enums as lowercase. Per http://stackoverflow.com/a/24173645. */// ww w . java 2 s.c om @SuppressWarnings("rawtypes") private static void registerEnumModule(ObjectMapper mapper) { SimpleModule module = new SimpleModule(); module.setDeserializerModifier(new BeanDeserializerModifier() { @Override public JsonDeserializer<Enum> modifyEnumDeserializer(DeserializationConfig config, final JavaType type, BeanDescription beanDesc, final JsonDeserializer<?> deserializer) { return new JsonDeserializer<Enum>() { @Override public Enum deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException { @SuppressWarnings("unchecked") Class<? extends Enum> rawClass = (Class<Enum<?>>) type.getRawClass(); return Enum.valueOf(rawClass, jp.getValueAsString().toUpperCase()); } }; } }); module.addSerializer(Enum.class, new StdSerializer<Enum>(Enum.class) { @Override public void serialize(Enum value, JsonGenerator jgen, SerializerProvider provider) throws IOException { jgen.writeString(value.name().toLowerCase()); } }); mapper.registerModule(module); }
From source file:org.apache.ode.jacob.soup.jackson.JacobModule.java
public JacobModule() { super("jacob-module", Version.unknownVersion()); final ExecutionQueueImplSerializer cqis = new ExecutionQueueImplSerializer(); addSerializer(ChannelProxy.class, new ChannelProxySerializer(cqis)); addSerializer(Message.class, new MessageSerializer()); addSerializer(JacksonExecutionQueueImpl.class, cqis); addSerializer(ChannelRef.class, new ChannelRefSerializer(cqis)); addDeserializer(JacksonExecutionQueueImpl.class, new ExecutionQueueImplDeserializer()); addDeserializer(Message.class, new MessageDeserializer()); addDeserializer(Channel.class, new ChannelProxyDeserializer()); addDeserializer(ChannelRef.class, new ChannelRefDeserializer()); setDeserializerModifier(new BeanDeserializerModifier() { public JsonDeserializer<?> modifyDeserializer(DeserializationConfig config, BeanDescription beanDesc, JsonDeserializer<?> deserializer) { // use channel proxy deserializer for channels. if (Channel.class.isAssignableFrom(beanDesc.getBeanClass()) && beanDesc.getBeanClass().isInterface()) { return new ChannelProxyDeserializer(); }/*www . j a v a 2 s .c om*/ return super.modifyDeserializer(config, beanDesc, deserializer); } }); }
From source file:com.logsniffer.config.BeanConfigFactoryManager.java
@SuppressWarnings("unchecked") @PostConstruct/*from www.j a v a 2 s . c o m*/ private void initJsonMapper() { final SimpleModule module = new SimpleModule(); module.setDeserializerModifier(new BeanDeserializerModifier() { @Override public JsonDeserializer<?> modifyDeserializer(final DeserializationConfig config, final BeanDescription beanDesc, final JsonDeserializer<?> deserializer) { if (ConfiguredBean.class.isAssignableFrom(beanDesc.getBeanClass())) { return new ConfiguredBeanDeserializer(deserializer); } return deserializer; } }); jsonMapper.registerModule(module); if (postConstructors != null) { for (final BeanPostConstructor<?> bpc : postConstructors) { mappedPostConstrucors.put(bpc.getClass(), bpc); } } // Register sub beans final ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider( false); final AssignableTypeFilter filter4configBenas = new AssignableTypeFilter(ConfiguredBean.class); scanner.addIncludeFilter(filter4configBenas); for (final BeanDefinition bd : scanner.findCandidateComponents("com.logsniffer")) { try { final Class<? extends ConfiguredBean> clazz = (Class<? extends ConfiguredBean>) Class .forName(bd.getBeanClassName()); final JsonTypeName jsonNameAnnotation = clazz.getAnnotation(JsonTypeName.class); final List<String> names = new ArrayList<String>(); configBeanNames.put(clazz, names); if (jsonNameAnnotation != null) { names.add(jsonNameAnnotation.value()); if (jsonNameAnnotation.deprecated() != null) { for (final String dep : jsonNameAnnotation.deprecated()) { names.add(dep); } } } names.add(clazz.getSimpleName()); logger.debug("Registered JSON type {} for following names: {}", clazz, names); } catch (final ClassNotFoundException e) { logger.warn("Failed to register JSON type name for " + bd.getBeanClassName(), e); } } }
From source file:com.github.shyiko.jackson.module.advice.JsonAdviceModule.java
@Override public void setupModule(SetupContext context) { context.addBeanSerializerModifier(new BeanSerializerModifier() { @Override/*from w w w . java 2s . c o m*/ public com.fasterxml.jackson.databind.ser.BeanSerializerBuilder updateBuilder( SerializationConfig config, BeanDescription beanDesc, com.fasterxml.jackson.databind.ser.BeanSerializerBuilder builder) { JsonSerializerAdvice advice = beanDesc.getClassAnnotations().get(JsonSerializerAdvice.class); return advice != null ? new AdvisedBeanSerializerBuilder(builder, advice.value()) : builder; } }); context.addBeanDeserializerModifier(new BeanDeserializerModifier() { @Override public BeanDeserializerBuilder updateBuilder(DeserializationConfig config, BeanDescription beanDesc, BeanDeserializerBuilder builder) { JsonDeserializerAdvice advice = beanDesc.getClassAnnotations().get(JsonDeserializerAdvice.class); return advice != null ? new AdvisedBeanDeserializerBuilder(builder, advice.value()) : builder; } }); }
From source file:de.javagl.jgltf.model.io.JacksonUtils.java
/** * Creates a BeanDeserializerModifier that replaces the * SettableBeanProperties in the BeanDeserializerBuilder with * ErrorReportingSettableBeanProperty instances that forward * information about errors when setting bean properties to the * given consumer. (Don't ask ... ) /*w w w . j a va 2 s. c o m*/ * * @param jsonErrorConsumer The consumer for {@link JsonError}s. * If this is <code>null</code>, then no errors will be reported. * @return The modifier */ private static BeanDeserializerModifier createErrorHandlingBeanDeserializerModifier( Consumer<? super JsonError> jsonErrorConsumer) { return new BeanDeserializerModifier() { @Override public BeanDeserializerBuilder updateBuilder(DeserializationConfig config, BeanDescription beanDesc, BeanDeserializerBuilder builder) { Iterator<SettableBeanProperty> propertiesIterator = builder.getProperties(); while (propertiesIterator.hasNext()) { SettableBeanProperty property = propertiesIterator.next(); SettableBeanProperty wrappedProperty = new ErrorReportingSettableBeanProperty(property, jsonErrorConsumer); builder.addOrReplaceProperty(wrappedProperty, true); } return builder; } }; }
From source file:de.ks.flatadocdb.defaults.json.SerializationModule.java
@Override public void setupModule(SetupContext context) { context.addBeanSerializerModifier(new BeanSerializerModifier() { @Override//from w w w .jav a 2 s . co m public List<BeanPropertyWriter> changeProperties(SerializationConfig config, BeanDescription beanDesc, List<BeanPropertyWriter> beanProperties) { if (metaModel.isRegistered(beanDesc.getBeanClass())) { EntityDescriptor entityDescriptor = metaModel.getEntityDescriptor(beanDesc.getBeanClass()); List<BeanPropertyWriter> relationProperties = beanProperties.stream()// .filter(p -> entityDescriptor.isRelation(p.getMember())).collect(Collectors.toList()); List<BeanPropertyWriter> repoPathProperty = beanProperties.stream()// .filter(p -> p.getAnnotation(PathInRepository.class) != null) .collect(Collectors.toList()); ArrayList<BeanPropertyWriter> all = new ArrayList<>(beanProperties); log.trace("Removing {} relation properties fron {}: {}", relationProperties.size(), beanDesc.getBeanClass(), relationProperties); all.removeAll(relationProperties); all.removeAll(repoPathProperty); relationProperties.stream().map(old -> new RelationCollectionPropertyWriter(old, metaModel)) .forEach(all::add); return all; } else { return beanProperties; } } }); context.addBeanDeserializerModifier(new BeanDeserializerModifier() { @Override public List<BeanPropertyDefinition> updateProperties(DeserializationConfig config, BeanDescription beanDesc, List<BeanPropertyDefinition> propDefs) { if (metaModel.isRegistered(beanDesc.getBeanClass())) { EntityDescriptor entityDescriptor = metaModel.getEntityDescriptor(beanDesc.getBeanClass()); return propDefs.stream()// .filter(p -> !entityDescriptor.isRelation(p.getPrimaryMember()))// .filter(p -> p.getPrimaryMember().getAnnotation(PathInRepository.class) == null)// .collect(Collectors.toList()); } else { return propDefs; } } }); }
From source file:nl.talsmasoftware.enumerables.support.json.jackson2.EnumerableModule.java
/** * Configures the Jackson module.//w w w. j a v a 2 s . c o m * <p> * This configures a {@link BeanDeserializerModifier} that will return the configured deserializer from this * module for <em>any</em> subtype of {@link Enumerable}. * * @param setupContext De setup context to initialize with. * The Enumerable deserializer will be selected for any subtype of Enumerable. */ @Override public void setupModule(final SetupContext setupContext) { if (setupContext != null) setupContext.addBeanDeserializerModifier(new BeanDeserializerModifier() { @Override public JsonDeserializer<?> modifyDeserializer(DeserializationConfig config, BeanDescription beanDesc, JsonDeserializer<?> deserializer) { return asEnumerableSubclass(beanDesc) != null ? enumerableDeserializer : super.modifyDeserializer(config, beanDesc, deserializer); } }); super.setupModule(setupContext); }