summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--models-base/src/main/java/org/onap/policy/models/base/PfObjectFilter.java1
-rw-r--r--models-base/src/main/java/org/onap/policy/models/base/PfUtils.java2
-rw-r--r--models-base/src/test/java/org/onap/policy/models/base/PfUtilsTest.java10
-rw-r--r--models-pap/src/main/java/org/onap/policy/models/pap/concepts/PdpGroupDeleteResponse.java2
-rw-r--r--models-pap/src/main/java/org/onap/policy/models/pap/concepts/PdpGroupDeployResponse.java2
-rw-r--r--models-pap/src/main/java/org/onap/policy/models/pap/concepts/PdpGroupStateChangeResponse.java2
-rw-r--r--models-pap/src/main/java/org/onap/policy/models/pap/concepts/PolicyUndeployResponse.java35
-rw-r--r--models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdp.java10
-rw-r--r--models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpGroup.java21
-rw-r--r--models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpSubGroup.java48
-rw-r--r--models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpGroupTest.java237
-rw-r--r--models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpSubGroupTest.java279
-rw-r--r--models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpTest.java183
-rw-r--r--models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/provider/PdpProviderTest.java (renamed from models-pdp/src/test/java/org/onap/policy/models/persistence/provider/PdpProviderTest.java)102
-rw-r--r--models-pdp/src/test/java/org/onap/policy/models/pdp/testconcepts/DummyJpaPdpChild.java32
-rw-r--r--models-pdp/src/test/java/org/onap/policy/models/pdp/testconcepts/DummyJpaPdpSubgroupChild.java32
-rw-r--r--models-pdp/src/test/resources/testdata/PdpGroupsNoPDPs.json35
17 files changed, 959 insertions, 74 deletions
diff --git a/models-base/src/main/java/org/onap/policy/models/base/PfObjectFilter.java b/models-base/src/main/java/org/onap/policy/models/base/PfObjectFilter.java
index a7d8401f0..6ede4d9a3 100644
--- a/models-base/src/main/java/org/onap/policy/models/base/PfObjectFilter.java
+++ b/models-base/src/main/java/org/onap/policy/models/base/PfObjectFilter.java
@@ -1,6 +1,7 @@
/*-
* ============LICENSE_START=======================================================
* Copyright (C) 2019 Nordix Foundation.
+ * Modifications Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/models-base/src/main/java/org/onap/policy/models/base/PfUtils.java b/models-base/src/main/java/org/onap/policy/models/base/PfUtils.java
index 7bdd9a5f4..c33271d78 100644
--- a/models-base/src/main/java/org/onap/policy/models/base/PfUtils.java
+++ b/models-base/src/main/java/org/onap/policy/models/base/PfUtils.java
@@ -73,7 +73,7 @@ public final class PfUtils {
*/
public static <T> List<T> mapList(List<T> source, Function<T, T> mapFunc) {
if (source == null) {
- return new ArrayList<>();
+ return new ArrayList<>(0);
}
return source.stream().map(mapFunc).collect(Collectors.toList());
diff --git a/models-base/src/test/java/org/onap/policy/models/base/PfUtilsTest.java b/models-base/src/test/java/org/onap/policy/models/base/PfUtilsTest.java
index 11ddf3132..339ee9d1b 100644
--- a/models-base/src/test/java/org/onap/policy/models/base/PfUtilsTest.java
+++ b/models-base/src/test/java/org/onap/policy/models/base/PfUtilsTest.java
@@ -52,9 +52,19 @@ public class PfUtilsTest {
});
assertTrue(resultList.isEmpty());
+ // verify that we can modify the empty list without throwing an exception
+ resultList.add("xyz");
+ resultList.add("pdq");
+ resultList.remove("xyz");
+
+
List<String> origList = Arrays.asList("abc", "def");
List<String> newList = PfUtils.mapList(origList, text -> text + "X");
assertEquals(Arrays.asList("abcX", "defX"), newList);
+
+ // verify that we can modify the list without throwing an exception
+ newList.remove("abcX");
+ newList.add("something else");
}
}
diff --git a/models-pap/src/main/java/org/onap/policy/models/pap/concepts/PdpGroupDeleteResponse.java b/models-pap/src/main/java/org/onap/policy/models/pap/concepts/PdpGroupDeleteResponse.java
index 46da8d363..e1094f48a 100644
--- a/models-pap/src/main/java/org/onap/policy/models/pap/concepts/PdpGroupDeleteResponse.java
+++ b/models-pap/src/main/java/org/onap/policy/models/pap/concepts/PdpGroupDeleteResponse.java
@@ -29,7 +29,7 @@ import lombok.ToString;
*/
@Getter
@Setter
-@ToString
+@ToString(callSuper = true)
public class PdpGroupDeleteResponse extends SimpleResponse {
}
diff --git a/models-pap/src/main/java/org/onap/policy/models/pap/concepts/PdpGroupDeployResponse.java b/models-pap/src/main/java/org/onap/policy/models/pap/concepts/PdpGroupDeployResponse.java
index b81d02b87..2d7dd2ec3 100644
--- a/models-pap/src/main/java/org/onap/policy/models/pap/concepts/PdpGroupDeployResponse.java
+++ b/models-pap/src/main/java/org/onap/policy/models/pap/concepts/PdpGroupDeployResponse.java
@@ -29,7 +29,7 @@ import lombok.ToString;
*/
@Getter
@Setter
-@ToString
+@ToString(callSuper = true)
public class PdpGroupDeployResponse extends SimpleResponse {
}
diff --git a/models-pap/src/main/java/org/onap/policy/models/pap/concepts/PdpGroupStateChangeResponse.java b/models-pap/src/main/java/org/onap/policy/models/pap/concepts/PdpGroupStateChangeResponse.java
index 1c013012a..292848346 100644
--- a/models-pap/src/main/java/org/onap/policy/models/pap/concepts/PdpGroupStateChangeResponse.java
+++ b/models-pap/src/main/java/org/onap/policy/models/pap/concepts/PdpGroupStateChangeResponse.java
@@ -29,7 +29,7 @@ import lombok.ToString;
*/
@Getter
@Setter
-@ToString
+@ToString(callSuper = true)
public class PdpGroupStateChangeResponse extends SimpleResponse {
}
diff --git a/models-pap/src/main/java/org/onap/policy/models/pap/concepts/PolicyUndeployResponse.java b/models-pap/src/main/java/org/onap/policy/models/pap/concepts/PolicyUndeployResponse.java
new file mode 100644
index 000000000..a41913032
--- /dev/null
+++ b/models-pap/src/main/java/org/onap/policy/models/pap/concepts/PolicyUndeployResponse.java
@@ -0,0 +1,35 @@
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP Policy Models
+ * ================================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.models.pap.concepts;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+/**
+ * Response to a Policy UNDEPLOY REST API.
+ */
+@Getter
+@Setter
+@ToString(callSuper = true)
+public class PolicyUndeployResponse extends SimpleResponse {
+
+}
diff --git a/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdp.java b/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdp.java
index 0a9aa5874..627641825 100644
--- a/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdp.java
+++ b/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdp.java
@@ -111,7 +111,7 @@ public class JpaPdp extends PfConcept implements PfAuthorative<Pdp>, Serializabl
*
* @param copyConcept the concept to copy from
*/
- public JpaPdp(final JpaPdp copyConcept) {
+ public JpaPdp(@NonNull final JpaPdp copyConcept) {
super(copyConcept);
}
@@ -120,7 +120,7 @@ public class JpaPdp extends PfConcept implements PfAuthorative<Pdp>, Serializabl
*
* @param authorativeConcept the authorative concept to copy from
*/
- public JpaPdp(final Pdp authorativeConcept) {
+ public JpaPdp(@NonNull final Pdp authorativeConcept) {
this.fromAuthorative(authorativeConcept);
}
@@ -137,8 +137,8 @@ public class JpaPdp extends PfConcept implements PfAuthorative<Pdp>, Serializabl
}
@Override
- public void fromAuthorative(final Pdp pdp) {
- if (this.getKey().isNullKey()) {
+ public void fromAuthorative(@NonNull final Pdp pdp) {
+ if (this.key == null || this.getKey().isNullKey()) {
this.setKey(new PfReferenceKey());
getKey().setLocalName(pdp.getInstanceId());
}
@@ -163,7 +163,7 @@ public class JpaPdp extends PfConcept implements PfAuthorative<Pdp>, Serializabl
}
@Override
- public PfValidationResult validate(final PfValidationResult resultIn) {
+ public PfValidationResult validate(@NonNull final PfValidationResult resultIn) {
PfValidationResult result = resultIn;
if (key.isNullKey()) {
diff --git a/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpGroup.java b/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpGroup.java
index 9c896a31b..71f27c48b 100644
--- a/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpGroup.java
+++ b/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpGroup.java
@@ -131,7 +131,7 @@ public class JpaPdpGroup extends PfConcept implements PfAuthorative<PdpGroup> {
*
* @param copyConcept the concept to copy from
*/
- public JpaPdpGroup(final JpaPdpGroup copyConcept) {
+ public JpaPdpGroup(@NonNull final JpaPdpGroup copyConcept) {
super(copyConcept);
}
@@ -140,7 +140,7 @@ public class JpaPdpGroup extends PfConcept implements PfAuthorative<PdpGroup> {
*
* @param authorativeConcept the authorative concept to copy from
*/
- public JpaPdpGroup(final PdpGroup authorativeConcept) {
+ public JpaPdpGroup(@NonNull final PdpGroup authorativeConcept) {
this.fromAuthorative(authorativeConcept);
}
@@ -164,8 +164,10 @@ public class JpaPdpGroup extends PfConcept implements PfAuthorative<PdpGroup> {
}
@Override
- public void fromAuthorative(final PdpGroup pdpGroup) {
- this.setKey(new PfConceptKey(pdpGroup.getName(), pdpGroup.getVersion()));
+ public void fromAuthorative(@NonNull final PdpGroup pdpGroup) {
+ if (this.key == null || this.getKey().isNullKey()) {
+ this.setKey(new PfConceptKey(pdpGroup.getName(), pdpGroup.getVersion()));
+ }
this.description = pdpGroup.getDescription();
this.pdpGroupState = pdpGroup.getPdpGroupState();
@@ -190,7 +192,6 @@ public class JpaPdpGroup extends PfConcept implements PfAuthorative<PdpGroup> {
keyList.addAll(jpaPdpSubgroup.getKeys());
}
-
return keyList;
}
@@ -214,7 +215,7 @@ public class JpaPdpGroup extends PfConcept implements PfAuthorative<PdpGroup> {
}
@Override
- public PfValidationResult validate(final PfValidationResult resultIn) {
+ public PfValidationResult validate(@NonNull final PfValidationResult resultIn) {
PfValidationResult result = resultIn;
if (key.isNullKey()) {
@@ -224,11 +225,16 @@ public class JpaPdpGroup extends PfConcept implements PfAuthorative<PdpGroup> {
result = key.validate(result);
- if (StringUtils.isBlank(description)) {
+ if (description != null && StringUtils.isBlank(description)) {
result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID,
"description may not be blank"));
}
+ if (pdpGroupState == null) {
+ result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID,
+ "pdpGroupState may not be null"));
+ }
+
if (properties != null) {
for (Entry<String, String> propertyEntry : properties.entrySet()) {
if (!ParameterValidationUtils.validateStringParameter(propertyEntry.getKey())) {
@@ -242,7 +248,6 @@ public class JpaPdpGroup extends PfConcept implements PfAuthorative<PdpGroup> {
}
}
-
if (pdpSubGroups == null) {
result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID,
"a PDP group must have a list of PDP subgroups"));
diff --git a/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpSubGroup.java b/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpSubGroup.java
index 1937cbfbb..d51cfc67e 100644
--- a/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpSubGroup.java
+++ b/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpSubGroup.java
@@ -91,12 +91,11 @@ public class JpaPdpSubGroup extends PfConcept implements PfAuthorative<PdpSubGro
// @formatter:ofF
@OneToMany
- @CollectionTable(joinColumns = {
- @JoinColumn(name = "pdpSubGroupParentKeyName", referencedColumnName = "parentKeyName"),
+ @CollectionTable(
+ joinColumns = { @JoinColumn(name = "pdpSubGroupParentKeyName", referencedColumnName = "parentKeyName"),
@JoinColumn(name = "pdpSubGroupParentKeyVersion", referencedColumnName = "parentKeyVersion"),
- @JoinColumn(name = "pdpSubGroupParentLocalName", referencedColumnName = "parentLocalName"),
- @JoinColumn(name = "pdpSubGroupLocalName", referencedColumnName = "localName")
- })
+ @JoinColumn(name = "pdpSubGroupParentLocalName", referencedColumnName = "parentLocalName"),
+ @JoinColumn(name = "pdpSubGroupLocalName", referencedColumnName = "localName") })
// formatter:on
private List<JpaPdp> pdpInstances;
@@ -137,7 +136,7 @@ public class JpaPdpSubGroup extends PfConcept implements PfAuthorative<PdpSubGro
*
* @param copyConcept the concept to copy from
*/
- public JpaPdpSubGroup(final JpaPdpSubGroup copyConcept) {
+ public JpaPdpSubGroup(@NonNull final JpaPdpSubGroup copyConcept) {
super(copyConcept);
}
@@ -146,7 +145,7 @@ public class JpaPdpSubGroup extends PfConcept implements PfAuthorative<PdpSubGro
*
* @param authorativeConcept the authorative concept to copy from
*/
- public JpaPdpSubGroup(final PdpSubGroup authorativeConcept) {
+ public JpaPdpSubGroup(@NonNull final PdpSubGroup authorativeConcept) {
this.fromAuthorative(authorativeConcept);
}
@@ -184,35 +183,40 @@ public class JpaPdpSubGroup extends PfConcept implements PfAuthorative<PdpSubGro
}
@Override
- public void fromAuthorative(final PdpSubGroup pdpSubgroup) {
- if (this.getKey().isNullKey()) {
+ public void fromAuthorative(@NonNull final PdpSubGroup pdpSubgroup) {
+ if (this.key == null || this.getKey().isNullKey()) {
this.setKey(new PfReferenceKey());
getKey().setLocalName(pdpSubgroup.getPdpType());
}
this.supportedPolicyTypes = new ArrayList<>();
- for (ToscaPolicyTypeIdentifier supportedPolicyType : pdpSubgroup.getSupportedPolicyTypes()) {
- this.supportedPolicyTypes
- .add(new PfConceptKey(supportedPolicyType.getName(), supportedPolicyType.getVersion()));
+ if (pdpSubgroup.getSupportedPolicyTypes() != null) {
+ for (ToscaPolicyTypeIdentifier supportedPolicyType : pdpSubgroup.getSupportedPolicyTypes()) {
+ this.supportedPolicyTypes
+ .add(new PfConceptKey(supportedPolicyType.getName(), supportedPolicyType.getVersion()));
+ }
}
-
this.policies = new ArrayList<>();
- for (ToscaPolicyIdentifier toscaPolicyIdentifier : pdpSubgroup.getPolicies()) {
- this.policies.add(new PfConceptKey(toscaPolicyIdentifier.getName(), toscaPolicyIdentifier.getVersion()));
+ if (pdpSubgroup.getPolicies() != null) {
+ for (ToscaPolicyIdentifier toscaPolicyIdentifier : pdpSubgroup.getPolicies()) {
+ this.policies
+ .add(new PfConceptKey(toscaPolicyIdentifier.getName(), toscaPolicyIdentifier.getVersion()));
+ }
}
-
this.currentInstanceCount = pdpSubgroup.getCurrentInstanceCount();
this.desiredInstanceCount = pdpSubgroup.getDesiredInstanceCount();
this.properties =
(pdpSubgroup.getProperties() == null ? null : new LinkedHashMap<>(pdpSubgroup.getProperties()));
this.pdpInstances = new ArrayList<>();
- for (Pdp pdp : pdpSubgroup.getPdpInstances()) {
- JpaPdp jpaPdp = new JpaPdp();
- jpaPdp.setKey(new PfReferenceKey(getKey(), pdp.getInstanceId()));
- jpaPdp.fromAuthorative(pdp);
- this.pdpInstances.add(jpaPdp);
+ if (pdpSubgroup.getPdpInstances() != null) {
+ for (Pdp pdp : pdpSubgroup.getPdpInstances()) {
+ JpaPdp jpaPdp = new JpaPdp();
+ jpaPdp.setKey(new PfReferenceKey(getKey(), pdp.getInstanceId()));
+ jpaPdp.fromAuthorative(pdp);
+ this.pdpInstances.add(jpaPdp);
+ }
}
}
@@ -262,7 +266,7 @@ public class JpaPdpSubGroup extends PfConcept implements PfAuthorative<PdpSubGro
}
@Override
- public PfValidationResult validate(final PfValidationResult resultIn) {
+ public PfValidationResult validate(@NonNull final PfValidationResult resultIn) {
PfValidationResult result = resultIn;
if (key.isNullKey()) {
diff --git a/models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpGroupTest.java b/models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpGroupTest.java
new file mode 100644
index 000000000..e75743e40
--- /dev/null
+++ b/models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpGroupTest.java
@@ -0,0 +1,237 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019 Nordix Foundation.
+ * ================================================================================
+ * 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.models.pdp.persistence.concepts;
+
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+
+import org.junit.Test;
+import org.onap.policy.models.base.PfConceptKey;
+import org.onap.policy.models.base.PfReferenceKey;
+import org.onap.policy.models.base.PfValidationResult;
+import org.onap.policy.models.pdp.concepts.PdpGroup;
+import org.onap.policy.models.pdp.enums.PdpState;
+import org.onap.policy.models.pdp.testconcepts.DummyJpaPdpSubgroupChild;
+
+/**
+ * Test the {@link JpaPdpGroupSubGroup} class.
+ *
+ * @author Liam Fallon (liam.fallon@est.tech)
+ */
+public class JpaPdpGroupTest {
+
+ @Test
+ public void testJpaPdpGroup() {
+ assertThatThrownBy(() -> {
+ new JpaPdpGroup((JpaPdpGroup) null);
+ }).hasMessage("copyConcept is marked @NonNull but is null");
+
+ assertThatThrownBy(() -> {
+ new JpaPdpGroup((PfConceptKey) null);
+ }).hasMessage("key is marked @NonNull but is null");
+
+ assertThatThrownBy(() -> {
+ new JpaPdpGroup((PdpGroup) null);
+ }).hasMessage("authorativeConcept is marked @NonNull but is null");
+
+ assertThatThrownBy(() -> {
+ new JpaPdpGroup((JpaPdpGroup) null);
+ }).hasMessage("copyConcept is marked @NonNull but is null");
+
+ assertThatThrownBy(() -> {
+ new JpaPdpGroup(null, null, null);
+ }).hasMessage("key is marked @NonNull but is null");
+
+ assertThatThrownBy(() -> {
+ new JpaPdpGroup(new PfConceptKey(), null, null);
+ }).hasMessage("pdpGroupState is marked @NonNull but is null");
+
+ assertThatThrownBy(() -> {
+ new JpaPdpGroup(new PfConceptKey(), PdpState.PASSIVE, null);
+ }).hasMessage("pdpSubGroups is marked @NonNull but is null");
+
+ assertThatThrownBy(() -> {
+ new JpaPdpGroup(null, PdpState.PASSIVE, null);
+ }).hasMessage("key is marked @NonNull but is null");
+
+ assertThatThrownBy(() -> {
+ new JpaPdpGroup(null, PdpState.PASSIVE, new ArrayList<>());
+ }).hasMessage("key is marked @NonNull but is null");
+
+ assertThatThrownBy(() -> {
+ new JpaPdpGroup(null, null, new ArrayList<>());
+ }).hasMessage("key is marked @NonNull but is null");
+
+ assertNotNull(new JpaPdpGroup((new PfConceptKey())));
+ assertNotNull(new JpaPdpGroup((new JpaPdpGroup())));
+
+ PdpGroup testPdpGroup = new PdpGroup();
+ testPdpGroup.setName("PDPGroup0");
+ testPdpGroup.setPdpSubgroups(new ArrayList<>());
+ JpaPdpGroup testJpaPdpGroup = new JpaPdpGroup();
+ testJpaPdpGroup.setKey(null);
+
+ assertThatThrownBy(() -> {
+ testJpaPdpGroup.fromAuthorative(testPdpGroup);
+ }).hasMessage("version is marked @NonNull but is null");
+
+ testJpaPdpGroup.setKey(new PfConceptKey());
+
+ assertThatThrownBy(() -> {
+ testJpaPdpGroup.fromAuthorative(testPdpGroup);
+ }).hasMessage("version is marked @NonNull but is null");
+
+ testPdpGroup.setVersion("1.0.0");
+ testJpaPdpGroup.fromAuthorative(testPdpGroup);
+
+ assertEquals("PDPGroup0", testJpaPdpGroup.getKey().getName());
+ testJpaPdpGroup.setKey(PfConceptKey.getNullKey());
+ testJpaPdpGroup.fromAuthorative(testPdpGroup);
+
+ assertThatThrownBy(() -> {
+ testJpaPdpGroup.fromAuthorative(null);
+ }).hasMessage("pdpGroup is marked @NonNull but is null");
+
+ testJpaPdpGroup.setKey(new PfConceptKey("PDPGroup0", "1.0.0"));
+ testJpaPdpGroup.fromAuthorative(testPdpGroup);
+
+ assertThatThrownBy(() -> {
+ testJpaPdpGroup.copyTo(null);
+ }).hasMessage("target is marked @NonNull but is null");
+
+ assertEquals("PDPGroup0", testJpaPdpGroup.getKey().getName());
+ assertEquals("PDPGroup0", new JpaPdpGroup(testPdpGroup).getKey().getName());
+ assertEquals("PDPGroup0", ((PfConceptKey) new JpaPdpGroup(testPdpGroup).getKeys().get(0)).getName());
+
+ testJpaPdpGroup.clean();
+ assertEquals("PDPGroup0", testJpaPdpGroup.getKey().getName());
+
+ assertThatThrownBy(() -> {
+ testJpaPdpGroup.validate(null);
+ }).hasMessage("resultIn is marked @NonNull but is null");
+
+ assertFalse(testJpaPdpGroup.validate(new PfValidationResult()).isOk());
+ testJpaPdpGroup.setPdpGroupState(PdpState.PASSIVE);
+ assertTrue(testJpaPdpGroup.validate(new PfValidationResult()).isOk());
+
+ testJpaPdpGroup.setKey(PfConceptKey.getNullKey());
+ assertFalse(testJpaPdpGroup.validate(new PfValidationResult()).isOk());
+ testJpaPdpGroup.setKey(new PfConceptKey("PdpGroup0", "1.0.0"));
+ assertTrue(testJpaPdpGroup.validate(new PfValidationResult()).isOk());
+
+ testJpaPdpGroup.setDescription(" ");
+ assertFalse(testJpaPdpGroup.validate(new PfValidationResult()).isOk());
+ testJpaPdpGroup.setDescription(" A Description ");
+ assertTrue(testJpaPdpGroup.validate(new PfValidationResult()).isOk());
+ testJpaPdpGroup.setDescription(null);
+ assertTrue(testJpaPdpGroup.validate(new PfValidationResult()).isOk());
+
+ testJpaPdpGroup.setProperties(new LinkedHashMap<>());
+ testJpaPdpGroup.getProperties().put(null, null);
+ assertFalse(testJpaPdpGroup.validate(new PfValidationResult()).isOk());
+ testJpaPdpGroup.getProperties().remove(null);
+ assertTrue(testJpaPdpGroup.validate(new PfValidationResult()).isOk());
+
+ testJpaPdpGroup.setProperties(new LinkedHashMap<>());
+ testJpaPdpGroup.getProperties().put("NullKey", null);
+ assertFalse(testJpaPdpGroup.validate(new PfValidationResult()).isOk());
+ testJpaPdpGroup.getProperties().remove("NullKey");
+ assertTrue(testJpaPdpGroup.validate(new PfValidationResult()).isOk());
+
+ List<JpaPdpSubGroup> jpaPdpSubgroups = testJpaPdpGroup.getPdpSubGroups();
+ assertNotNull(jpaPdpSubgroups);
+ testJpaPdpGroup.setPdpSubGroups(null);
+ assertFalse(testJpaPdpGroup.validate(new PfValidationResult()).isOk());
+ testJpaPdpGroup.setPdpSubGroups(new ArrayList<>());
+ assertTrue(testJpaPdpGroup.validate(new PfValidationResult()).isOk());
+ testJpaPdpGroup.setPdpSubGroups(jpaPdpSubgroups);
+ assertTrue(testJpaPdpGroup.validate(new PfValidationResult()).isOk());
+
+ JpaPdpGroup otherJpaPdpGroup = new JpaPdpGroup(testJpaPdpGroup);
+ assertEquals(0, testJpaPdpGroup.compareTo(otherJpaPdpGroup));
+ assertEquals(-1, testJpaPdpGroup.compareTo(null));
+ assertEquals(0, testJpaPdpGroup.compareTo(testJpaPdpGroup));
+ assertFalse(testJpaPdpGroup.compareTo(new DummyJpaPdpSubgroupChild()) == 0);
+
+ testJpaPdpGroup.getKey().setName("OtherName");
+ assertEquals(-1, testJpaPdpGroup.compareTo(otherJpaPdpGroup));
+ testJpaPdpGroup.getKey().setName("PdpGroup0");
+ assertEquals(0, testJpaPdpGroup.compareTo(otherJpaPdpGroup));
+
+ JpaPdpSubGroup anotherPdpSubgroup =
+ new JpaPdpSubGroup(new PfReferenceKey(testJpaPdpGroup.getKey(), "AnotherPdpSubgroup"));
+ testJpaPdpGroup.getPdpSubGroups().add(anotherPdpSubgroup);
+ assertNotEquals(0, testJpaPdpGroup.compareTo(otherJpaPdpGroup));
+ testJpaPdpGroup.getPdpSubGroups().remove(anotherPdpSubgroup);
+ assertEquals(0, testJpaPdpGroup.compareTo(otherJpaPdpGroup));
+
+ testJpaPdpGroup.setPdpGroupState(PdpState.ACTIVE);
+ assertNotEquals(0, testJpaPdpGroup.compareTo(otherJpaPdpGroup));
+ testJpaPdpGroup.setPdpGroupState(PdpState.PASSIVE);
+ assertEquals(0, testJpaPdpGroup.compareTo(otherJpaPdpGroup));
+
+ testJpaPdpGroup.setDescription("A Description");
+ assertNotEquals(0, testJpaPdpGroup.compareTo(otherJpaPdpGroup));
+ testJpaPdpGroup.setDescription(null);
+ assertEquals(0, testJpaPdpGroup.compareTo(otherJpaPdpGroup));
+
+ testJpaPdpGroup.getProperties().put("AnotherProperty", "Some String");
+ assertNotEquals(0, testJpaPdpGroup.compareTo(otherJpaPdpGroup));
+ testJpaPdpGroup.getProperties().remove("AnotherProperty");
+ assertEquals(0, testJpaPdpGroup.compareTo(otherJpaPdpGroup));
+
+ PdpGroup psg = testJpaPdpGroup.toAuthorative();
+ assertEquals(0, psg.getProperties().size());
+
+ testJpaPdpGroup.setProperties(new LinkedHashMap<>());
+ psg = testJpaPdpGroup.toAuthorative();
+ assertEquals(0, psg.getProperties().size());
+
+ testJpaPdpGroup.setProperties(null);
+ psg = testJpaPdpGroup.toAuthorative();
+ assertNull(psg.getProperties());
+ testJpaPdpGroup.setProperties(new LinkedHashMap<>());
+
+ testJpaPdpGroup.clean();
+ testJpaPdpGroup.getProperties().put(" PropKey ", " Prop Value ");
+ testJpaPdpGroup.clean();
+ assertEquals("PropKey", testJpaPdpGroup.getProperties().keySet().iterator().next());
+ assertEquals("Prop Value", testJpaPdpGroup.getProperties().get("PropKey"));
+ testJpaPdpGroup.setDescription(" A Description ");
+ testJpaPdpGroup.clean();
+ assertEquals("A Description", testJpaPdpGroup.getDescription());
+
+ assertEquals(1, testJpaPdpGroup.getKeys().size());
+ testJpaPdpGroup.getPdpSubGroups().add(anotherPdpSubgroup);
+ assertEquals(2, testJpaPdpGroup.getKeys().size());
+ testJpaPdpGroup.clean();
+ assertEquals(2, testJpaPdpGroup.getKeys().size());
+ }
+}
diff --git a/models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpSubGroupTest.java b/models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpSubGroupTest.java
new file mode 100644
index 000000000..d066d9be7
--- /dev/null
+++ b/models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpSubGroupTest.java
@@ -0,0 +1,279 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019 Nordix Foundation.
+ * ================================================================================
+ * 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.models.pdp.persistence.concepts;
+
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+
+import org.junit.Test;
+import org.onap.policy.models.base.PfConceptKey;
+import org.onap.policy.models.base.PfReferenceKey;
+import org.onap.policy.models.base.PfValidationResult;
+import org.onap.policy.models.pdp.concepts.PdpSubGroup;
+import org.onap.policy.models.pdp.testconcepts.DummyJpaPdpSubgroupChild;
+
+/**
+ * Test the {@link JpaPdpSubGroupSubGroup} class.
+ *
+ * @author Liam Fallon (liam.fallon@est.tech)
+ */
+public class JpaPdpSubGroupTest {
+
+ @Test
+ public void testJpaPdpSubGroup() {
+ assertThatThrownBy(() -> {
+ new JpaPdpSubGroup((JpaPdpSubGroup) null);
+ }).hasMessage("copyConcept is marked @NonNull but is null");
+
+ assertThatThrownBy(() -> {
+ new JpaPdpSubGroup((PfReferenceKey) null);
+ }).hasMessage("key is marked @NonNull but is null");
+
+ assertThatThrownBy(() -> {
+ new JpaPdpSubGroup((PdpSubGroup) null);
+ }).hasMessage("authorativeConcept is marked @NonNull but is null");
+
+ assertThatThrownBy(() -> {
+ new JpaPdpSubGroup(null, null, null, null);
+ }).hasMessage("key is marked @NonNull but is null");
+
+ assertThatThrownBy(() -> {
+ new JpaPdpSubGroup(new PfReferenceKey(), null, null, null);
+ }).hasMessage("supportedPolicyTypes is marked @NonNull but is null");
+
+ assertThatThrownBy(() -> {
+ new JpaPdpSubGroup(new PfReferenceKey(), new ArrayList<>(), null, null);
+ }).hasMessage("policies is marked @NonNull but is null");
+
+ assertThatThrownBy(() -> {
+ new JpaPdpSubGroup(null, new ArrayList<>(), null, null);
+ }).hasMessage("key is marked @NonNull but is null");
+
+ assertThatThrownBy(() -> {
+ new JpaPdpSubGroup(null, new ArrayList<>(), new ArrayList<>(), null);
+ }).hasMessage("key is marked @NonNull but is null");
+
+ assertThatThrownBy(() -> {
+ new JpaPdpSubGroup(null, null, new ArrayList<>(), null);
+ }).hasMessage("key is marked @NonNull but is null");
+
+ assertThatThrownBy(() -> {
+ new JpaPdpSubGroup(null, null, null, new ArrayList<>());
+ }).hasMessage("key is marked @NonNull but is null");
+
+ assertThatThrownBy(() -> {
+ new JpaPdpSubGroup(new PfReferenceKey(), null, null, new ArrayList<>());
+ }).hasMessage("supportedPolicyTypes is marked @NonNull but is null");
+
+ assertThatThrownBy(() -> {
+ new JpaPdpSubGroup(new PfReferenceKey(), new ArrayList<>(), null, new ArrayList<>());
+ }).hasMessage("policies is marked @NonNull but is null");
+
+ assertThatThrownBy(() -> {
+ new JpaPdpSubGroup(null, new ArrayList<>(), null, new ArrayList<>());
+ }).hasMessage("key is marked @NonNull but is null");
+
+ assertThatThrownBy(() -> {
+ new JpaPdpSubGroup(null, new ArrayList<>(), new ArrayList<>(), new ArrayList<>());
+ }).hasMessage("key is marked @NonNull but is null");
+
+ assertThatThrownBy(() -> {
+ new JpaPdpSubGroup(null, null, new ArrayList<>(), null);
+ }).hasMessage("key is marked @NonNull but is null");
+
+ assertNotNull(new JpaPdpSubGroup((new PfReferenceKey())));
+
+ PdpSubGroup testPdpSubgroup = new PdpSubGroup();
+ testPdpSubgroup.setPdpType("PDP-A");
+ JpaPdpSubGroup testJpaPdpSubGroup = new JpaPdpSubGroup();
+ testJpaPdpSubGroup.setKey(null);
+ testJpaPdpSubGroup.fromAuthorative(testPdpSubgroup);
+ assertEquals("PDP-A", testJpaPdpSubGroup.getKey().getLocalName());
+ testJpaPdpSubGroup.setKey(PfReferenceKey.getNullKey());
+ testJpaPdpSubGroup.fromAuthorative(testPdpSubgroup);
+
+ assertThatThrownBy(() -> {
+ testJpaPdpSubGroup.fromAuthorative(null);
+ }).hasMessage("pdpSubgroup is marked @NonNull but is null");
+
+ assertThatThrownBy(() -> {
+ testJpaPdpSubGroup.copyTo(null);
+ }).hasMessage("target is marked @NonNull but is null");
+
+ assertEquals("PDP-A", testJpaPdpSubGroup.getKey().getLocalName());
+ assertEquals("PDP-A", new JpaPdpSubGroup(testPdpSubgroup).getKey().getLocalName());
+ assertEquals("PDP-A", ((PfReferenceKey) new JpaPdpSubGroup(testPdpSubgroup).getKeys().get(0)).getLocalName());
+
+ testJpaPdpSubGroup.clean();
+ assertEquals("PDP-A", testJpaPdpSubGroup.getKey().getLocalName());
+
+ assertThatThrownBy(() -> {
+ testJpaPdpSubGroup.validate(null);
+ }).hasMessage("resultIn is marked @NonNull but is null");
+
+ assertFalse(testJpaPdpSubGroup.validate(new PfValidationResult()).isOk());
+ assertTrue(testJpaPdpSubGroup.validate(new PfValidationResult()).toString()
+ .contains("INVALID:parent of key is a null key"));
+
+ testJpaPdpSubGroup.getKey().setParentConceptKey(new PfConceptKey("Parent:1.0.0"));
+ assertFalse(testJpaPdpSubGroup.validate(new PfValidationResult()).isOk());
+ assertFalse(testJpaPdpSubGroup.validate(new PfValidationResult()).toString()
+ .contains("INVALID:parent of key is a null key"));
+ assertTrue(testJpaPdpSubGroup.validate(new PfValidationResult()).toString()
+ .contains("INVALID:a PDP subgroup must support at least one policy type"));
+
+ testJpaPdpSubGroup.setSupportedPolicyTypes(new ArrayList<>());
+ testJpaPdpSubGroup.getSupportedPolicyTypes().add(new PfConceptKey("APolicyType:1.0.0"));
+ assertTrue(testJpaPdpSubGroup.validate(new PfValidationResult()).isOk());
+ assertFalse(testJpaPdpSubGroup.validate(new PfValidationResult()).toString()
+ .contains("INVALID:a PDP subgroup must support at least one policy type"));
+
+ PfReferenceKey savedKey = testJpaPdpSubGroup.getKey();
+ testJpaPdpSubGroup.setKey(PfReferenceKey.getNullKey());
+ assertFalse(testJpaPdpSubGroup.validate(new PfValidationResult()).isOk());
+ testJpaPdpSubGroup.setKey(savedKey);
+ assertTrue(testJpaPdpSubGroup.validate(new PfValidationResult()).isOk());
+
+ testJpaPdpSubGroup.setProperties(new LinkedHashMap<>());
+ testJpaPdpSubGroup.getProperties().put(null, null);
+ assertFalse(testJpaPdpSubGroup.validate(new PfValidationResult()).isOk());
+ testJpaPdpSubGroup.getProperties().remove(null);
+ assertTrue(testJpaPdpSubGroup.validate(new PfValidationResult()).isOk());
+
+ testJpaPdpSubGroup.setProperties(new LinkedHashMap<>());
+ testJpaPdpSubGroup.getProperties().put("NullKey", null);
+ assertFalse(testJpaPdpSubGroup.validate(new PfValidationResult()).isOk());
+ testJpaPdpSubGroup.getProperties().remove("NullKey");
+ assertTrue(testJpaPdpSubGroup.validate(new PfValidationResult()).isOk());
+
+ testJpaPdpSubGroup.setDesiredInstanceCount(-1);
+ assertFalse(testJpaPdpSubGroup.validate(new PfValidationResult()).isOk());
+ testJpaPdpSubGroup.setDesiredInstanceCount(0);
+ assertTrue(testJpaPdpSubGroup.validate(new PfValidationResult()).isOk());
+ testJpaPdpSubGroup.setProperties(null);
+
+ testJpaPdpSubGroup.setCurrentInstanceCount(-1);
+ assertFalse(testJpaPdpSubGroup.validate(new PfValidationResult()).isOk());
+ testJpaPdpSubGroup.setCurrentInstanceCount(0);
+ assertTrue(testJpaPdpSubGroup.validate(new PfValidationResult()).isOk());
+ testJpaPdpSubGroup.setProperties(null);
+ assertTrue(testJpaPdpSubGroup.validate(new PfValidationResult()).isOk());
+
+ List<PfConceptKey> supportedPolicyTypes = testJpaPdpSubGroup.getSupportedPolicyTypes();
+ assertNotNull(supportedPolicyTypes);
+ testJpaPdpSubGroup.setSupportedPolicyTypes(null);
+ assertFalse(testJpaPdpSubGroup.validate(new PfValidationResult()).isOk());
+ testJpaPdpSubGroup.setSupportedPolicyTypes(new ArrayList<>());
+ assertFalse(testJpaPdpSubGroup.validate(new PfValidationResult()).isOk());
+ testJpaPdpSubGroup.setSupportedPolicyTypes(supportedPolicyTypes);
+ assertTrue(testJpaPdpSubGroup.validate(new PfValidationResult()).isOk());
+
+ List<PfConceptKey> supportedPolicies = testJpaPdpSubGroup.getPolicies();
+ assertNotNull(supportedPolicies);
+ testJpaPdpSubGroup.setPolicies(null);
+ assertFalse(testJpaPdpSubGroup.validate(new PfValidationResult()).isOk());
+ testJpaPdpSubGroup.setPolicies(new ArrayList<>());
+ assertTrue(testJpaPdpSubGroup.validate(new PfValidationResult()).isOk());
+ testJpaPdpSubGroup.setPolicies(supportedPolicies);
+ assertTrue(testJpaPdpSubGroup.validate(new PfValidationResult()).isOk());
+
+ List<JpaPdp> pdpInstances = testJpaPdpSubGroup.getPdpInstances();
+ assertNotNull(pdpInstances);
+ testJpaPdpSubGroup.setPdpInstances(null);
+ assertFalse(testJpaPdpSubGroup.validate(new PfValidationResult()).isOk());
+ testJpaPdpSubGroup.setPdpInstances(new ArrayList<>());
+ assertTrue(testJpaPdpSubGroup.validate(new PfValidationResult()).isOk());
+ testJpaPdpSubGroup.setPdpInstances(pdpInstances);
+ assertTrue(testJpaPdpSubGroup.validate(new PfValidationResult()).isOk());
+
+ JpaPdpSubGroup otherJpaPdpSubGroup = new JpaPdpSubGroup(testJpaPdpSubGroup);
+ assertEquals(0, testJpaPdpSubGroup.compareTo(otherJpaPdpSubGroup));
+ assertEquals(-1, testJpaPdpSubGroup.compareTo(null));
+ assertEquals(0, testJpaPdpSubGroup.compareTo(testJpaPdpSubGroup));
+ assertFalse(testJpaPdpSubGroup.compareTo(new DummyJpaPdpSubgroupChild()) == 0);
+
+ testJpaPdpSubGroup.getKey().setParentKeyName("Parent1");
+ assertEquals(1, testJpaPdpSubGroup.compareTo(otherJpaPdpSubGroup));
+ testJpaPdpSubGroup.getKey().setParentKeyName("Parent");
+ assertEquals(0, testJpaPdpSubGroup.compareTo(otherJpaPdpSubGroup));
+
+ testJpaPdpSubGroup.setCurrentInstanceCount(1);
+ assertEquals(1, testJpaPdpSubGroup.compareTo(otherJpaPdpSubGroup));
+ testJpaPdpSubGroup.setCurrentInstanceCount(0);
+ assertEquals(0, testJpaPdpSubGroup.compareTo(otherJpaPdpSubGroup));
+
+ testJpaPdpSubGroup.setDesiredInstanceCount(1);
+ assertEquals(1, testJpaPdpSubGroup.compareTo(otherJpaPdpSubGroup));
+ testJpaPdpSubGroup.setDesiredInstanceCount(0);
+ assertEquals(0, testJpaPdpSubGroup.compareTo(otherJpaPdpSubGroup));
+
+ PfConceptKey anotherPolicyType = new PfConceptKey("AnotherPolicyType", "1.0.0");
+ testJpaPdpSubGroup.getSupportedPolicyTypes().add(anotherPolicyType);
+ assertNotEquals(0, testJpaPdpSubGroup.compareTo(otherJpaPdpSubGroup));
+ testJpaPdpSubGroup.getSupportedPolicyTypes().remove(anotherPolicyType);
+ assertEquals(0, testJpaPdpSubGroup.compareTo(otherJpaPdpSubGroup));
+
+ PfConceptKey anotherPolicy = new PfConceptKey("AnotherPolicy", "1.0.0");
+ testJpaPdpSubGroup.getPolicies().add(anotherPolicy);
+ assertNotEquals(0, testJpaPdpSubGroup.compareTo(otherJpaPdpSubGroup));
+ testJpaPdpSubGroup.getPolicies().remove(anotherPolicy);
+ assertEquals(0, testJpaPdpSubGroup.compareTo(otherJpaPdpSubGroup));
+
+ JpaPdp anotherPdp = new JpaPdp(new PfReferenceKey(testJpaPdpSubGroup.getKey(), "AnotherPdp"));
+ testJpaPdpSubGroup.getPdpInstances().add(anotherPdp);
+ assertNotEquals(0, testJpaPdpSubGroup.compareTo(otherJpaPdpSubGroup));
+ testJpaPdpSubGroup.getPdpInstances().remove(anotherPdp);
+ assertEquals(0, testJpaPdpSubGroup.compareTo(otherJpaPdpSubGroup));
+
+ testJpaPdpSubGroup.setProperties(new LinkedHashMap<>());
+ testJpaPdpSubGroup.getProperties().put("AnotherProperty", "Some String");
+ assertNotEquals(0, testJpaPdpSubGroup.compareTo(otherJpaPdpSubGroup));
+ testJpaPdpSubGroup.getProperties().remove("AnotherProperty");
+ testJpaPdpSubGroup.setProperties(null);
+ assertEquals(0, testJpaPdpSubGroup.compareTo(otherJpaPdpSubGroup));
+
+ PdpSubGroup psg = testJpaPdpSubGroup.toAuthorative();
+ assertNull(psg.getProperties());
+
+ testJpaPdpSubGroup.setProperties(new LinkedHashMap<>());
+ psg = testJpaPdpSubGroup.toAuthorative();
+ assertEquals(0, psg.getProperties().size());
+
+ testJpaPdpSubGroup.getPolicies().add(new PfConceptKey("APolicy:1.0.0"));
+ testJpaPdpSubGroup.getPdpInstances().add(new JpaPdp());
+
+ testJpaPdpSubGroup.getProperties().put(" PropKey ", " Prop Value ");
+ testJpaPdpSubGroup.clean();
+ assertEquals("PropKey", testJpaPdpSubGroup.getProperties().keySet().iterator().next());
+ assertEquals("Prop Value", testJpaPdpSubGroup.getProperties().get("PropKey"));
+
+ assertEquals(4, testJpaPdpSubGroup.getKeys().size());
+ }
+}
diff --git a/models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpTest.java b/models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpTest.java
new file mode 100644
index 000000000..5a27210fc
--- /dev/null
+++ b/models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpTest.java
@@ -0,0 +1,183 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019 Nordix Foundation.
+ * ================================================================================
+ * 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.models.pdp.persistence.concepts;
+
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Test;
+import org.onap.policy.models.base.PfConceptKey;
+import org.onap.policy.models.base.PfReferenceKey;
+import org.onap.policy.models.base.PfValidationResult;
+import org.onap.policy.models.pdp.concepts.Pdp;
+import org.onap.policy.models.pdp.enums.PdpHealthStatus;
+import org.onap.policy.models.pdp.enums.PdpState;
+import org.onap.policy.models.pdp.persistence.concepts.JpaPdp;
+import org.onap.policy.models.pdp.testconcepts.DummyJpaPdpChild;
+
+/**
+ * Test the {@link JpaPdp} class.
+ *
+ * @author Liam Fallon (liam.fallon@est.tech)
+ */
+public class JpaPdpTest {
+
+ @Test
+ public void testJpaPdp() {
+ assertThatThrownBy(() -> {
+ new JpaPdp((JpaPdp) null);
+ }).hasMessage("copyConcept is marked @NonNull but is null");
+
+ assertThatThrownBy(() -> {
+ new JpaPdp((PfReferenceKey) null);
+ }).hasMessage("key is marked @NonNull but is null");
+
+ assertThatThrownBy(() -> {
+ new JpaPdp(null, null, null);
+ }).hasMessage("key is marked @NonNull but is null");
+
+ assertThatThrownBy(() -> {
+ new JpaPdp(new PfReferenceKey(), null, null);
+ }).hasMessage("pdpState is marked @NonNull but is null");
+
+ assertThatThrownBy(() -> {
+ new JpaPdp(new PfReferenceKey(), PdpState.ACTIVE, null);
+ }).hasMessage("healthy is marked @NonNull but is null");
+
+ assertThatThrownBy(() -> {
+ new JpaPdp(null, PdpState.ACTIVE, null);
+ }).hasMessage("key is marked @NonNull but is null");
+
+ assertThatThrownBy(() -> {
+ new JpaPdp(null, PdpState.ACTIVE, PdpHealthStatus.UNKNOWN);
+ }).hasMessage("key is marked @NonNull but is null");
+
+ assertThatThrownBy(() -> {
+ new JpaPdp(null, null, PdpHealthStatus.UNKNOWN);
+ }).hasMessage("key is marked @NonNull but is null");
+
+ assertThatThrownBy(() -> {
+ new JpaPdp((Pdp) null);
+ }).hasMessage("authorativeConcept is marked @NonNull but is null");
+
+ assertNotNull(new JpaPdp((new PfReferenceKey())));
+
+ Pdp testPdp = new Pdp();
+ testPdp.setInstanceId("ThePDP");
+ JpaPdp testJpaPdp = new JpaPdp();
+ testJpaPdp.setKey(null);
+ testJpaPdp.fromAuthorative(testPdp);
+ assertEquals("ThePDP", testJpaPdp.getKey().getLocalName());
+ testJpaPdp.setKey(PfReferenceKey.getNullKey());
+ testJpaPdp.fromAuthorative(testPdp);
+
+ assertThatThrownBy(() -> {
+ testJpaPdp.fromAuthorative(null);
+ }).hasMessage("pdp is marked @NonNull but is null");
+
+ assertThatThrownBy(() -> {
+ testJpaPdp.copyTo(null);
+ }).hasMessage("target is marked @NonNull but is null");
+
+ assertEquals("ThePDP", testJpaPdp.getKey().getLocalName());
+ assertEquals("ThePDP", new JpaPdp(testPdp).getKey().getLocalName());
+ assertEquals("ThePDP", ((PfReferenceKey) new JpaPdp(testPdp).getKeys().get(0)).getLocalName());
+
+ testJpaPdp.clean();
+ assertEquals("ThePDP", testJpaPdp.getKey().getLocalName());
+
+ testJpaPdp.setMessage(" A Message ");
+ testJpaPdp.clean();
+ assertEquals("A Message", testJpaPdp.getMessage());
+
+ assertThatThrownBy(() -> {
+ testJpaPdp.validate(null);
+ }).hasMessage("resultIn is marked @NonNull but is null");
+
+ assertFalse(testJpaPdp.validate(new PfValidationResult()).isOk());
+ assertTrue(testJpaPdp.validate(new PfValidationResult()).toString()
+ .contains("INVALID:parent of key is a null key"));
+
+ testJpaPdp.getKey().setParentConceptKey(new PfConceptKey("Parent:1.0.0"));
+ assertFalse(testJpaPdp.validate(new PfValidationResult()).isOk());
+ assertFalse(testJpaPdp.validate(new PfValidationResult()).toString()
+ .contains("INVALID:parent of key is a null key"));
+ assertTrue(testJpaPdp.validate(new PfValidationResult()).toString()
+ .contains("INVALID:local name of parent of key is null"));
+
+ testJpaPdp.getKey().setParentLocalName("ParentLocal");
+ assertFalse(testJpaPdp.validate(new PfValidationResult()).isOk());
+ assertFalse(testJpaPdp.validate(new PfValidationResult()).toString()
+ .contains("INVALID:local name of parent of key is null"));
+ assertTrue(testJpaPdp.validate(new PfValidationResult()).toString()
+ .contains("INVALID:PDP state may not be null"));
+
+ testJpaPdp.setPdpState(PdpState.ACTIVE);
+ assertFalse(testJpaPdp.validate(new PfValidationResult()).isOk());
+ assertFalse(testJpaPdp.validate(new PfValidationResult()).toString()
+ .contains("INVALID:PDP state may not be null"));
+ assertTrue(testJpaPdp.validate(new PfValidationResult()).toString()
+ .contains("INVALID:PDP health status may not be null"));
+
+ testJpaPdp.setHealthy(PdpHealthStatus.HEALTHY);
+ assertTrue(testJpaPdp.validate(new PfValidationResult()).isOk());
+
+ PfReferenceKey savedKey = testJpaPdp.getKey();
+ testJpaPdp.setKey(PfReferenceKey.getNullKey());
+ assertFalse(testJpaPdp.validate(new PfValidationResult()).isOk());
+ testJpaPdp.setKey(savedKey);
+ assertTrue(testJpaPdp.validate(new PfValidationResult()).isOk());
+
+ testJpaPdp.setMessage("");
+ assertFalse(testJpaPdp.validate(new PfValidationResult()).isOk());
+ testJpaPdp.setMessage("Valid Message");
+ assertTrue(testJpaPdp.validate(new PfValidationResult()).isOk());
+
+ JpaPdp otherJpaPdp = new JpaPdp(testJpaPdp);
+ assertEquals(0, testJpaPdp.compareTo(otherJpaPdp));
+ assertEquals(-1, testJpaPdp.compareTo(null));
+ assertEquals(0, testJpaPdp.compareTo(testJpaPdp));
+ assertFalse(testJpaPdp.compareTo(new DummyJpaPdpChild()) == 0);
+
+ testJpaPdp.getKey().setParentLocalName("ParentLocal1");
+ assertEquals(1, testJpaPdp.compareTo(otherJpaPdp));
+ testJpaPdp.getKey().setParentLocalName("ParentLocal");
+ assertEquals(0, testJpaPdp.compareTo(otherJpaPdp));
+
+ testJpaPdp.setPdpState(PdpState.PASSIVE);
+ assertEquals(-3, testJpaPdp.compareTo(otherJpaPdp));
+ testJpaPdp.setPdpState(PdpState.ACTIVE);
+ assertEquals(0, testJpaPdp.compareTo(otherJpaPdp));
+
+ testJpaPdp.setHealthy(PdpHealthStatus.NOT_HEALTHY);
+ assertEquals(1, testJpaPdp.compareTo(otherJpaPdp));
+ testJpaPdp.setHealthy(PdpHealthStatus.HEALTHY);
+ assertEquals(0, testJpaPdp.compareTo(otherJpaPdp));
+
+ testJpaPdp.setMessage("Invalid Message");
+ assertEquals(-13, testJpaPdp.compareTo(otherJpaPdp));
+ testJpaPdp.setMessage("Valid Message");
+ assertEquals(0, testJpaPdp.compareTo(otherJpaPdp));
+ }
+}
diff --git a/models-pdp/src/test/java/org/onap/policy/models/persistence/provider/PdpProviderTest.java b/models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/provider/PdpProviderTest.java
index 6f20882f4..468f3d4f9 100644
--- a/models-pdp/src/test/java/org/onap/policy/models/persistence/provider/PdpProviderTest.java
+++ b/models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/provider/PdpProviderTest.java
@@ -19,12 +19,16 @@
* ============LICENSE_END=========================================================
*/
-package org.onap.policy.models.persistence.provider;
+package org.onap.policy.models.pdp.persistence.provider;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
import java.sql.Connection;
import java.sql.DriverManager;
+import java.util.ArrayList;
+
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -35,6 +39,7 @@ import org.onap.policy.models.dao.PfDao;
import org.onap.policy.models.dao.PfDaoFactory;
import org.onap.policy.models.dao.impl.DefaultPfDao;
import org.onap.policy.models.pdp.concepts.PdpGroups;
+import org.onap.policy.models.pdp.persistence.concepts.JpaPdpGroup;
import org.onap.policy.models.pdp.persistence.provider.PdpProvider;
import org.onap.policy.models.tosca.simple.provider.SimpleToscaProvider;
@@ -87,17 +92,17 @@ public class PdpProviderTest {
@Test
public void testPoliciesGet() throws Exception {
- /*
- * try { new PdpProvider().gePdpGroupst(null, null); fail("test should throw an exception here"); } catch
- * (Exception exc) { assertEquals("dao is marked @NonNull but is null", exc.getMessage()); }
- *
- * try { new SimpleToscaProvider().getPolicies(null, new PfConceptKey());
- * fail("test should throw an exception here"); } catch (Exception exc) {
- * assertEquals("dao is marked @NonNull but is null", exc.getMessage()); }
- *
- * try { new SimpleToscaProvider().getPolicies(pfDao, null); fail("test should throw an exception here"); }
- * catch (Exception exc) { assertEquals("policyKey is marked @NonNull but is null", exc.getMessage()); }
- */
+ assertThatThrownBy(() -> {
+ new PdpProvider().getPdpGroups(null, null, null);
+ }).hasMessage("dao is marked @NonNull but is null");
+
+ assertThatThrownBy(() -> {
+ new PdpProvider().getPdpGroups(null, null, "version");
+ }).hasMessage("dao is marked @NonNull but is null");
+
+ assertThatThrownBy(() -> {
+ new PdpProvider().getPdpGroups(null, "name", "version");
+ }).hasMessage("dao is marked @NonNull but is null");
String originalJson = ResourceUtils.getResourceAsString("testdata/PdpGroups0.json");
@@ -114,32 +119,59 @@ public class PdpProviderTest {
String gotJson = standardCoder.encode(gotPdpGroups0);
assertEquals(originalJson.replaceAll("\\s+", ""), gotJson.replaceAll("\\s+", ""));
+ }
+
+ @Test
+ public void testPolicyCreate() throws Exception {
+ assertThatThrownBy(() -> {
+ new PdpProvider().createPdpGroups(null, null);
+ }).hasMessage("dao is marked @NonNull but is null");
+
+ assertThatThrownBy(() -> {
+ new PdpProvider().createPdpGroups(null, new ArrayList<>());
+ }).hasMessage("dao is marked @NonNull but is null");
+
+ assertThatThrownBy(() -> {
+ new PdpProvider().createPdpGroups(pfDao, null);
+ }).hasMessage("pdpGroups is marked @NonNull but is null");
+
+ String originalJson = ResourceUtils.getResourceAsString("testdata/PdpGroups0.json");
+
+ PdpGroups pdpGroups0 = standardCoder.decode(originalJson, PdpGroups.class);
+
+ PdpGroups createdPdpGroups0 = new PdpGroups();
+ createdPdpGroups0.setGroups(new PdpProvider().createPdpGroups(pfDao, pdpGroups0.getGroups()));
+ String createdJson = standardCoder.encode(createdPdpGroups0);
+ assertEquals(originalJson.replaceAll("\\s+", ""), createdJson.replaceAll("\\s+", ""));
+
+ PdpGroups gotPdpGroups0 = new PdpGroups();
+ gotPdpGroups0.setGroups(new PdpProvider().getPdpGroups(pfDao, "PdpGroup0", "1.2.3"));
+
+ String gotJson = standardCoder.encode(gotPdpGroups0);
+ assertEquals(originalJson.replaceAll("\\s+", ""), gotJson.replaceAll("\\s+", ""));
+ }
+
+ @Test
+ public void testPolicyCreateNoPdp() throws Exception {
+ String originalJson = ResourceUtils.getResourceAsString("testdata/PdpGroupsNoPDPs.json");
+
+ PdpGroups pdpGroups0 = standardCoder.decode(originalJson, PdpGroups.class);
+
+ PdpGroups createdPdpGroups0 = new PdpGroups();
+ createdPdpGroups0.setGroups(new PdpProvider().createPdpGroups(pfDao, pdpGroups0.getGroups()));
+ assertNotEquals(pdpGroups0, createdPdpGroups0);
+ pdpGroups0.getGroups().get(0).getPdpSubgroups().get(0).setPdpInstances(new ArrayList<>());
+ String originalTweakedJson = standardCoder.encode(pdpGroups0);
+ String createdJson = standardCoder.encode(createdPdpGroups0);
+ assertEquals(originalTweakedJson.replaceAll("\\s+", ""), createdJson.replaceAll("\\s+", ""));
+
+ PdpGroups gotPdpGroups0 = new PdpGroups();
+ gotPdpGroups0.setGroups(new PdpProvider().getPdpGroups(pfDao, "TestPdpGroup", "1.2.3"));
+ String gotJson = standardCoder.encode(gotPdpGroups0);
+ assertEquals(originalTweakedJson.replaceAll("\\s+", ""), gotJson.replaceAll("\\s+", ""));
}
/*
- * @Test public void testPolicyCreate() throws Exception { try { new SimpleToscaProvider().createPolicies(null,
- * null); fail("test should throw an exception here"); } catch (Exception exc) {
- * assertEquals("dao is marked @NonNull but is null", exc.getMessage()); }
- *
- * try { new SimpleToscaProvider().createPolicies(null, new JpaToscaServiceTemplate());
- * fail("test should throw an exception here"); } catch (Exception exc) {
- * assertEquals("dao is marked @NonNull but is null", exc.getMessage()); }
- *
- * try { new SimpleToscaProvider().createPolicies(pfDao, null); fail("test should throw an exception here"); } catch
- * (Exception exc) { assertEquals("serviceTemplate is marked @NonNull but is null", exc.getMessage()); }
- *
- * ToscaServiceTemplate toscaServiceTemplate = standardCoder.decode(
- * ResourceUtils.getResourceAsString("policies/vCPE.policy.monitoring.input.tosca.json"),
- * ToscaServiceTemplate.class);
- *
- * JpaToscaServiceTemplate originalServiceTemplate = new JpaToscaServiceTemplate();
- * originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
- *
- * assertNotNull(originalServiceTemplate); JpaToscaServiceTemplate createdServiceTemplate = new
- * SimpleToscaProvider().createPolicies(pfDao, originalServiceTemplate);
- *
- * assertEquals(originalServiceTemplate, createdServiceTemplate); }
- *
* @Test public void testPolicyUpdate() throws Exception { try { new SimpleToscaProvider().updatePolicies(null,
* null); fail("test should throw an exception here"); } catch (Exception exc) {
* assertEquals("dao is marked @NonNull but is null", exc.getMessage()); }
diff --git a/models-pdp/src/test/java/org/onap/policy/models/pdp/testconcepts/DummyJpaPdpChild.java b/models-pdp/src/test/java/org/onap/policy/models/pdp/testconcepts/DummyJpaPdpChild.java
new file mode 100644
index 000000000..d9d55ddc2
--- /dev/null
+++ b/models-pdp/src/test/java/org/onap/policy/models/pdp/testconcepts/DummyJpaPdpChild.java
@@ -0,0 +1,32 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019 Nordix Foundation.
+ * ================================================================================
+ * 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.models.pdp.testconcepts;
+
+import org.onap.policy.models.pdp.persistence.concepts.JpaPdp;
+
+/**
+ * Test class for JpaPdp comparisons.
+ *
+ * @author Liam Fallon (liam.fallon@est.tech)
+ */
+public class DummyJpaPdpChild extends JpaPdp {
+ private static final long serialVersionUID = -5101743610779424064L;
+}
diff --git a/models-pdp/src/test/java/org/onap/policy/models/pdp/testconcepts/DummyJpaPdpSubgroupChild.java b/models-pdp/src/test/java/org/onap/policy/models/pdp/testconcepts/DummyJpaPdpSubgroupChild.java
new file mode 100644
index 000000000..2791e44e7
--- /dev/null
+++ b/models-pdp/src/test/java/org/onap/policy/models/pdp/testconcepts/DummyJpaPdpSubgroupChild.java
@@ -0,0 +1,32 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019 Nordix Foundation.
+ * ================================================================================
+ * 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.models.pdp.testconcepts;
+
+import org.onap.policy.models.pdp.persistence.concepts.JpaPdpSubGroup;
+
+/**
+ * Dummy sub PDPsubGroup class.
+ *
+ * @author Liam Fallon (liam.fallon@est.tech)
+ */
+public class DummyJpaPdpSubgroupChild extends JpaPdpSubGroup {
+ private static final long serialVersionUID = 1L;
+}
diff --git a/models-pdp/src/test/resources/testdata/PdpGroupsNoPDPs.json b/models-pdp/src/test/resources/testdata/PdpGroupsNoPDPs.json
new file mode 100644
index 000000000..e37b6c5a6
--- /dev/null
+++ b/models-pdp/src/test/resources/testdata/PdpGroupsNoPDPs.json
@@ -0,0 +1,35 @@
+{
+ "groups": [
+ {
+ "name": "TestPdpGroup",
+ "version": "1.2.3",
+ "description": "group description",
+ "pdpGroupState": "ACTIVE",
+ "properties": {
+ "groupProperty0": "Value of Group Property 0"
+ },
+ "pdpSubgroups": [
+ {
+ "pdpType": "APEX",
+ "supportedPolicyTypes": [
+ {
+ "name": "onap.policies.controlloop.Operational",
+ "version": "1.0.0"
+ }
+ ],
+ "policies": [
+ {
+ "name": "onap.policies.controlloop.Operational.apex.sampledomain",
+ "version": "1.0.0"
+ }
+ ],
+ "currentInstanceCount": 0,
+ "desiredInstanceCount": 5,
+ "properties": {
+ "subgroupProperty0": "Value of sub Group Property 0"
+ }
+ }
+ ]
+ }
+ ]
+} \ No newline at end of file