List of usage examples for com.fasterxml.jackson.core ObjectCodec createObjectNode
public abstract TreeNode createObjectNode();
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; }