diff options
Diffstat (limited to 'models-tosca')
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 |