Example usage for com.fasterxml.jackson.databind.deser SettableBeanProperty getMember

List of usage examples for com.fasterxml.jackson.databind.deser SettableBeanProperty getMember

Introduction

In this page you can find the example usage for com.fasterxml.jackson.databind.deser SettableBeanProperty getMember.

Prototype

public abstract AnnotatedMember getMember();

Source Link

Usage

From source file:com.addthis.codec.jackson.CodecBeanDeserializerModifier.java

@Override
public JsonDeserializer<?> modifyDeserializer(DeserializationConfig config, BeanDescription beanDesc,
        JsonDeserializer<?> deserializer) {
    JsonDeserializer<?> delegatee = deserializer.getDelegatee();
    if (delegatee != null) {
        JsonDeserializer<?> replacementDelegatee = modifyDeserializer(config, beanDesc, delegatee);
        return deserializer.replaceDelegatee(replacementDelegatee);
    } else if (deserializer instanceof BeanDeserializerBase) {
        BeanDeserializerBase beanDeserializer = (BeanDeserializerBase) deserializer;
        ObjectNode fieldDefaults = config.getNodeFactory().objectNode();
        Iterator<SettableBeanProperty> propertyIterator = beanDeserializer.properties();
        while (propertyIterator.hasNext()) {
            SettableBeanProperty prop = propertyIterator.next();
            Class<?> declaringClass = prop.getMember().getDeclaringClass();
            String canonicalClassName = declaringClass.getCanonicalName();
            if ((canonicalClassName != null) && globalDefaults.hasPath(canonicalClassName)) {
                Config declarerDefaults = globalDefaults.getConfig(canonicalClassName);
                String propertyName = prop.getName();
                if (declarerDefaults.hasPath(propertyName)) {
                    ConfigValue defaultValue = declarerDefaults.getValue(propertyName);
                    JsonNode fieldDefault = Jackson.configConverter(defaultValue);
                    fieldDefaults.set(propertyName, fieldDefault);
                }/*from   w w w. j  a  v  a 2s. c  o m*/
            }
        }
        return new CodecBeanDeserializer(beanDeserializer, fieldDefaults);
    } else {
        return deserializer;
    }
}