summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpGroup.java27
-rw-r--r--models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpGroups.java16
-rw-r--r--models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/ModelsTest.java6
-rw-r--r--models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/PdpGroupsTest.java5
4 files changed, 36 insertions, 18 deletions
diff --git a/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpGroup.java b/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpGroup.java
index 3c1aec258..49dfd6fbb 100644
--- a/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpGroup.java
+++ b/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpGroup.java
@@ -25,7 +25,7 @@ import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
-import java.util.Set;
+import java.util.stream.Collectors;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.onap.policy.common.parameters.BeanValidationResult;
@@ -83,7 +83,7 @@ public class PdpGroup implements PfNameVersion, Comparable<PdpGroup> {
BeanValidationResult result = new BeanValidationResult("group", this);
/*
- * Don't care about version or state, because we override them. Ok if description is null.
+ * Don't care about state, because we override it. Ok if description is null.
*/
result.validateNotNull("name", name);
@@ -100,24 +100,19 @@ public class PdpGroup implements PfNameVersion, Comparable<PdpGroup> {
* @param result where to place validation results
*/
private void checkDuplicateSubgroups(BeanValidationResult result) {
- if (pdpSubgroups == null) {
+ if (pdpSubgroups == null || !result.isValid()) {
return;
}
- Set<String> set = new HashSet<>();
-
- for (PdpSubGroup subgrp : pdpSubgroups) {
- String pdpType = (subgrp == null ? null : subgrp.getPdpType());
-
- if (pdpType == null) {
- continue;
- }
-
- if (!set.add(pdpType)) {
- result.addResult(new ObjectValidationResult("subgroups", pdpType, ValidationStatus.INVALID,
- "duplicate subgroup"));
- }
+ // verify that the same subgroup doesn't appear more than once
+ List<String> pdpTypes = pdpSubgroups.stream().map(PdpSubGroup::getPdpType).collect(Collectors.toList());
+ if (pdpSubgroups.size() == new HashSet<>(pdpTypes).size()) {
+ return;
}
+
+ // different sizes implies duplicates
+ result.addResult(new ObjectValidationResult("pdpSubgroups", pdpTypes, ValidationStatus.INVALID,
+ "duplicate subgroups"));
}
@Override
diff --git a/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpGroups.java b/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpGroups.java
index a7e05dd6b..ab9afb00b 100644
--- a/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpGroups.java
+++ b/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpGroups.java
@@ -21,14 +21,18 @@
package org.onap.policy.models.pdp.concepts;
import java.util.Collections;
+import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.onap.policy.common.parameters.BeanValidationResult;
+import org.onap.policy.common.parameters.ObjectValidationResult;
import org.onap.policy.common.parameters.ValidationResult;
+import org.onap.policy.common.parameters.ValidationStatus;
/**
* Request deploy or update a set of groups via the PDP Group deployment REST API.
@@ -63,7 +67,17 @@ public class PdpGroups {
BeanValidationResult result = new BeanValidationResult("groups", this);
result.validateNotNullList("groups", groups, PdpGroup::validatePapRest);
+ if (!result.isValid()) {
+ return result;
+ }
+
+ // verify that the same group doesn't appear more than once
+ List<String> names = groups.stream().map(PdpGroup::getName).collect(Collectors.toList());
+ if (groups.size() == new HashSet<>(names).size()) {
+ return result;
+ }
- return result;
+ // different sizes implies duplicates
+ return new ObjectValidationResult("groups", names, ValidationStatus.INVALID, "duplicate group names");
}
}
diff --git a/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/ModelsTest.java b/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/ModelsTest.java
index 7a6c03c71..743839362 100644
--- a/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/ModelsTest.java
+++ b/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/ModelsTest.java
@@ -42,6 +42,10 @@ public class ModelsTest {
public void testPdpModels() {
final Validator validator = ValidatorBuilder.create().with(new ToStringTester()).with(new SetterTester())
.with(new GetterTester()).build();
- validator.validate(POJO_PACKAGE, new FilterPackageInfo(), new FilterClassName(PdpMessage.class.getName()));
+
+ // exclude Test classes and PdpMessage
+ validator.validate(POJO_PACKAGE, new FilterPackageInfo(),
+ new FilterClassName("^((?!Test$).)*$"),
+ new FilterClassName("^((?!" + PdpMessage.class.getName() + ").)*$"));
}
}
diff --git a/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/PdpGroupsTest.java b/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/PdpGroupsTest.java
index 22e178da2..e0fafc18d 100644
--- a/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/PdpGroupsTest.java
+++ b/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/PdpGroupsTest.java
@@ -82,6 +82,11 @@ public class PdpGroupsTest {
groupX.setName(null);
groups.setGroups(Arrays.asList(group1, groupX));
assertInvalid(groups);
+
+ // duplicate groups
+ groups = new PdpGroups();
+ groups.setGroups(Arrays.asList(group1, group2, group1));
+ assertInvalid(groups);
}
private void assertInvalid(PdpGroups groups) {