summaryrefslogtreecommitdiffstats
path: root/models-tosca
diff options
context:
space:
mode:
Diffstat (limited to 'models-tosca')
-rw-r--r--models-tosca/pom.xml5
-rw-r--r--models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaConstraint.java6
-rw-r--r--models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaEntity.java5
-rw-r--r--models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicy.java19
-rw-r--r--models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyFilter.java67
-rw-r--r--models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyIdentifier.java50
-rw-r--r--models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyIdentifierOptVersion.java58
-rw-r--r--models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyTypeFilter.java59
-rw-r--r--models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyTypeIdentifier.java50
-rw-r--r--models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaProperty.java3
-rw-r--r--models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaServiceTemplate.java5
-rw-r--r--models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/provider/AuthorativeToscaProvider.java106
-rw-r--r--models-tosca/src/main/java/org/onap/policy/models/tosca/legacy/concepts/LegacyGuardPolicyInput.java4
-rw-r--r--models-tosca/src/main/java/org/onap/policy/models/tosca/legacy/concepts/LegacyOperationalPolicy.java4
-rw-r--r--models-tosca/src/main/java/org/onap/policy/models/tosca/simple/provider/SimpleToscaProvider.java105
-rw-r--r--models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/TestPojos.java24
-rw-r--r--models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/TestToscaPolicy.java49
-rw-r--r--models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/TestToscaPolicyIdentifier.java62
-rw-r--r--models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/TestToscaPolicyIdentifierOptVersion.java71
-rw-r--r--models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/TestToscaPolicyTypeIdentifier.java63
-rw-r--r--models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaIdentifierTestBase.java81
-rw-r--r--models-tosca/src/test/java/org/onap/policy/models/tosca/simple/provider/SimpleToscaProviderTest.java27
22 files changed, 822 insertions, 101 deletions
diff --git a/models-tosca/pom.xml b/models-tosca/pom.xml
index c8fa2520a..5b857c13b 100644
--- a/models-tosca/pom.xml
+++ b/models-tosca/pom.xml
@@ -68,6 +68,11 @@
<artifactId>mariadb-java-client</artifactId>
<scope>test</scope>
</dependency>
+
+ <dependency>
+ <groupId>io.swagger</groupId>
+ <artifactId>swagger-jersey2-jaxrs</artifactId>
+ </dependency>
</dependencies>
</project>
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaConstraint.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaConstraint.java
index 4623b20e8..582b73cc6 100644
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaConstraint.java
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaConstraint.java
@@ -24,6 +24,7 @@
package org.onap.policy.models.tosca.authorative.concepts;
import com.google.gson.annotations.SerializedName;
+import io.swagger.annotations.ApiModelProperty;
import java.util.List;
import lombok.Data;
@@ -35,20 +36,25 @@ import lombok.Data;
@Data
public class ToscaConstraint {
+ @ApiModelProperty(name = "valid_values")
@SerializedName("valid_values")
private List<String> validValues;
private String equal;
+ @ApiModelProperty(name = "greater_than")
@SerializedName("greater_than")
private String greaterThan;
+ @ApiModelProperty(name = "greater_or_equal")
@SerializedName("greater_or_equal")
private String greaterOrEqual;
+ @ApiModelProperty(name = "less_than")
@SerializedName("less_than")
private String lessThan;
+ @ApiModelProperty(name = "less_or_equal")
@SerializedName("less_or_equal")
private String lessOrEqual;
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaEntity.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaEntity.java
index a61f2a781..9d327a2ca 100644
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaEntity.java
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaEntity.java
@@ -23,15 +23,13 @@
package org.onap.policy.models.tosca.authorative.concepts;
import com.google.gson.annotations.SerializedName;
-
+import io.swagger.annotations.ApiModelProperty;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
-
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.NonNull;
-
import org.onap.policy.models.base.PfNameVersion;
/**
@@ -46,6 +44,7 @@ public class ToscaEntity implements PfNameVersion {
private String version;
+ @ApiModelProperty(name = "derived_from")
@SerializedName("derived_from")
private String derivedFrom;
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicy.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicy.java
index 38c68599d..9c6a375de 100644
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicy.java
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicy.java
@@ -26,7 +26,6 @@ package org.onap.policy.models.tosca.authorative.concepts;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
-
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
@@ -67,4 +66,22 @@ public class ToscaPolicy extends ToscaEntity {
}
}
}
+
+ /**
+ * Gets the identifier for this policy.
+ *
+ * @return this policy's identifier
+ */
+ public ToscaPolicyIdentifier getIdentifier() {
+ return new ToscaPolicyIdentifier(getName(), getVersion());
+ }
+
+ /**
+ * Gets the type identifier for this policy.
+ *
+ * @return this policy's type identifier
+ */
+ public ToscaPolicyTypeIdentifier getTypeIdentifier() {
+ return new ToscaPolicyTypeIdentifier(getType(), getTypeVersion());
+ }
}
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyFilter.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyFilter.java
new file mode 100644
index 000000000..7781af236
--- /dev/null
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyFilter.java
@@ -0,0 +1,67 @@
+/*-
+ * ============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.tosca.authorative.concepts;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+import lombok.Builder;
+import lombok.Data;
+import lombok.NonNull;
+
+import org.onap.policy.models.base.PfObjectFiler;
+
+/**
+ * Filter class for searches for {@link ToscaPolicy} instances.
+ * If any fields are null, they are ignored.
+ *
+ * @author Liam Fallon (liam.fallon@est.tech)
+ */
+@Builder
+@Data
+public class ToscaPolicyFilter implements PfObjectFiler<ToscaPolicy> {
+ public static final String LATEST_VERSION = "LATEST";
+
+ // Regular expression
+ private String name;
+
+ // Regular Expression, set to LATEST_VERRSION to get the latest version
+ private String version;
+
+ // Regular expression
+ private String policyTypeName;
+
+ // Regular Expression, set to LATEST_VERRSION to get the latest version
+ private String policyTypeVersion;
+
+ @Override
+ public List<ToscaPolicy> filter(@NonNull final List<ToscaPolicy> originalList) {
+
+ // @formatter:off
+ return originalList.stream()
+ .filter(p -> name != null && p.getName() .matches(name))
+ .filter(p -> version != null && p.getVersion() .matches(version))
+ .filter(p -> policyTypeName != null && p.getType() .matches(policyTypeName))
+ .filter(p -> policyTypeVersion != null && p.getTypeVersion().matches(policyTypeVersion))
+ .collect(Collectors.toList());
+ // @formatter:off
+ }
+}
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyIdentifier.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyIdentifier.java
new file mode 100644
index 000000000..e55c6bd4d
--- /dev/null
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyIdentifier.java
@@ -0,0 +1,50 @@
+/*
+ * ============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.tosca.authorative.concepts;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.NonNull;
+
+/**
+ * Identifies a policy. Both the name and version must be non-null.
+ */
+@Data
+@NoArgsConstructor
+public class ToscaPolicyIdentifier {
+
+ @NonNull
+ private String name;
+
+ @NonNull
+ private String version;
+
+
+ public ToscaPolicyIdentifier(@NonNull String name, @NonNull String version) {
+ this.name = name;
+ this.version = version;
+ }
+
+ public ToscaPolicyIdentifier(ToscaPolicyIdentifier source) {
+ this.name = source.name;
+ this.version = source.version;
+ }
+}
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyIdentifierOptVersion.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyIdentifierOptVersion.java
new file mode 100644
index 000000000..9350d1738
--- /dev/null
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyIdentifierOptVersion.java
@@ -0,0 +1,58 @@
+/*
+ * ============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.tosca.authorative.concepts;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.NonNull;
+
+/**
+ * Policy identifier with an optional version; only the "name" is required.
+ */
+@Data
+@NoArgsConstructor
+public class ToscaPolicyIdentifierOptVersion {
+
+ @NonNull
+ private String name;
+
+ private String version;
+
+
+ public ToscaPolicyIdentifierOptVersion(@NonNull String name, String version) {
+ this.name = name;
+ this.version = version;
+ }
+
+ public ToscaPolicyIdentifierOptVersion(ToscaPolicyIdentifierOptVersion source) {
+ this.name = source.name;
+ this.version = source.version;
+ }
+
+ /**
+ * Determines if the version is null/missing.
+ *
+ * @return {@code true} if the version is null/missing, {@code false}
+ */
+ public boolean isNullVersion() {
+ return (version == null);
+ }
+}
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyTypeFilter.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyTypeFilter.java
new file mode 100644
index 000000000..baa95045c
--- /dev/null
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyTypeFilter.java
@@ -0,0 +1,59 @@
+/*-
+ * ============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.tosca.authorative.concepts;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+import lombok.Builder;
+import lombok.Data;
+import lombok.NonNull;
+
+import org.onap.policy.models.base.PfObjectFiler;
+
+/**
+ * Filter class for searches for {@link ToscaPolicyType} instances.
+ * If any fields are null, they are ignored.
+ *
+ * @author Liam Fallon (liam.fallon@est.tech)
+ */
+@Builder
+@Data
+public class ToscaPolicyTypeFilter implements PfObjectFiler<ToscaPolicyType> {
+ public static final String LATEST_VERSION = "LATEST";
+
+ // Regular expression
+ private String name;
+
+ // Regular Expression, set to LATEST_VERRSION to get the latest version
+ private String version;
+
+ @Override
+ public List<ToscaPolicyType> filter(@NonNull final List<ToscaPolicyType> originalList) {
+
+ // @formatter:off
+ return originalList.stream()
+ .filter(p -> name != null && p.getName() .matches(name))
+ .filter(p -> version != null && p.getVersion().matches(version))
+ .collect(Collectors.toList());
+ // @formatter:off
+ }
+}
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyTypeIdentifier.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyTypeIdentifier.java
new file mode 100644
index 000000000..a10c3eb9c
--- /dev/null
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyTypeIdentifier.java
@@ -0,0 +1,50 @@
+/*
+ * ============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.tosca.authorative.concepts;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.NonNull;
+
+/**
+ * Identifies a policy type. Both the name and version must be non-null.
+ */
+@Data
+@NoArgsConstructor
+public class ToscaPolicyTypeIdentifier {
+
+ @NonNull
+ private String name;
+
+ @NonNull
+ private String version;
+
+
+ public ToscaPolicyTypeIdentifier(@NonNull String name, @NonNull String version) {
+ this.name = name;
+ this.version = version;
+ }
+
+ public ToscaPolicyTypeIdentifier(ToscaPolicyTypeIdentifier source) {
+ this.name = source.name;
+ this.version = source.version;
+ }
+}
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaProperty.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaProperty.java
index 84f798bc9..00005f2f8 100644
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaProperty.java
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaProperty.java
@@ -24,6 +24,7 @@
package org.onap.policy.models.tosca.authorative.concepts;
import com.google.gson.annotations.SerializedName;
+import io.swagger.annotations.ApiModelProperty;
import java.util.List;
import lombok.Data;
@@ -46,6 +47,7 @@ public class ToscaProperty {
private String description;
+ @ApiModelProperty(name = "default")
@SerializedName("default")
private String defaultValue;
@@ -55,6 +57,7 @@ public class ToscaProperty {
private List<ToscaConstraint> constraints;
+ @ApiModelProperty(name = "entry_schema")
@SerializedName("entry_schema")
private ToscaEntrySchema entrySchema;
}
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaServiceTemplate.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaServiceTemplate.java
index a9a1783d7..0b19708dc 100644
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaServiceTemplate.java
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaServiceTemplate.java
@@ -24,6 +24,7 @@
package org.onap.policy.models.tosca.authorative.concepts;
import com.google.gson.annotations.SerializedName;
+import io.swagger.annotations.ApiModelProperty;
import java.util.List;
import java.util.Map;
import lombok.Data;
@@ -38,15 +39,19 @@ import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
public class ToscaServiceTemplate extends ToscaEntity {
+ @ApiModelProperty(name = "tosca_definitions_version")
@SerializedName("tosca_definitions_version")
private String toscaDefinitionsVersion;
+ @ApiModelProperty(name = "topology_template")
@SerializedName("topology_template")
private ToscaTopologyTemplate toscaTopologyTemplate;
+ @ApiModelProperty(name = "policy_types")
@SerializedName("policy_types")
private List<Map<String, ToscaPolicyType>> policyTypes;
+ @ApiModelProperty(name = "data_types")
@SerializedName("data_types")
private List<Map<String, ToscaDataType>> dataTypes;
} \ No newline at end of file
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/provider/AuthorativeToscaProvider.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/provider/AuthorativeToscaProvider.java
index 2b6c25e7a..274130a71 100644
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/provider/AuthorativeToscaProvider.java
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/provider/AuthorativeToscaProvider.java
@@ -21,7 +21,9 @@
package org.onap.policy.models.tosca.authorative.provider;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
+import java.util.Map;
import lombok.NonNull;
@@ -29,7 +31,9 @@ import org.onap.policy.models.base.PfConceptKey;
import org.onap.policy.models.base.PfModelException;
import org.onap.policy.models.dao.PfDao;
import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyFilter;
import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyType;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeFilter;
import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate;
import org.onap.policy.models.tosca.simple.provider.SimpleToscaProvider;
@@ -52,7 +56,7 @@ public class AuthorativeToscaProvider {
public ToscaServiceTemplate getPolicyTypes(@NonNull final PfDao dao, final String name, final String version)
throws PfModelException {
- return new SimpleToscaProvider().getPolicyTypes(dao, new PfConceptKey(name, version)).toAuthorative();
+ return new SimpleToscaProvider().getPolicyTypes(dao, name, version).toAuthorative();
}
/**
@@ -66,33 +70,37 @@ public class AuthorativeToscaProvider {
*/
public List<ToscaPolicyType> getPolicyTypeList(@NonNull final PfDao dao, final String name, final String version)
throws PfModelException {
- return new ArrayList<>();
+
+ return (asConceptList(
+ new SimpleToscaProvider().getPolicyTypes(dao, name, version).toAuthorative().getPolicyTypes()));
}
/**
- * Get latest policy types.
+ * Get filtered policy types.
*
* @param dao the DAO to use to access the database
- * @param name the name of the policy type to get, set to null to get all policy types
+ * @param filter the filter for the policy types to get
* @return the policy types found
* @throws PfModelException on errors getting policy types
*/
- public ToscaServiceTemplate getLatestPolicyTypes(@NonNull final PfDao dao, final String name)
- throws PfModelException {
- return null;
+ public ToscaServiceTemplate getFilteredPolicyTypes(@NonNull final PfDao dao,
+ @NonNull final ToscaPolicyTypeFilter filter) throws PfModelException {
+ return new SimpleToscaProvider().getFilteredPolicyTypes(dao, filter).toAuthorative();
}
/**
- * Get latest policy types.
+ * Get filtered policy types.
*
* @param dao the DAO to use to access the database
- * @param name the name of the policy type to get, set to null to get all policy types
+ * @param filter the filter for the policy types to get
* @return the policy types found
* @throws PfModelException on errors getting policy types
*/
- public List<ToscaPolicyType> getLatestPolicyTypeList(@NonNull final PfDao dao, final String name)
- throws PfModelException {
- return new ArrayList<>();
+ public List<ToscaPolicyType> getFilteredPolicyTypeList(@NonNull final PfDao dao,
+ @NonNull final ToscaPolicyTypeFilter filter) throws PfModelException {
+
+ return (asConceptList(
+ new SimpleToscaProvider().getFilteredPolicyTypes(dao, filter).toAuthorative().getPolicyTypes()));
}
/**
@@ -152,7 +160,7 @@ public class AuthorativeToscaProvider {
public ToscaServiceTemplate getPolicies(@NonNull final PfDao dao, @NonNull final String name,
@NonNull final String version) throws PfModelException {
- return new SimpleToscaProvider().getPolicies(dao, new PfConceptKey(name, version)).toAuthorative();
+ return new SimpleToscaProvider().getPolicies(dao, name, version).toAuthorative();
}
/**
@@ -166,61 +174,38 @@ public class AuthorativeToscaProvider {
*/
public List<ToscaPolicy> getPolicyList(@NonNull final PfDao dao, final String name, final String version)
throws PfModelException {
- return new ArrayList<>();
- }
- /**
- * Get policies for a policy type name.
- *
- * @param dao the DAO to use to access the database
- * @param policyTypeName the name of the policy type for which to get policies
- * @param policyTypeVersion the version of the policy type, null returns all versions of deployed policies for
- * policy types
- * @return the policies found
- * @throws PfModelException on errors getting policies
- */
- public ToscaServiceTemplate getPolicies4PolicyType(@NonNull final PfDao dao, @NonNull final String policyTypeName,
- final String policyTypeVersion) throws PfModelException {
- return null;
+ return asConceptList(new SimpleToscaProvider().getPolicies(dao, name, version).toAuthorative()
+ .getToscaTopologyTemplate().getPolicies());
}
/**
- * Get policies for a policy type name.
+ * Get filtered policies.
*
* @param dao the DAO to use to access the database
- * @param policyTypeName the name of the policy type for which to get policies
- * @param policyTypeVersion the version of the policy type, null returns all versions of deployed policies for
- * policy types
+ * @param filter the filter for the policies to get
* @return the policies found
* @throws PfModelException on errors getting policies
*/
- public List<ToscaPolicy> getPolicyList4PolicyType(@NonNull final PfDao dao, @NonNull final String policyTypeName,
- final String policyTypeVersion) throws PfModelException {
- return new ArrayList<>();
- }
+ public ToscaServiceTemplate getFilteredPolicies(@NonNull final PfDao dao, @NonNull final ToscaPolicyFilter filter)
+ throws PfModelException {
- /**
- * Get latest policies.
- *
- * @param dao the DAO to use to access the database
- * @param name the name of the policy to get, null to get all policies
- * @return the policies found
- * @throws PfModelException on errors getting policies
- */
- public ToscaServiceTemplate getLatestPolicies(@NonNull final PfDao dao, final String name) throws PfModelException {
- return null;
+ return new SimpleToscaProvider().getFilteredPolicies(dao, filter).toAuthorative();
}
/**
- * Get latest policies.
+ * Get filtered policies.
*
* @param dao the DAO to use to access the database
- * @param name the name of the policy to get, null to get all policies
+ * @param filter the filter for the policies to get
* @return the policies found
* @throws PfModelException on errors getting policies
*/
- public List<ToscaPolicy> getLatestPolicyList(@NonNull final PfDao dao, final String name) throws PfModelException {
- return new ArrayList<>();
+ public List<ToscaPolicy> getFilteredPolicyList(@NonNull final PfDao dao, @NonNull final ToscaPolicyFilter filter)
+ throws PfModelException {
+
+ return asConceptList(new SimpleToscaProvider().getFilteredPolicies(dao, filter).toAuthorative()
+ .getToscaTopologyTemplate().getPolicies());
}
/**
@@ -267,4 +252,25 @@ public class AuthorativeToscaProvider {
return new SimpleToscaProvider().deletePolicy(dao, new PfConceptKey(name, version)).toAuthorative();
}
+
+ /**
+ * Return the contents of a list of maps as a plain list.
+ *
+ * @param listOfMaps the list of maps
+ * @return the plain list
+ */
+ private <T> List<T> asConceptList(final List<Map<String, T>> listOfMaps) {
+ if (listOfMaps == null) {
+ return Collections.emptyList();
+ }
+
+ List<T> returnList = new ArrayList<>();
+ for (Map<String, T> conceptMap : listOfMaps) {
+ for (T concept : conceptMap.values()) {
+ returnList.add(concept);
+ }
+ }
+
+ return returnList;
+ }
}
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/legacy/concepts/LegacyGuardPolicyInput.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/legacy/concepts/LegacyGuardPolicyInput.java
index 18853c100..819fcba75 100644
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/legacy/concepts/LegacyGuardPolicyInput.java
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/legacy/concepts/LegacyGuardPolicyInput.java
@@ -22,7 +22,7 @@
package org.onap.policy.models.tosca.legacy.concepts;
import com.google.gson.annotations.SerializedName;
-
+import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
@@ -33,9 +33,11 @@ import lombok.Data;
@Data
public class LegacyGuardPolicyInput {
+ @ApiModelProperty(name = "policy-id")
@SerializedName("policy-id")
private String policyId;
+ @ApiModelProperty(name = "policy-version")
@SerializedName("policy-version")
private String policyVersion;
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/legacy/concepts/LegacyOperationalPolicy.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/legacy/concepts/LegacyOperationalPolicy.java
index 1db4d6e20..70453da76 100644
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/legacy/concepts/LegacyOperationalPolicy.java
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/legacy/concepts/LegacyOperationalPolicy.java
@@ -22,7 +22,7 @@
package org.onap.policy.models.tosca.legacy.concepts;
import com.google.gson.annotations.SerializedName;
-
+import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
@@ -33,9 +33,11 @@ import lombok.Data;
@Data
public class LegacyOperationalPolicy {
+ @ApiModelProperty(name = "policy-id")
@SerializedName("policy-id")
private String policyId;
+ @ApiModelProperty(name = "policy-version")
@SerializedName("policy-version")
private String policyVersion;
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/provider/SimpleToscaProvider.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/provider/SimpleToscaProvider.java
index e7e81603a..6c588a50c 100644
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/provider/SimpleToscaProvider.java
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/provider/SimpleToscaProvider.java
@@ -20,14 +20,21 @@
package org.onap.policy.models.tosca.simple.provider;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
import javax.ws.rs.core.Response;
import lombok.NonNull;
+import org.onap.policy.models.base.PfConcept;
import org.onap.policy.models.base.PfConceptKey;
import org.onap.policy.models.base.PfModelException;
import org.onap.policy.models.base.PfModelRuntimeException;
import org.onap.policy.models.dao.PfDao;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyFilter;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeFilter;
import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicies;
import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicy;
import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyType;
@@ -50,12 +57,12 @@ public class SimpleToscaProvider {
* Get policy types.
*
* @param dao the DAO to use to access the database
- * @param policyTypeKey the policy type key for the policy types to be retrieved. A null key name returns all policy
- * types. A null key version returns all versions of the policy type name specified in the key.
+ * @param name the name of the policy type to get, set to null to get all policy types
+ * @param version the version of the policy type to get, set to null to get all versions
* @return the policy types found
* @throws PfModelException on errors getting policy types
*/
- public JpaToscaServiceTemplate getPolicyTypes(@NonNull final PfDao dao, @NonNull final PfConceptKey policyTypeKey)
+ public JpaToscaServiceTemplate getPolicyTypes(@NonNull final PfDao dao, final String name, final String version)
throws PfModelException {
// Create the structure of the TOSCA service template to contain the policy type
@@ -63,18 +70,40 @@ public class SimpleToscaProvider {
serviceTemplate.setPolicyTypes(new JpaToscaPolicyTypes());
// Add the policy type to the TOSCA service template
- JpaToscaPolicyType policyType = dao.get(JpaToscaPolicyType.class, policyTypeKey);
- if (policyType != null) {
- serviceTemplate.getPolicyTypes().getConceptMap().put(policyTypeKey, policyType);
+ List<JpaToscaPolicyType> jpaPolicyTypeList = dao.getFiltered(JpaToscaPolicyType.class, name, version);
+ if (jpaPolicyTypeList != null) {
+ serviceTemplate.getPolicyTypes().getConceptMap().putAll(asConceptMap(jpaPolicyTypeList));
return serviceTemplate;
} else {
- String errorMessage = "policy type not found: " + policyTypeKey.getId();
+ String errorMessage = "policy type not found: " + name + ":" + version;
LOGGER.warn(errorMessage);
throw new PfModelRuntimeException(Response.Status.BAD_REQUEST, errorMessage);
}
}
/**
+ * Get filtered policy types.
+ *
+ * @param dao the DAO to use to access the database
+ * @param filter the filter for the policy types to get
+ * @return the policy types found
+ * @throws PfModelException on errors getting policy types
+ */
+ public JpaToscaServiceTemplate getFilteredPolicyTypes(@NonNull final PfDao dao,
+ @NonNull final ToscaPolicyTypeFilter filter) throws PfModelException {
+
+ // Create the structure of the TOSCA service template to contain the policy type
+ JpaToscaServiceTemplate serviceTemplate = new JpaToscaServiceTemplate();
+ serviceTemplate.setPolicyTypes(new JpaToscaPolicyTypes());
+
+ List<JpaToscaPolicyType> jpaPolicyTypeList = dao.getAll(JpaToscaPolicyType.class);
+ // TODO: The actual filtering
+
+ serviceTemplate.getPolicyTypes().getConceptMap().putAll(asConceptMap(jpaPolicyTypeList));
+ return serviceTemplate;
+ }
+
+ /**
* Create policy types.
*
* @param dao the DAO to use to access the database
@@ -143,11 +172,11 @@ public class SimpleToscaProvider {
* @return the TOSCA service template containing the policy types that were deleted
* @throws PfModelException on errors deleting policy types
*/
- public JpaToscaServiceTemplate deletePolicyType(@NonNull final PfDao dao,
- @NonNull final PfConceptKey policyTypeKey)
+ public JpaToscaServiceTemplate deletePolicyType(@NonNull final PfDao dao, @NonNull final PfConceptKey policyTypeKey)
throws PfModelException {
- JpaToscaServiceTemplate serviceTemplate = getPolicyTypes(dao, policyTypeKey);
+ JpaToscaServiceTemplate serviceTemplate =
+ getPolicyTypes(dao, policyTypeKey.getName(), policyTypeKey.getVersion());
dao.delete(JpaToscaPolicyType.class, policyTypeKey);
@@ -158,12 +187,12 @@ public class SimpleToscaProvider {
* Get policies.
*
* @param dao the DAO to use to access the database
- * @param policyKey the policy key for the policies to be retrieved. The parent name and version must be specified.
- * A null local name returns all policies for a parent policy type.
+ * @param name the name of the policy to get, set to null to get all policy types
+ * @param version the version of the policy to get, set to null to get all versions
* @return the policies found
* @throws PfModelException on errors getting policies
*/
- public JpaToscaServiceTemplate getPolicies(@NonNull final PfDao dao, @NonNull final PfConceptKey policyKey)
+ public JpaToscaServiceTemplate getPolicies(@NonNull final PfDao dao, final String name, final String version)
throws PfModelException {
// Create the structure of the TOSCA service template to contain the policy type
@@ -171,19 +200,42 @@ public class SimpleToscaProvider {
serviceTemplate.setTopologyTemplate(new JpaToscaTopologyTemplate());
serviceTemplate.getTopologyTemplate().setPolicies(new JpaToscaPolicies());
- // Add the policy to the TOSCA service template
- JpaToscaPolicy policy = dao.get(JpaToscaPolicy.class, policyKey);
- if (policy != null) {
- serviceTemplate.getTopologyTemplate().getPolicies().getConceptMap().put(policyKey, policy);
+ // Add the policy type to the TOSCA service template
+ List<JpaToscaPolicy> jpaPolicyList = dao.getFiltered(JpaToscaPolicy.class, name, version);
+ if (jpaPolicyList != null) {
+ serviceTemplate.getTopologyTemplate().getPolicies().getConceptMap().putAll(asConceptMap(jpaPolicyList));
return serviceTemplate;
} else {
- String errorMessage = "policy not found: " + policyKey.getId();
+ String errorMessage = "policy not found: " + name + ":" + version;
LOGGER.warn(errorMessage);
throw new PfModelRuntimeException(Response.Status.BAD_REQUEST, errorMessage);
}
}
/**
+ * Get filtered policies.
+ *
+ * @param dao the DAO to use to access the database
+ * @param filter the filter for the policies to get
+ * @return the policies found
+ * @throws PfModelException on errors getting policies
+ */
+ public JpaToscaServiceTemplate getFilteredPolicies(@NonNull final PfDao dao,
+ @NonNull final ToscaPolicyFilter filter) throws PfModelException {
+
+ // Create the structure of the TOSCA service template to contain the policy type
+ JpaToscaServiceTemplate serviceTemplate = new JpaToscaServiceTemplate();
+ serviceTemplate.setTopologyTemplate(new JpaToscaTopologyTemplate());
+ serviceTemplate.getTopologyTemplate().setPolicies(new JpaToscaPolicies());
+
+ List<JpaToscaPolicy> jpaPolicyList = dao.getAll(JpaToscaPolicy.class);
+ // TODO: Do the actual filtering
+
+ serviceTemplate.getTopologyTemplate().getPolicies().getConceptMap().putAll(asConceptMap(jpaPolicyList));
+ return serviceTemplate;
+ }
+
+ /**
* Create policies.
*
* @param dao the DAO to use to access the database
@@ -254,10 +306,25 @@ public class SimpleToscaProvider {
public JpaToscaServiceTemplate deletePolicy(@NonNull final PfDao dao, @NonNull final PfConceptKey policyKey)
throws PfModelException {
- JpaToscaServiceTemplate serviceTemplate = getPolicies(dao, policyKey);
+ JpaToscaServiceTemplate serviceTemplate = getPolicies(dao, policyKey.getName(), policyKey.getVersion());
dao.delete(JpaToscaPolicy.class, policyKey);
return serviceTemplate;
}
+
+ /**
+ * Convert a list of concepts to a map of concepts.
+ *
+ * @param conceptList the concept list
+ * @return the concept map
+ */
+ private <T extends PfConcept> Map<PfConceptKey, T> asConceptMap(List<T> conceptList) {
+ Map<PfConceptKey, T> conceptMap = new LinkedHashMap<>();
+ for (T concept : conceptList) {
+ conceptMap.put((PfConceptKey) concept.getKey(), concept);
+ }
+
+ return conceptMap;
+ }
}
diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/TestPojos.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/TestPojos.java
index 7c813a625..15240665d 100644
--- a/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/TestPojos.java
+++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/TestPojos.java
@@ -22,6 +22,7 @@
package org.onap.policy.models.tosca.authorative.concepts;
+import com.openpojo.reflection.filters.FilterClassName;
import com.openpojo.reflection.filters.FilterPackageInfo;
import com.openpojo.validation.Validator;
import com.openpojo.validation.ValidatorBuilder;
@@ -44,9 +45,24 @@ public class TestPojos {
@Test
public void testPojos() {
- final Validator validator = ValidatorBuilder.create().with(new ToStringTester())
- .with(new SetterMustExistRule()).with(new GetterMustExistRule()).with(new SetterTester())
- .with(new GetterTester()).build();
- validator.validate(POJO_PACKAGE, new FilterPackageInfo());
+ // @formatter:off
+ final Validator validator = ValidatorBuilder
+ .create()
+ .with(new ToStringTester())
+ .with(new SetterMustExistRule())
+ .with(new GetterMustExistRule())
+ .with(new SetterTester())
+ .with(new GetterTester())
+ .build();
+ validator.validate(POJO_PACKAGE,
+ new FilterPackageInfo(),
+ new FilterClassName(
+ org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyFilter.class.getName()),
+ new FilterClassName(
+ org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeFilter.class.getName()),
+ new FilterClassName(
+ ToscaIdentifierTestBase.class.getName())
+ );
+ // @formatter:on
}
}
diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/TestToscaPolicy.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/TestToscaPolicy.java
new file mode 100644
index 000000000..881a69d07
--- /dev/null
+++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/TestToscaPolicy.java
@@ -0,0 +1,49 @@
+/*
+ * ============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.tosca.authorative.concepts;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+/**
+ * Tests methods not tested by {@link TestPojos}.
+ */
+public class TestToscaPolicy {
+
+ @Test
+ public void testGetIdentifier_testGetTypeIdentifier() {
+ ToscaPolicy policy = new ToscaPolicy();
+
+ policy.setName("my_name");
+ policy.setVersion("1.2.3");
+ policy.setType("my_type");
+ policy.setTypeVersion("3.2.1");
+
+ ToscaPolicyIdentifier ident = policy.getIdentifier();
+ assertEquals("my_name", ident.getName());
+ assertEquals("1.2.3", ident.getVersion());
+
+ ToscaPolicyTypeIdentifier type = policy.getTypeIdentifier();
+ assertEquals("my_type", type.getName());
+ assertEquals("3.2.1", type.getVersion());
+ }
+}
diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/TestToscaPolicyIdentifier.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/TestToscaPolicyIdentifier.java
new file mode 100644
index 000000000..0dc9eb13c
--- /dev/null
+++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/TestToscaPolicyIdentifier.java
@@ -0,0 +1,62 @@
+/*
+ * ============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.tosca.authorative.concepts;
+
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+/**
+ * Test the other constructors, as {@link TestPojos} tests the other methods.
+ */
+public class TestToscaPolicyIdentifier extends ToscaIdentifierTestBase<ToscaPolicyIdentifier> {
+ private static final String NAME = "my-name";
+ private static final String VERSION = "1.2.3";
+
+ public TestToscaPolicyIdentifier() {
+ super(ToscaPolicyIdentifier.class);
+ }
+
+ @Test
+ public void testAllArgsConstructor() {
+ assertThatThrownBy(() -> new ToscaPolicyIdentifier(null, VERSION)).isInstanceOf(NullPointerException.class);
+ assertThatThrownBy(() -> new ToscaPolicyIdentifier(NAME, null)).isInstanceOf(NullPointerException.class);
+
+ ToscaPolicyIdentifier orig = new ToscaPolicyIdentifier(NAME, VERSION);
+ assertEquals(NAME, orig.getName());
+ assertEquals(VERSION, orig.getVersion());
+ }
+
+ @Test
+ public void testCopyConstructor() {
+ assertThatThrownBy(() -> new ToscaPolicyIdentifier(null)).isInstanceOf(NullPointerException.class);
+
+ ToscaPolicyIdentifier orig = new ToscaPolicyIdentifier();
+
+ // verify with null values
+ assertEquals(orig.toString(), new ToscaPolicyIdentifier(orig).toString());
+
+ // verify with all values
+ orig = new ToscaPolicyIdentifier(NAME, VERSION);
+ assertEquals(orig.toString(), new ToscaPolicyIdentifier(orig).toString());
+ }
+}
diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/TestToscaPolicyIdentifierOptVersion.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/TestToscaPolicyIdentifierOptVersion.java
new file mode 100644
index 000000000..999dca565
--- /dev/null
+++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/TestToscaPolicyIdentifierOptVersion.java
@@ -0,0 +1,71 @@
+/*
+ * ============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.tosca.authorative.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.assertTrue;
+
+import org.junit.Test;
+
+/**
+ * Test the other constructors, as {@link TestPojos} tests the other methods.
+ */
+public class TestToscaPolicyIdentifierOptVersion extends ToscaIdentifierTestBase<ToscaPolicyIdentifierOptVersion> {
+ private static final String NAME = "my-name";
+ private static final String VERSION = "1.2.3";
+
+ public TestToscaPolicyIdentifierOptVersion() {
+ super(ToscaPolicyIdentifierOptVersion.class);
+ }
+
+ @Test
+ public void testAllArgsConstructor_testIsNullVersion() {
+ assertThatThrownBy(() -> new ToscaPolicyIdentifierOptVersion(null, VERSION))
+ .isInstanceOf(NullPointerException.class);
+
+ // with null version
+ ToscaPolicyIdentifierOptVersion orig = new ToscaPolicyIdentifierOptVersion(NAME, null);
+ assertEquals(NAME, orig.getName());
+ assertEquals(null, orig.getVersion());
+ assertTrue(orig.isNullVersion());
+
+ orig = new ToscaPolicyIdentifierOptVersion(NAME, VERSION);
+ assertEquals(NAME, orig.getName());
+ assertEquals(VERSION, orig.getVersion());
+ assertFalse(orig.isNullVersion());
+ }
+
+ @Test
+ public void testCopyConstructor() throws Exception {
+ assertThatThrownBy(() -> new ToscaPolicyIdentifierOptVersion(null)).isInstanceOf(NullPointerException.class);
+
+ ToscaPolicyIdentifierOptVersion orig = new ToscaPolicyIdentifierOptVersion();
+
+ // verify with null values
+ assertEquals(orig.toString(), new ToscaPolicyIdentifierOptVersion(orig).toString());
+
+ // verify with all values
+ orig = makeIdent(NAME, VERSION);
+ assertEquals(orig.toString(), new ToscaPolicyIdentifierOptVersion(orig).toString());
+ }
+}
diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/TestToscaPolicyTypeIdentifier.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/TestToscaPolicyTypeIdentifier.java
new file mode 100644
index 000000000..778d60c09
--- /dev/null
+++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/TestToscaPolicyTypeIdentifier.java
@@ -0,0 +1,63 @@
+/*
+ * ============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.tosca.authorative.concepts;
+
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+/**
+ * Test the other constructors, as {@link TestPojos} tests the other methods.
+ */
+public class TestToscaPolicyTypeIdentifier extends ToscaIdentifierTestBase<ToscaPolicyTypeIdentifier> {
+ private static final String NAME = "my-name";
+ private static final String VERSION = "1.2.3";
+
+ public TestToscaPolicyTypeIdentifier() {
+ super(ToscaPolicyTypeIdentifier.class);
+ }
+
+ @Test
+ public void testAllArgsConstructor() {
+ assertThatThrownBy(() -> new ToscaPolicyTypeIdentifier(null, VERSION)).isInstanceOf(NullPointerException.class);
+ assertThatThrownBy(() -> new ToscaPolicyTypeIdentifier(NAME, null)).isInstanceOf(NullPointerException.class);
+
+ ToscaPolicyTypeIdentifier orig = new ToscaPolicyTypeIdentifier(NAME, VERSION);
+ assertEquals(NAME, orig.getName());
+ assertEquals(VERSION, orig.getVersion());
+ }
+
+ @Test
+ public void testCopyConstructor() {
+ assertThatThrownBy(() -> new ToscaPolicyTypeIdentifier(null)).isInstanceOf(NullPointerException.class);
+
+ ToscaPolicyTypeIdentifier orig = new ToscaPolicyTypeIdentifier();
+
+ // verify with null values
+ assertEquals(orig.toString(), new ToscaPolicyTypeIdentifier(orig).toString());
+
+ // verify with all values
+ orig = new ToscaPolicyTypeIdentifier(NAME, VERSION);
+ assertEquals(orig.toString(), new ToscaPolicyTypeIdentifier(orig).toString());
+ }
+
+}
diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaIdentifierTestBase.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaIdentifierTestBase.java
new file mode 100644
index 000000000..5c935394b
--- /dev/null
+++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaIdentifierTestBase.java
@@ -0,0 +1,81 @@
+/*
+ * ============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.tosca.authorative.concepts;
+
+import org.onap.policy.common.utils.coder.Coder;
+import org.onap.policy.common.utils.coder.CoderException;
+import org.onap.policy.common.utils.coder.StandardCoder;
+
+/**
+ * Super class to test identity keys.
+ *
+ * @param <T> type of key being tested
+ */
+public class ToscaIdentifierTestBase<T> {
+
+ private static final Coder coder = new StandardCoder();
+
+ private final Class<T> clazz;
+
+
+ /**
+ * Constructs the object.
+ * @param clazz the type of class being tested
+ */
+ public ToscaIdentifierTestBase(Class<T> clazz) {
+ this.clazz = clazz;
+ }
+
+ /**
+ * Makes an identifier. Uses JSON which does no error checking.
+ *
+ * @param name name to put into the identifier
+ * @param version version to put into the identifier
+ * @return a new identifier
+ * @throws CoderException if the JSON cannot be decoded
+ */
+ public T makeIdent(String name, String version) throws CoderException {
+ StringBuilder bldr = new StringBuilder();
+ bldr.append("{");
+
+ if (name != null) {
+ bldr.append("'name':'");
+ bldr.append(name);
+ bldr.append("'");
+ }
+
+ if (version != null) {
+ if (name != null) {
+ bldr.append(',');
+ }
+
+ bldr.append("'version':'");
+ bldr.append(version);
+ bldr.append("'");
+ }
+
+ bldr.append("}");
+
+ String json = bldr.toString().replace('\'', '"');
+
+ return coder.decode(json, clazz);
+ }
+}
diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/provider/SimpleToscaProviderTest.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/provider/SimpleToscaProviderTest.java
index 0d486e3ea..dca34b08e 100644
--- a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/provider/SimpleToscaProviderTest.java
+++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/provider/SimpleToscaProviderTest.java
@@ -22,6 +22,7 @@ package org.onap.policy.models.tosca.simple.provider;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.sql.Connection;
@@ -93,26 +94,12 @@ public class SimpleToscaProviderTest {
@Test
public void testPoliciesGet() throws Exception {
try {
- new SimpleToscaProvider().getPolicies(null, null);
+ new SimpleToscaProvider().getPolicies(null, 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());
- }
-
ToscaServiceTemplate toscaServiceTemplate = standardCoder.decode(
ResourceUtils.getResourceAsString("policies/vCPE.policy.monitoring.input.tosca.json"),
ToscaServiceTemplate.class);
@@ -129,7 +116,7 @@ public class SimpleToscaProviderTest {
PfConceptKey policyKey = new PfConceptKey("onap.restart.tca:1.0.0");
JpaToscaServiceTemplate gotServiceTemplate =
- new SimpleToscaProvider().getPolicies(pfDao, new PfConceptKey(policyKey));
+ new SimpleToscaProvider().getPolicies(pfDao, policyKey.getName(), policyKey.getVersion());
assertEquals(originalServiceTemplate.getTopologyTemplate().getPolicies().get(policyKey),
gotServiceTemplate.getTopologyTemplate().getPolicies().get(policyKey));
@@ -254,12 +241,8 @@ public class SimpleToscaProviderTest {
assertEquals(originalServiceTemplate.getTopologyTemplate().getPolicies().get(policyKey),
deletedServiceTemplate.getTopologyTemplate().getPolicies().get(policyKey));
- try {
- new SimpleToscaProvider().getPolicies(pfDao, new PfConceptKey(policyKey));
- fail("test should throw an exception here");
- } catch (Exception exc) {
- assertEquals("policy not found: onap.restart.tca:1.0.0", exc.getMessage());
- }
+ assertTrue(new SimpleToscaProvider().getPolicies(pfDao, policyKey.getName(), policyKey.getVersion())
+ .getTopologyTemplate().getPolicies().getConceptMap().isEmpty());
}
@Test