Class JsonObjectCrypto

java.lang.Object
com.couchbase.client.java.json.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 Details Link icon

    • JsonObjectCrypto Link icon

      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 Details Link icon

    • withEncrypter Link icon

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

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

      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 Link icon

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

      public boolean hasEncryptedField(String fieldName)
    • getEncryptedFieldNames Link icon

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

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

      public JsonObjectCrypto put(String fieldName, Object fieldValue)
    • get Link icon

      public Object get(String fieldName)
    • getArray Link icon

      public JsonArray getArray(String fieldName)
    • getObject Link icon

      public JsonObject getObject(String fieldName)
    • getString Link icon

      public String getString(String fieldName)
    • getBoolean Link icon

      public Boolean getBoolean(String fieldName)
    • getInt Link icon

      public Integer getInt(String fieldName)
    • getLong Link icon

      public Long getLong(String fieldName)
    • getDouble Link icon

      public Double getDouble(String fieldName)
    • getNumber Link icon

      public Number getNumber(String fieldName)
    • getBigDecimal Link icon

      public BigDecimal getBigDecimal(String fieldName)
    • getBigInteger Link icon

      public BigInteger getBigInteger(String fieldName)
    • remove Link icon

      public JsonObjectCrypto remove(String fieldName)
    • toString Link icon

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