aboutsummaryrefslogtreecommitdiffstats
path: root/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/repository/Policies.java
diff options
context:
space:
mode:
Diffstat (limited to 'a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/repository/Policies.java')
-rw-r--r--a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/repository/Policies.java19
1 files changed, 14 insertions, 5 deletions
diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/repository/Policies.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/repository/Policies.java
index 09f59ca4..6161fbd9 100644
--- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/repository/Policies.java
+++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/repository/Policies.java
@@ -97,6 +97,11 @@ public class Policies {
}
public synchronized void put(Policy policy) {
+ Policy previousDef = this.get(policy.getId());
+ if (previousDef != null) {
+ removeFromMaps(previousDef);
+ }
+
policiesId.put(policy.getId(), policy);
policiesRic.put(policy.getRic().id(), policy.getId(), policy);
policiesService.put(policy.getOwnerServiceId(), policy.getId(), policy);
@@ -150,10 +155,7 @@ public class Policies {
if (!policy.isTransient()) {
dataStore.deleteObject(getPath(policy)).subscribe();
}
- policiesId.remove(policy.getId());
- policiesRic.remove(policy.getRic().id(), policy.getId());
- policiesService.remove(policy.getOwnerServiceId(), policy.getId());
- policiesType.remove(policy.getType().getId(), policy.getId());
+ removeFromMaps(policy);
}
public synchronized void removePoliciesForRic(String ricId) {
@@ -189,7 +191,7 @@ public class Policies {
dataStore.deleteAllObjects().onErrorResume(t -> Mono.empty()).subscribe();
}
- public void store(Policy policy) {
+ private void store(Policy policy) {
byte[] bytes = gson.toJson(toStorageObject(policy)).getBytes();
this.dataStore.writeObject(this.getPath(policy), bytes) //
@@ -197,6 +199,13 @@ public class Policies {
.subscribe();
}
+ private void removeFromMaps(Policy policy) {
+ policiesId.remove(policy.getId());
+ policiesRic.remove(policy.getRic().id(), policy.getId());
+ policiesService.remove(policy.getOwnerServiceId(), policy.getId());
+ policiesType.remove(policy.getType().getId(), policy.getId());
+ }
+
private boolean isMatch(String filterValue, String actualValue) {
return filterValue == null || actualValue.equals(filterValue);
}