Class JsonObjectCrypto


  • @Volatile
    public class JsonObjectCrypto
    extends Object
    A view of a Couchbase JsonObject for reading and writing encrypted fields.

    The methods of this class mirror the methods of JsonObject, and behave the same way except they operate on encrypted values. Values read via the crypto object are decrypted, and values written via the view are encrypted.

    The JsonObjectCrypto view can only see encrypted fields. Attempting to read an unencrypted field via the view has the same result as if the field does not exist.

    New instances are created by calling JsonObject.crypto(com.couchbase.client.core.encryption.CryptoManager).

    Example usage:

     Collection collection = cluster.bucket("myBucket").defaultCollection();
    
     JsonObject document = JsonObject.create();
     JsonObjectCrypto crypto = document.crypto(collection);
     crypto.put("locationOfBuriedTreasure", "Between palm trees");
    
     // This displays the encrypted form of the field
     System.out.println(document);
    
     collection.upsert("treasureMap", document);
    
     JsonObject readItBack = collection.get("treasureMap").contentAsObject();
     JsonObjectCrypto readItBackCrypto = readItBack.crypto(collection);
     System.out.println(readItBackCrypto.getString("locationOfBuriedTreasure"));
     
    • Constructor Detail

      • JsonObjectCrypto

        protected JsonObjectCrypto​(JsonObject jsonObject,
                                   CryptoManager cryptoManager,
                                   String encrypterAlias)
        Parameters:
        cryptoManager - handles the actual encryption and decryption
        encrypterAlias - (nullable) alias of the encrypter to use for writing fields, or null for default encrypter.
    • Method Detail

      • withEncrypter

        public JsonObjectCrypto withEncrypter​(String encrypterAlias)
        Returns a new JsonObjectCrypto instance that uses the decrypter identified by the given alias.
      • withDefaultEncrypter

        public JsonObjectCrypto withDefaultEncrypter()
        Returns a new JsonObjectCrypto instance that uses the default encrypter.
      • withObject

        public JsonObjectCrypto withObject​(JsonObject object)
        Returns a new instance that is a view of the given JsonObject.

        The returned instance uses the same CryptoManager and encrypter alias as this JsonObjectCrypto instance.

      • object

        public JsonObject object()
        Returns the JsonObject bound to this crypto view.
      • hasEncryptedField

        public boolean hasEncryptedField​(String fieldName)
      • getEncryptedFieldNames

        public Set<String> getEncryptedFieldNames()
        Returns the demangled names of all encrypted fields.
      • getUnencryptedFieldNames

        public Set<String> getUnencryptedFieldNames()
        Returns the names of all unencrypted fields.
      • getLong

        public Long getLong​(String fieldName)
      • toString

        public String toString()
        Returns the String representation of the bound JsonObject.
        Overrides:
        toString in class Object