| | |
| | | import org.opends.server.types.DirectoryException; |
| | | |
| | | /** |
| | | * TODO JNR. |
| | | * @param <K> TODO JNR |
| | | * @param <V> TODO JNR |
| | | * @param <T> TODO JNR |
| | | * @param <M> TODO JNR |
| | | * Interface for a key-value store, also known as an index. |
| | | * |
| | | * @param <K> |
| | | * type of key objects |
| | | * @param <V> |
| | | * type of value objects |
| | | * @param <T> |
| | | * type of transaction objects. Underlying databases that do not |
| | | * support transactions should use a {@link Void} type parameter and |
| | | * pass in a null value. |
| | | * @param <M> |
| | | * type of lock mode objects. Underlying databases might not need this |
| | | * parameter. They should use a {@link Void} type parameter and pass in |
| | | * a null value. |
| | | */ |
| | | public interface KeyValueStore<K, V, T, M> extends Closeable |
| | | { |
| | | |
| | | /** |
| | | * TODO JNR. |
| | | * Opens a key-value store. |
| | | * |
| | | * @throws DirectoryException |
| | | * TODO JNR |
| | | * If an error occurs while opening the key-value store. |
| | | */ |
| | | void open() throws DirectoryException; |
| | | |
| | | /** |
| | | * TODO JNR. |
| | | * Inserts a new record for the provided key-value mapping in the key-value |
| | | * store. |
| | | * |
| | | * @param txn |
| | | * TODO JNR |
| | | * the current transaction |
| | | * @param key |
| | | * TODO JNR |
| | | * the key to use when inserting the provided value |
| | | * @param value |
| | | * TODO JNR |
| | | * @return TODO JNR |
| | | * the value to insert |
| | | * @return true if the record was inserted, false if a record with that key |
| | | * already exists. |
| | | * @throws DirectoryException |
| | | * TODO JNR |
| | | * If an error occurs while opening the key-value store. |
| | | */ |
| | | boolean insert(T txn, K key, V value) throws DirectoryException; |
| | | |
| | | /** |
| | | * TODO JNR. |
| | | * Puts the provided key-value mapping in the key-value store, overwriting any |
| | | * previous mapping for the key. |
| | | * |
| | | * @param txn |
| | | * TODO JNR |
| | | * the current transaction |
| | | * @param key |
| | | * TODO JNR |
| | | * the key to use when putting the provided value |
| | | * @param value |
| | | * TODO JNR |
| | | * @return TODO JNR |
| | | * the value to put |
| | | * @return true if the key-value mapping could be put in the key-value store, |
| | | * false otherwise |
| | | * @throws DirectoryException |
| | | * TODO JNR |
| | | * If an error occurs while opening the key-value store. |
| | | */ |
| | | boolean put(T txn, K key, V value) throws DirectoryException; |
| | | |
| | | /** |
| | | * TODO JNR. |
| | | * Returns the value associated to the provided key. |
| | | * |
| | | * @param txn |
| | | * TODO JNR |
| | | * the current transaction |
| | | * @param key |
| | | * TODO JNR |
| | | * the key for which to retrieve the value |
| | | * @param mode |
| | | * TODO JNR |
| | | * @return TODO JNR |
| | | * the mode to use when retrieving the value |
| | | * @return The value associated with the provided key, or null if there is no |
| | | * such key-value mapping |
| | | * @throws DirectoryException |
| | | * TODO JNR |
| | | * If an error occurs while opening the key-value store. |
| | | */ |
| | | V get(T txn, K key, M mode) throws DirectoryException; |
| | | |
| | | /** |
| | | * TODO JNR. |
| | | * Removes the mapping for the provided key in the key-value store. |
| | | * |
| | | * @param txn |
| | | * TODO JNR |
| | | * the current transaction |
| | | * @param key |
| | | * TODO JNR |
| | | * @return TODO JNR |
| | | * the key to remove from the key-value store |
| | | * @return true if the key could be removed, false otherwise |
| | | * @throws DirectoryException |
| | | * TODO JNR |
| | | * If an error occurs while opening the key-value store. |
| | | */ |
| | | boolean remove(T txn, K key) throws DirectoryException; |
| | | } |