Interface DataContainer<K,V>

All Superinterfaces:
Iterable<org.infinispan.container.entries.InternalCacheEntry<K,V>>

public interface DataContainer<K,V> extends Iterable<org.infinispan.container.entries.InternalCacheEntry<K,V>>
The main internal data structure which stores entries. Care should be taken when using this directly as entries could be stored in a different way than they were given to a Cache. If you wish to convert entries to the stored format, you should use the provided DataConversion such as
 cache.getAdvancedCache().getKeyDataConversion().toStorage(key);
 
when dealing with keys or the following when dealing with values
 cache.getAdvancedCache().getValueDataConversion().toStorage(value);
 
You can also convert from storage to the user provided type by using the DataConversion.fromStorage(Object) method on any value returned from the DataContainer
Since:
4.0
Author:
Manik Surtani (manik@jboss.org), Galder ZamarreƱo, Vladimir Blagojevic
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Interface
    Description
    static interface 
     
  • Method Summary

    Modifier and Type
    Method
    Description
    default long
    Returns the capacity of the underlying container.
    void
    Removes all entries in the container
    org.infinispan.container.entries.InternalCacheEntry<K,V>
    Computes the new value for the key.
    boolean
    Tests whether an entry exists in the container
    void
    evict(K key)
    Atomically, it removes the key from DataContainer and passivates it to persistence.
    default long
    Returns how large the eviction size is currently.
    org.infinispan.container.entries.InternalCacheEntry<K,V>
    Deprecated.
    since 10.1 - Please use peek(Object) instead.
    Iterator<org.infinispan.container.entries.InternalCacheEntry<K,V>>
    Iterator<org.infinispan.container.entries.InternalCacheEntry<K,V>>
    Same as iterator() except that is also returns expired entries.
    org.infinispan.container.entries.InternalCacheEntry<K,V>
    Retrieves a cache entry in the same way as get(Object)} except that it does not update or reorder any of the internal constructs.
    void
    put(K k, V v, Metadata metadata)
    Puts an entry in the cache along with metadata adding information such lifespan of entry, max idle time, version information...etc.
    org.infinispan.container.entries.InternalCacheEntry<K,V>
    Removes an entry from the cache
    default void
    resize(long newSize)
    Resizes the capacity of the underlying container.
    default int
     
    int
     
    default Spliterator<org.infinispan.container.entries.InternalCacheEntry<K,V>>
    default Spliterator<org.infinispan.container.entries.InternalCacheEntry<K,V>>
    Same as spliterator() except that is also returns expired entries.
  • Method Details

    • get

      @Deprecated org.infinispan.container.entries.InternalCacheEntry<K,V> get(Object k)
      Deprecated.
      since 10.1 - Please use peek(Object) instead.
      Retrieves a cached entry
      Parameters:
      k - key under which entry is stored
      Returns:
      entry, if it exists and has not expired, or null if not
    • peek

      org.infinispan.container.entries.InternalCacheEntry<K,V> peek(Object k)
      Retrieves a cache entry in the same way as get(Object)} except that it does not update or reorder any of the internal constructs. I.e., expiration does not happen, and in the case of the LRU container, the entry is not moved to the end of the chain.

      This method should be used instead of get(Object)} when called while iterating through the data container using methods like iterator() to avoid changing the underlying collection's order.

      Parameters:
      k - key under which entry is stored
      Returns:
      entry, if it exists, or null if not
    • put

      void put(K k, V v, Metadata metadata)
      Puts an entry in the cache along with metadata adding information such lifespan of entry, max idle time, version information...etc.

      The key must be activate by invoking ActivationManager.activateAsync(Object, int) boolean)}.

      Parameters:
      k - key under which to store entry
      v - value to store
      metadata - metadata of the entry
    • containsKey

      boolean containsKey(Object k)
      Tests whether an entry exists in the container
      Parameters:
      k - key to test
      Returns:
      true if entry exists and has not expired; false otherwise
    • remove

      org.infinispan.container.entries.InternalCacheEntry<K,V> remove(Object k)
      Removes an entry from the cache

      The key must be activate by invoking ActivationManager.activateAsync(Object, int)

      Parameters:
      k - key to remove
      Returns:
      entry removed, or null if it didn't exist or had expired
    • size

      default int size()
      Returns:
      count of the number of entries in the container excluding expired entries
    • sizeIncludingExpired

      int sizeIncludingExpired()
      Returns:
      count of the number of entries in the container including expired entries
    • clear

      void clear()
      Removes all entries in the container
    • evict

      void evict(K key)
      Atomically, it removes the key from DataContainer and passivates it to persistence.

      The passivation must be done by invoking the method PassivationManager.passivateAsync(InternalCacheEntry).

      Parameters:
      key - The key to evict.
    • compute

      org.infinispan.container.entries.InternalCacheEntry<K,V> compute(K key, DataContainer.ComputeAction<K,V> action)
      Computes the new value for the key.

      See DataContainer.ComputeAction.compute(Object, org.infinispan.container.entries.InternalCacheEntry, InternalEntryFactory).

      The key must be activated by invoking ActivationManager.activateAsync(Object, int).

      Note the entry provided to DataContainer.ComputeAction may be expired as these entries are not filtered as many other methods do.

      Parameters:
      key - The key.
      action - The action that will compute the new value.
      Returns:
      The InternalCacheEntry associated to the key.
    • iterator

      Iterator<org.infinispan.container.entries.InternalCacheEntry<K,V>> iterator()

      This iterator only returns entries that are not expired, however it will not remove them while doing so.

      Returns:
      iterator that doesn't produce expired entries
    • spliterator

      default Spliterator<org.infinispan.container.entries.InternalCacheEntry<K,V>> spliterator()

      This spliterator only returns entries that are not expired, however it will not remove them while doing so.

      Returns:
      spliterator that doesn't produce expired entries
    • iteratorIncludingExpired

      Iterator<org.infinispan.container.entries.InternalCacheEntry<K,V>> iteratorIncludingExpired()
      Same as iterator() except that is also returns expired entries.
      Returns:
      iterator that returns all entries including expired ones
    • spliteratorIncludingExpired

      default Spliterator<org.infinispan.container.entries.InternalCacheEntry<K,V>> spliteratorIncludingExpired()
      Same as spliterator() except that is also returns expired entries.
      Returns:
      spliterator that returns all entries including expired ones
    • resize

      default void resize(long newSize)
      Resizes the capacity of the underlying container. This is only supported if the container is bounded. An UnsupportedOperationException is thrown otherwise.
      Parameters:
      newSize - the new size
    • capacity

      default long capacity()
      Returns the capacity of the underlying container. This is only supported if the container is bounded. An UnsupportedOperationException is thrown otherwise.
      Returns:
    • evictionSize

      default long evictionSize()
      Returns how large the eviction size is currently. This is only supported if the container is bounded. An UnsupportedOperationException is thrown otherwise. This value will always be lower than the value returned from capacity()
      Returns:
      how large the counted eviction is