InputType
- Implementor pull-parser typeInputNodeType
- Implementor tree-parser node typepublic abstract class ValueDeserializerAdapter<InputType,InputNodeType> extends Object implements ValueDeserializer
Among Plain values (see ValueDeserializer
) some are considered primitives to underlying serialization
mechanisms and by so handed/come without conversion to/from implementations. Primitive values can be one of:
Some other Plain values are expected in given formats:
ValueSerializer.Options
;LocalDateTime.LocalDateTime(java.lang.Object)
accept as instant;LocalDate.LocalDate(java.lang.Object)
accept as instant;Modifier and Type | Class and Description |
---|---|
static interface |
ValueDeserializerAdapter.ComplexDeserializer<T,InputType,InputNodeType> |
Modifier | Constructor and Description |
---|---|
protected |
ValueDeserializerAdapter(Application application,
Module module,
Function<Application,Module> valuesModuleFinder) |
|
ValueDeserializerAdapter(Application application,
Module module,
ServiceReference<ValueDeserializer> serviceRef) |
Modifier and Type | Method and Description |
---|---|
protected abstract InputType |
adaptInput(InputStream input)
This method is always called first, this is a chance to wrap the input type.
|
protected abstract Object |
asSimpleValue(InputNodeType inputNode) |
<T> Function2<ValueType,String,T> |
deserialize()
Factory method for an untyped deserialize function.
|
<T> T |
deserialize(Class<?> type,
InputStream input)
Deserialize a value from a state.
|
<T> T |
deserialize(Class<?> type,
String input)
Deserialize a value from a state.
|
<T> Function<String,T> |
deserialize(Class<T> type)
Factory method for a typed deserialize function.
|
<T> Function<String,T> |
deserialize(ValueType valueType)
Factory method for a typed deserialize function.
|
<T> T |
deserialize(ValueType valueType,
InputStream input)
Deserialize a value from a state.
|
<T> T |
deserialize(ValueType valueType,
String input)
Deserialize a value from a state.
|
protected abstract <T> T |
getObjectFieldValue(InputNodeType inputNode,
String key,
Function<InputNodeType,T> valueDeserializer)
Return null if the field do not exists.
|
protected abstract boolean |
isObjectValue(InputNodeType inputNode) |
protected abstract boolean |
objectHasField(InputNodeType inputNode,
String key) |
protected void |
onDeserializationEnd(ValueType valueType,
InputType input)
Called by the adapter on deserialization end.
|
protected void |
onDeserializationStart(ValueType valueType,
InputType input)
Called by the adapter on deserialization start, after
adaptInput(java.io.InputStream) . |
protected abstract <T> void |
putArrayNodeInCollection(InputNodeType inputNode,
Function<InputNodeType,T> deserializer,
Collection<T> collection) |
protected abstract <K,V> void |
putArrayNodeInMap(InputNodeType inputNode,
Function<InputNodeType,K> keyDeserializer,
Function<InputNodeType,V> valueDeserializer,
Map<K,V> map) |
protected abstract <V> void |
putObjectNodeInMap(InputNodeType inputNode,
Function<InputNodeType,V> valueDeserializer,
Map<String,V> map) |
protected abstract <T> Collection<T> |
readArrayInCollection(InputType input,
Function<InputType,T> deserializer,
Collection<T> collection) |
protected abstract <K,V> Map<K,V> |
readMapInMap(InputType input,
Function<InputType,K> keyDeserializer,
Function<InputType,V> valueDeserializer,
Map<K,V> map)
A Map<K,V> is serialized in an array of entries objects.
|
protected abstract InputNodeType |
readObjectTree(InputType input) |
protected abstract Object |
readPlainValue(InputType input) |
protected <T> void |
registerComplexDeserializer(Class<T> type,
ValueDeserializerAdapter.ComplexDeserializer<T,InputType,InputNodeType> deserializer) |
protected <T> void |
registerDeserializer(Class<T> type,
Function<Object,T> deserializer)
Register a Plain Value type deserialization Function.
|
public ValueDeserializerAdapter(@Structure Application application, @Structure Module module, @Service ServiceReference<ValueDeserializer> serviceRef)
protected ValueDeserializerAdapter(Application application, Module module, Function<Application,Module> valuesModuleFinder)
protected final <T> void registerDeserializer(Class<T> type, Function<Object,T> deserializer)
T
- Plain Value parametrized Typetype
- Plain Value Typedeserializer
- Deserialization Functionprotected final <T> void registerComplexDeserializer(Class<T> type, ValueDeserializerAdapter.ComplexDeserializer<T,InputType,InputNodeType> deserializer)
public <T> Function<String,T> deserialize(Class<T> type)
ValueDeserializer
The returned Function may throw ValueSerializationException
.
deserialize
in interface ValueDeserializer
T
- the parametrized function return typetype
- the value typepublic final <T> Function<String,T> deserialize(ValueType valueType)
ValueDeserializer
The returned Function may throw ValueSerializationException
.
deserialize
in interface ValueDeserializer
T
- the parametrized function return typevalueType
- the value typepublic final <T> Function2<ValueType,String,T> deserialize()
ValueDeserializer
The returned Function may throw ValueSerializationException
.
deserialize
in interface ValueDeserializer
T
- the parametrized function return typepublic final <T> T deserialize(Class<?> type, String input) throws ValueSerializationException
ValueDeserializer
deserialize
in interface ValueDeserializer
T
- the parametrized returned typetype
- the value typeinput
- the stateValueSerializationException
- if the deserialization failedpublic final <T> T deserialize(ValueType valueType, String input) throws ValueSerializationException
ValueDeserializer
deserialize
in interface ValueDeserializer
T
- the parametrized returned typevalueType
- the value typeinput
- the stateValueSerializationException
- if the deserialization failedpublic final <T> T deserialize(Class<?> type, InputStream input) throws ValueSerializationException
ValueDeserializer
deserialize
in interface ValueDeserializer
T
- the parametrized returned typetype
- the value typeinput
- the state streamValueSerializationException
- if the deserialization failedpublic final <T> T deserialize(ValueType valueType, InputStream input) throws ValueSerializationException
ValueDeserializer
deserialize
in interface ValueDeserializer
T
- the parametrized returned typevalueType
- the value typeinput
- the state streamValueSerializationException
- if the deserialization failedprotected void onDeserializationStart(ValueType valueType, InputType input) throws Exception
adaptInput(java.io.InputStream)
.valueType
- ValueTypeinput
- InputException
- that will be wrapped in a ValueSerializationException
protected void onDeserializationEnd(ValueType valueType, InputType input) throws Exception
valueType
- ValueTypeinput
- InputException
- that will be wrapped in a ValueSerializationException
protected abstract InputType adaptInput(InputStream input) throws Exception
input
- InputStream to adaptException
- that will be wrapped in a ValueSerializationException
protected abstract Object readPlainValue(InputType input) throws Exception
input
- InputException
- that will be wrapped in a ValueSerializationException
protected abstract <T> Collection<T> readArrayInCollection(InputType input, Function<InputType,T> deserializer, Collection<T> collection) throws Exception
T
- Parameterized collection typeinput
- Inputdeserializer
- Deserialization functioncollection
- CollectionException
- that will be wrapped in a ValueSerializationException
protected abstract <K,V> Map<K,V> readMapInMap(InputType input, Function<InputType,K> keyDeserializer, Function<InputType,V> valueDeserializer, Map<K,V> map) throws Exception
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.
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 abstract InputNodeType readObjectTree(InputType input) throws Exception
input
- InputException
- that will be wrapped in a ValueSerializationException
protected abstract Object asSimpleValue(InputNodeType inputNode) throws Exception
Exception
protected abstract boolean isObjectValue(InputNodeType inputNode) throws Exception
Exception
protected abstract boolean objectHasField(InputNodeType inputNode, String key) throws Exception
Exception
protected abstract <T> T getObjectFieldValue(InputNodeType inputNode, String key, Function<InputNodeType,T> valueDeserializer) throws Exception
T
- Parameterized object field value typeinputNode
- Input Nodekey
- Object keyvalueDeserializer
- Deserialization functionException
- that will be wrapped in a ValueSerializationException
protected abstract <T> void putArrayNodeInCollection(InputNodeType inputNode, Function<InputNodeType,T> deserializer, Collection<T> collection) throws Exception
Exception
protected abstract <K,V> void putArrayNodeInMap(InputNodeType inputNode, Function<InputNodeType,K> keyDeserializer, Function<InputNodeType,V> valueDeserializer, Map<K,V> map) throws Exception
Exception
protected abstract <V> void putObjectNodeInMap(InputNodeType inputNode, Function<InputNodeType,V> valueDeserializer, Map<String,V> map) throws Exception
Exception