All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ru.progrm_jarvis.javacommons.object.valuestorage.AbstractValueStorage Maven / Gradle / Ivy

package ru.progrm_jarvis.javacommons.object.valuestorage;

import lombok.*;
import lombok.experimental.FieldDefaults;

import java.util.Map;

/**
 * Abstract base for {@link ValueStorage}.
 *
 * @param  type of keys used for identifying values
 * @param  type of stored values
 */
@ToString
@EqualsAndHashCode
@RequiredArgsConstructor
@FieldDefaults(level = AccessLevel.PROTECTED, makeFinal = true)
public abstract class AbstractValueStorage implements ValueStorage {

    /**
     * Values stored by their unique keys
     */
    @NonNull Map values;

    /**
     * Generates a new key for storing the unique value.
     *
     * @return newly generated unique key
     */
    protected abstract K generateNewKey();

    @Override
    public K storeValue(final @NonNull V value) {
        val key = generateNewKey();
        values.put(key, value);

        return key;
    }

    @Override
    public V retrieveValue(final K key) {
        return values.get(key);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy