Merge branch 'RED-9375' into 'master'

RED-9375: use storageId for cache names everywhere, such that name may be updated by a user

Closes RED-9375

See merge request redactmanager/redaction-service!448
This commit is contained in:
Kilian Schüttler 2024-06-27 09:42:24 +02:00
commit 67657e91b5
2 changed files with 12 additions and 3 deletions

View File

@ -40,7 +40,8 @@ public class ComponentMappingFileSystemCache {
public File getComponentMappingFile(ComponentMappingMetadata metadata) {
Path mappingFile = getMappingFileFromMetadata(metadata);
Path mappingFileMetaDataFile = mappingFile.resolveSibling(metadata.getName() + METADATA_SUFFIX);
Path mappingFileMetaDataFile = getMappingMetadataFileFromMetadata(metadata);
synchronized (ComponentMappingFileSystemCache.class) {
if (fileExistsAndUpToDate(metadata, mappingFile, mappingFileMetaDataFile)) {
@ -52,7 +53,7 @@ public class ComponentMappingFileSystemCache {
InputStreamResource inputStreamResource = storageService.getObject(TenantContext.getTenantId(), metadata.getStorageId());
Files.write(mappingFile, inputStreamResource.getContentAsByteArray(), StandardOpenOption.WRITE, StandardOpenOption.TRUNCATE_EXISTING, StandardOpenOption.CREATE);
mapper.writeValue(mappingFileMetaDataFile.toFile(), metadata);
return mappingFile.toFile();
@ -87,6 +88,13 @@ public class ComponentMappingFileSystemCache {
}
private Path getMappingMetadataFileFromMetadata(ComponentMappingMetadata metadata) {
Path tenantStem = mappingFileDir.resolve(TenantContext.getTenantId());
return tenantStem.resolve(metadata.getStorageId() + METADATA_SUFFIX);
}
private boolean fileExistsAndUpToDate(ComponentMappingMetadata metadata, Path mappingFile, Path mappingFileMetaDataFile) {
if (mappingFile.toFile().exists() && mappingFile.toFile().isFile() && mappingFileMetaDataFile.toFile().exists() && mappingFileMetaDataFile.toFile().isFile()) {

View File

@ -4,6 +4,7 @@ import java.io.File;
import java.io.FileReader;
import java.io.Reader;
import java.nio.charset.Charset;
import java.time.Duration;
import java.util.List;
import org.springframework.stereotype.Service;
@ -36,7 +37,7 @@ public class ComponentMappingMemoryCache {
public ComponentMappingMemoryCache(ComponentMappingFileSystemCache componentMappingFileSystemCache) {
this.fileSystemCache = componentMappingFileSystemCache;
cache = CacheBuilder.newBuilder().maximumWeight(MAX_NUMBER_OF_LINES).weigher(COMPONENT_MAPPING_WEIGHER).build();
cache = CacheBuilder.newBuilder().maximumWeight(MAX_NUMBER_OF_LINES).weigher(COMPONENT_MAPPING_WEIGHER).expireAfterAccess(Duration.ofDays(1)).build();
}