diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/cache/PersistenceServiceExternalApiCacheConfiguration.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/cache/PersistenceServiceExternalApiCacheConfiguration.java index 07685b9e2..c17f2fd60 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/cache/PersistenceServiceExternalApiCacheConfiguration.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/cache/PersistenceServiceExternalApiCacheConfiguration.java @@ -21,6 +21,7 @@ public class PersistenceServiceExternalApiCacheConfiguration { public static final String RATE_LIMITER_CACHE = "buckets"; public static final String ACL_CACHE = "acl"; public static final String OTT_CACHE = "ott"; + public static final String VALID_FILE_FORMATS_CACHE = "validFileFormats"; @Bean @@ -49,7 +50,8 @@ public class PersistenceServiceExternalApiCacheConfiguration { RedisCacheConfiguration.defaultCacheConfig() .entryTtl(Duration.ofMinutes(1)) .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new JdkSerializationRedisSerializer()))) - .withCacheConfiguration(OTT_CACHE, RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofSeconds(10))); + .withCacheConfiguration(OTT_CACHE, RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofSeconds(10))) + .withCacheConfiguration(VALID_FILE_FORMATS_CACHE, RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofMinutes(60)).disableCachingNullValues()); } } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileFormatValidationService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileFormatValidationService.java index 8009015ad..3dbaed059 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileFormatValidationService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileFormatValidationService.java @@ -1,13 +1,17 @@ package com.iqser.red.service.persistence.management.v1.processor.service; -import static com.iqser.red.service.persistence.management.v1.processor.service.LicenseUtilityService.*; +import static com.iqser.red.service.persistence.management.v1.processor.cache.PersistenceServiceExternalApiCacheConfiguration.VALID_FILE_FORMATS_CACHE; +import static com.iqser.red.service.persistence.management.v1.processor.service.LicenseUtilityService.ALL_FILE_FORMATS; +import static com.iqser.red.service.persistence.management.v1.processor.service.LicenseUtilityService.FILE_FORMATS_EXCLUDING_MS_OFFICE; +import static com.iqser.red.service.persistence.management.v1.processor.service.LicenseUtilityService.LICENSE_OBJECT_ID; +import static com.iqser.red.service.persistence.management.v1.processor.service.LicenseUtilityService.SUPPORT_MS_OFFICE_FORMATS_FEATURE; -import java.util.HashMap; import java.util.List; -import java.util.Map; import java.util.Objects; import java.util.Optional; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import com.iqser.red.service.persistence.service.v1.api.shared.model.license.Feature; @@ -28,8 +32,6 @@ public class FileFormatValidationService { final LicenseUtilityService licenseUtilityService; - static Map> validFileFormatsCache = new HashMap<>(); - public List getAllFileFormats() { @@ -37,35 +39,28 @@ public class FileFormatValidationService { } + @Cacheable(value = VALID_FILE_FORMATS_CACHE, key = "#tenantId") public List getValidFileFormatsForTenant(String tenantId) { boolean supportMSOfficeFormats = false; - if (validFileFormatsCache.containsKey(tenantId)) { - return validFileFormatsCache.get(tenantId); + Optional optionalLicense = getActiveLicense(tenantId); + if (optionalLicense.isPresent()) { + Optional optionalSupportMSOfficeFormatsFeature = optionalLicense.get().getFeatures() + .stream() + .filter(f -> f.getName().equals(SUPPORT_MS_OFFICE_FORMATS_FEATURE)) + .findFirst(); - } else { - Optional optionalLicense = getActiveLicense(tenantId); - if (optionalLicense.isPresent()) { - Optional optionalSupportMSOfficeFormatsFeature = optionalLicense.get().getFeatures() - .stream() - .filter(f -> f.getName().equals(SUPPORT_MS_OFFICE_FORMATS_FEATURE)) - .findFirst(); - - supportMSOfficeFormats = optionalSupportMSOfficeFormatsFeature.isPresent() ? (Boolean) optionalSupportMSOfficeFormatsFeature.get().getValue() : false; - } - List validFileFormats = supportMSOfficeFormats ? ALL_FILE_FORMATS : FILE_FORMATS_EXCLUDING_MS_OFFICE; - - validFileFormatsCache.put(tenantId, validFileFormats); - return validFileFormats; + supportMSOfficeFormats = optionalSupportMSOfficeFormatsFeature.isPresent() ? (Boolean) optionalSupportMSOfficeFormatsFeature.get().getValue() : false; } + + return supportMSOfficeFormats ? ALL_FILE_FORMATS : FILE_FORMATS_EXCLUDING_MS_OFFICE; + } - + @CacheEvict(value = VALID_FILE_FORMATS_CACHE, key = "#tenantId") public void evictValidFileFormatsForTenant(String tenantId) { - - validFileFormatsCache.remove(tenantId); - + // empty }