com.fasterxml.jackson.databind.util.LookupCache Maven / Gradle / Ivy
Show all versions of jackson-databind Show documentation
package com.fasterxml.jackson.databind.util;
import java.util.function.BiConsumer;
/**
* An interface describing the required API for the Jackson-databind Type cache.
*
* Note that while interface itself does not specify synchronization requirements for
* implementations, specific use cases do. Typically implementations are
* expected to be thread-safe, that is, to handle synchronization.
*
* @since 2.12 (for forwards-compatiblity with 3.0)
*/
public interface LookupCache
{
/**
* Method to apply operation on cache contents without exposing them.
*
* Default implementation throws {@link UnsupportedOperationException}.
* Implementations are required to override this method.
*
* @param consumer Operation to apply on cache contents.
*
* @throws UnsupportedOperationException if implementation does not override this method.
*
* @since 2.16
*/
default void contents(BiConsumer consumer) {
throw new UnsupportedOperationException();
}
/**
* Method needed for creating clones but without contents.
*
* Default implementation throws {@link UnsupportedOperationException}.
* Implementations are required to override this method.
*
* @throws UnsupportedOperationException if implementation does not override this method.
*
* @since 2.16
*/
default LookupCache emptyCopy() {
throw new UnsupportedOperationException("LookupCache implementation "
+getClass().getName()+" does not implement `emptyCopy()`");
}
/**
* @return Number of entries currently in cache: may be approximate, only
* to be used for diagnostics, metrics reporting
*/
int size();
/**
* NOTE: key is of type Object only to retain binary backwards-compatibility
*
* @return value associated with key (can return null)
*/
V get(Object key);
V put(K key, V value);
V putIfAbsent(K key, V value);
/**
* Method for removing all contents this cache has.
*/
void clear();
}