Class SpincastJsonManager
- All Implemented Interfaces:
JsonManager
-
Field Summary
-
Constructor Summary
ConstructorDescriptionSpincastJsonManager
(com.google.inject.Provider<com.google.inject.Injector> guiceProvider, JsonObjectFactory jsonObjectFactory, Set<JsonMixinInfo> jsonMixinInfos, SpincastJsonManagerConfig spincastJsonManagerConfig, SpincastConfig spincastConfig, JsonPathUtils jsonPathUtils, SpincastUtils spincastUtils, FormFactory formFactory) -
Method Summary
Modifier and TypeMethodDescriptionTries to clone an object to aJsonObject
or aJsonArray
, if the object is not of a primitive type (orBigDecimal
).Tries to clone an object to aJsonObject
or aJsonArray
, if the object is not of a primitive type (orBigDecimal
).cloneJsonArray
(JsonArray jsonArray, boolean mutable) Deep copy of theJsonArray
, so any modification to the original won't affect the clone, and vice-versa.cloneJsonObject
(JsonObject jsonObject, boolean mutable) Deep copy of theJsonObject
, so any modification to the original won't affect the clone, and vice-versa.protected void
configureEmptyBeans
(com.fasterxml.jackson.databind.ObjectMapper objectMapper) protected void
configureMixins
(com.fasterxml.jackson.databind.ObjectMapper objectMapper) protected void
configureObjectMapper
(com.fasterxml.jackson.databind.ObjectMapper objectMapper) Configuration of the ObjectMapper.convertToJsonDate
(Date date) Converts a Date to aJson
date format.convertToNativeType
(Object originalObject) Convert a random object to a valid native JsonObject type, if it's not already.create()
Creates an emptyJsonObject
Creates an emptyJsonArray
.createForm
(String formName) Creates an emptyForm
, which is a JsonObject + a validations container.protected com.fasterxml.jackson.databind.ObjectMapper
Creates the ObjectMapperenumsToFriendlyJsonArray
(Enum<?>[] enumValues) Convert the enums to an array ofJsonObjects
that have a ".name" property (thename()
of the enum) and a ".label" property (thetoString()
of the enum).enumToFriendlyJsonObject
(Enum<?> enumValue) Convert the enum value to aJsonObject
that has a ".name" property (thename()
of the enum) and a ".label" property (thetoString()
of the enum)fromClasspathFile
(String path) Creates aJsonObject
from a classpath Json file.fromCollectionToJsonArray
(Collection<?> collection) Creates aJsonArray
from a random collection.Creates aJsonObject
from a Json file.Creates aJsonObject
from the path of a file, on the file system.fromInputStream
(InputStream inputStream) Creates aJsonObject
from an inputStream.<T> T
fromInputStream
(InputStream inputStream, Class<T> clazz) Creates an instance of the specifiedT
type from aJson
inputStream.fromInputStreamArray
(InputStream inputStream) Creates aJsonArray
from an inputStream.fromInputStreamToMap
(InputStream inputStream) Creates aMap<String, Object>
from aJson
inputStream.fromListArray
(List<?> elements) Creates aJsonArray
from aList
of elements.Creates an emptyJsonObject
based on the specified Map.Creates aJsonObject
based on the specified Map.fromObject
(Object object) Creates aJsonObject
from a random object..fromString
(String jsonString) Creates aJsonObject
from aJson
String.<T> T
fromString
(String jsonString, Class<T> clazz) Creates an instance of the specifiedT
type from aJson
String.fromStringArray
(String jsonString) Creates aJsonArray
from aJson
String.fromStringToMap
(String jsonString) Creates aMap<String, Object>
from aJson
String.protected com.fasterxml.jackson.databind.JsonSerializer<BigDecimal>
protected com.fasterxml.jackson.databind.JsonSerializer<Date>
getElementAtJsonPath
(JsonArray array, String jsonPath) Gets an element from theJsonArray
at the specifiedJsonPath
.getElementAtJsonPath
(JsonArray array, String jsonPath, Object defaultValue) Gets an element from theJsonArray
at the specifiedJsonPath
.getElementAtJsonPath
(JsonObject obj, String jsonPath) Gets an element from theJsonObject
at the specifiedJsonPath
.getElementAtJsonPath
(JsonObject obj, String jsonPath, Object defaultValue) Gets an element from theJsonObject
at the specifiedJsonPath
.protected com.fasterxml.jackson.databind.JsonSerializer<Enum<?>>
protected FormFactory
protected com.google.inject.Injector
getGuice()
protected com.fasterxml.jackson.databind.JsonSerializer<Instant>
protected com.fasterxml.jackson.core.util.DefaultPrettyPrinter
protected String
protected String
protected com.fasterxml.jackson.databind.JsonDeserializer<JsonArray>
protected com.fasterxml.jackson.databind.JsonSerializer<JsonArray>
protected Set<JsonMixinInfo>
protected com.fasterxml.jackson.databind.JsonDeserializer<JsonObject>
protected JsonObjectFactory
protected com.fasterxml.jackson.databind.JsonSerializer<JsonObject>
protected JsonPathUtils
protected int
protected com.fasterxml.jackson.databind.ObjectMapper
protected SpincastConfig
protected SpincastJsonManagerConfig
protected SpincastUtils
protected void
injectDependencies
(Object obj) Once the deserialization of an Object is done, we inject dependencies using Guice.protected boolean
Should comments be accepted in Json?boolean
isElementExists
(JsonArray array, String jsonPath) Does the array contain an element at the specifiedJsonPath
(even ifnull
)?boolean
isElementExists
(JsonObject obj, String jsonPath) Does the object contain an element at the specifiedJsonPath
(even ifnull
)?parseDateFromJson
(String str) Currently support ISO 8601 encoded dates.void
putElementAtJsonPath
(JsonObjectOrArray objOrArray, String jsonPath, Object value) Puts an element in the object at the specifiedJsonPath
.void
putElementAtJsonPath
(JsonObjectOrArray objOrArray, String jsonPath, Object value, boolean clone) Puts a clone of the element in the object at the specifiedJsonPath
.protected void
registerCustomModules
(com.fasterxml.jackson.databind.ObjectMapper objectMapper) protected void
registerCustomTypeSerializerModule
(com.fasterxml.jackson.databind.ObjectMapper objectMapper) Register our custom serializers for some types.protected void
registerJava8DatatypesModule
(com.fasterxml.jackson.databind.ObjectMapper objectMapper) protected void
registerJsonObjectModule
(com.fasterxml.jackson.databind.ObjectMapper objectMapper) Register our custom (de)serializers for JsonObjectvoid
removeElementAtJsonPath
(JsonArray array, String jsonPath) Removes an element at the specifiedJsonPath
from the array.void
removeElementAtJsonPath
(JsonObject obj, String jsonPath) Removes an element at the specifiedJsonPath
from the object.toJsonString
(Object obj) Gets theJson
String representation of the specified object.toJsonString
(Object obj, boolean pretty) Gets theJson
String representation of the specified object.
-
Field Details
-
logger
protected static final org.slf4j.Logger logger -
ENUM_SERIALIZER_FIELD_NAME_NAME
- See Also:
-
ENUM_SERIALIZER_FIELD_NAME_LABEL
- See Also:
-
-
Constructor Details
-
SpincastJsonManager
@Inject public SpincastJsonManager(com.google.inject.Provider<com.google.inject.Injector> guiceProvider, JsonObjectFactory jsonObjectFactory, @Nullable Set<JsonMixinInfo> jsonMixinInfos, SpincastJsonManagerConfig spincastJsonManagerConfig, SpincastConfig spincastConfig, JsonPathUtils jsonPathUtils, SpincastUtils spincastUtils, FormFactory formFactory)
-
-
Method Details
-
getGuice
protected com.google.inject.Injector getGuice() -
getJsonObjectFactory
-
getJsonMixinInfos
-
getSpincastJsonManagerConfig
-
getSpincastConfig
-
getJsonPathUtils
-
getSpincastUtils
-
getFormFactory
-
getJacksonPrettyPrinter
protected com.fasterxml.jackson.core.util.DefaultPrettyPrinter getJacksonPrettyPrinter() -
getJacksonPrettyPrinterNewline
-
getJacksonPrettyPrinterIndentation
-
getObjectMapper
protected com.fasterxml.jackson.databind.ObjectMapper getObjectMapper() -
createObjectManager
protected com.fasterxml.jackson.databind.ObjectMapper createObjectManager()Creates the ObjectMapper -
configureObjectMapper
protected void configureObjectMapper(com.fasterxml.jackson.databind.ObjectMapper objectMapper) Configuration of the ObjectMapper. -
isAllowCommentsInJson
protected boolean isAllowCommentsInJson()Should comments be accepted in Json? -
configureEmptyBeans
protected void configureEmptyBeans(com.fasterxml.jackson.databind.ObjectMapper objectMapper) -
configureMixins
protected void configureMixins(com.fasterxml.jackson.databind.ObjectMapper objectMapper) -
getJsonObjectSerializer
-
getEnumSerializer
-
getJsonArraySerializer
-
getDateSerializer
-
getInstantSerializer
-
getBigDecimalSerializer
-
getJsonObjectDeserializer
-
getJsonArrayDeserializer
-
registerCustomModules
protected void registerCustomModules(com.fasterxml.jackson.databind.ObjectMapper objectMapper) -
registerJsonObjectModule
protected void registerJsonObjectModule(com.fasterxml.jackson.databind.ObjectMapper objectMapper) Register our custom (de)serializers for JsonObject -
registerCustomTypeSerializerModule
protected void registerCustomTypeSerializerModule(com.fasterxml.jackson.databind.ObjectMapper objectMapper) Register our custom serializers for some types. -
registerJava8DatatypesModule
protected void registerJava8DatatypesModule(com.fasterxml.jackson.databind.ObjectMapper objectMapper) -
toJsonString
Description copied from interface:JsonManager
Gets theJson
String representation of the specified object.- Specified by:
toJsonString
in interfaceJsonManager
-
toJsonString
Description copied from interface:JsonManager
Gets theJson
String representation of the specified object.- Specified by:
toJsonString
in interfaceJsonManager
pretty
- iftrue
, the generated String will be formatted.
-
injectDependencies
Once the deserialization of an Object is done, we inject dependencies using Guice. -
create
Description copied from interface:JsonManager
Creates an emptyJsonObject
- Specified by:
create
in interfaceJsonManager
-
createArray
Description copied from interface:JsonManager
Creates an emptyJsonArray
.- Specified by:
createArray
in interfaceJsonManager
-
fromObject
Description copied from interface:JsonManager
Creates aJsonObject
from a random object..- Specified by:
fromObject
in interfaceJsonManager
-
fromString
Description copied from interface:JsonManager
Creates an instance of the specifiedT
type from aJson
String.- Specified by:
fromString
in interfaceJsonManager
- Returns:
- the deserialized version of the
parameter or
null
if the parameter isnull
.
-
fromInputStream
Description copied from interface:JsonManager
Creates an instance of the specifiedT
type from aJson
inputStream.- Specified by:
fromInputStream
in interfaceJsonManager
- Returns:
- the deserialized version of the
parameter or
null
if the parameter isnull
.
-
fromStringToMap
Description copied from interface:JsonManager
Creates aMap<String, Object>
from aJson
String.- Specified by:
fromStringToMap
in interfaceJsonManager
- Returns:
- the
Map
version of the parameter ornull
if the parameter isnull
.
-
fromInputStreamToMap
Description copied from interface:JsonManager
Creates aMap<String, Object>
from aJson
inputStream.- Specified by:
fromInputStreamToMap
in interfaceJsonManager
- Returns:
- the
Map
version of the parameter ornull
if the parameter isnull
.
-
fromString
Description copied from interface:JsonManager
Creates aJsonObject
from aJson
String.- Specified by:
fromString
in interfaceJsonManager
- Returns:
- the
JsonObject
version of the parameter ornull
if the parameter isnull
.
-
fromMap
Description copied from interface:JsonManager
Creates an emptyJsonObject
based on the specified Map. An attempt will be made to create a deep copy of every elements so a modification won't affect any external references and vice-versa.The keys will be used as is, not parsed as JsonPaths.
- Specified by:
fromMap
in interfaceJsonManager
- Returns:
- the
JsonObject
version of the parameter ornull
if the parameter isnull
.
-
fromMap
Description copied from interface:JsonManager
Creates aJsonObject
based on the specified Map. An attempt will be made to create a deep copy of every elements so a modification won't affect any external references and vice-versa.- Specified by:
fromMap
in interfaceJsonManager
parseKeysAsJsonPaths
- iftrue
, the keys will be parsed asJsonPaths
, otherwise they will ne used as is.- Returns:
- the
JsonObject
version of the parameter ornull
if the parameter isnull
.
-
fromInputStream
Description copied from interface:JsonManager
Creates aJsonObject
from an inputStream.- Specified by:
fromInputStream
in interfaceJsonManager
- Returns:
- the
JsonObject
version of the parameter ornull
if the parameter isnull
.
-
fromFile
Description copied from interface:JsonManager
Creates aJsonObject
from a Json file.- Specified by:
fromFile
in interfaceJsonManager
- Returns:
- the deserialized
JsonObject
ornull
if the file isnull
or doesn't exist.
-
fromFile
Description copied from interface:JsonManager
Creates aJsonObject
from the path of a file, on the file system.- Specified by:
fromFile
in interfaceJsonManager
- Returns:
- the deserialized
JsonObject
ornull
if the file isnull
or doesn't exist.
-
fromClasspathFile
Description copied from interface:JsonManager
Creates aJsonObject
from a classpath Json file.- Specified by:
fromClasspathFile
in interfaceJsonManager
- Returns:
- the deserialized
JsonObject
ornull
if the file doesn't exist.
-
fromCollectionToJsonArray
Description copied from interface:JsonManager
Creates aJsonArray
from a random collection.- Specified by:
fromCollectionToJsonArray
in interfaceJsonManager
-
fromStringArray
Description copied from interface:JsonManager
Creates aJsonArray
from aJson
String.- Specified by:
fromStringArray
in interfaceJsonManager
- Returns:
- the
JsonArray
version of the parameter ornull
if the parameter isnull
.
-
fromListArray
Description copied from interface:JsonManager
Creates aJsonArray
from aList
of elements.- Specified by:
fromListArray
in interfaceJsonManager
- Returns:
- the
JsonArray
version of the parameter ornull
if the parameter isnull
.
-
fromInputStreamArray
Description copied from interface:JsonManager
Creates aJsonArray
from an inputStream.- Specified by:
fromInputStreamArray
in interfaceJsonManager
- Returns:
- the
JsonArray
version of the parameter ornull
if the parameter isnull
.
-
getMaxNumberOfKeysWhenConvertingMapToJsonObject
protected int getMaxNumberOfKeysWhenConvertingMapToJsonObject() -
getElementAtJsonPath
Description copied from interface:JsonManager
Gets an element from theJsonObject
at the specifiedJsonPath
.- Specified by:
getElementAtJsonPath
in interfaceJsonManager
- Returns:
- the element or
null
if not found.
-
getElementAtJsonPath
Description copied from interface:JsonManager
Gets an element from theJsonObject
at the specifiedJsonPath
.- Specified by:
getElementAtJsonPath
in interfaceJsonManager
- Returns:
- the element or
null
if not found.
-
getElementAtJsonPath
Description copied from interface:JsonManager
Gets an element from theJsonArray
at the specifiedJsonPath
.- Specified by:
getElementAtJsonPath
in interfaceJsonManager
- Returns:
- the element or
null
if not found.
-
getElementAtJsonPath
Description copied from interface:JsonManager
Gets an element from theJsonArray
at the specifiedJsonPath
.- Specified by:
getElementAtJsonPath
in interfaceJsonManager
- Returns:
- the element or
null
if not found.
-
putElementAtJsonPath
Description copied from interface:JsonManager
Puts an element in the object at the specifiedJsonPath
.All the hierarchy to the end of the
JsonPath
is created if required.- Specified by:
putElementAtJsonPath
in interfaceJsonManager
-
putElementAtJsonPath
public void putElementAtJsonPath(JsonObjectOrArray objOrArray, String jsonPath, Object value, boolean clone) Description copied from interface:JsonManager
Puts a clone of the element in the object at the specifiedJsonPath
.All the hierarchy to the end of the
JsonPath
is created if required.- Specified by:
putElementAtJsonPath
in interfaceJsonManager
-
createForm
Description copied from interface:JsonManager
Creates an emptyForm
, which is a JsonObject + a validations container.- Specified by:
createForm
in interfaceJsonManager
-
convertToJsonDate
Description copied from interface:JsonManager
Converts a Date to aJson
date format.- Specified by:
convertToJsonDate
in interfaceJsonManager
-
parseDateFromJson
Currently support ISO 8601 encoded dates.- Specified by:
parseDateFromJson
in interfaceJsonManager
-
convertToNativeType
Description copied from interface:JsonManager
Convert a random object to a valid native JsonObject type, if it's not already.- Specified by:
convertToNativeType
in interfaceJsonManager
-
cloneJsonObject
Description copied from interface:JsonManager
Deep copy of theJsonObject
, so any modification to the original won't affect the clone, and vice-versa.Note that if the current object is immutable and the
mutable
parameter is set tofalse
, then the current object will be returned as is, since no cloning is required.- Specified by:
cloneJsonObject
in interfaceJsonManager
mutable
- iftrue
the resulting array and all its children will be mutable, otherwise they will all be immutable.
-
cloneJsonArray
Description copied from interface:JsonManager
Deep copy of theJsonArray
, so any modification to the original won't affect the clone, and vice-versa.Note that if the current object is immutable and the
mutable
parameter is set tofalse
, then the current array will be returned as is, since no cloning is required.- Specified by:
cloneJsonArray
in interfaceJsonManager
mutable
- iftrue
the resulting array and all its children will be mutable, otherwise they will all be immutable.
-
clone
Description copied from interface:JsonManager
Tries to clone an object to aJsonObject
or aJsonArray
, if the object is not of a primitive type (orBigDecimal
).The cloning is made by serializing the Object to a Json string, and deserializing back. So any (de)serialization rules apply.
The non primitive object will be cloned to a
JsonArray
if it is a :- JsonArray
- Collection
- Array
- Specified by:
clone
in interfaceJsonManager
-
clone
Description copied from interface:JsonManager
Tries to clone an object to aJsonObject
or aJsonArray
, if the object is not of a primitive type (orBigDecimal
).The cloning is made by serializing the Object to a Json string, and deserializing back. So any (de)serialization rules apply.
The non primitive object will be cloned to a
JsonArray
if it is a :- JsonArray
- Collection
- Array
- Specified by:
clone
in interfaceJsonManager
mutable
- iffalse
, the resulting Object and all its potential children will be immutable.
-
removeElementAtJsonPath
Description copied from interface:JsonManager
Removes an element at the specifiedJsonPath
from the object.- Specified by:
removeElementAtJsonPath
in interfaceJsonManager
-
removeElementAtJsonPath
Description copied from interface:JsonManager
Removes an element at the specifiedJsonPath
from the array.- Specified by:
removeElementAtJsonPath
in interfaceJsonManager
-
isElementExists
Description copied from interface:JsonManager
Does the object contain an element at the specifiedJsonPath
(even ifnull
)?- Specified by:
isElementExists
in interfaceJsonManager
-
isElementExists
Description copied from interface:JsonManager
Does the array contain an element at the specifiedJsonPath
(even ifnull
)?- Specified by:
isElementExists
in interfaceJsonManager
-
enumToFriendlyJsonObject
Description copied from interface:JsonManager
Convert the enum value to aJsonObject
that has a ".name" property (thename()
of the enum) and a ".label" property (thetoString()
of the enum)- Specified by:
enumToFriendlyJsonObject
in interfaceJsonManager
-
enumsToFriendlyJsonArray
Description copied from interface:JsonManager
Convert the enums to an array ofJsonObjects
that have a ".name" property (thename()
of the enum) and a ".label" property (thetoString()
of the enum).- Specified by:
enumsToFriendlyJsonArray
in interfaceJsonManager
-