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

    • 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 Details

    • 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.
    • put

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

      public Object get(String fieldName)
    • getArray

      public JsonArray getArray(String fieldName)
    • getObject

      public JsonObject getObject(String fieldName)
    • getString

      public String getString(String fieldName)
    • getBoolean

      public Boolean getBoolean(String fieldName)
    • getInt

      public Integer getInt(String fieldName)
    • getLong

      public Long getLong(String fieldName)
    • getDouble

      public Double getDouble(String fieldName)
    • getNumber

      public Number getNumber(String fieldName)
    • getBigDecimal

      public BigDecimal getBigDecimal(String fieldName)
    • getBigInteger

      public BigInteger getBigInteger(String fieldName)
    • remove

      public JsonObjectCrypto remove(String fieldName)
    • toString

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