summaryrefslogtreecommitdiffstats
path: root/main
diff options
context:
space:
mode:
authorJim Hahn <jrh3@att.com>2019-04-18 20:24:24 -0400
committerJim Hahn <jrh3@att.com>2019-04-19 09:13:50 -0400
commitd81d38b787fd33cfe221f2ef55fdb913333d479c (patch)
treefc65feba8219e09d6ad53e58ac7e2c11f4d808ab /main
parent38a63dbe6ae17e8967a7218e54179733de3579d8 (diff)
Handle null policy lists
UpdateReq throws NPE if the policy list in the request or the response is null. Change-Id: I0d71d6ad4cc9b96315c3b3ba89af8e4d8f3f94e6 Issue-ID: POLICY-1669 Signed-off-by: Jim Hahn <jrh3@att.com>
Diffstat (limited to 'main')
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/comm/PdpModifyRequestMap.java2
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/comm/msgdata/UpdateReq.java22
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/comm/msgdata/UpdateReqTest.java41
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 8dcb9794..0d012c0a 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;
@@ -377,6 +378,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());
}