Package br.ufsc.labsec.utils.cache
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 Modifier and Type Class Description static classCache.Source -
Field Summary
Fields Modifier and Type Field Description protected Pathpathprotected StringregexFilterRegex para selecionar arquivos no diretório, similar ao Dos/Unix (FilenameUtils.wildcardMatch(java.lang.String, java.lang.String))protected Map<String,CacheEntry<Data>>runtimeCache -
Constructor Summary
-
Method Summary
Modifier and Type Method Description booleancheckExpired(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.Optional<Data>get(String key)Obtém um objeto da cache a partir de sua chaveDategetLastAccess(String key)Cache.SourcegetSource(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(java.util.function.Function<? super T, ? extends K>)booleanhas(Cacheable obj)Verifica se um objeto está na cachebooleanhas(String key)Verifica se um objeto está na cache@NotNull Iterator<CacheEntry<Data>>iterator()voidremove(String key)voidstore(Data obj)Armazena um objeto na cacheMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface java.lang.Iterable
forEach, spliterator
-
Field Details
-
runtimeCache
-
path
-
regexFilter
Regex para selecionar arquivos no diretório, similar ao Dos/Unix (FilenameUtils.wildcardMatch(java.lang.String, java.lang.String))
-
-
Constructor Details
-
Cache
Construtor- Parameters:
path- O caminho para a 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
Armazena um objeto na cache- Parameters:
obj- O objeto a ser armazenado
-
get
Obtém um objeto da cache a partir de sua chave- Parameters:
key- A chave do objeto- Returns:
- Um
Optionaldo objeto em cache
-
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(java.util.function.Function<? super T, ? extends K>)- 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
-