summaryrefslogtreecommitdiffstats
path: root/cps-service/src/main/java
diff options
context:
space:
mode:
authorRenu Kumari <renu.kumari@bell.ca>2022-02-10 09:31:17 -0500
committerRenu Kumari <renu.kumari@bell.ca>2022-02-15 12:56:08 -0500
commit21fa4f207e7d36befc49a3f4926dc4f52678a45e (patch)
tree98d2edc01d29622c6c34256529c866c17d5a4b7e /cps-service/src/main/java
parentf7cb11a5d53d4964c236a6ecb2e2f4264f2437fd (diff)
Fix to keep yang resource cache in sync
- Removed schemaset from cache when schemaset is deleted - Added separate test cases for yang resource cache Issue-ID: CPS-864 Signed-off-by: Renu Kumari <renu.kumari@bell.ca> Change-Id: Ie1f9978406de1c92b513549216873cba4a98cdd7
Diffstat (limited to 'cps-service/src/main/java')
-rw-r--r--cps-service/src/main/java/org/onap/cps/api/impl/CpsModuleServiceImpl.java23
-rw-r--r--cps-service/src/main/java/org/onap/cps/api/impl/YangTextSchemaSourceSetCache.java22
2 files changed, 25 insertions, 20 deletions
diff --git a/cps-service/src/main/java/org/onap/cps/api/impl/CpsModuleServiceImpl.java b/cps-service/src/main/java/org/onap/cps/api/impl/CpsModuleServiceImpl.java
index e967817867..ffcc5a22f6 100644
--- a/cps-service/src/main/java/org/onap/cps/api/impl/CpsModuleServiceImpl.java
+++ b/cps-service/src/main/java/org/onap/cps/api/impl/CpsModuleServiceImpl.java
@@ -25,6 +25,7 @@ package org.onap.cps.api.impl;
import java.util.Collection;
import java.util.List;
import java.util.Map;
+import lombok.AllArgsConstructor;
import org.onap.cps.api.CpsAdminService;
import org.onap.cps.api.CpsModuleService;
import org.onap.cps.spi.CascadeDeleteAllowed;
@@ -38,25 +39,12 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service("CpsModuleServiceImpl")
+@AllArgsConstructor
public class CpsModuleServiceImpl implements CpsModuleService {
- private CpsModulePersistenceService cpsModulePersistenceService;
- private YangTextSchemaSourceSetCache yangTextSchemaSourceSetCache;
- private CpsAdminService cpsAdminService;
-
- /**
- * Create an instance of CpsModuleServiceImpl.
- *
- * @param cpsModulePersistenceService cpsModulePersistenceService
- * @param yangTextSchemaSourceSetCache yangTextSchemaSourceSetCache
- * @param cpsAdminService cpsAdminService
- */
- public CpsModuleServiceImpl(final CpsModulePersistenceService cpsModulePersistenceService,
- final YangTextSchemaSourceSetCache yangTextSchemaSourceSetCache, final CpsAdminService cpsAdminService) {
- this.cpsModulePersistenceService = cpsModulePersistenceService;
- this.yangTextSchemaSourceSetCache = yangTextSchemaSourceSetCache;
- this.cpsAdminService = cpsAdminService;
- }
+ private final CpsModulePersistenceService cpsModulePersistenceService;
+ private final YangTextSchemaSourceSetCache yangTextSchemaSourceSetCache;
+ private final CpsAdminService cpsAdminService;
@Override
public void createSchemaSet(final String dataspaceName, final String schemaSetName,
@@ -96,6 +84,7 @@ public class CpsModuleServiceImpl implements CpsModuleService {
cpsAdminService.deleteAnchor(dataspaceName, anchor.getName());
}
cpsModulePersistenceService.deleteSchemaSet(dataspaceName, schemaSetName);
+ yangTextSchemaSourceSetCache.removeFromCache(dataspaceName, schemaSetName);
cpsModulePersistenceService.deleteUnusedYangResourceModules();
}
diff --git a/cps-service/src/main/java/org/onap/cps/api/impl/YangTextSchemaSourceSetCache.java b/cps-service/src/main/java/org/onap/cps/api/impl/YangTextSchemaSourceSetCache.java
index 859dab9a9f..03b52a3088 100644
--- a/cps-service/src/main/java/org/onap/cps/api/impl/YangTextSchemaSourceSetCache.java
+++ b/cps-service/src/main/java/org/onap/cps/api/impl/YangTextSchemaSourceSetCache.java
@@ -1,12 +1,14 @@
/*
- * ============LICENSE_START=======================================================
+ * ============LICENSE_START=======================================================
* Copyright (C) 2021 Pantheon.tech
+ * Modifications Copyright (C) 2022 Bell Canada
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -26,6 +28,7 @@ import org.onap.cps.yang.YangTextSchemaSourceSet;
import org.onap.cps.yang.YangTextSchemaSourceSetBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheConfig;
+import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
@@ -57,8 +60,8 @@ public class YangTextSchemaSourceSetCache {
/**
* Updates cache YangTextSchemaSourceSet.
*
- * @param dataspaceName dataspace name
- * @param schemaSetName schema set name
+ * @param dataspaceName dataspace name
+ * @param schemaSetName schema set name
* @param yangTextSchemaSourceSet yangTextSchemaSourceSet
* @return YangTextSchemaSourceSet
*/
@@ -68,4 +71,17 @@ public class YangTextSchemaSourceSetCache {
final YangTextSchemaSourceSet yangTextSchemaSourceSet) {
return yangTextSchemaSourceSet;
}
+
+
+ /**
+ * Remove the cached value for the given dataspace and schema-set.
+ *
+ * @param dataspaceName dataspace name
+ * @param schemaSetName schema set name
+ */
+ @CacheEvict(key = "#p0.concat('-').concat(#p1)")
+ public void removeFromCache(final String dataspaceName, final String schemaSetName) {
+ // Spring provides implementation for removing object from cache
+ }
+
}