public class JacksonValueDeserializer extends ValueDeserializerAdapter<com.fasterxml.jackson.core.JsonParser,com.fasterxml.jackson.databind.JsonNode>
ValueDeserializerAdapter.ComplexDeserializer<T,InputType,InputNodeType>
Constructor and Description |
---|
JacksonValueDeserializer(Application application,
Module module,
ServiceReference<ValueDeserializer> serviceRef) |
Modifier and Type | Method and Description |
---|---|
protected com.fasterxml.jackson.core.JsonParser |
adaptInput(InputStream input)
This method is always called first, this is a chance to wrap the input type.
|
protected Object |
asSimpleValue(com.fasterxml.jackson.databind.JsonNode inputNode) |
protected <T> T |
getObjectFieldValue(com.fasterxml.jackson.databind.JsonNode inputNode,
String key,
Function<com.fasterxml.jackson.databind.JsonNode,T> valueDeserializer)
Return null if the field do not exists.
|
protected boolean |
isObjectValue(com.fasterxml.jackson.databind.JsonNode inputNode) |
protected boolean |
objectHasField(com.fasterxml.jackson.databind.JsonNode inputNode,
String key) |
protected void |
onDeserializationEnd(ValueType valueType,
com.fasterxml.jackson.core.JsonParser input)
Called by the adapter on deserialization end.
|
protected <T> void |
putArrayNodeInCollection(com.fasterxml.jackson.databind.JsonNode inputNode,
Function<com.fasterxml.jackson.databind.JsonNode,T> deserializer,
Collection<T> collection) |
protected <K,V> void |
putArrayNodeInMap(com.fasterxml.jackson.databind.JsonNode inputNode,
Function<com.fasterxml.jackson.databind.JsonNode,K> keyDeserializer,
Function<com.fasterxml.jackson.databind.JsonNode,V> valueDeserializer,
Map<K,V> map) |
protected <V> void |
putObjectNodeInMap(com.fasterxml.jackson.databind.JsonNode inputNode,
Function<com.fasterxml.jackson.databind.JsonNode,V> valueDeserializer,
Map<String,V> map) |
protected <T> Collection<T> |
readArrayInCollection(com.fasterxml.jackson.core.JsonParser input,
Function<com.fasterxml.jackson.core.JsonParser,T> deserializer,
Collection<T> collection) |
protected <K,V> Map<K,V> |
readMapInMap(com.fasterxml.jackson.core.JsonParser input,
Function<com.fasterxml.jackson.core.JsonParser,K> keyDeserializer,
Function<com.fasterxml.jackson.core.JsonParser,V> valueDeserializer,
Map<K,V> map)
A Map<K,V> is serialized in an array of entries objects.
|
protected com.fasterxml.jackson.databind.node.ObjectNode |
readObjectTree(com.fasterxml.jackson.core.JsonParser input) |
protected Object |
readPlainValue(com.fasterxml.jackson.core.JsonParser input) |
deserialize, deserialize, deserialize, deserialize, deserialize, deserialize, deserialize, onDeserializationStart, registerComplexDeserializer, registerDeserializer
public JacksonValueDeserializer(@Structure Application application, @Structure Module module, @Service ServiceReference<ValueDeserializer> serviceRef)
protected com.fasterxml.jackson.core.JsonParser adaptInput(InputStream input) throws Exception
ValueDeserializerAdapter
adaptInput
in class ValueDeserializerAdapter<com.fasterxml.jackson.core.JsonParser,com.fasterxml.jackson.databind.JsonNode>
input
- InputStream to adaptException
- that will be wrapped in a ValueSerializationException
protected void onDeserializationEnd(ValueType valueType, com.fasterxml.jackson.core.JsonParser input) throws Exception
ValueDeserializerAdapter
onDeserializationEnd
in class ValueDeserializerAdapter<com.fasterxml.jackson.core.JsonParser,com.fasterxml.jackson.databind.JsonNode>
valueType
- ValueTypeinput
- InputException
- that will be wrapped in a ValueSerializationException
protected Object readPlainValue(com.fasterxml.jackson.core.JsonParser input) throws Exception
readPlainValue
in class ValueDeserializerAdapter<com.fasterxml.jackson.core.JsonParser,com.fasterxml.jackson.databind.JsonNode>
input
- InputException
- that will be wrapped in a ValueSerializationException
protected <T> Collection<T> readArrayInCollection(com.fasterxml.jackson.core.JsonParser input, Function<com.fasterxml.jackson.core.JsonParser,T> deserializer, Collection<T> collection) throws Exception
readArrayInCollection
in class ValueDeserializerAdapter<com.fasterxml.jackson.core.JsonParser,com.fasterxml.jackson.databind.JsonNode>
T
- Parameterized collection typeinput
- Inputdeserializer
- Deserialization functioncollection
- CollectionException
- that will be wrapped in a ValueSerializationException
protected <K,V> Map<K,V> readMapInMap(com.fasterxml.jackson.core.JsonParser input, Function<com.fasterxml.jackson.core.JsonParser,K> keyDeserializer, Function<com.fasterxml.jackson.core.JsonParser,V> valueDeserializer, Map<K,V> map) throws Exception
ValueDeserializerAdapter
Here is an example in JSON:
[ { "key": "foo", "value": "bar" }, { "key": "cathedral", "value": "bazar" } ]
And an empty Map:
[]
This allow to use any type as keys and values while keeping the Map order at the cost of having non-predictible order of key/value inside an entry object.
readMapInMap
in class ValueDeserializerAdapter<com.fasterxml.jackson.core.JsonParser,com.fasterxml.jackson.databind.JsonNode>
K
- Parameterized map key typeV
- Parameterized map value typeinput
- InputkeyDeserializer
- Map key deserialization functionvalueDeserializer
- Map value deserialization functionmap
- MapException
- that will be wrapped in a ValueSerializationException
protected com.fasterxml.jackson.databind.node.ObjectNode readObjectTree(com.fasterxml.jackson.core.JsonParser input) throws Exception
readObjectTree
in class ValueDeserializerAdapter<com.fasterxml.jackson.core.JsonParser,com.fasterxml.jackson.databind.JsonNode>
input
- InputException
- that will be wrapped in a ValueSerializationException
protected Object asSimpleValue(com.fasterxml.jackson.databind.JsonNode inputNode) throws Exception
asSimpleValue
in class ValueDeserializerAdapter<com.fasterxml.jackson.core.JsonParser,com.fasterxml.jackson.databind.JsonNode>
Exception
protected boolean isObjectValue(com.fasterxml.jackson.databind.JsonNode inputNode) throws Exception
isObjectValue
in class ValueDeserializerAdapter<com.fasterxml.jackson.core.JsonParser,com.fasterxml.jackson.databind.JsonNode>
Exception
protected boolean objectHasField(com.fasterxml.jackson.databind.JsonNode inputNode, String key) throws Exception
objectHasField
in class ValueDeserializerAdapter<com.fasterxml.jackson.core.JsonParser,com.fasterxml.jackson.databind.JsonNode>
Exception
protected <T> T getObjectFieldValue(com.fasterxml.jackson.databind.JsonNode inputNode, String key, Function<com.fasterxml.jackson.databind.JsonNode,T> valueDeserializer) throws Exception
ValueDeserializerAdapter
getObjectFieldValue
in class ValueDeserializerAdapter<com.fasterxml.jackson.core.JsonParser,com.fasterxml.jackson.databind.JsonNode>
T
- Parameterized object field value typeinputNode
- Input Nodekey
- Object keyvalueDeserializer
- Deserialization functionException
- that will be wrapped in a ValueSerializationException
protected <T> void putArrayNodeInCollection(com.fasterxml.jackson.databind.JsonNode inputNode, Function<com.fasterxml.jackson.databind.JsonNode,T> deserializer, Collection<T> collection) throws Exception
putArrayNodeInCollection
in class ValueDeserializerAdapter<com.fasterxml.jackson.core.JsonParser,com.fasterxml.jackson.databind.JsonNode>
Exception
protected <K,V> void putArrayNodeInMap(com.fasterxml.jackson.databind.JsonNode inputNode, Function<com.fasterxml.jackson.databind.JsonNode,K> keyDeserializer, Function<com.fasterxml.jackson.databind.JsonNode,V> valueDeserializer, Map<K,V> map) throws Exception
putArrayNodeInMap
in class ValueDeserializerAdapter<com.fasterxml.jackson.core.JsonParser,com.fasterxml.jackson.databind.JsonNode>
Exception
protected <V> void putObjectNodeInMap(com.fasterxml.jackson.databind.JsonNode inputNode, Function<com.fasterxml.jackson.databind.JsonNode,V> valueDeserializer, Map<String,V> map) throws Exception
putObjectNodeInMap
in class ValueDeserializerAdapter<com.fasterxml.jackson.core.JsonParser,com.fasterxml.jackson.databind.JsonNode>
Exception