Class JsonObject

  • All Implemented Interfaces:
    Serializable

    public class JsonObject
    extends JsonValue
    implements Serializable
    Represents a JSON object that can be stored and loaded from Couchbase Server. If boxed return values are unboxed, the calling code needs to make sure to handle potential NullPointerExceptions. The JsonObject is backed by a Map and is intended to work similar to it API wise, but to only allow to store such objects which can be represented by JSON.
    Since:
    2.0
    See Also:
    Serialized Form
    • Method Detail

      • from

        public static JsonObject from​(Map<String,​?> mapData)
        Constructs a JsonObject from a Map<String, ?>. This is only possible if the given Map is well formed, that is it contains non null keys, and all values are of a supported type. A null input Map or null key will lead to a NullPointerException being thrown. If any unsupported value is present in the Map, an IllegalArgumentException will be thrown. *Sub Maps and Lists* If possible, Maps and Lists contained in mapData will be converted to JsonObject and JsonArray respectively. However, same restrictions apply. Any non-convertible collection will raise a ClassCastException. If the sub-conversion raises an exception (like an IllegalArgumentException) then it is put as cause for the ClassCastException.
        Parameters:
        mapData - the Map to convert to a JsonObject
        Returns:
        the resulting JsonObject
        Throws:
        IllegalArgumentException - in case one or more unsupported values are present
        NullPointerException - in case a null map is provided or if it contains a null key
        ClassCastException - if map contains a sub-Map or sub-List not supported (see above)
      • put

        public JsonObject put​(String name,
                              Object value)
        Stores a Object value identified by the field name. Note that the value is checked and a IllegalArgumentException is thrown if not supported.
        Parameters:
        name - the name of the JSON field.
        value - the value of the JSON field.
        Returns:
        the JsonObject.
      • putAndEncrypt

        public JsonObject putAndEncrypt​(String name,
                                        Object value,
                                        String providerName)
        Stores the Object value as encrypted identified by the field name. Note that the value is checked and a IllegalArgumentException is thrown if not supported. Note: Use of the Field Level Encryption functionality provided in the com.couchbase.client.encryption namespace provided by Couchbase is subject to the Couchbase Inc. Enterprise Subscription License Agreement at https://www.couchbase.com/ESLA-11132015.
        Parameters:
        name - the name of the JSON field.
        value - the value of the JSON field.
        providerName - Crypto provider name for encryption.
        Returns:
        the JsonObject.
      • get

        public Object get​(String name)
        Retrieves the (potential null) content and not casting its type.
        Parameters:
        name - the key of the field.
        Returns:
        the value of the field, or null if it does not exist.
      • getAndDecrypt

        public Object getAndDecrypt​(String name,
                                    String providerName)
                             throws Exception
        Retrieve and decrypt content and not casting its type Note: Use of the Field Level Encryption functionality provided in the com.couchbase.client.encryption namespace provided by Couchbase is subject to the Couchbase Inc. Enterprise Subscription License Agreement at https://www.couchbase.com/ESLA-11132015.
        Parameters:
        name - the key of the field
        providerName - the crypto algorithm provider name
        Returns:
        the value of the field, or null if it does not exist
        Throws:
        Exception
      • put

        public JsonObject put​(String name,
                              String value)
        Stores a String value identified by the field name.
        Parameters:
        name - the name of the JSON field.
        value - the value of the JSON field.
        Returns:
        the JsonObject.
      • putAndEncrypt

        public JsonObject putAndEncrypt​(String name,
                                        String value,
                                        String providerName)
        Stores a String value as encrypted identified by the field name.
        Parameters:
        name - the name of the JSON field.
        value - the value of the JSON field.
        providerName - the crypto provider name for encryption.
        Returns:
        the JsonObject.
      • getString

        public String getString​(String name)
        Retrieves the value from the field name and casts it to String. Note: Use of the Field Level Encryption functionality provided in the com.couchbase.client.encryption namespace provided by Couchbase is subject to the Couchbase Inc. Enterprise Subscription License Agreement at https://www.couchbase.com/ESLA-11132015.
        Parameters:
        name - the name of the field.
        Returns:
        the result or null if it does not exist.
      • getAndDecryptString

        public String getAndDecryptString​(String name,
                                          String providerName)
                                   throws Exception
        Retrieves the decrypted value from the field name and casts it to String. Note: Use of the Field Level Encryption functionality provided in the com.couchbase.client.encryption namespace provided by Couchbase is subject to the Couchbase Inc. Enterprise Subscription License Agreement at https://www.couchbase.com/ESLA-11132015.
        Parameters:
        name - the name of the field.
        providerName - the crypto provider name for decryption.
        Returns:
        the result or null if it does not exist.
        Throws:
        Exception
      • put

        public JsonObject put​(String name,
                              int value)
        Stores a Integer value identified by the field name.
        Parameters:
        name - the name of the JSON field.
        value - the value of the JSON field.
        Returns:
        the JsonObject.
      • putAndEncrypt

        public JsonObject putAndEncrypt​(String name,
                                        int value,
                                        String providerName)
        Stores a Integer value as encrypted identified by the field name. Note: Use of the Field Level Encryption functionality provided in the com.couchbase.client.encryption namespace provided by Couchbase is subject to the Couchbase Inc. Enterprise Subscription License Agreement at https://www.couchbase.com/ESLA-11132015.
        Parameters:
        name - the name of the JSON field.
        value - the value of the JSON field.
        providerName - Crypto provider name for encryption.
        Returns:
        the JsonObject.
      • getInt

        public Integer getInt​(String name)
        Retrieves the value from the field name and casts it to Integer. Note that if value was stored as another numerical type, some truncation or rounding may occur.
        Parameters:
        name - the name of the field.
        Returns:
        the result or null if it does not exist.
      • getAndDecryptInt

        @Committed
        public Integer getAndDecryptInt​(String name,
                                        String providerName)
                                 throws Exception
        Retrieves the decrypted value from the field name and casts it to Integer. Note that if value was stored as another numerical type, some truncation or rounding may occur.
        Parameters:
        name - the name of the field.
        providerName - crypto provider name for decryption.
        Returns:
        the result or null if it does not exist.
        Throws:
        Exception
      • put

        public JsonObject put​(String name,
                              long value)
        Stores a Long value identified by the field name.
        Parameters:
        name - the name of the JSON field.
        value - the value of the JSON field.
        Returns:
        the JsonObject.
      • putAndEncrypt

        public JsonObject putAndEncrypt​(String name,
                                        long value,
                                        String providerName)
        Stores a Long value as encrypted identified by the field name. Note: Use of the Field Level Encryption functionality provided in the com.couchbase.client.encryption namespace provided by Couchbase is subject to the Couchbase Inc. Enterprise Subscription License Agreement at https://www.couchbase.com/ESLA-11132015.
        Parameters:
        name - the name of the JSON field.
        value - the value of the JSON field.
        providerName - Crypto provider name for encryption.
        Returns:
        the JsonObject.
      • getLong

        public Long getLong​(String name)
        Retrieves the value from the field name and casts it to Long. Note that if value was stored as another numerical type, some truncation or rounding may occur.
        Parameters:
        name - the name of the field.
        Returns:
        the result or null if it does not exist.
      • getAndDecryptLong

        public Long getAndDecryptLong​(String name,
                                      String providerName)
                               throws Exception
        Retrieves the decrypted value from the field name and casts it to Long. Note that if value was stored as another numerical type, some truncation or rounding may occur. Note: Use of the Field Level Encryption functionality provided in the com.couchbase.client.encryption namespace provided by Couchbase is subject to the Couchbase Inc. Enterprise Subscription License Agreement at https://www.couchbase.com/ESLA-11132015.
        Parameters:
        name - the name of the field.
        providerName - the crypto provider name for decryption
        Returns:
        the result or null if it does not exist.
        Throws:
        Exception
      • put

        public JsonObject put​(String name,
                              double value)
        Stores a Double value identified by the field name.
        Parameters:
        name - the name of the JSON field.
        value - the value of the JSON field.
        Returns:
        the JsonObject.
      • putAndEncrypt

        public JsonObject putAndEncrypt​(String name,
                                        double value,
                                        String providerName)
        Stores a Double value as encrypted identified by the field name. Note: Use of the Field Level Encryption functionality provided in the com.couchbase.client.encryption namespace provided by Couchbase is subject to the Couchbase Inc. Enterprise Subscription License Agreement at https://www.couchbase.com/ESLA-11132015.
        Parameters:
        name - the name of the JSON field.
        value - the value of the JSON field.
        providerName - Crypto provider name for encryption.
        Returns:
        the JsonObject.
      • getDouble

        public Double getDouble​(String name)
        Retrieves the value from the field name and casts it to Double. Note that if value was stored as another numerical type, some truncation or rounding may occur.
        Parameters:
        name - the name of the field.
        Returns:
        the result or null if it does not exist.
      • getAndDecryptDouble

        public Double getAndDecryptDouble​(String name,
                                          String providerName)
                                   throws Exception
        Retrieves the value from the field name and casts it to Double. Note that if value was stored as another numerical type, some truncation or rounding may occur. Note: Use of the Field Level Encryption functionality provided in the com.couchbase.client.encryption namespace provided by Couchbase is subject to the Couchbase Inc. Enterprise Subscription License Agreement at https://www.couchbase.com/ESLA-11132015.
        Parameters:
        name - the name of the field.
        providerName - the crypto provider name for decryption
        Returns:
        the result or null if it does not exist.
        Throws:
        Exception
      • put

        public JsonObject put​(String name,
                              boolean value)
        Stores a Boolean value identified by the field name.
        Parameters:
        name - the name of the JSON field.
        value - the value of the JSON field.
        Returns:
        the JsonObject.
      • putAndEncrypt

        public JsonObject putAndEncrypt​(String name,
                                        boolean value,
                                        String providerName)
        Stores a Boolean value as encrypted identified by the field name. Note: Use of the Field Level Encryption functionality provided in the com.couchbase.client.encryption namespace provided by Couchbase is subject to the Couchbase Inc. Enterprise Subscription License Agreement at https://www.couchbase.com/ESLA-11132015.
        Parameters:
        name - the name of the JSON field.
        value - the value of the JSON field.
        providerName - Crypto provider name for encryption.
        Returns:
        the JsonObject.
      • getBoolean

        public Boolean getBoolean​(String name)
        Retrieves the value from the field name and casts it to Boolean.
        Parameters:
        name - the name of the field.
        Returns:
        the result or null if it does not exist.
      • getAndDecryptBoolean

        public Boolean getAndDecryptBoolean​(String name,
                                            String providerName)
                                     throws Exception
        Retrieves the decrypted value from the field name and casts it to Boolean. Note: Use of the Field Level Encryption functionality provided in the com.couchbase.client.encryption namespace provided by Couchbase is subject to the Couchbase Inc. Enterprise Subscription License Agreement at https://www.couchbase.com/ESLA-11132015.
        Parameters:
        name - the name of the field.
        providerName - the provider name of the field.
        Returns:
        the result or null if it does not exist.
        Throws:
        Exception
      • put

        public JsonObject put​(String name,
                              JsonObject value)
        Stores a JsonObject value identified by the field name.
        Parameters:
        name - the name of the JSON field.
        value - the value of the JSON field.
        Returns:
        the JsonObject.
      • putAndEncrypt

        public JsonObject putAndEncrypt​(String name,
                                        JsonObject value,
                                        String providerName)
        Stores a JsonObject value as encrypted identified by the field name. Note: Use of the Field Level Encryption functionality provided in the com.couchbase.client.encryption namespace provided by Couchbase is subject to the Couchbase Inc. Enterprise Subscription License Agreement at https://www.couchbase.com/ESLA-11132015.
        Parameters:
        name - the name of the JSON field.
        value - the value of the JSON field.
        providerName - Crypto provider name for encryption.
        Returns:
        the JsonObject.
      • put

        public JsonObject put​(String name,
                              Map<String,​?> value)
        Attempt to convert a Map to a JsonObject value and store it, identified by the field name.
        Parameters:
        name - the name of the JSON field.
        value - the value of the JSON field.
        Returns:
        the JsonObject.
        See Also:
        from(Map)
      • putAndEncrypt

        public JsonObject putAndEncrypt​(String name,
                                        Map<String,​?> value,
                                        String providerName)
        Attempt to convert a Map to a JsonObject value and store it, as encrypted identified by the field name. Note: Use of the Field Level Encryption functionality provided in the com.couchbase.client.encryption namespace provided by Couchbase is subject to the Couchbase Inc. Enterprise Subscription License Agreement at https://www.couchbase.com/ESLA-11132015.
        Parameters:
        name - the name of the JSON field.
        value - the value of the JSON field.
        providerName - Crypto provider name for encryption.
        Returns:
        the JsonObject.
        See Also:
        from(Map)
      • getObject

        public JsonObject getObject​(String name)
        Retrieves the value from the field name and casts it to JsonObject.
        Parameters:
        name - the name of the field.
        Returns:
        the result or null if it does not exist.
      • getAndDecryptObject

        public JsonObject getAndDecryptObject​(String name,
                                              String providerName)
                                       throws Exception
        Retrieves the decrypted value from the field name and casts it to JsonObject. Note: Use of the Field Level Encryption functionality provided in the com.couchbase.client.encryption namespace provided by Couchbase is subject to the Couchbase Inc. Enterprise Subscription License Agreement at https://www.couchbase.com/ESLA-11132015.
        Parameters:
        name - the name of the field.
        providerName - Crypto provider name for decryption
        Returns:
        the result or null if it does not exist.
        Throws:
        Exception
      • put

        public JsonObject put​(String name,
                              JsonArray value)
        Stores a JsonArray value identified by the field name.
        Parameters:
        name - the name of the JSON field.
        value - the value of the JSON field.
        Returns:
        the JsonObject.
      • putAndEncrypt

        public JsonObject putAndEncrypt​(String name,
                                        JsonArray value,
                                        String providerName)
        Stores a JsonArray value as encrypted identified by the field name. Note: Use of the Field Level Encryption functionality provided in the com.couchbase.client.encryption namespace provided by Couchbase is subject to the Couchbase Inc. Enterprise Subscription License Agreement at https://www.couchbase.com/ESLA-11132015.
        Parameters:
        name - the name of the JSON field.
        value - the value of the JSON field.
        providerName - the crypto provider name for encryption.
        Returns:
        the JsonObject.
      • put

        public JsonObject put​(String name,
                              Number value)
        Stores a Number value identified by the field name.
        Parameters:
        name - the name of the JSON field.
        value - the value of the JSON field.
        Returns:
        the JsonObject.
      • putAndEncrypt

        public JsonObject putAndEncrypt​(String name,
                                        Number value,
                                        String providerName)
        Stores a Number value as encrypted identified by the field name. Note: Use of the Field Level Encryption functionality provided in the com.couchbase.client.encryption namespace provided by Couchbase is subject to the Couchbase Inc. Enterprise Subscription License Agreement at https://www.couchbase.com/ESLA-11132015.
        Parameters:
        name - the name of the JSON field.
        value - the value of the JSON field.
        providerName - Crypto provider name for encryption.
        Returns:
        the JsonObject.
      • put

        public JsonObject put​(String name,
                              List<?> value)
        Stores a JsonArray value identified by the field name.
        Parameters:
        name - the name of the JSON field.
        value - the value of the JSON field.
        Returns:
        the JsonObject.
      • putAndEncrypt

        public JsonObject putAndEncrypt​(String name,
                                        List<?> value,
                                        String providerName)
        Stores a JsonArray value as encrypted identified by the field name. Note: Use of the Field Level Encryption functionality provided in the com.couchbase.client.encryption namespace provided by Couchbase is subject to the Couchbase Inc. Enterprise Subscription License Agreement at https://www.couchbase.com/ESLA-11132015.
        Parameters:
        name - the name of the JSON field.
        value - the value of the JSON field.
        providerName - the crypto provider name for encryption.
        Returns:
        the JsonObject.
      • getArray

        public JsonArray getArray​(String name)
        Retrieves the value from the field name and casts it to JsonArray.
        Parameters:
        name - the name of the field.
        Returns:
        the result or null if it does not exist.
      • getAndDecryptArray

        public JsonArray getAndDecryptArray​(String name,
                                            String providerName)
                                     throws Exception
        Retrieves the decrypted value from the field name and casts it to JsonArray. Note: Use of the Field Level Encryption functionality provided in the com.couchbase.client.encryption namespace provided by Couchbase is subject to the Couchbase Inc. Enterprise Subscription License Agreement at https://www.couchbase.com/ESLA-11132015.
        Parameters:
        name - the name of the field.
        providerName - crypto provider name for decryption.
        Returns:
        the result or null if it does not exist.
        Throws:
        Exception
      • getBigInteger

        public BigInteger getBigInteger​(String name)
        Retrieves the value from the field name and casts it to BigInteger.
        Parameters:
        name - the name of the field.
        Returns:
        the result or null if it does not exist.
      • getAndDecryptBigInteger

        public BigInteger getAndDecryptBigInteger​(String name,
                                                  String providerName)
                                           throws Exception
        Retrieves the decrypted value from the field name and casts it to BigInteger. Note: Use of the Field Level Encryption functionality provided in the com.couchbase.client.encryption namespace provided by Couchbase is subject to the Couchbase Inc. Enterprise Subscription License Agreement at https://www.couchbase.com/ESLA-11132015.
        Parameters:
        name - the name of the field.
        providerName - crypto provider name for decryption.
        Returns:
        the result or null if it does not exist.
        Throws:
        Exception
      • getBigDecimal

        public BigDecimal getBigDecimal​(String name)
        Retrieves the value from the field name and casts it to BigDecimal.
        Parameters:
        name - the name of the field.
        Returns:
        the result or null if it does not exist.
      • getAndDecryptBigDecimal

        public BigDecimal getAndDecryptBigDecimal​(String name,
                                                  String providerName)
                                           throws Exception
        Retrieves the decrypted value from the field name and casts it to BigDecimal. Note: Use of the Field Level Encryption functionality provided in the com.couchbase.client.encryption namespace provided by Couchbase is subject to the Couchbase Inc. Enterprise Subscription License Agreement at https://www.couchbase.com/ESLA-11132015.
        Parameters:
        name - the name of the field.
        providerName - crypto provider for decryption
        Returns:
        the result or null if it does not exist.
        Throws:
        Exception
      • getNumber

        public Number getNumber​(String name)
        Retrieves the value from the field name and casts it to Number.
        Parameters:
        name - the name of the field.
        Returns:
        the result or null if it does not exist.
      • getAndDecryptNumber

        public Number getAndDecryptNumber​(String name,
                                          String providerName)
                                   throws Exception
        Retrieves the decrypted value from the field name and casts it to Number. Note: Use of the Field Level Encryption functionality provided in the com.couchbase.client.encryption namespace provided by Couchbase is subject to the Couchbase Inc. Enterprise Subscription License Agreement at https://www.couchbase.com/ESLA-11132015.
        Parameters:
        name - the name of the field.
        providerName - the crypto provider name for decryption
        Returns:
        the result or null if it does not exist.
        Throws:
        Exception
      • putNull

        public JsonObject putNull​(String name)
        Store a null value identified by the field's name. This method is equivalent to calling put(String, Object) with either JsonValue.NULL or a null value explicitly cast to Object.
        Parameters:
        name - The null field's name.
        Returns:
        the JsonObject
      • putNullAndEncrypt

        public JsonObject putNullAndEncrypt​(String name,
                                            String providerName)
        Store a null value as encrypted identified by the field's name. This method is equivalent to calling put(String, Object) with either JsonValue.NULL or a null value explicitly cast to Object. Note: Use of the Field Level Encryption functionality provided in the com.couchbase.client.encryption namespace provided by Couchbase is subject to the Couchbase Inc. Enterprise Subscription License Agreement at https://www.couchbase.com/ESLA-11132015.
        Parameters:
        name - The null field's name.
        providerName - Crypto provider name for encryption.
        Returns:
        the JsonObject
      • getNames

        public Set<String> getNames()
        Returns a set of field names on the JsonObject.
        Returns:
        the set of names on the object.
      • isEmpty

        public boolean isEmpty()
        Returns true if the JsonObject is empty, false otherwise.
        Returns:
        true if empty, false otherwise.
      • toMap

        public Map<String,​Object> toMap()
        Transforms the JsonObject into a Map. The resulting map is not backed by this JsonObject, and all sub-objects or sub-arrays (JsonArray) are also recursively converted to maps and lists, respectively.
        Returns:
        the content copied as a Map.
      • toDecryptedMap

        public Map<String,​Object> toDecryptedMap​(String providerName)
                                                throws Exception
        Transforms the JsonObject into a Map. The resulting map is not backed by this JsonObject, and all sub-objects or sub-arrays (JsonArray) are also recursively converted to maps and lists, respectively. The encrypted values are decrypted. Note: Use of the Field Level Encryption functionality provided in the com.couchbase.client.encryption namespace provided by Couchbase is subject to the Couchbase Inc. Enterprise Subscription License Agreement at https://www.couchbase.com/ESLA-11132015.
        Returns:
        the content copied as a Map.
        Throws:
        Exception
      • containsKey

        public boolean containsKey​(String name)
        Checks if the JsonObject contains the field name.
        Parameters:
        name - the name of the field.
        Returns:
        true if its contained, false otherwise.
      • containsValue

        public boolean containsValue​(Object value)
        Checks if the JsonObject contains the value.
        Parameters:
        value - the actual value.
        Returns:
        true if its contained, false otherwise.
      • size

        public int size()
        The size of the JsonObject.
        Returns:
        the size.
      • isEncrypted

        public boolean isEncrypted​(String name)
        Returns true if the field is encrypted. Note: Use of the Field Level Encryption functionality provided in the com.couchbase.client.encryption namespace provided by Couchbase is subject to the Couchbase Inc. Enterprise Subscription License Agreement at https://www.couchbase.com/ESLA-11132015.
        Parameters:
        name - the key name of the field.
      • encryptionPathInfo

        @Private
        public Map<String,​String> encryptionPathInfo()
        Get the encryption list to merge path with parent
      • clearEncryptionPaths

        @Committed
        @Private
        public void clearEncryptionPaths()
        Clear the encryption paths
      • setCryptoManager

        @Private
        public void setCryptoManager​(CryptoManager cryptoManager)
        Set the encryption configuration for decryption
      • getCryptoManager

        @Private
        public CryptoManager getCryptoManager()
        Get the encryption configuration for decryption
      • toDecryptedString

        public String toDecryptedString​(String providerName)
                                 throws Exception
        Converts the JsonObject into its decrypted JSON string representation. Note: Use of the Field Level Encryption functionality provided in the com.couchbase.client.encryption namespace provided by Couchbase is subject to the Couchbase Inc. Enterprise Subscription License Agreement at https://www.couchbase.com/ESLA-11132015.
        Returns:
        the decrypted JSON string representing this JsonObject.
        Throws:
        Exception
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object