aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/main/java/org/onap/policy/pap/main/comm/msgdata/UpdateReq.java
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/main/java/org/onap/policy/pap/main/comm/msgdata/UpdateReq.java')
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/comm/msgdata/UpdateReq.java51
1 files changed, 49 insertions, 2 deletions
diff --git a/main/src/main/java/org/onap/policy/pap/main/comm/msgdata/UpdateReq.java b/main/src/main/java/org/onap/policy/pap/main/comm/msgdata/UpdateReq.java
index 4b5b7f04..18ae5af6 100644
--- a/main/src/main/java/org/onap/policy/pap/main/comm/msgdata/UpdateReq.java
+++ b/main/src/main/java/org/onap/policy/pap/main/comm/msgdata/UpdateReq.java
@@ -24,7 +24,9 @@ package org.onap.policy.pap.main.comm.msgdata;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
+import java.util.LinkedList;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import lombok.Getter;
@@ -125,7 +127,36 @@ public class UpdateReq extends RequestImpl {
return true;
}
- reconfigure2(newMessage);
+ Map<ToscaConceptIdentifier, ToscaPolicy> newDeployMap = update.getPoliciesToBeDeployed().stream()
+ .collect(Collectors.toMap(ToscaPolicy::getIdentifier, policy -> policy));
+
+ // Merge full lists
+ final List<ToscaPolicy> fullPolicies = update.getPolicies();
+
+ // Merge undpeloy lists
+ Set<ToscaConceptIdentifier> policiesToBeUndeployedSet = new HashSet<>(getMessage().getPoliciesToBeUndeployed());
+ policiesToBeUndeployedSet.removeAll(newDeployMap.keySet());
+ policiesToBeUndeployedSet.addAll(update.getPoliciesToBeUndeployed());
+ final List<ToscaConceptIdentifier> policiestoBeUndeployed = new LinkedList<>(policiesToBeUndeployedSet);
+
+ // Merge deploy lists
+ final List<ToscaPolicy> policiesToBeDeployed;
+ if (update.getPoliciesToBeDeployed() == update.getPolicies()) {
+ policiesToBeDeployed = update.getPoliciesToBeDeployed();
+ } else {
+ Map<ToscaConceptIdentifier, ToscaPolicy> policiesToBeDeployedMap = getMessage().getPoliciesToBeDeployed()
+ .stream().collect(Collectors.toMap(ToscaPolicy::getIdentifier, policy -> policy));
+ policiesToBeDeployedMap.keySet().removeAll(update.getPoliciesToBeUndeployed());
+ policiesToBeDeployedMap.putAll(newDeployMap);
+ policiesToBeDeployed = new LinkedList<>(policiesToBeDeployedMap.values());
+ }
+
+ // Set lists in update
+ update.setPolicies(fullPolicies);
+ update.setPoliciesToBeDeployed(policiesToBeDeployed);
+ update.setPoliciesToBeUndeployed(policiestoBeUndeployed);
+
+ reconfigure2(update);
return true;
}
@@ -144,7 +175,23 @@ public class UpdateReq extends RequestImpl {
Set<ToscaPolicy> set1 = new HashSet<>(alwaysList(first.getPolicies()));
Set<ToscaPolicy> set2 = new HashSet<>(alwaysList(second.getPolicies()));
- return set1.equals(set2);
+ if (!(set1.equals(set2))) {
+ return false;
+ }
+
+ Map<ToscaConceptIdentifier, ToscaPolicy> dep1 = first.getPolicies().stream()
+ .collect(Collectors.toMap(ToscaPolicy::getIdentifier, p -> p));
+ Map<ToscaConceptIdentifier, ToscaPolicy> dep2 = second.getPoliciesToBeDeployed()
+ .stream().collect(Collectors.toMap(ToscaPolicy::getIdentifier, p -> p));
+
+ if (!(dep1.equals(dep2))) {
+ return false;
+ }
+
+ HashSet<ToscaConceptIdentifier> undep1 = new HashSet<>(alwaysList(first.getPoliciesToBeUndeployed()));
+ HashSet<ToscaConceptIdentifier> undep2 = new HashSet<>(alwaysList(second.getPoliciesToBeUndeployed()));
+
+ return undep1.equals(undep2);
}
/**