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 class
Cache.Source
-
Field Summary
Fields Modifier and Type Field Description protected Path
path
protected String
regexFilter
Regex 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 boolean
checkExpired(String cacheKey)
Verifica se o objeto armazenado no cache deve ser removido (mais de 7 dias sem acesso)protected abstract Data
decodeEntry(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 chaveDate
getLastAccess(String key)
Cache.Source
getSource(String key)
protected String
groupFilesInDiskBy(File fileInDisk)
Função auxiliar para atribuir uma chave comum para arquivos, para serem juntados em umCacheEntry
só, podendo ser qualquer estrutura de string aceita peloCollectors.groupingBy(java.util.function.Function<? super T, ? extends K>)
boolean
has(Cacheable obj)
Verifica se um objeto está na cacheboolean
has(String key)
Verifica se um objeto está na cache@NotNull Iterator<CacheEntry<Data>>
iterator()
void
remove(String key)
void
store(Data obj)
Armazena um objeto na cacheMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods 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
Optional
do 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 umCacheEntry
só, 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
-