Class Cache<Data extends Cacheable>
java.lang.Object
br.ufsc.labsec.utils.cache.Cache<Data>
- Type Parameters:
Data- O tipo de objeto a ser armazenado
- All Implemented Interfaces:
Iterable<CacheEntry<Data>>
- Direct Known Subclasses:
DetachedCache, 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() é chamado.
-
Nested Class Summary
Nested Classes -
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleancheckExpired(String cacheKey) Verifica se o objeto armazenado no cache deve ser removido (mais de 7 dias sem acesso)protected abstract DatadecodeEntry(byte[]... encodedParts) Decodifica um objeto em cache a partir de seus bytes em "chunks", habilitando armazenamento de um objeto em diversos arquivos, como assinaturas detached, por exemplo.Obtém um objeto da cache a partir de sua chavegetLastAccess(String key) protected StringgroupFilesInDiskBy(File fileInDisk) Função auxiliar para atribuir uma chave comum para arquivos, para serem juntados em umCacheEntrysó, podendo ser qualquer estrutura de string aceita peloCollectors.groupingBy(Function)booleanVerifica se um objeto está na cachebooleanVerifica se um objeto está na cache@NotNull Iterator<CacheEntry<Data>> iterator()voidvoidArmazena um objeto na cacheMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface Iterable
forEach, spliterator
-
Field Details
-
runtimeCache
-
path
-
regexFilter
Regex para selecionar arquivos no diretório, similar ao Dos/Unix (FilenameUtils.wildcardMatch(String, String))
-
-
Constructor Details
-
Cache
-
Cache
-
-
Method Details
-
decodeEntry
Decodifica um objeto em cache a partir de seus bytes em "chunks", habilitando armazenamento de um objeto em diversos arquivos, como assinaturas detached, por exemplo.- Parameters:
encodedParts- Os bytes do objeto- Returns:
- O objeto decodificado
- Throws:
EncodingException- Exceção em caso de erro na decodificação
-
store
-
get
-
remove
-
getLastAccess
-
getSource
-
has
Verifica se um objeto está na cache- Parameters:
key- A chave de um objeto- Returns:
- Indica se o objeto está na cache
-
has
Verifica se um objeto está na cache- Parameters:
obj- O objeto a ser verificado- Returns:
- Indica se o objeto está na cache
-
groupFilesInDiskBy
Função auxiliar para atribuir uma chave comum para arquivos, para serem juntados em umCacheEntrysó, podendo ser qualquer estrutura de string aceita peloCollectors.groupingBy(Function)- Parameters:
fileInDisk- O arquivo a ser agrupado- Returns:
- String com a chave comum
-
checkExpired
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
-