Class SpincastGsonManager

java.lang.Object
org.spincast.plugins.gson.SpincastGsonManager
All Implemented Interfaces:
JsonManager

public class SpincastGsonManager extends Object implements JsonManager
  • Constructor Details

    • SpincastGsonManager

      @Inject public SpincastGsonManager(com.google.gson.JsonDeserializer<JsonObject> jsonObjectDeserializer, com.google.gson.JsonDeserializer<JsonArray> jsonArrayDeserializer, com.google.gson.JsonSerializer<JsonObject> jsonObjectSerializer, com.google.gson.JsonSerializer<JsonArray> jsonArraySerializer, com.google.gson.JsonSerializer<Date> dateSerializer, com.google.gson.JsonSerializer<Instant> instantSerializer, com.google.gson.JsonSerializer<BigDecimal> bigDecimalSerializer, com.google.gson.JsonSerializer<Enum<?>> enumSerializer, com.google.gson.JsonSerializer<Class<?>> classSerializer, com.google.gson.JsonSerializer<Throwable> throwableSerializer, JsonPathUtils jsonPathUtils, JsonObjectFactory jsonObjectFactory, SpincastConfig spincastConfig, SpincastUtils spincastUtils, FormFactory formFactory, com.google.inject.Provider<com.google.inject.Injector> guiceProvider)
  • Method Details

    • getJsonObjectDeserializer

      protected com.google.gson.JsonDeserializer<JsonObject> getJsonObjectDeserializer()
    • getJsonArrayDeserializer

      protected com.google.gson.JsonDeserializer<JsonArray> getJsonArrayDeserializer()
    • getJsonObjectSerializer

      protected com.google.gson.JsonSerializer<JsonObject> getJsonObjectSerializer()
    • getJsonArraySerializer

      protected com.google.gson.JsonSerializer<JsonArray> getJsonArraySerializer()
    • getDateSerializer

      protected com.google.gson.JsonSerializer<Date> getDateSerializer()
    • getInstantSerializer

      protected com.google.gson.JsonSerializer<Instant> getInstantSerializer()
    • getBigDecimalSerializer

      protected com.google.gson.JsonSerializer<BigDecimal> getBigDecimalSerializer()
    • getEnumSerializer

      protected com.google.gson.JsonSerializer<Enum<?>> getEnumSerializer()
    • getClassSerializer

      protected com.google.gson.JsonSerializer<Class<?>> getClassSerializer()
    • getThrowableSerializer

      protected com.google.gson.JsonSerializer<Throwable> getThrowableSerializer()
    • getJsonPathUtils

      protected JsonPathUtils getJsonPathUtils()
    • getJsonObjectFactory

      protected JsonObjectFactory getJsonObjectFactory()
    • getSpincastConfig

      protected SpincastConfig getSpincastConfig()
    • getSpincastUtils

      protected SpincastUtils getSpincastUtils()
    • getFormFactory

      protected FormFactory getFormFactory()
    • getGuice

      protected com.google.inject.Injector getGuice()
    • getGson

      public com.google.gson.Gson getGson()
    • getGsonPrettyPrinting

      public com.google.gson.Gson getGsonPrettyPrinting()
    • createGsons

      protected void createGsons()
    • configureGsonBuilder

      protected void configureGsonBuilder(com.google.gson.GsonBuilder gsonBuilder)
      Configure the Gson builder
    • registerCustomDeserializers

      protected void registerCustomDeserializers(com.google.gson.GsonBuilder gsonBuilder)
    • registerJsonObjectDeserializer

      protected void registerJsonObjectDeserializer(com.google.gson.GsonBuilder gsonBuilder)
    • registerJsonArrayDeserializer

      protected void registerJsonArrayDeserializer(com.google.gson.GsonBuilder gsonBuilder)
    • registerCustomSerializers

      protected void registerCustomSerializers(com.google.gson.GsonBuilder gsonBuilder)
    • registerJsonObjectSerializer

      protected void registerJsonObjectSerializer(com.google.gson.GsonBuilder gsonBuilder)
    • registerJsonArraySerializer

      protected void registerJsonArraySerializer(com.google.gson.GsonBuilder gsonBuilder)
    • registerDateSerializer

      protected void registerDateSerializer(com.google.gson.GsonBuilder gsonBuilder)
    • registerInstantSerializer

      protected void registerInstantSerializer(com.google.gson.GsonBuilder gsonBuilder)
    • registerBigDecimalSerializer

      protected void registerBigDecimalSerializer(com.google.gson.GsonBuilder gsonBuilder)
    • registerEnumSerializer

      protected void registerEnumSerializer(com.google.gson.GsonBuilder gsonBuilder)
    • registerClassSerializer

      protected void registerClassSerializer(com.google.gson.GsonBuilder gsonBuilder)
    • registerThrowableSerializer

      protected void registerThrowableSerializer(com.google.gson.GsonBuilder gsonBuilder)
    • create

      public JsonObject create()
      Description copied from interface: JsonManager
      Creates an empty JsonObject
      Specified by:
      create in interface JsonManager
    • createArray

      public JsonArray createArray()
      Description copied from interface: JsonManager
      Creates an empty JsonArray.
      Specified by:
      createArray in interface JsonManager
    • fromObject

      public JsonObject fromObject(Object object)
      Description copied from interface: JsonManager
      Creates a JsonObject from a random object..
      Specified by:
      fromObject in interface JsonManager
    • fromMap

      public JsonObject fromMap(Map<String,?> params)
      Description copied from interface: JsonManager
      Creates an empty JsonObject 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 interface JsonManager
      Returns:
      the JsonObject version of the parameter or null if the parameter is null.
    • fromMap

      public JsonObject fromMap(Map<String,?> params, boolean parseKeysAsJsonPaths)
      Description copied from interface: JsonManager
      Creates a JsonObject 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 interface JsonManager
      parseKeysAsJsonPaths - if true, the keys will be parsed as JsonPaths, otherwise they will ne used as is.
      Returns:
      the JsonObject version of the parameter or null if the parameter is null.
    • fromInputStream

      public JsonObject fromInputStream(InputStream inputStream)
      Description copied from interface: JsonManager
      Creates a JsonObject from an inputStream.
      Specified by:
      fromInputStream in interface JsonManager
      Returns:
      the JsonObject version of the parameter or null if the parameter is null.
    • getFromInputStreamEncoding

      protected String getFromInputStreamEncoding()
    • fromFile

      public JsonObject fromFile(File jsonFile)
      Description copied from interface: JsonManager
      Creates a JsonObject from a Json file.
      Specified by:
      fromFile in interface JsonManager
      Returns:
      the deserialized JsonObject or null if the file is null or doesn't exist.
    • getFromFileEncoding

      protected String getFromFileEncoding()
    • fromFile

      public JsonObject fromFile(String jsonFilePath)
      Description copied from interface: JsonManager
      Creates a JsonObject from the path of a file, on the file system.
      Specified by:
      fromFile in interface JsonManager
      Returns:
      the deserialized JsonObject or null if the file is null or doesn't exist.
    • fromClasspathFile

      public JsonObject fromClasspathFile(String path)
      Description copied from interface: JsonManager
      Creates a JsonObject from a classpath Json file.
      Specified by:
      fromClasspathFile in interface JsonManager
      Returns:
      the deserialized JsonObject or null if the file doesn't exist.
    • getFromClasspathFileEncoding

      protected String getFromClasspathFileEncoding()
    • fromStringToMap

      public Map<String,Object> fromStringToMap(String jsonString)
      Description copied from interface: JsonManager
      Creates a Map<String, Object> from a Json String.
      Specified by:
      fromStringToMap in interface JsonManager
      Returns:
      the Map version of the parameter or null if the parameter is null.
    • fromInputStreamToMap

      public Map<String,Object> fromInputStreamToMap(InputStream inputStream)
      Description copied from interface: JsonManager
      Creates a Map<String, Object> from a Json inputStream.
      Specified by:
      fromInputStreamToMap in interface JsonManager
      Returns:
      the Map version of the parameter or null if the parameter is null.
    • fromString

      public JsonObject fromString(String jsonString)
      Description copied from interface: JsonManager
      Creates a JsonObject from a Json String.
      Specified by:
      fromString in interface JsonManager
      Returns:
      the JsonObject version of the parameter or null if the parameter is null.
    • fromString

      public <T> T fromString(String jsonString, Class<T> clazz)
      Description copied from interface: JsonManager
      Creates an instance of the specified T type from a Json String.
      Specified by:
      fromString in interface JsonManager
      Returns:
      the deserialized version of the parameter or null if the parameter is null.
    • fromInputStream

      public <T> T fromInputStream(InputStream inputStream, Class<T> clazz)
      Description copied from interface: JsonManager
      Creates an instance of the specified T type from a Json inputStream.
      Specified by:
      fromInputStream in interface JsonManager
      Returns:
      the deserialized version of the parameter or null if the parameter is null.
    • fromCollectionToJsonArray

      public JsonArray fromCollectionToJsonArray(Collection<?> collection)
      Description copied from interface: JsonManager
      Creates a JsonArray from a random collection.
      Specified by:
      fromCollectionToJsonArray in interface JsonManager
    • fromStringArray

      public JsonArray fromStringArray(String jsonString)
      Description copied from interface: JsonManager
      Creates a JsonArray from a Json String.
      Specified by:
      fromStringArray in interface JsonManager
      Returns:
      the JsonArray version of the parameter or null if the parameter is null.
    • fromListArray

      public JsonArray fromListArray(List<?> elements)
      Description copied from interface: JsonManager
      Creates a JsonArray from a List of elements.
      Specified by:
      fromListArray in interface JsonManager
      Returns:
      the JsonArray version of the parameter or null if the parameter is null.
    • fromInputStreamArray

      public JsonArray fromInputStreamArray(InputStream inputStream)
      Description copied from interface: JsonManager
      Creates a JsonArray from an inputStream.
      Specified by:
      fromInputStreamArray in interface JsonManager
      Returns:
      the JsonArray version of the parameter or null if the parameter is null.
    • createForm

      public Form createForm(String formName)
      Description copied from interface: JsonManager
      Creates an empty Form, which is a JsonObject + a validations container.
      Specified by:
      createForm in interface JsonManager
    • toJsonString

      public String toJsonString(Object obj)
      Description copied from interface: JsonManager
      Gets the Json String representation of the specified object.
      Specified by:
      toJsonString in interface JsonManager
    • toJsonString

      public String toJsonString(Object obj, boolean pretty)
      Description copied from interface: JsonManager
      Gets the Json String representation of the specified object.
      Specified by:
      toJsonString in interface JsonManager
      pretty - if true, the generated String will be formatted.
    • parseDateFromJson

      public Date parseDateFromJson(String str)
      Description copied from interface: JsonManager
      Converts a Json date (ISO-8601) to a Java UTC date.
      Specified by:
      parseDateFromJson in interface JsonManager
    • convertToJsonDate

      public String convertToJsonDate(Date date)
      Description copied from interface: JsonManager
      Converts a Date to a Json date format.
      Specified by:
      convertToJsonDate in interface JsonManager
    • convertToNativeType

      public Object convertToNativeType(Object originalObject)
      Description copied from interface: JsonManager
      Convert a random object to a valid native JsonObject type, if it's not already.
      Specified by:
      convertToNativeType in interface JsonManager
    • convertJsonObjectElementToGsonJsonElement

      public com.google.gson.JsonElement convertJsonObjectElementToGsonJsonElement(Object originalObject)
    • getObjectFromGsonJsonElement

      protected Object getObjectFromGsonJsonElement(com.google.gson.JsonElement jsonElement)
    • clone

      public Object clone(Object originalObject)
      Description copied from interface: JsonManager
      Tries to clone an object to a JsonObject or a JsonArray, if the object is not of a primitive type (or BigDecimal).

      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 interface JsonManager
    • clone

      public Object clone(Object originalObject, boolean mutable)
      Description copied from interface: JsonManager
      Tries to clone an object to a JsonObject or a JsonArray, if the object is not of a primitive type (or BigDecimal).

      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 interface JsonManager
      mutable - if false, the resulting Object and all its potential children will be immutable.
    • cloneJsonObject

      public JsonObject cloneJsonObject(JsonObject jsonObject, boolean mutable)
      Description copied from interface: JsonManager
      Deep copy of the JsonObject, 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 to false, then the current object will be returned as is, since no cloning is required.

      Specified by:
      cloneJsonObject in interface JsonManager
      mutable - if true the resulting array and all its children will be mutable, otherwise they will all be immutable.
    • cloneJsonArray

      public JsonArray cloneJsonArray(JsonArray jsonArray, boolean mutable)
      Description copied from interface: JsonManager
      Deep copy of the JsonArray, 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 to false, then the current array will be returned as is, since no cloning is required.

      Specified by:
      cloneJsonArray in interface JsonManager
      mutable - if true the resulting array and all its children will be mutable, otherwise they will all be immutable.
    • removeElementAtJsonPath

      public void removeElementAtJsonPath(JsonObject obj, String jsonPath)
      Description copied from interface: JsonManager
      Removes an element at the specified JsonPath from the object.
      Specified by:
      removeElementAtJsonPath in interface JsonManager
    • removeElementAtJsonPath

      public void removeElementAtJsonPath(JsonArray array, String jsonPath)
      Description copied from interface: JsonManager
      Removes an element at the specified JsonPath from the array.
      Specified by:
      removeElementAtJsonPath in interface JsonManager
    • isElementExists

      public boolean isElementExists(JsonObject obj, String jsonPath)
      Description copied from interface: JsonManager
      Does the object contain an element at the specified JsonPath (even if null)?
      Specified by:
      isElementExists in interface JsonManager
    • isElementExists

      public boolean isElementExists(JsonArray array, String jsonPath)
      Description copied from interface: JsonManager
      Does the array contain an element at the specified JsonPath (even if null)?
      Specified by:
      isElementExists in interface JsonManager
    • enumToFriendlyJsonObject

      public JsonObject enumToFriendlyJsonObject(Enum<?> enumValue)
      Description copied from interface: JsonManager
      Convert the enum value to a JsonObject that has a ".name" property (the name() of the enum) and a ".label" property (the toString() of the enum)
      Specified by:
      enumToFriendlyJsonObject in interface JsonManager
    • enumsToFriendlyJsonArray

      public JsonArray enumsToFriendlyJsonArray(Enum<?>[] enumValues)
      Description copied from interface: JsonManager
      Convert the enums to an array of JsonObjects that have a ".name" property (the name() of the enum) and a ".label" property (the toString() of the enum).
      Specified by:
      enumsToFriendlyJsonArray in interface JsonManager
    • getElementAtJsonPath

      public Object getElementAtJsonPath(JsonObject obj, String jsonPath)
      Description copied from interface: JsonManager
      Gets an element from the JsonObject at the specified JsonPath.
      Specified by:
      getElementAtJsonPath in interface JsonManager
      Returns:
      the element or null if not found.
    • getElementAtJsonPath

      public Object getElementAtJsonPath(JsonObject obj, String jsonPath, Object defaultValue)
      Description copied from interface: JsonManager
      Gets an element from the JsonObject at the specified JsonPath.
      Specified by:
      getElementAtJsonPath in interface JsonManager
      Returns:
      the element or null if not found.
    • getElementAtJsonPath

      public Object getElementAtJsonPath(JsonArray array, String jsonPath)
      Description copied from interface: JsonManager
      Gets an element from the JsonArray at the specified JsonPath.
      Specified by:
      getElementAtJsonPath in interface JsonManager
      Returns:
      the element or null if not found.
    • getElementAtJsonPath

      public Object getElementAtJsonPath(JsonArray array, String jsonPath, Object defaultValue)
      Description copied from interface: JsonManager
      Gets an element from the JsonArray at the specified JsonPath.
      Specified by:
      getElementAtJsonPath in interface JsonManager
      Returns:
      the element or null if not found.
    • putElementAtJsonPath

      public void putElementAtJsonPath(JsonObjectOrArray objOrArray, String jsonPath, Object value)
      Description copied from interface: JsonManager
      Puts an element in the object at the specified JsonPath.

      All the hierarchy to the end of the JsonPath is created if required.

      Specified by:
      putElementAtJsonPath in interface JsonManager
    • 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 specified JsonPath.

      All the hierarchy to the end of the JsonPath is created if required.

      Specified by:
      putElementAtJsonPath in interface JsonManager
    • getMaxNumberOfKeysWhenConvertingMapToJsonObject

      protected int getMaxNumberOfKeysWhenConvertingMapToJsonObject()
    • injectDependencies

      protected void injectDependencies(Object obj)
      Once the deserialization of an Object is done, we inject dependencies using Guice.