Class Cache<Data extends Cacheable>

java.lang.Object
br.ufsc.labsec.commons.utils.cache.Cache<Data>
Type Parameters:
Data - O tipo de objeto a ser armazenado
All Implemented Interfaces:
Iterable<CacheEntry<Data>>
Direct Known Subclasses:
AIACertsCache, AIAIntermediaryCache, PKCS12CertificateCollectionImpl, RevocationCache, SignaturePolicyCache

public abstract class Cache<Data extends Cacheable> extends Object implements Iterable<CacheEntry<Data>>
Esta classe é responsável por administrar objetos em cache, armazenando-os em disco e em memória, e permitindo a sua recuperação através da implementação do metodo decodeEntry(byte[]).

A classe implementa a interface Iterable para permitir a iteração por todos os itens da cache. Para evitar leituras desnecessárias em disco, é iterado sobre CacheEntry ao invés de Data, realizando a leitura apenas quando o metodo CacheEntry.read(CacheSource.CacheDecoder) ()} é chamado.

  • Field Details

  • Constructor Details

    • Cache

      public Cache(CacheSource<Data> source)
      Construtor
      Parameters:
      source - A fonte de onde os objetos em cache serão carregados
  • Method Details

    • decodeEntry

      protected abstract Data decodeEntry(byte[] encoded) throws EncodingException
      Decodifica um objeto em cache a partir de seus bytes
      Parameters:
      encoded - Os bytes do objeto
      Returns:
      O objeto decodificado
      Throws:
      EncodingException - Exceção em caso de erro na decodificação
    • store

      public void store(Data obj)
      Armazena um objeto na cache
      Parameters:
      obj - O objeto a ser armazenado
    • get

      public Optional<Data> get(String key)
      Obtém um objeto da cache a partir de sua chave
      Parameters:
      key - A chave do objeto
      Returns:
      Um Optional do objeto em cache
    • remove

      public void remove(String key)
    • getLastAccess

      public Date getLastAccess(String key)
    • getSource

      public Cache.Source getSource(String key)
    • has

      public boolean has(String key)
      Verifica se um objeto está na cache
      Parameters:
      key - A chave de um objeto
      Returns:
      Indica se o objeto está na cache
    • has

      public boolean has(Cacheable obj)
      Verifica se um objeto está na cache
      Parameters:
      obj - O objeto a ser verificado
      Returns:
      Indica se o objeto está na cache
    • checkExpired

      public boolean checkExpired(String cacheKey)
      Verifica se o objeto armazenado no cache deve ser removido (mais de 7 dias sem acesso)
      Parameters:
      cacheKey - A chave do objeto
      Returns:
      Indica se o objeto deve ser removido
    • iterator

      @NotNull public @NotNull Iterator<CacheEntry<Data>> iterator()
      Specified by:
      iterator in interface Iterable<Data extends Cacheable>