Example usage for com.fasterxml.jackson.core ObjectCodec createObjectNode

List of usage examples for com.fasterxml.jackson.core ObjectCodec createObjectNode

Introduction

In this page you can find the example usage for com.fasterxml.jackson.core ObjectCodec createObjectNode.

Prototype

public abstract TreeNode createObjectNode();

Source Link

Document

Method for construct root level Object nodes for Tree Model instances.

Usage

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

@Nullable
private Object _deserializeTypedFromArray(ArrayNode arrayNode, ObjectCodec objectCodec,
        DeserializationContext ctxt) throws IOException {
    if (idRes.isValidTypeId("_array")) {
        Config aliasDefaults = pluginMap.aliasDefaults("_array").toConfig();
        String arrayField = aliasDefaults.getString("_primary");
        try {//from  ww w.  ja va2s . c  om
            ObjectNode objectFieldValues = (ObjectNode) objectCodec.createObjectNode();
            Jackson.setAt(objectFieldValues, arrayNode, arrayField);
            ObjectNode aliasFieldDefaults = Jackson.configConverter(aliasDefaults.root());
            Jackson.merge(objectFieldValues, aliasFieldDefaults);
            JsonDeserializer<Object> deser = _findDeserializer(ctxt, "_array");
            JsonParser treeParser = objectCodec.treeAsTokens(objectFieldValues);
            treeParser.nextToken();
            return deser.deserialize(treeParser, ctxt);
        } catch (IOException ex) {
            throw Jackson.maybeUnwrapPath(arrayField, ex);
        }
    } else {
        return null;
    }
}

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

@Nullable
private Object _deserializeObjectFromSingleKey(ObjectNode objectNode, String singleKeyName,
        ObjectCodec objectCodec, DeserializationContext ctxt) throws IOException {
    if (idRes.isValidTypeId(singleKeyName)) {
        ConfigObject aliasDefaults = pluginMap.aliasDefaults(singleKeyName);
        String primaryField;/*from   w  w  w . j av a 2 s.c  o m*/
        if (aliasDefaults.containsKey("_primary")) {
            primaryField = (String) aliasDefaults.get("_primary").unwrapped();
        } else {
            primaryField = null;
        }
        boolean unwrapPrimary = false;
        try {
            JsonNode singleKeyValue = objectNode.get(singleKeyName);
            JsonDeserializer<Object> deser = _findDeserializer(ctxt, singleKeyName);
            if (!singleKeyValue.isObject()) {
                // if value is not an object, try supporting _primary syntax to derive one
                if (primaryField != null) {
                    ObjectNode singleKeyObject = (ObjectNode) objectCodec.createObjectNode();
                    Jackson.setAt(singleKeyObject, singleKeyValue, primaryField);
                    Jackson.merge(singleKeyObject, Jackson.configConverter(aliasDefaults));
                    singleKeyValue = singleKeyObject;
                    unwrapPrimary = true;
                } // else let the downstream serializer try to handle it or complain
            } else {
                ObjectNode singleKeyObject = (ObjectNode) singleKeyValue;
                unwrapPrimary = handleDefaultsAndImplicitPrimary(singleKeyObject, aliasDefaults, deser, ctxt);
            }
            if (_typeIdVisible && singleKeyValue.isObject()) {
                ((ObjectNode) singleKeyValue).put(_typePropertyName, singleKeyName);
            }
            JsonParser treeParser = objectCodec.treeAsTokens(singleKeyValue);
            treeParser.nextToken();
            return deser.deserialize(treeParser, ctxt);
        } catch (IOException cause) {
            if (unwrapPrimary) {
                cause = Jackson.maybeUnwrapPath(primaryField, cause);
            }
            throw wrapWithPath(cause, idRes.typeFromId(ctxt, singleKeyName), singleKeyName);
        } catch (Throwable cause) {
            throw wrapWithPath(cause, idRes.typeFromId(ctxt, singleKeyName), singleKeyName);
        }
    }
    return null;
}