Example usage for com.fasterxml.jackson.databind DeserializationConfig getNodeFactory

List of usage examples for com.fasterxml.jackson.databind DeserializationConfig getNodeFactory

Introduction

In this page you can find the example usage for com.fasterxml.jackson.databind DeserializationConfig getNodeFactory.

Prototype

public final JsonNodeFactory getNodeFactory() 

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 ww .  j a  v  a2 s.c om*/
            }
        }
        return new CodecBeanDeserializer(beanDeserializer, fieldDefaults);
    } else {
        return deserializer;
    }
}