Class JsonMap<Value extends Storable>

java.lang.Object
com.codingchili.core.storage.JsonMap<Value>
All Implemented Interfaces:
AsyncStorage<Value>

public class JsonMap<Value extends Storable> extends Object implements AsyncStorage<Value>
Map backed by a json-file.

Do not use for data that is changing frequently, as this is extremely inefficient. The dirty-state of the map will be checked to determine when the map should be persisted. This is done in intervals specified in plugin configuration.

this map flushes its contents to disk every now and then.

  • Constructor Summary

    Constructors
    Constructor
    Description
    JsonMap​(io.vertx.core.Promise<AsyncStorage<Value>> promise, StorageContext<Value> context)
    Creates a new possibly shared instance of the JsonMap storage plugin.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    addIndex​(String field)
     
    void
    clear​(io.vertx.core.Handler<io.vertx.core.AsyncResult<Void>> handler)
    removes all existing entries from the storage.
    void
    contains​(String key, io.vertx.core.Handler<io.vertx.core.AsyncResult<Boolean>> handler)
    checks if an entry exists for the given key
    Get the context for the storage.
    void
    get​(String key, io.vertx.core.Handler<io.vertx.core.AsyncResult<Value>> handler)
    get an entry with the given key, if the key does not match a value fails with #ValueMissingException
    void
    put​(Value value, io.vertx.core.Handler<io.vertx.core.AsyncResult<Void>> handler)
    set the entry identified by the given key to the given value
    void
    putIfAbsent​(Value value, io.vertx.core.Handler<io.vertx.core.AsyncResult<Void>> handler)
    set the entry if it does not already exists.
    initialize the construction of a query.
    void
    remove​(String key, io.vertx.core.Handler<io.vertx.core.AsyncResult<Void>> handler)
    Removes an entry by its key.
    void
    size​(io.vertx.core.Handler<io.vertx.core.AsyncResult<Integer>> handler)
    returns the amount of entries in the storage.
    void
    update​(Value value, io.vertx.core.Handler<io.vertx.core.AsyncResult<Void>> handler)
    updates the value of the given key if a value already exists.
    void
    values​(io.vertx.core.Handler<io.vertx.core.AsyncResult<Stream<Value>>> handler)
    Get all values contained within the storage as a stream.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface com.codingchili.core.storage.AsyncStorage

    query
  • Constructor Details

    • JsonMap

      public JsonMap(io.vertx.core.Promise<AsyncStorage<Value>> promise, StorageContext<Value> context)
      Creates a new possibly shared instance of the JsonMap storage plugin. It's recommended to use the storage loader instead of invoking this constructor.
      Parameters:
      promise - completed when the storage is loaded and ready.
      context - contains metadata about the stored objects.
  • Method Details

    • get

      public void get(String key, io.vertx.core.Handler<io.vertx.core.AsyncResult<Value>> handler)
      Description copied from interface: AsyncStorage
      get an entry with the given key, if the key does not match a value fails with #ValueMissingException
      Specified by:
      get in interface AsyncStorage<Value extends Storable>
      Parameters:
      key - a unique key identifying an entry
      handler - callback
    • contains

      public void contains(String key, io.vertx.core.Handler<io.vertx.core.AsyncResult<Boolean>> handler)
      Description copied from interface: AsyncStorage
      checks if an entry exists for the given key
      Specified by:
      contains in interface AsyncStorage<Value extends Storable>
      Parameters:
      key - the key to check if set
      handler - callback
    • put

      public void put(Value value, io.vertx.core.Handler<io.vertx.core.AsyncResult<Void>> handler)
      Description copied from interface: AsyncStorage
      set the entry identified by the given key to the given value
      Specified by:
      put in interface AsyncStorage<Value extends Storable>
      Parameters:
      value - the value to be set for the given key
      handler - callback
    • putIfAbsent

      public void putIfAbsent(Value value, io.vertx.core.Handler<io.vertx.core.AsyncResult<Void>> handler)
      Description copied from interface: AsyncStorage
      set the entry if it does not already exists. fails with #ValueAlreadyPresentException if the key already has a value.
      Specified by:
      putIfAbsent in interface AsyncStorage<Value extends Storable>
      Parameters:
      value - the value to be set if the entry does not exist.
      handler - callback
    • remove

      public void remove(String key, io.vertx.core.Handler<io.vertx.core.AsyncResult<Void>> handler)
      Description copied from interface: AsyncStorage
      Removes an entry by its key.
      Specified by:
      remove in interface AsyncStorage<Value extends Storable>
      Parameters:
      key - identifies the entry to be removed.
      handler - callback
    • update

      public void update(Value value, io.vertx.core.Handler<io.vertx.core.AsyncResult<Void>> handler)
      Description copied from interface: AsyncStorage
      updates the value of the given key if a value already exists.
      Specified by:
      update in interface AsyncStorage<Value extends Storable>
      Parameters:
      value - the new value of the entry
      handler - callback
    • values

      public void values(io.vertx.core.Handler<io.vertx.core.AsyncResult<Stream<Value>>> handler)
      Description copied from interface: AsyncStorage
      Get all values contained within the storage as a stream. Not recommended to use on large maps.
      Specified by:
      values in interface AsyncStorage<Value extends Storable>
      Parameters:
      handler - callback
    • clear

      public void clear(io.vertx.core.Handler<io.vertx.core.AsyncResult<Void>> handler)
      Description copied from interface: AsyncStorage
      removes all existing entries from the storage.
      Specified by:
      clear in interface AsyncStorage<Value extends Storable>
      Parameters:
      handler - callback
    • query

      public QueryBuilder<Value> query()
      Description copied from interface: AsyncStorage
      initialize the construction of a query.
      Specified by:
      query in interface AsyncStorage<Value extends Storable>
      Returns:
      a builder String for constructing the query.
    • context

      public StorageContext<Value> context()
      Description copied from interface: AsyncStorage
      Get the context for the storage.
      Specified by:
      context in interface AsyncStorage<Value extends Storable>
      Returns:
      a storage context.
    • addIndex

      public void addIndex(String field)
      Specified by:
      addIndex in interface AsyncStorage<Value extends Storable>
      Parameters:
      field - the path to the attribute to index, must include the array token in #CoreStrings.STORAGE_ARRAY.
    • size

      public void size(io.vertx.core.Handler<io.vertx.core.AsyncResult<Integer>> handler)
      Description copied from interface: AsyncStorage
      returns the amount of entries in the storage.
      Specified by:
      size in interface AsyncStorage<Value extends Storable>
      Parameters:
      handler - callback