Class AbstractKeyValueStoreProvider

java.lang.Object
org.nuxeo.runtime.kv.AbstractKeyValueStoreProvider
All Implemented Interfaces:
KeyValueStore, KeyValueStoreProvider
Direct Known Subclasses:
MemKeyValueStore, MongoDBKeyValueStore, SQLKeyValueStore

public abstract class AbstractKeyValueStoreProvider extends Object implements KeyValueStoreProvider
Key/Value Store common methods.
Since:
9.3
  • Field Details

  • Constructor Details

    • AbstractKeyValueStoreProvider

      public AbstractKeyValueStoreProvider()
  • Method Details

    • initialize

      public void initialize(KeyValueStoreDescriptor descriptor)
      Description copied from interface: KeyValueStoreProvider
      Initializes this Key/Value store provider.
      Specified by:
      initialize in interface KeyValueStoreProvider
      Parameters:
      descriptor - the store provider descriptor
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • bytesToString

      protected static String bytesToString(byte[] bytes) throws CharacterCodingException
      Converts UTF-8 bytes to a String, or throws if malformed.
      Throws:
      CharacterCodingException
    • stringToBytes

      protected static byte[] stringToBytes(String string)
      Converts a String to UTF-8 bytes.
    • bytesToLong

      protected static Long bytesToLong(byte[] bytes) throws NumberFormatException
      Converts UTF-8 bytes to a Long, or throws if malformed.
      Throws:
      NumberFormatException
    • longToBytes

      protected static byte[] longToBytes(Long value)
      Converts a long to UTF-8 bytes.
    • put

      public void put(String key, byte[] value)
      Description copied from interface: KeyValueStore
      Sets the value associated to the key.
      Specified by:
      put in interface KeyValueStore
      Parameters:
      key - the key
      value - the value, which may be null
    • put

      public void put(String key, String value)
      Description copied from interface: KeyValueStore
      Sets the value associated to the key.
      Specified by:
      put in interface KeyValueStore
      Parameters:
      key - the key
      value - the value, which may be null
    • put

      public void put(String key, String value, long ttl)
      Description copied from interface: KeyValueStore
      Sets the value associated to the key, and a TTL.
      Specified by:
      put in interface KeyValueStore
      Parameters:
      key - the key
      value - the value, which may be null
      ttl - the TTL, in seconds (0 for infinite)
    • put

      public void put(String key, Long value)
      Description copied from interface: KeyValueStore
      Sets the value associated to the key.
      Specified by:
      put in interface KeyValueStore
      Parameters:
      key - the key
      value - the value, which may be null
    • put

      public void put(String key, Long value, long ttl)
      Description copied from interface: KeyValueStore
      Sets the value associated to the key.
      Specified by:
      put in interface KeyValueStore
      Parameters:
      key - the key
      value - the value, which may be null
      ttl - the TTL, in seconds (0 for infinite)
    • getString

      public String getString(String key)
      Description copied from interface: KeyValueStore
      Retrieves the value associated to the key.
      Specified by:
      getString in interface KeyValueStore
      Parameters:
      key - the key
      Returns:
      the value, or null if there is no value
    • getLong

      public Long getLong(String key) throws NumberFormatException
      Description copied from interface: KeyValueStore
      Retrieves the value associated to the key.
      Specified by:
      getLong in interface KeyValueStore
      Parameters:
      key - the key
      Returns:
      the value, or null if there is no value
      Throws:
      NumberFormatException - if the value cannot be returned as a Long
    • get

      public Map<String,byte[]> get(Collection<String> keys)
      Description copied from interface: KeyValueStore
      Retrieves the key/value map associated with the keys.
      Specified by:
      get in interface KeyValueStore
      Parameters:
      keys - the keys
      Returns:
      the key/value map
    • getStrings

      public Map<String,String> getStrings(Collection<String> keys)
      Description copied from interface: KeyValueStore
      Retrieves the key/value map associated with the keys.
      Specified by:
      getStrings in interface KeyValueStore
      Parameters:
      keys - the keys
      Returns:
      the key/value map
    • getLongs

      public Map<String,Long> getLongs(Collection<String> keys) throws NumberFormatException
      Description copied from interface: KeyValueStore
      Retrieves the key/value map associated with the keys.
      Specified by:
      getLongs in interface KeyValueStore
      Parameters:
      keys - the keys
      Returns:
      the key/value map
      Throws:
      NumberFormatException - if one of the values cannot be returned as a Long
    • compareAndSet

      public boolean compareAndSet(String key, byte[] expected, byte[] value)
      Description copied from interface: KeyValueStore
      Atomically sets the value associated to the key to the given value if the current value is the expected value.

      Note value comparison is done by value and not by reference.

      Specified by:
      compareAndSet in interface KeyValueStore
      Parameters:
      key - the key
      expected - the expected value, which may be null
      value - the updated value, which may be null
      Returns:
      true if the value was updated, or false if not (the expected value was not found)
    • compareAndSet

      public boolean compareAndSet(String key, String expected, String value)
      Description copied from interface: KeyValueStore
      Atomically sets the value associated to the key to the given value if the current value is the expected value.

      Note value comparison is done by value and not by reference.

      Specified by:
      compareAndSet in interface KeyValueStore
      Parameters:
      key - the key
      expected - the expected value, which may be null
      value - the updated value, which may be null
      Returns:
      true if the value was updated, or false if not (the expected value was not found)
    • compareAndSet

      public boolean compareAndSet(String key, String expected, String value, long ttl)
      Description copied from interface: KeyValueStore
      Atomically sets the value associated to the key to the given value, with the given TTL, if the current value is the expected value.

      Note value comparison is done by value and not by reference.

      Specified by:
      compareAndSet in interface KeyValueStore
      Parameters:
      key - the key
      expected - the expected value, which may be null
      value - the updated value, which may be null
      ttl - the TTL, in seconds (0 for infinite)
      Returns:
      true if the value was updated, or false if not (the expected value was not found)
    • addAndGet

      public long addAndGet(String key, long delta) throws NumberFormatException
      Description copied from interface: KeyValueStore
      Atomically adds the delta to the value associated to the key, interpreted as a long represented as a string.

      If the value does not exist (if KeyValueStore.get(java.lang.String) would return null), it is interpreted as 0.

      Specified by:
      addAndGet in interface KeyValueStore
      Parameters:
      key - the key
      delta - the delta to add
      Returns:
      the new value
      Throws:
      NumberFormatException - if the existing value cannot be interpreted as a long