diff options
author | Jorge Hernandez <jorge.hernandez-herrero@att.com> | 2019-04-20 16:09:11 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@onap.org> | 2019-04-20 16:09:11 +0000 |
commit | 4ca155ec2ca6663826d749c7443b0249e703323e (patch) | |
tree | b31502501bc3ba0d2e6a51237af4aa4bd4d462f9 | |
parent | 61355e15d46059f2b29689d2f0a9cc359cf0ddd5 (diff) | |
parent | d81d38b787fd33cfe221f2ef55fdb913333d479c (diff) |
Merge "Handle null policy lists"
3 files changed, 60 insertions, 5 deletions
diff --git a/main/src/main/java/org/onap/policy/pap/main/comm/PdpModifyRequestMap.java b/main/src/main/java/org/onap/policy/pap/main/comm/PdpModifyRequestMap.java index a11a4e7e..04bab743 100644 --- a/main/src/main/java/org/onap/policy/pap/main/comm/PdpModifyRequestMap.java +++ b/main/src/main/java/org/onap/policy/pap/main/comm/PdpModifyRequestMap.java @@ -21,6 +21,7 @@ package org.onap.policy.pap.main.comm; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.List; @@ -386,6 +387,7 @@ public class PdpModifyRequestMap { // send an update, too PdpUpdate update = new PdpUpdate(); update.setName(requests.getPdpName()); + update.setPolicies(Collections.emptyList()); addRequest(update, change); 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 9067131f..8efdb7ca 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 @@ -20,7 +20,9 @@ package org.onap.policy.pap.main.comm.msgdata; +import java.util.Collections; import java.util.HashSet; +import java.util.List; import java.util.Set; import java.util.stream.Collectors; import org.apache.commons.lang3.StringUtils; @@ -72,9 +74,9 @@ public class UpdateReq extends RequestImpl { } // see if the policies match - Set<ToscaPolicyIdentifier> set1 = new HashSet<>(response.getPolicies()); - Set<ToscaPolicyIdentifier> set2 = new HashSet<>( - message.getPolicies().stream().map(ToscaPolicy::getIdentifier).collect(Collectors.toSet())); + Set<ToscaPolicyIdentifier> set1 = new HashSet<>(alwaysList(response.getPolicies())); + Set<ToscaPolicyIdentifier> set2 = new HashSet<>(alwaysList(message.getPolicies()).stream() + .map(ToscaPolicy::getIdentifier).collect(Collectors.toSet())); if (!set1.equals(set2)) { return "policies do not match"; @@ -101,12 +103,22 @@ public class UpdateReq extends RequestImpl { } // see if the policies are the same - Set<ToscaPolicy> set1 = new HashSet<>(first.getPolicies()); - Set<ToscaPolicy> set2 = new HashSet<>(second.getPolicies()); + Set<ToscaPolicy> set1 = new HashSet<>(alwaysList(first.getPolicies())); + Set<ToscaPolicy> set2 = new HashSet<>(alwaysList(second.getPolicies())); return set1.equals(set2); } + /** + * Always get a list, even if the original is {@code null}. + * + * @param list the original list, or {@code null} + * @return the list, or an empty list if the original was {@code null} + */ + private <T> List<T> alwaysList(List<T> list) { + return (list != null ? list : Collections.emptyList()); + } + @Override public int getPriority() { return 1; diff --git a/main/src/test/java/org/onap/policy/pap/main/comm/msgdata/UpdateReqTest.java b/main/src/test/java/org/onap/policy/pap/main/comm/msgdata/UpdateReqTest.java index 156e9c80..a7987701 100644 --- a/main/src/test/java/org/onap/policy/pap/main/comm/msgdata/UpdateReqTest.java +++ b/main/src/test/java/org/onap/policy/pap/main/comm/msgdata/UpdateReqTest.java @@ -73,6 +73,11 @@ public class UpdateReqTest extends CommonRequestBase { @Test public void testCheckResponse() { assertNull(data.checkResponse(response)); + + // both policy lists null + update.setPolicies(null); + response.setPolicies(null); + assertNull(data.checkResponse(response)); } @Test @@ -114,6 +119,20 @@ public class UpdateReqTest extends CommonRequestBase { } @Test + public void testUpdateReqCheckResponse_MismatchedPolicies_Null_NotNull() { + update.setPolicies(null); + + assertEquals("policies do not match", data.checkResponse(response)); + } + + @Test + public void testUpdateReqCheckResponse_MismatchedPolicies_NotNull_Null() { + response.setPolicies(null); + + assertEquals("policies do not match", data.checkResponse(response)); + } + + @Test public void isSameContent() { PdpUpdate msg2 = new PdpUpdate(update); msg2.setName("world"); @@ -121,6 +140,11 @@ public class UpdateReqTest extends CommonRequestBase { // different request type assertFalse(data.isSameContent(new StateChangeReq(reqParams, MY_REQ_NAME, new PdpStateChange()))); + + // both policy lists null + update.setPolicies(null); + msg2.setPolicies(null); + assertTrue(data.isSameContent(new UpdateReq(reqParams, MY_REQ_NAME, msg2))); } @Test @@ -177,6 +201,23 @@ public class UpdateReqTest extends CommonRequestBase { } @Test + public void isSameContent_DiffPolicies_NotNull_Null() { + PdpUpdate msg2 = new PdpUpdate(update); + msg2.setPolicies(null); + + assertFalse(data.isSameContent(new UpdateReq(reqParams, MY_REQ_NAME, msg2))); + } + + @Test + public void isSameContent_DiffPolicies_Null_NotNull() { + PdpUpdate msg2 = new PdpUpdate(update); + + update.setPolicies(null); + + assertFalse(data.isSameContent(new UpdateReq(reqParams, MY_REQ_NAME, msg2))); + } + + @Test public void testGetPriority() { assertTrue(data.getPriority() > new StateChangeReq(reqParams, MY_REQ_NAME, new PdpStateChange()).getPriority()); } |