## Uses of Interface
com.hammurapi.store.Store.Handle

- Packages that use Store.Handle
  Package | Description
  --- | ---
  com.hammurapi.store | This package contains interfaces and classes which define object store and provide foundation for implementations.
  com.hammurapi.store.local | Local (in-JVM) implementation of object store.

- - ### Uses of Store.Handle in com.hammurapi.store

    Methods in com.hammurapi.store that return Store.Handle
    Modifier and Type | Method and Description
    --- | ---
    `Store.Handle<T,PK,S>` | AbstractStore.SelectorTask.`call()` Returns object if predicate matches.
    `protected Store.Handle<T,PK,S>` | DeputyStore.`createHandle(T obj, PK primaryKey, Map<S,Map<Extractor<T,? super PK,S>,? super PK>> cache, Predicate<T,S>[] validators)`
    `protected abstract Store.Handle<T,PK,S>` | AbstractStore.`createHandle(T obj, PK primaryKey, Map<S,Map<Extractor<T,? super PK,S>,? super PK>> cache, Predicate<T,S>[] validators)` Creates handle.
    `protected Store.Handle<T,PK,S>` | AbstractStore.`createHandle(T obj, Predicate<T,S>[] validators)`
    `Store.Handle<T,PK,S>` | DeputyStore.`put(T obj)`
    `Store.Handle<T,PK,S>` | UnmodifiableStore.`put(T obj, Predicate<T,S>... validators)`
    `Store.Handle<T,PK,S>` | Store.`put(T obj, Predicate<T,S>... validators)` Puts object to the store.
    `Store.Handle<T,PK,S>` | LiveView.`put(T obj, Predicate<T,S>... validators)`
    `Store.Handle<T,PK,S>` | AbstractStore.`put(T obj, Predicate<T,S>... validators)`

    Methods in com.hammurapi.store that return types with arguments of type Store.Handle
    Modifier and Type | Method and Description
    --- | ---
    `protected Collection<Store.Handle<T,PK,S>>` | DeputyStore.`createIndexCollection(boolean unique, boolean ordered, Comparator<T> comparator)`
    `protected abstract Collection<Store.Handle<T,PK,S>>` | AbstractStore.`createIndexCollection(boolean unique, boolean ordered, Comparator<T> comparator)` Creates collection for index entries
    `protected Iterable<Store.Handle<T,PK,S>>` | AbstractStore.`getHandles(Predicate<T,S> selector)`
    `protected abstract Map<V,Collection<Store.Handle<ST,PK,S>>>` | AbstractIndex.`getIndexMultiStore()`
    `protected abstract Map<V,Store.Handle<ST,PK,S>>` | AbstractIndex.`getIndexUniqueStore()`
    `protected Collection<Store.Handle<T,PK,S>>` | DeputyStore.`getNoPkStore()`
    `protected abstract Collection<Store.Handle<T,PK,S>>` | AbstractStore.`getNoPkStore()` Store for the mode without primary key or pkStore values collection.
    `protected Map<PK,Store.Handle<T,PK,S>>` | DeputyStore.`getPkStore()`
    `protected abstract Map<PK,Store.Handle<T,PK,S>>` | AbstractStore.`getPkStore()`

    Methods in com.hammurapi.store with parameters of type Store.Handle
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | AbstractIndex.`applyUpdate(Store.Handle<ST,PK,S> changed, boolean isNew)` This method is invoked within write lock, no need to acquire own lock.
    `Runnable` | Store.UpdateTask.`execute(S store, Store.Handle<T,PK,S> handle)` Executes update.
    `void` | AbstractIndex.`update(Store.Handle<ST,PK,S> changed, boolean isNew)` Updates index
    `protected void` | AbstractStore.`updateIndices(Store.Handle<T,PK,S> handle, boolean isNew)` This method is invoked by handle implementations.

    Constructors in com.hammurapi.store with parameters of type Store.Handle
    Constructor and Description
    `AbstractIndex.UpdateEntry(Store.Handle<ST,PK,S> handle, boolean isNew)`
    `AbstractStore.ExtractorTask(Store.Handle<T,PK,S> handle, Predicate<T,S> selector, Extractor<T,V,S> extractor)`
    `AbstractStore.QueryCallable(Store.Handle<T,PK,S> handle, Predicate<T,S> selector, Extractor<T,V,S> extractor, Store.QueryTask<V,PK,S> query, S storeDeputy)`
    `AbstractStore.QueryMultipleCallable(Store.Handle<T,PK,S> handle, Predicate<T,S> selector, Extractor<T,Iterable<V>,S> extractor, Predicate<V,S> valueSelector, Store.QueryTask<V,PK,S> query, S storeDeputy)`
    `AbstractStore.RemoveTask(Store.Handle<T,PK,S> handle, Predicate<T,S> selector)`
    `AbstractStore.SelectorTask(Store.Handle<T,PK,S> handle, Predicate<T,S> selector)`
    `AbstractStore.UpdateCallable(Store.Handle<T,PK,S> handle, Predicate<T,S> selector, Store.UpdateTask<T,PK,S> updater, S storeDeputy)`

  - ### Uses of Store.Handle in com.hammurapi.store.local

    Classes in com.hammurapi.store.local that implement Store.Handle
    Modifier and Type | Class and Description
    --- | ---
    `class` | `LocalHandle<T,PK,S extends Store<T,PK,S>>`

    Methods in com.hammurapi.store.local that return Store.Handle
    Modifier and Type | Method and Description
    --- | ---
    `protected Store.Handle<T,PK,S>` | LocalStoreBase.`createHandle(T obj, PK primaryKey, Map<S,Map<Extractor<T,? super PK,S>,? super PK>> cache, Predicate<T,S>[] validators)`

    Methods in com.hammurapi.store.local that return types with arguments of type Store.Handle
    Modifier and Type | Method and Description
    --- | ---
    `protected Collection<Store.Handle<T,PK,S>>` | LocalStoreBase.`createIndexCollection(boolean unique, boolean ordered, Comparator<T> comparator)`
    `protected Collection<Store.Handle<T,PK,S>>` | LocalStoreBase.`getNoPkStore()`
    `Collection<Store.Handle<T,PK,S>>` | LocalStoreBase.Config.`getNoPkStore()`
    `protected Map<PK,Store.Handle<T,PK,S>>` | LocalStoreBase.`getPkStore()`
    `Map<PK,Store.Handle<T,PK,S>>` | LocalStoreBase.Config.`getPkStore()`

    Methods in com.hammurapi.store.local with parameters of type Store.Handle
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | LocalStoreBase.`updateIndices(Store.Handle<T,PK,S> handle, boolean isNew)` To make it visible to LocalHandle.

    Method parameters in com.hammurapi.store.local with type arguments of type Store.Handle
    Modifier and Type | Method and Description
    --- | ---
    `void` | LocalStoreBase.Config.`setNoPkStore(Collection<Store.Handle<T,PK,S>> noPkStore)`
    `void` | LocalStoreBase.Config.`setPkStore(Map<PK,Store.Handle<T,PK,S>> pkStore)`