Merge "move actors code in drools-applications to policy/models"
diff --git a/models-base/src/main/java/org/onap/policy/models/base/PfAuthorative.java b/models-base/src/main/java/org/onap/policy/models/base/PfAuthorative.java
index fd35d20..b0610e4 100644
--- a/models-base/src/main/java/org/onap/policy/models/base/PfAuthorative.java
+++ b/models-base/src/main/java/org/onap/policy/models/base/PfAuthorative.java
@@ -37,7 +37,8 @@
/**
* Set an instance of the persist concept to the equivalent values as the other concept.
+ *
+ * @param authorativeConcept the authorative concept
*/
- public void fromAuthorative(final T authorativeClass);
-
+ public void fromAuthorative(final T authorativeConcept);
}
diff --git a/models-base/src/main/java/org/onap/policy/models/base/PfConceptContainer.java b/models-base/src/main/java/org/onap/policy/models/base/PfConceptContainer.java
index 4609461..e197e13 100644
--- a/models-base/src/main/java/org/onap/policy/models/base/PfConceptContainer.java
+++ b/models-base/src/main/java/org/onap/policy/models/base/PfConceptContainer.java
@@ -20,6 +20,9 @@
package org.onap.policy.models.base;
+import java.lang.reflect.ParameterizedType;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
@@ -41,25 +44,26 @@
import org.onap.policy.common.utils.validation.Assertions;
import org.onap.policy.models.base.PfValidationResult.ValidationResult;
+// @formatter:off
/**
- * This class is a concept container and holds a map of concepts. The {@link PfConceptContainer}
- * class implements the helper methods of the {@link PfConceptGetter} interface to allow
- * {@link PfConceptContainer} instances to be retrieved by calling methods directly on this class
- * without referencing the contained map.
+ * This class is a concept container and holds a map of concepts. The {@link PfConceptContainer} class implements the
+ * helper methods of the {@link PfConceptGetter} interface to allow {@link PfConceptContainer} instances to be retrieved
+ * by calling methods directly on this class without referencing the contained map.
*
- * <p>Validation checks that the container key is not null. An error is issued if no concepts are
- * defined in the container. Each concept entry is checked to ensure that its key and value are not
- * null and that the key matches the key in the map value. Each concept entry is then validated
- * individually.
+ * <p>Validation checks that a container key is not null. An error is issued if no concepts are defined in a container.
+ * Each concept entry is checked to ensure that its key and value are not null and that the key matches the key in the
+ * map value. Each concept entry is then validated individually.
*
* @param C the concept being contained
*/
+//@formatter:on
@Entity
@Table(name = "PfConceptContainer")
@Data
@EqualsAndHashCode(callSuper = false)
-public class PfConceptContainer<C extends PfConcept> extends PfConcept implements PfConceptGetter<C> {
+public class PfConceptContainer<C extends PfConcept, A extends PfNameVersion> extends PfConcept
+ implements PfConceptGetter<C>, PfAuthorative<List<Map<String, A>>> {
private static final long serialVersionUID = -324211738823208318L;
@EmbeddedId
@@ -69,16 +73,16 @@
private Map<PfConceptKey, C> conceptMap;
/**
- * The Default Constructor creates a {@link PfConceptContainer} object with a null artifact key
- * and creates an empty concept map.
+ * The Default Constructor creates a {@link PfConceptContainer} object with a null artifact key and creates an empty
+ * concept map.
*/
public PfConceptContainer() {
this(new PfConceptKey());
}
/**
- * The Key Constructor creates a {@link PfConceptContainer} object with the given artifact key
- * and creates an empty concept map.
+ * The Key Constructor creates a {@link PfConceptContainer} object with the given artifact key and creates an empty
+ * concept map.
*
* @param key the concept key
*/
@@ -104,7 +108,7 @@
*
* @param copyConcept the concept to copy from
*/
- public PfConceptContainer(@NonNull final PfConceptContainer<C> copyConcept) {
+ public PfConceptContainer(@NonNull final PfConceptContainer<C, A> copyConcept) {
super(copyConcept);
}
@@ -120,6 +124,65 @@
}
@Override
+ public List<Map<String, A>> toAuthorative() {
+ Map<String, A> toscaPolicyMap = new LinkedHashMap<>();
+
+ for (Entry<PfConceptKey, C> conceptEntry : getConceptMap().entrySet()) {
+ @SuppressWarnings("unchecked")
+ PfAuthorative<A> authoritiveImpl = (PfAuthorative<A>) conceptEntry.getValue();
+ toscaPolicyMap.put(conceptEntry.getKey().getName(), authoritiveImpl.toAuthorative());
+ }
+
+ List<Map<String, A>> toscaPolicyMapList = new ArrayList<>();
+ toscaPolicyMapList.add(toscaPolicyMap);
+
+ return toscaPolicyMapList;
+ }
+
+ @Override
+ public void fromAuthorative(List<Map<String, A>> authorativeList) {
+ // Clear any existing map entries
+ conceptMap.clear();
+
+ // Concepts are in lists of maps
+ for (Map<String, A> incomingConceptMap : authorativeList) {
+ // Add the map entries one by one
+ for (Entry<String, A> incomingConceptEntry : incomingConceptMap.entrySet()) {
+ C jpaConcept = getConceptNewInstance();
+
+ // This cast allows us to call the fromAuthorative method
+ @SuppressWarnings("unchecked")
+ PfAuthorative<A> authoritiveImpl = (PfAuthorative<A>) jpaConcept;
+
+ if (incomingConceptEntry.getValue().getName() == null) {
+ incomingConceptEntry.getValue().setName(incomingConceptEntry.getKey());
+ }
+
+ // Set the key name and the rest of the values on the concept
+ authoritiveImpl.fromAuthorative(incomingConceptEntry.getValue());
+
+ // This cast gets the key of the concept
+ PfConceptKey conceptKey = (PfConceptKey) jpaConcept.getKey();
+
+ // Set the concept key of the concept
+ conceptKey.setName(incomingConceptEntry.getValue().getName());
+
+ if (incomingConceptEntry.getValue().getVersion() != null) {
+ conceptKey.setVersion(incomingConceptEntry.getValue().getVersion());
+ }
+
+ // After all that, save the map entry
+ conceptMap.put(conceptKey, jpaConcept);
+ }
+ }
+
+ if (conceptMap.isEmpty()) {
+ throw new PfModelRuntimeException(Response.Status.BAD_REQUEST,
+ "An incoming list of concepts must have at least one entry");
+ }
+ }
+
+ @Override
public void clean() {
key.clean();
for (final Entry<PfConceptKey, C> conceptEntry : conceptMap.entrySet()) {
@@ -162,17 +225,19 @@
if (conceptEntry.getKey().equals(PfConceptKey.getNullKey())) {
result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID,
"key on concept entry " + conceptEntry.getKey() + " may not be the null key"));
- } else if (conceptEntry.getValue() == null) {
- result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID,
- "value on concept entry " + conceptEntry.getKey() + " may not be null"));
- } else if (!conceptEntry.getKey().equals(conceptEntry.getValue().getKey())) {
- result.addValidationMessage(new PfValidationMessage(key, this.getClass(),
- ValidationResult.INVALID, "key on concept entry key " + conceptEntry.getKey()
- + " does not equal concept value key " + conceptEntry.getValue().getKey()));
- result = conceptEntry.getValue().validate(result);
- } else {
- result = conceptEntry.getValue().validate(result);
- }
+ } else
+ if (conceptEntry.getValue() == null) {
+ result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID,
+ "value on concept entry " + conceptEntry.getKey() + " may not be null"));
+ } else
+ if (!conceptEntry.getKey().equals(conceptEntry.getValue().getKey())) {
+ result.addValidationMessage(new PfValidationMessage(key, this.getClass(),
+ ValidationResult.INVALID, "key on concept entry key " + conceptEntry.getKey()
+ + " does not equal concept value key " + conceptEntry.getValue().getKey()));
+ result = conceptEntry.getValue().validate(result);
+ } else {
+ result = conceptEntry.getValue().validate(result);
+ }
}
return result;
}
@@ -190,7 +255,7 @@
}
@SuppressWarnings("unchecked")
- final PfConceptContainer<C> other = (PfConceptContainer<C>) otherConcept;
+ final PfConceptContainer<C, A> other = (PfConceptContainer<C, A>) otherConcept;
int retVal = key.compareTo(other.key);
if (retVal != 0) {
return retVal;
@@ -208,12 +273,13 @@
Assertions.instanceOf(target, PfConceptContainer.class);
@SuppressWarnings("unchecked")
- final PfConceptContainer<C> copy = (PfConceptContainer<C>) target;
+ final PfConceptContainer<C, A> copy = (PfConceptContainer<C, A>) target;
copy.setKey(new PfConceptKey(key));
final Map<PfConceptKey, C> newConceptMap = new TreeMap<>();
for (final Entry<PfConceptKey, C> conceptMapEntry : conceptMap.entrySet()) {
- newConceptMap.put(new PfConceptKey(conceptMapEntry.getKey()),
- new ConceptCloner().cloneConcept(conceptMapEntry.getValue()));
+ C newC = getConceptNewInstance();
+ conceptMapEntry.getValue().copyTo(newC);
+ newConceptMap.put(new PfConceptKey(conceptMapEntry.getKey()), newC);
}
copy.setConceptMap(newConceptMap);
@@ -248,21 +314,19 @@
}
/**
- * Private inner class that returns a clone of a concept by calling the copy constructor on the
- * original class.
+ * Get a new empty instance of a concept for this concept map.
+ *
+ * @return the new instance
*/
- private class ConceptCloner {
- @SuppressWarnings("unchecked")
- public C cloneConcept(final C originalConcept) {
- try {
- C clonedConcept = (C) originalConcept.getClass().newInstance();
- originalConcept.copyTo(clonedConcept);
- return clonedConcept;
- } catch (Exception ex) {
- throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR,
- "Failed to create a clone of class \"" + originalConcept.getClass().getCanonicalName() + "\"",
- ex);
- }
+ @SuppressWarnings("unchecked")
+ private C getConceptNewInstance() {
+ try {
+ String conceptClassName =
+ ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0].getTypeName();
+ return (C) Class.forName(conceptClassName).newInstance();
+ } catch (Exception ex) {
+ throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR,
+ "failed to instantiate instance of container concept class", ex);
}
}
}
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/mapping/package-info.java b/models-base/src/main/java/org/onap/policy/models/base/PfNameVersion.java
similarity index 65%
rename from models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/mapping/package-info.java
rename to models-base/src/main/java/org/onap/policy/models/base/PfNameVersion.java
index e9b87c6..47238fc 100644
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/mapping/package-info.java
+++ b/models-base/src/main/java/org/onap/policy/models/base/PfNameVersion.java
@@ -1,8 +1,6 @@
/*-
* ============LICENSE_START=======================================================
- * ONAP Policy Model
- * ================================================================================
- * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * 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.
@@ -20,12 +18,19 @@
* ============LICENSE_END=========================================================
*/
+package org.onap.policy.models.base;
+
/**
- * This package includes all the mappers used to transform plain TOSCA POJOs into internal representation
- * of TOSCA concepts with JPA annotations added.
- */
-/**
- * @author Chenfei Gao (cgao@research.att.com)
+ * An interface that forces a POJO to have getName() and getVersion() methods.
*
+ * @author Liam Fallon (liam.fallon@est.tech)
*/
-package org.onap.policy.models.tosca.authorative.mapping;
\ No newline at end of file
+public interface PfNameVersion {
+ public String getName();
+
+ public void setName(final String name);
+
+ public String getVersion();
+
+ public void setVersion(final String version);
+}
diff --git a/models-base/src/test/java/org/onap/policy/models/base/PfConceptContainerTest.java b/models-base/src/test/java/org/onap/policy/models/base/PfConceptContainerTest.java
index 0ed04c4..3ae7c4c 100644
--- a/models-base/src/test/java/org/onap/policy/models/base/PfConceptContainerTest.java
+++ b/models-base/src/test/java/org/onap/policy/models/base/PfConceptContainerTest.java
@@ -20,18 +20,23 @@
package org.onap.policy.models.base;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import org.junit.Test;
+import org.onap.policy.models.base.testconcepts.DummyAuthorativeConcept;
+import org.onap.policy.models.base.testconcepts.DummyBadPfConceptContainer;
import org.onap.policy.models.base.testconcepts.DummyPfConcept;
import org.onap.policy.models.base.testconcepts.DummyPfConceptContainer;
import org.onap.policy.models.base.testconcepts.DummyPfConceptSub;
@@ -44,7 +49,7 @@
public class PfConceptContainerTest {
@Test
- public void test() {
+ public void testConceptContainer() {
DummyPfConceptContainer container = new DummyPfConceptContainer();
assertNotNull(container);
@@ -179,16 +184,38 @@
assertEquals(conceptKey, returnSet.iterator().next().getKey());
container.getConceptMap().put(conceptKey, new DummyPfConceptSub(conceptKey));
+ }
- DummyPfConceptContainer exceptionOnCopyContainer = new DummyPfConceptContainer();
- try {
- container.copyTo(exceptionOnCopyContainer);
- fail("test should throw an exception here");
- } catch (Exception exc) {
- assertEquals(
- "Failed to create a clone of class \"org.onap.policy.models.base.testconcepts.DummyPfConceptSub\"",
- exc.getMessage());
- }
+ @Test
+ public void testAuthorative() {
+ Map<String, DummyAuthorativeConcept> dacMap = new LinkedHashMap<>();
+ dacMap.put("name0", new DummyAuthorativeConcept("name0", "1.2.3", "Hello"));
+ dacMap.put("name1", new DummyAuthorativeConcept("name1", "1.2.3", "Hi"));
+ dacMap.put("name2", new DummyAuthorativeConcept("name2", "1.2.3", "Howdy"));
+
+ List<Map<String, DummyAuthorativeConcept>> authorativeList = new ArrayList<>();
+ authorativeList.add(dacMap);
+
+ DummyPfConceptContainer container = new DummyPfConceptContainer();
+ container.fromAuthorative(authorativeList);
+
+ assertEquals("Hello", container.getConceptMap().get(new PfConceptKey("name0:1.2.3")).getDescription());
+ assertEquals("Hi", container.getConceptMap().get(new PfConceptKey("name1:1.2.3")).getDescription());
+ assertEquals("Howdy", container.getConceptMap().get(new PfConceptKey("name2:1.2.3")).getDescription());
+
+ List<Map<String, DummyAuthorativeConcept>> outMapList = container.toAuthorative();
+
+ assertEquals(dacMap, outMapList.get(0));
+
+ DummyBadPfConceptContainer badContainer = new DummyBadPfConceptContainer();
+ assertThatThrownBy(() -> {
+ badContainer.fromAuthorative(authorativeList);
+ }).hasMessage("failed to instantiate instance of container concept class");
+
+ authorativeList.clear();
+ assertThatThrownBy(() -> {
+ container.fromAuthorative(authorativeList);
+ }).hasMessage("An incoming list of concepts must have at least one entry");
}
@Test(expected = NullPointerException.class)
diff --git a/models-base/src/test/java/org/onap/policy/models/base/testconcepts/DummyAuthorativeConcept.java b/models-base/src/test/java/org/onap/policy/models/base/testconcepts/DummyAuthorativeConcept.java
new file mode 100644
index 0000000..02ff750
--- /dev/null
+++ b/models-base/src/test/java/org/onap/policy/models/base/testconcepts/DummyAuthorativeConcept.java
@@ -0,0 +1,52 @@
+/*-
+ * ============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.base.testconcepts;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import org.onap.policy.models.base.PfNameVersion;
+
+/**
+ * Dummy authorative concept.
+ *
+ * @author Liam Fallon (liam.fallon@est.tech)
+ */
+@Data
+@NoArgsConstructor
+public class DummyAuthorativeConcept implements PfNameVersion {
+ private String name;
+ private String version;
+ private String description;
+
+ /**
+ * Constructor.
+ *
+ * @param name the name
+ * @param version the version
+ * @param description the description
+ */
+ public DummyAuthorativeConcept(final String name, final String version, final String description) {
+ this.name = name;
+ this.version = version;
+ this.description = description;
+ }
+}
diff --git a/models-base/src/test/java/org/onap/policy/models/base/testconcepts/DummyBadPfConcept.java b/models-base/src/test/java/org/onap/policy/models/base/testconcepts/DummyBadPfConcept.java
new file mode 100644
index 0000000..05fd599
--- /dev/null
+++ b/models-base/src/test/java/org/onap/policy/models/base/testconcepts/DummyBadPfConcept.java
@@ -0,0 +1,56 @@
+/*-
+ * ============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.base.testconcepts;
+
+import lombok.NonNull;
+
+import org.onap.policy.models.base.PfConceptKey;
+
+/**
+ * Bad dummy concept throws exception on default constructor.
+ *
+ * @author Liam Fallon (liam.fallon@est.tech)
+ */
+public class DummyBadPfConcept extends DummyPfConcept {
+ private static final long serialVersionUID = 1L;
+
+ public DummyBadPfConcept() {
+ throw new NumberFormatException();
+ }
+
+ /**
+ * The Key Constructor creates a {@link DummyPfConcept} object with the given concept key.
+ *
+ * @param key the key
+ */
+ public DummyBadPfConcept(@NonNull final PfConceptKey key) {
+ throw new NumberFormatException();
+ }
+
+ /**
+ * Copy constructor.
+ *
+ * @param copyConcept the concept to copy from
+ */
+ public DummyBadPfConcept(final DummyBadPfConcept copyConcept) {
+ throw new NumberFormatException();
+ }
+}
diff --git a/models-base/src/test/java/org/onap/policy/models/base/testconcepts/DummyBadPfConceptContainer.java b/models-base/src/test/java/org/onap/policy/models/base/testconcepts/DummyBadPfConceptContainer.java
new file mode 100644
index 0000000..c328a01
--- /dev/null
+++ b/models-base/src/test/java/org/onap/policy/models/base/testconcepts/DummyBadPfConceptContainer.java
@@ -0,0 +1,77 @@
+/*-
+ * ============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.base.testconcepts;
+
+import java.util.Map;
+
+import lombok.NonNull;
+
+import org.onap.policy.models.base.PfConceptContainer;
+import org.onap.policy.models.base.PfConceptKey;
+
+/**
+ * Dummy container for PF concepts.
+ *
+ * @author Liam Fallon (liam.fallon@est.tech)
+ */
+public class DummyBadPfConceptContainer extends PfConceptContainer<DummyBadPfConcept, DummyAuthorativeConcept> {
+ private static final long serialVersionUID = -3018432331484294280L;
+
+
+ /**
+ * The Default Constructor creates a {@link DummyBadPfConceptContainer} object with a null artifact key
+ * and creates an empty concept map.
+ */
+ public DummyBadPfConceptContainer() {
+ super();
+ }
+
+ /**
+ * The Key Constructor creates a {@link DummyBadPfConceptContainer} object with the given artifact key and
+ * creates an empty concept map.
+ *
+ * @param key the concept key
+ */
+ public DummyBadPfConceptContainer(@NonNull final PfConceptKey key) {
+ super(key);
+ }
+
+ /**
+ * This Constructor creates an concept container with all of its fields defined.
+ *
+ * @param key the concept container key
+ * @param conceptMap the concepts to be stored in the concept container
+ */
+ public DummyBadPfConceptContainer(@NonNull final PfConceptKey key,
+ @NonNull final Map<PfConceptKey, DummyBadPfConcept> conceptMap) {
+ super(key, conceptMap);
+ }
+
+ /**
+ * Copy constructor.
+ *
+ * @param copyConcept the concept to copy from
+ */
+ public DummyBadPfConceptContainer(@NonNull final DummyBadPfConceptContainer copyConcept) {
+ super(copyConcept);
+ }
+
+}
diff --git a/models-base/src/test/java/org/onap/policy/models/base/testconcepts/DummyPfConcept.java b/models-base/src/test/java/org/onap/policy/models/base/testconcepts/DummyPfConcept.java
index 9fb6b57..5e74fb2 100644
--- a/models-base/src/test/java/org/onap/policy/models/base/testconcepts/DummyPfConcept.java
+++ b/models-base/src/test/java/org/onap/policy/models/base/testconcepts/DummyPfConcept.java
@@ -30,6 +30,7 @@
import org.apache.commons.lang3.ObjectUtils;
import org.onap.policy.common.utils.validation.Assertions;
+import org.onap.policy.models.base.PfAuthorative;
import org.onap.policy.models.base.PfConcept;
import org.onap.policy.models.base.PfConceptKey;
import org.onap.policy.models.base.PfKey;
@@ -39,13 +40,31 @@
@Data
@EqualsAndHashCode(callSuper = false)
-public class DummyPfConcept extends PfConcept {
+public class DummyPfConcept extends PfConcept implements PfAuthorative<DummyAuthorativeConcept> {
private static final long serialVersionUID = 1L;
@EmbeddedId
private PfConceptKey key;
private String description;
+
+ @Override
+ public DummyAuthorativeConcept toAuthorative() {
+ DummyAuthorativeConcept dac = new DummyAuthorativeConcept();
+ dac.setName(key.getName());
+ dac.setVersion(key.getVersion());
+ dac.setDescription(description);
+
+ return dac;
+ }
+
+ @Override
+ public void fromAuthorative(DummyAuthorativeConcept dac) {
+ key.setName(dac.getName());
+ key.setVersion(dac.getVersion());
+ description = dac.getDescription();
+ }
+
/**
* The Default Constructor creates a {@link DummyPfConcept} object with a null key.
*/
diff --git a/models-base/src/test/java/org/onap/policy/models/base/testconcepts/DummyPfConceptContainer.java b/models-base/src/test/java/org/onap/policy/models/base/testconcepts/DummyPfConceptContainer.java
index ac72ef8..45de69e 100644
--- a/models-base/src/test/java/org/onap/policy/models/base/testconcepts/DummyPfConceptContainer.java
+++ b/models-base/src/test/java/org/onap/policy/models/base/testconcepts/DummyPfConceptContainer.java
@@ -32,7 +32,7 @@
*
* @author Liam Fallon (liam.fallon@est.tech)
*/
-public class DummyPfConceptContainer extends PfConceptContainer<DummyPfConcept> {
+public class DummyPfConceptContainer extends PfConceptContainer<DummyPfConcept, DummyAuthorativeConcept> {
private static final long serialVersionUID = -3018432331484294280L;
diff --git a/models-pap/pom.xml b/models-pap/pom.xml
index edb8ee7..78f6df1 100644
--- a/models-pap/pom.xml
+++ b/models-pap/pom.xml
@@ -34,7 +34,7 @@
<dependencies>
<dependency>
<groupId>org.onap.policy.models</groupId>
- <artifactId>models-pdp</artifactId>
+ <artifactId>policy-models-pdp</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
diff --git a/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpStateChange.java b/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpStateChange.java
index bca162e..d8f938b 100644
--- a/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpStateChange.java
+++ b/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpStateChange.java
@@ -28,7 +28,8 @@
import org.onap.policy.models.pdp.enums.PdpState;
/**
- * Class to represent the PDP_STATE_CHANGE message that PAP will send to either PDPGroup/Subgroup or a PDP.
+ * Class to represent the PDP_STATE_CHANGE message that PAP will send to either
+ * PDPGroup/Subgroup or a PDP.
*
* @author Ram Krishna Verma (ram.krishna.verma@est.tech)
*/
@@ -49,4 +50,18 @@
public PdpStateChange() {
super(PdpMessageType.PDP_STATE_CHANGE);
}
+
+ /**
+ * Constructs the object, making a deep copy.
+ *
+ * @param source source from which to copy
+ */
+ public PdpStateChange(PdpStateChange source) {
+ super(PdpMessageType.PDP_STATE_CHANGE);
+
+ this.name = source.name;
+ this.state = source.state;
+ this.pdpGroup = source.pdpGroup;
+ this.pdpSubgroup = source.pdpSubgroup;
+ }
}
diff --git a/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpUpdate.java b/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpUpdate.java
index 5c99a56..c8c8783 100644
--- a/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpUpdate.java
+++ b/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpUpdate.java
@@ -22,7 +22,7 @@
package org.onap.policy.models.pdp.concepts;
import java.util.List;
-
+import java.util.stream.Collectors;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@@ -53,4 +53,21 @@
public PdpUpdate() {
super(PdpMessageType.PDP_UPDATE);
}
+
+ /**
+ * Constructs the object, making a deep copy.
+ *
+ * @param source source from which to copy
+ */
+ public PdpUpdate(PdpUpdate source) {
+ super(PdpMessageType.PDP_UPDATE);
+
+ this.name = source.name;
+ this.pdpType = source.pdpType;
+ this.description = source.description;
+ this.pdpGroup = source.pdpGroup;
+ this.pdpSubgroup = source.pdpSubgroup;
+ this.policies = (source.policies == null ? null
+ : source.policies.stream().map(ToscaPolicy::new).collect(Collectors.toList()));
+ }
}
diff --git a/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PolicyIdent.java b/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PolicyIdent.java
index 6d6b6fe..a62d900 100644
--- a/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PolicyIdent.java
+++ b/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PolicyIdent.java
@@ -20,31 +20,31 @@
package org.onap.policy.models.pdp.concepts;
+import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.NonNull;
-import org.onap.policy.models.base.PfConceptKey;
-import org.onap.policy.models.base.PfValidationResult;
-import org.onap.policy.models.base.Validated;
/**
* Identifies a policy. Both the name and version must be non-null.
*/
-@NonNull
+@Data
@NoArgsConstructor
-public class PolicyIdent extends PfConceptKey {
- private static final long serialVersionUID = 1L;
- private static final Validated validator = new Validated();
+public class PolicyIdent {
- public PolicyIdent(String name, String version) {
- super(name, version);
+ @NonNull
+ private String name;
+
+ @NonNull
+ private String version;
+
+
+ public PolicyIdent(@NonNull String name, @NonNull String version) {
+ this.name = name;
+ this.version = version;
}
public PolicyIdent(PolicyIdent source) {
- super(source);
- }
-
- @Override
- public PfValidationResult validate(PfValidationResult result) {
- return super.validate(validator.validateNotNull(this, result));
+ this.name = source.name;
+ this.version = source.version;
}
}
diff --git a/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PolicyIdentOptVersion.java b/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PolicyIdentOptVersion.java
index a68a271..f86a3c4 100644
--- a/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PolicyIdentOptVersion.java
+++ b/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PolicyIdentOptVersion.java
@@ -20,42 +20,39 @@
package org.onap.policy.models.pdp.concepts;
+import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.NonNull;
-import org.onap.policy.models.base.PfConceptKey;
-import org.onap.policy.models.base.PfKey;
-import org.onap.policy.models.base.PfValidationResult;
-import org.onap.policy.models.base.Validated;
/**
* Policy identifier with an optional version; only the "name" is required.
*/
-@NonNull
+@Data
@NoArgsConstructor
-public class PolicyIdentOptVersion extends PfConceptKey {
- private static final long serialVersionUID = 1L;
- private static final Validated validator = new Validated();
+public class PolicyIdentOptVersion {
+ @NonNull
+ private String name;
+
+ private String version;
+
+
+ public PolicyIdentOptVersion(@NonNull String name, String version) {
+ this.name = name;
+ this.version = version;
+ }
public PolicyIdentOptVersion(PolicyIdentOptVersion source) {
- super(source);
+ this.name = source.name;
+ this.version = source.version;
}
/**
- * Validates the object.
+ * Determines if the version is null/missing.
*
- * @param resultIn where to place any errors
- * @return a validation result
+ * @return {@code true} if the version is null/missing, {@code false}
*/
- public PfValidationResult validate(@NonNull final PfValidationResult resultIn) {
- PfValidationResult result = resultIn;
-
- String name = getName();
- if (PfConceptKey.NULL_KEY_NAME.equals(name)) {
- validator.addError(this, "name", result, "null");
- }
- result = validator.validateText(this, "name", name, PfKey.NAME_REGEXP, result);
-
- return validator.validateText(this, "version", getVersion(), PfKey.VERSION_REGEXP, result);
+ public boolean isNullVersion() {
+ return (version == null);
}
}
diff --git a/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PolicyTypeIdent.java b/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PolicyTypeIdent.java
index ef67de8..44ca168 100644
--- a/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PolicyTypeIdent.java
+++ b/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PolicyTypeIdent.java
@@ -20,31 +20,31 @@
package org.onap.policy.models.pdp.concepts;
+import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.NonNull;
-import org.onap.policy.models.base.PfConceptKey;
-import org.onap.policy.models.base.PfValidationResult;
-import org.onap.policy.models.base.Validated;
/**
* Identifies a policy type. Both the name and version must be non-null.
*/
-@NonNull
+@Data
@NoArgsConstructor
-public class PolicyTypeIdent extends PfConceptKey {
- private static final long serialVersionUID = 1L;
- private static final Validated validator = new Validated();
+public class PolicyTypeIdent {
- public PolicyTypeIdent(String name, String version) {
- super(name, version);
+ @NonNull
+ private String name;
+
+ @NonNull
+ private String version;
+
+
+ public PolicyTypeIdent(@NonNull String name, @NonNull String version) {
+ this.name = name;
+ this.version = version;
}
public PolicyTypeIdent(PolicyTypeIdent source) {
- super(source);
- }
-
- @Override
- public PfValidationResult validate(PfValidationResult result) {
- return super.validate(validator.validateNotNull(this, result));
+ this.name = source.name;
+ this.version = source.version;
}
}
diff --git a/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/provider/PdpProvider.java b/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/provider/PdpProvider.java
index fe0576d..6af2d21 100644
--- a/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/provider/PdpProvider.java
+++ b/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/provider/PdpProvider.java
@@ -20,11 +20,21 @@
package org.onap.policy.models.pdp.persistence.provider;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
import lombok.NonNull;
+import org.apache.commons.lang3.tuple.Pair;
import org.onap.policy.models.base.PfModelException;
import org.onap.policy.models.dao.PfDao;
+import org.onap.policy.models.pdp.concepts.PdpGroup;
import org.onap.policy.models.pdp.concepts.PdpGroups;
+import org.onap.policy.models.pdp.concepts.PdpStatistics;
+import org.onap.policy.models.pdp.concepts.PdpSubGroup;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
/**
* This class provides the provision of information on PAP concepts in the database to callers.
@@ -36,16 +46,42 @@
* Get PDP groups.
*
* @param dao the DAO to use to access the database
- * @param pdpGroupFilter a filter for the get
+ * @param name the name of the policy to get, null to get all PDP groups
+ * @param version the version of the policy to get, null to get all versions of a PDP group
* @return the PDP groups found
* @throws PfModelException on errors getting PDP groups
*/
- public PdpGroups getPdpGroups(@NonNull final PfDao dao, @NonNull final String pdpGroupFilter)
+ public PdpGroups getPdpGroups(@NonNull final PfDao dao, final String name, final String version)
throws PfModelException {
return new PdpGroups();
}
/**
+ * Get latest PDP Groups.
+ *
+ * @param dao the DAO to use to access the database
+ * @param name the name of the PDP group to get, null to get all PDP groups
+ * @return the PDP groups found
+ * @throws PfModelException on errors getting policies
+ */
+ public PdpGroups getLatestPdpGroups(@NonNull final PfDao dao, final String name) throws PfModelException {
+ return new PdpGroups();
+ }
+
+ /**
+ * Get a filtered list of PDP groups.
+ *
+ * @param dao the DAO to use to access the database
+ * @param pdpType The PDP type filter for the returned PDP groups
+ * @param supportedPolicyTypes a list of policy type name/version pairs that the PDP groups must support.
+ * @return the PDP groups found
+ */
+ public PdpGroups getFilteredPdpGroups(@NonNull final PfDao dao, @NonNull final String pdpType,
+ @NonNull final List<Pair<String, String>> supportedPolicyTypes) {
+ return new PdpGroups();
+ }
+
+ /**
* Creates PDP groups.
*
* @param dao the DAO to use to access the database
@@ -71,16 +107,76 @@
return new PdpGroups();
}
+
/**
- * Delete PDP groups.
+ * Update a PDP subgroup.
*
* @param dao the DAO to use to access the database
- * @param pdpGroupFilter a filter for the get
- * @return the PDP groups deleted
+ * @param pdpGroupName the name of the PDP group of the PDP subgroup
+ * @param pdpGroupVersion the version of the PDP group of the PDP subgroup
+ * @param pdpSubGroup the PDP subgroup to be updated
+ * @throws PfModelException on errors updating PDP subgroups
+ */
+ public void updatePdpSubGroup(@NonNull final PfDao dao, @NonNull final String pdpGroupName,
+ @NonNull final String pdpGroupVersion, @NonNull final PdpSubGroup pdpSubGroup) throws PfModelException {
+ // Not implemented yet
+ }
+
+ /**
+ * Delete a PDP group.
+ *
+ * @param dao the DAO to use to access the database
+ * @param name the name of the policy to get, null to get all PDP groups
+ * @param version the version of the policy to get, null to get all versions of a PDP group
+ * @return the PDP group deleted
* @throws PfModelException on errors deleting PDP groups
*/
- public PdpGroups deletePdpGroups(@NonNull final PfDao dao, @NonNull final String pdpGroupFilter)
+ public PdpGroup deletePdpGroup(@NonNull final PfDao dao, @NonNull final String name, @NonNull final String version)
throws PfModelException {
- return new PdpGroups();
+ return new PdpGroup();
+
+ }
+
+ /**
+ * Get PDP statistics.
+ *
+ * @param dao the DAO to use to access the database
+ * @param name the name of the PDP group to get statistics for, null to get all PDP groups
+ * @param version the version of the PDP group to get statistics for, null to get all versions of a PDP group
+ * @return the statistics found
+ * @throws PfModelException on errors getting statistics
+ */
+ public List<PdpStatistics> getPdpStatistics(@NonNull final PfDao dao, final String name, final String version)
+ throws PfModelException {
+ return new ArrayList<>();
+ }
+
+ /**
+ * Update PDP statistics for a PDP.
+ *
+ * @param dao the DAO to use to access the database
+ * @param pdpGroupName the name of the PDP group containing the PDP that the statistics are for
+ * @param pdpGroupVersion the version of the PDP group containing the PDP that the statistics are for
+ * @param pdpType the PDP type of the subgroup containing the PDP that the statistics are for
+ * @param pdpInstanceId the instance ID of the PDP to update statistics for
+ * @throws PfModelException on errors updating statistics
+ */
+ public void updatePdpStatistics(@NonNull final PfDao dao, @NonNull final String pdpGroupName,
+ @NonNull final String pdpGroupVersion, @NonNull final String pdpType, @NonNull final String pdpInstanceId,
+ @NonNull final PdpStatistics pdppStatistics) throws PfModelException {
+ // Not implemented yet
+ }
+
+ /**
+ * Get deployed 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 deployed as a map of policy lists keyed by PDP group
+ * @throws PfModelException on errors getting policies
+ */
+ public Map<PdpGroup, List<ToscaPolicy>> getDeployedPolicyList(@NonNull final PfDao dao, final String name)
+ throws PfModelException {
+ return new LinkedHashMap<>();
}
}
diff --git a/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/TestPdpStateChange.java b/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/TestPdpStateChange.java
new file mode 100644
index 0000000..8c843a1
--- /dev/null
+++ b/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/TestPdpStateChange.java
@@ -0,0 +1,54 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP Policy Models
+ * ================================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * Modifications 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.models.pdp.concepts;
+
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+import org.onap.policy.models.pdp.enums.PdpState;
+
+/**
+ * Test the copy constructor, as {@link TestModels} tests the other methods.
+ */
+public class TestPdpStateChange {
+
+ @Test
+ public void testCopyConstructor() {
+ assertThatThrownBy(() -> new PdpStateChange(null)).isInstanceOf(NullPointerException.class);
+
+ PdpStateChange orig = new PdpStateChange();
+
+ // verify with null values
+ assertEquals("PdpStateChange(name=null, state=null, pdpGroup=null, pdpSubgroup=null)",
+ new PdpStateChange(orig).toString());
+
+ // verify with all values
+ orig.setName("my-name");
+ orig.setPdpGroup("my-group");
+ orig.setPdpSubgroup("my-subgroup");
+ orig.setState(PdpState.SAFE);
+
+ assertEquals("PdpStateChange(name=my-name, state=SAFE, pdpGroup=my-group, pdpSubgroup=my-subgroup)",
+ new PdpStateChange(orig).toString());
+ }
+}
diff --git a/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/TestPdpUpdate.java b/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/TestPdpUpdate.java
new file mode 100644
index 0000000..5f8819b
--- /dev/null
+++ b/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/TestPdpUpdate.java
@@ -0,0 +1,80 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP Policy Models
+ * ================================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * Modifications 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.models.pdp.concepts;
+
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Arrays;
+import java.util.List;
+import org.junit.Test;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
+
+/**
+ * Test the copy constructor, as {@link TestModels} tests the other methods.
+ */
+public class TestPdpUpdate {
+
+ @Test
+ public void testCopyConstructor() {
+ assertThatThrownBy(() -> new PdpUpdate(null)).isInstanceOf(NullPointerException.class);
+
+ PdpUpdate orig = new PdpUpdate();
+
+ // verify with null values
+ assertEquals("PdpUpdate(name=null, pdpType=null, description=null, pdpGroup=null, "
+ + "pdpSubgroup=null, policies=null)", new PdpUpdate(orig).toString());
+
+ // verify with all values
+ orig.setDescription("my-description");
+ orig.setName("my-name");
+ orig.setPdpGroup("my-group");
+ orig.setPdpSubgroup("my-subgroup");
+ orig.setPdpType("my-type");
+
+ ToscaPolicy policy1 = new ToscaPolicy();
+ policy1.setName("policy-a");
+ policy1.setVersion("1.2.3");
+
+ ToscaPolicy policy2 = new ToscaPolicy();
+ policy2.setName("policy-b");
+ policy2.setVersion("4.5.6");
+
+ List<ToscaPolicy> policies = Arrays.asList(policy1, policy2);
+ orig.setPolicies(policies);
+
+ PdpUpdate other = new PdpUpdate(orig);
+
+ assertEquals("PdpUpdate(name=my-name, pdpType=my-type, description=my-description, "
+ + "pdpGroup=my-group, pdpSubgroup=my-subgroup, policies=["
+ + "ToscaPolicy(super=ToscaEntity(name=policy-a, version=1.2.3, derivedFrom=null, "
+ + "metadata=null, description=null), type=null, typeVersion=null, properties=null), "
+ + "ToscaPolicy(super=ToscaEntity(name=policy-b, version=4.5.6, derivedFrom=null, "
+ + "metadata=null, description=null), type=null, typeVersion=null, properties=null)])",
+ other.toString());
+
+ // ensure list and items are not the same object
+ assertTrue(other.getPolicies() != policies);
+ assertTrue(other.getPolicies().get(0) != policies.get(0));
+ }
+}
diff --git a/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/TestPolicyIdent.java b/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/TestPolicyIdent.java
index 4cd5570..da94246 100644
--- a/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/TestPolicyIdent.java
+++ b/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/TestPolicyIdent.java
@@ -22,11 +22,8 @@
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;
-import org.onap.policy.models.base.PfValidationResult;
/**
* Test the other constructors, as {@link TestModels} tests the other methods.
@@ -62,29 +59,4 @@
orig = new PolicyIdent(NAME, VERSION);
assertEquals(orig.toString(), new PolicyIdent(orig).toString());
}
-
- @Test
- public void testValidate() throws Exception {
- assertTrue(makeIdent(NAME, VERSION).validate(new PfValidationResult()).isValid());
-
- // everything is null
- PfValidationResult result = makeIdent(null, null).validate(new PfValidationResult());
- assertFalse(result.isValid());
- assertEquals(2, result.getMessageList().size());
-
- // name is null
- result = makeIdent(null, VERSION).validate(new PfValidationResult());
- assertFalse(result.isValid());
- assertEquals(1, result.getMessageList().size());
-
- // version is null
- result = makeIdent(NAME, null).validate(new PfValidationResult());
- assertFalse(result.isValid());
- assertEquals(1, result.getMessageList().size());
-
- // version is invalid
- result = makeIdent(NAME, "!!!" + VERSION).validate(new PfValidationResult());
- assertFalse(result.isValid());
- assertEquals(1, result.getMessageList().size());
- }
}
diff --git a/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/TestPolicyIdentOptVersion.java b/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/TestPolicyIdentOptVersion.java
index 3428ac1..6ae7ad3 100644
--- a/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/TestPolicyIdentOptVersion.java
+++ b/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/TestPolicyIdentOptVersion.java
@@ -26,7 +26,6 @@
import static org.junit.Assert.assertTrue;
import org.junit.Test;
-import org.onap.policy.models.base.PfValidationResult;
/**
* Test the other constructors, as {@link TestModels} tests the other methods.
@@ -40,6 +39,22 @@
}
@Test
+ public void testAllArgsConstructor_testIsNullVersion() {
+ assertThatThrownBy(() -> new PolicyIdentOptVersion(null, VERSION)).isInstanceOf(NullPointerException.class);
+
+ // with null version
+ PolicyIdentOptVersion orig = new PolicyIdentOptVersion(NAME, null);
+ assertEquals(NAME, orig.getName());
+ assertEquals(null, orig.getVersion());
+ assertTrue(orig.isNullVersion());
+
+ orig = new PolicyIdentOptVersion(NAME, VERSION);
+ assertEquals(NAME, orig.getName());
+ assertEquals(VERSION, orig.getVersion());
+ assertFalse(orig.isNullVersion());
+ }
+
+ @Test
public void testCopyConstructor() throws Exception {
assertThatThrownBy(() -> new PolicyIdentOptVersion(null)).isInstanceOf(NullPointerException.class);
@@ -52,36 +67,4 @@
orig = makeIdent(NAME, VERSION);
assertEquals(orig.toString(), new PolicyIdentOptVersion(orig).toString());
}
-
- @Test
- public void testValidate() throws Exception {
- assertThatThrownBy(() -> makeIdent(NAME, VERSION).validate(null)).isInstanceOf(NullPointerException.class);
- assertTrue(makeIdent(NAME, VERSION).validate(new PfValidationResult()).isValid());
- assertTrue(makeIdent(NAME, null).validate(new PfValidationResult()).isValid());
-
- // everything is null
- PfValidationResult result = makeIdent(null, null).validate(new PfValidationResult());
- assertFalse(result.isValid());
- assertEquals(1, result.getMessageList().size());
-
- // name is null
- result = makeIdent(null, VERSION).validate(new PfValidationResult());
- assertFalse(result.isValid());
- assertEquals(1, result.getMessageList().size());
-
- // name is null, version is invalid
- result = makeIdent(null, "$$$" + VERSION).validate(new PfValidationResult());
- assertFalse(result.isValid());
- assertEquals(2, result.getMessageList().size());
-
- // name is invalid
- result = makeIdent("!!!invalid name$$$", VERSION).validate(new PfValidationResult());
- assertFalse(result.isValid());
- assertEquals(1, result.getMessageList().size());
-
- // version is invalid
- result = makeIdent(NAME, "!!!" + VERSION).validate(new PfValidationResult());
- assertFalse(result.isValid());
- assertEquals(1, result.getMessageList().size());
- }
}
diff --git a/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/TestPolicyTypeIdent.java b/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/TestPolicyTypeIdent.java
index 5b7494e..9247544 100644
--- a/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/TestPolicyTypeIdent.java
+++ b/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/TestPolicyTypeIdent.java
@@ -22,11 +22,8 @@
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;
-import org.onap.policy.models.base.PfValidationResult;
/**
* Test the other constructors, as {@link TestModels} tests the other methods.
@@ -63,29 +60,4 @@
assertEquals(orig.toString(), new PolicyTypeIdent(orig).toString());
}
- @Test
- public void testValidate() throws Exception {
- assertTrue(makeIdent(NAME, VERSION).validate(new PfValidationResult()).isValid());
-
- // everything is null
- PfValidationResult result = makeIdent(null, null).validate(new PfValidationResult());
- assertFalse(result.isValid());
- assertEquals(2, result.getMessageList().size());
-
- // name is null
- result = makeIdent(null, VERSION).validate(new PfValidationResult());
- assertFalse(result.isValid());
- assertEquals(1, result.getMessageList().size());
-
- // version is null
- result = makeIdent(NAME, null).validate(new PfValidationResult());
- assertFalse(result.isValid());
- assertEquals(1, result.getMessageList().size());
-
- // version is invalid
- result = makeIdent(NAME, "!!!" + VERSION).validate(new PfValidationResult());
- assertFalse(result.isValid());
- assertEquals(1, result.getMessageList().size());
- }
-
}
diff --git a/models-provider/src/main/java/org/onap/policy/models/provider/PolicyModelsProvider.java b/models-provider/src/main/java/org/onap/policy/models/provider/PolicyModelsProvider.java
index e390a04..b0494ff 100644
--- a/models-provider/src/main/java/org/onap/policy/models/provider/PolicyModelsProvider.java
+++ b/models-provider/src/main/java/org/onap/policy/models/provider/PolicyModelsProvider.java
@@ -20,17 +20,23 @@
package org.onap.policy.models.provider;
+import java.util.List;
import java.util.Map;
import lombok.NonNull;
-import org.onap.policy.models.base.PfConceptKey;
+import org.apache.commons.lang3.tuple.Pair;
import org.onap.policy.models.base.PfModelException;
+import org.onap.policy.models.pdp.concepts.PdpGroup;
import org.onap.policy.models.pdp.concepts.PdpGroups;
+import org.onap.policy.models.pdp.concepts.PdpStatistics;
+import org.onap.policy.models.pdp.concepts.PdpSubGroup;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyType;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
import org.onap.policy.models.tosca.legacy.concepts.LegacyGuardPolicyInput;
import org.onap.policy.models.tosca.legacy.concepts.LegacyGuardPolicyOutput;
import org.onap.policy.models.tosca.legacy.concepts.LegacyOperationalPolicy;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate;
/**
* This interface describes the operations that are provided to users and components for reading objects from and
@@ -49,12 +55,40 @@
/**
* Get policy types.
*
- * @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 PfConceptKey policyTypeKey) throws PfModelException;
+ public ToscaServiceTemplate getPolicyTypes(final String name, final String version) throws PfModelException;
+
+ /**
+ * Get policy types.
+ *
+ * @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 List<ToscaPolicyType> getPolicyTypeList(final String name, final String version) throws PfModelException;
+
+ /**
+ * Get latest policy types.
+ *
+ * @param name the name of the policy type to get, set to null to get all policy types
+ * @return the policy types found
+ * @throws PfModelException on errors getting policy types
+ */
+ public ToscaServiceTemplate getLatestPolicyTypes(final String name) throws PfModelException;
+
+ /**
+ * Get latest policy types.
+ *
+ * @param name the name of the policy type to get, set to null to get all policy types
+ * @return the policy types found
+ * @throws PfModelException on errors getting policy types
+ */
+ public List<ToscaPolicyType> getLatestPolicyTypeList(final String name) throws PfModelException;
/**
* Create policy types.
@@ -63,7 +97,7 @@
* @return the TOSCA service template containing the created policy types
* @throws PfModelException on errors creating policy types
*/
- public JpaToscaServiceTemplate createPolicyTypes(@NonNull final JpaToscaServiceTemplate serviceTemplate)
+ public ToscaServiceTemplate createPolicyTypes(@NonNull final ToscaServiceTemplate serviceTemplate)
throws PfModelException;
/**
@@ -73,28 +107,66 @@
* @return the TOSCA service template containing the modified policy types
* @throws PfModelException on errors updating policy types
*/
- public JpaToscaServiceTemplate updatePolicyTypes(@NonNull final JpaToscaServiceTemplate serviceTemplate)
+ public ToscaServiceTemplate updatePolicyTypes(@NonNull final ToscaServiceTemplate serviceTemplate)
throws PfModelException;
/**
- * Delete policy types.
+ * Delete policy type.
*
- * @param policyTypeKey the policy type key for the policy types to be deleted, if the version of the key is null,
- * all versions of the policy type are deleted.
- * @return the TOSCA service template containing the policy types that were deleted
+ * @param name the name of the policy type to delete.
+ * @param version the version of the policy type to delete.
+ * @return the TOSCA service template containing the policy type that was deleted
* @throws PfModelException on errors deleting policy types
*/
- public JpaToscaServiceTemplate deletePolicyTypes(@NonNull final PfConceptKey policyTypeKey) throws PfModelException;
+ public ToscaServiceTemplate deletePolicyType(@NonNull final String name, @NonNull final String version)
+ throws PfModelException;
/**
* Get policies.
*
- * @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, null to get all policies
+ * @param version the version of the policy to get, null to get all versions of a policy
* @return the policies found
* @throws PfModelException on errors getting policies
*/
- public JpaToscaServiceTemplate getPolicies(@NonNull final PfConceptKey policyKey) throws PfModelException;
+ public ToscaServiceTemplate getPolicies(final String name, final String version) throws PfModelException;
+
+ /**
+ * Get policies.
+ *
+ * @param name the name of the policy to get, null to get all policies
+ * @param version the version of the policy to get, null to get all versions of a policy
+ * @return the policies found
+ * @throws PfModelException on errors getting policies
+ */
+ public List<ToscaPolicy> getPolicyList(final String name, final String version) throws PfModelException;
+
+ /**
+ * Get policies for a policy type name.
+ *
+ * @param policyTypeName the name of the policy type for which to get policies
+ * @return the policies found
+ * @throws PfModelException on errors getting policies
+ */
+ public List<ToscaPolicy> getPolicyList4PolicyType(@NonNull final String policyTypeName) throws PfModelException;
+
+ /**
+ * Get latest policies.
+ *
+ * @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(final String name) throws PfModelException;
+
+ /**
+ * Get latest policies.
+ *
+ * @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 List<ToscaPolicy> getLatestPolicyList(final String name) throws PfModelException;
/**
* Create policies.
@@ -103,10 +175,9 @@
* @return the TOSCA service template containing the policy types that were created
* @throws PfModelException on errors creating policies
*/
- public JpaToscaServiceTemplate createPolicies(@NonNull final JpaToscaServiceTemplate serviceTemplate)
+ public ToscaServiceTemplate createPolicies(@NonNull final ToscaServiceTemplate serviceTemplate)
throws PfModelException;
-
/**
* Update policies.
*
@@ -114,17 +185,19 @@
* @return the TOSCA service template containing the policies that were updated
* @throws PfModelException on errors updating policies
*/
- public JpaToscaServiceTemplate updatePolicies(@NonNull final JpaToscaServiceTemplate serviceTemplate)
+ public ToscaServiceTemplate updatePolicies(@NonNull final ToscaServiceTemplate serviceTemplate)
throws PfModelException;
/**
- * Delete policies.
+ * Delete policy.
*
- * @param policyKey the policy key
- * @return the TOSCA service template containing the policy types that were deleted
- * @throws PfModelException on errors deleting policies
+ * @param name the name of the policy to delete.
+ * @param version the version of the policy to delete.
+ * @return the TOSCA service template containing the policy that was deleted
+ * @throws PfModelException on errors deleting a policy
*/
- public JpaToscaServiceTemplate deletePolicies(@NonNull final PfConceptKey policyKey) throws PfModelException;
+ public ToscaServiceTemplate deletePolicy(@NonNull final String name, @NonNull final String version)
+ throws PfModelException;
/**
* Get legacy operational policy.
@@ -206,11 +279,31 @@
/**
* Get PDP groups.
*
- * @param pdpGroupFilter a filter for the get
+ * @param name the name of the policy to get, null to get all PDP groups
+ * @param version the version of the policy to get, null to get all versions of a PDP group
* @return the PDP groups found
* @throws PfModelException on errors getting PDP groups
*/
- public PdpGroups getPdpGroups(@NonNull final String pdpGroupFilter) throws PfModelException;
+ public PdpGroups getPdpGroups(final String name, final String version) throws PfModelException;
+
+ /**
+ * Get latest PDP Groups.
+ *
+ * @param name the name of the PDP group to get, null to get all PDP groups
+ * @return the PDP groups found
+ * @throws PfModelException on errors getting policies
+ */
+ public PdpGroups getLatestPdpGroups(final String name) throws PfModelException;
+
+ /**
+ * Get a filtered list of PDP groups.
+ *
+ * @param pdpType The PDP type filter for the returned PDP groups
+ * @param supportedPolicyTypes a list of policy type name/version pairs that the PDP groups must support.
+ * @return the PDP groups found
+ */
+ public PdpGroups getFilteredPdpGroups(@NonNull final String pdpType,
+ @NonNull final List<Pair<String, String>> supportedPolicyTypes);
/**
* Creates PDP groups.
@@ -230,12 +323,57 @@
*/
public PdpGroups updatePdpGroups(@NonNull final PdpGroups pdpGroups) throws PfModelException;
+
/**
- * Delete PDP groups.
+ * Update a PDP subgroup.
*
- * @param pdpGroupFilter a filter for the get
- * @return the PDP groups deleted
+ * @param pdpGroupName the name of the PDP group of the PDP subgroup
+ * @param pdpGroupVersion the version of the PDP group of the PDP subgroup
+ * @param pdpSubGroup the PDP subgroup to be updated
+ * @throws PfModelException on errors updating PDP subgroups
+ */
+ public void updatePdpSubGroup(@NonNull final String pdpGroupName, @NonNull final String pdpGroupVersion,
+ @NonNull final PdpSubGroup pdpSubGroup) throws PfModelException;
+
+ /**
+ * Delete a PDP group.
+ *
+ * @param name the name of the policy to get, null to get all PDP groups
+ * @param version the version of the policy to get, null to get all versions of a PDP group
+ * @return the PDP group deleted
* @throws PfModelException on errors deleting PDP groups
*/
- public PdpGroups deletePdpGroups(@NonNull final String pdpGroupFilter) throws PfModelException;
+ public PdpGroup deletePdpGroup(@NonNull final String name, @NonNull final String version) throws PfModelException;
+
+ /**
+ * Get PDP statistics.
+ *
+ * @param name the name of the PDP group to get statistics for, null to get all PDP groups
+ * @param version the version of the PDP group to get statistics for, null to get all versions of a PDP group
+ * @return the statistics found
+ * @throws PfModelException on errors getting statistics
+ */
+ public List<PdpStatistics> getPdpStatistics(final String name, final String version) throws PfModelException;
+
+ /**
+ * Update PDP statistics for a PDP.
+ *
+ * @param pdpGroupName the name of the PDP group containing the PDP that the statistics are for
+ * @param pdpGroupVersion the version of the PDP group containing the PDP that the statistics are for
+ * @param pdpType the PDP type of the subgroup containing the PDP that the statistics are for
+ * @param pdpInstanceId the instance ID of the PDP to update statistics for
+ * @throws PfModelException on errors updating statistics
+ */
+ public void updatePdpStatistics(@NonNull final String pdpGroupName, @NonNull final String pdpGroupVersion,
+ @NonNull final String pdpType, @NonNull final String pdpInstanceId,
+ @NonNull final PdpStatistics pdppStatistics) throws PfModelException;
+
+ /**
+ * Get deployed policies.
+ *
+ * @param name the name of the policy to get, null to get all policies
+ * @return the policies deployed as a map of policy lists keyed by PDP group
+ * @throws PfModelException on errors getting policies
+ */
+ public Map<PdpGroup, List<ToscaPolicy>> getDeployedPolicyList(final String name) throws PfModelException;
}
diff --git a/models-provider/src/main/java/org/onap/policy/models/provider/impl/DatabasePolicyModelsProviderImpl.java b/models-provider/src/main/java/org/onap/policy/models/provider/impl/DatabasePolicyModelsProviderImpl.java
index 85c4d13..ee8ed73 100644
--- a/models-provider/src/main/java/org/onap/policy/models/provider/impl/DatabasePolicyModelsProviderImpl.java
+++ b/models-provider/src/main/java/org/onap/policy/models/provider/impl/DatabasePolicyModelsProviderImpl.java
@@ -23,29 +23,35 @@
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Base64;
+import java.util.List;
import java.util.Map;
import javax.ws.rs.core.Response;
import lombok.NonNull;
-import org.onap.policy.models.base.PfConceptKey;
+import org.apache.commons.lang3.tuple.Pair;
import org.onap.policy.models.base.PfModelException;
import org.onap.policy.models.base.PfModelRuntimeException;
import org.onap.policy.models.dao.DaoParameters;
import org.onap.policy.models.dao.PfDao;
import org.onap.policy.models.dao.PfDaoFactory;
import org.onap.policy.models.dao.impl.DefaultPfDao;
+import org.onap.policy.models.pdp.concepts.PdpGroup;
import org.onap.policy.models.pdp.concepts.PdpGroups;
+import org.onap.policy.models.pdp.concepts.PdpStatistics;
+import org.onap.policy.models.pdp.concepts.PdpSubGroup;
import org.onap.policy.models.pdp.persistence.provider.PdpProvider;
import org.onap.policy.models.provider.PolicyModelsProvider;
import org.onap.policy.models.provider.PolicyModelsProviderParameters;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyType;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
+import org.onap.policy.models.tosca.authorative.provider.AuthorativeToscaProvider;
import org.onap.policy.models.tosca.legacy.concepts.LegacyGuardPolicyInput;
import org.onap.policy.models.tosca.legacy.concepts.LegacyGuardPolicyOutput;
import org.onap.policy.models.tosca.legacy.concepts.LegacyOperationalPolicy;
import org.onap.policy.models.tosca.legacy.provider.LegacyProvider;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate;
-import org.onap.policy.models.tosca.simple.provider.SimpleToscaProvider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -138,56 +144,99 @@
}
@Override
- public JpaToscaServiceTemplate getPolicyTypes(@NonNull final PfConceptKey policyTypeKey) throws PfModelException {
+ public ToscaServiceTemplate getPolicyTypes(final String name, final String version) throws PfModelException {
assertInitilized();
- return new SimpleToscaProvider().getPolicyTypes(pfDao, policyTypeKey);
+ return new AuthorativeToscaProvider().getPolicyTypes(pfDao, name, version);
}
@Override
- public JpaToscaServiceTemplate createPolicyTypes(@NonNull final JpaToscaServiceTemplate serviceTemplate)
+ public List<ToscaPolicyType> getPolicyTypeList(final String name, final String version) throws PfModelException {
+ assertInitilized();
+ return new AuthorativeToscaProvider().getPolicyTypeList(pfDao, name, version);
+ }
+
+ @Override
+ public ToscaServiceTemplate getLatestPolicyTypes(final String name) throws PfModelException {
+ assertInitilized();
+ return new AuthorativeToscaProvider().getLatestPolicyTypes(pfDao, name);
+ }
+
+ @Override
+ public List<ToscaPolicyType> getLatestPolicyTypeList(final String name) throws PfModelException {
+ assertInitilized();
+ return new AuthorativeToscaProvider().getLatestPolicyTypeList(pfDao, name);
+ }
+
+ @Override
+ public ToscaServiceTemplate createPolicyTypes(@NonNull final ToscaServiceTemplate serviceTemplate)
throws PfModelException {
assertInitilized();
- return new SimpleToscaProvider().createPolicyTypes(pfDao, serviceTemplate);
+ return new AuthorativeToscaProvider().createPolicyTypes(pfDao, serviceTemplate);
}
@Override
- public JpaToscaServiceTemplate updatePolicyTypes(@NonNull final JpaToscaServiceTemplate serviceTemplate)
+ public ToscaServiceTemplate updatePolicyTypes(@NonNull final ToscaServiceTemplate serviceTemplate)
throws PfModelException {
assertInitilized();
- return new SimpleToscaProvider().updatePolicyTypes(pfDao, serviceTemplate);
+ return new AuthorativeToscaProvider().updatePolicyTypes(pfDao, serviceTemplate);
}
@Override
- public JpaToscaServiceTemplate deletePolicyTypes(@NonNull final PfConceptKey policyTypeKey)
+ public ToscaServiceTemplate deletePolicyType(@NonNull final String name, @NonNull final String version)
throws PfModelException {
assertInitilized();
- return new SimpleToscaProvider().deletePolicyTypes(pfDao, policyTypeKey);
+ return new AuthorativeToscaProvider().deletePolicyType(pfDao, name, version);
}
@Override
- public JpaToscaServiceTemplate getPolicies(@NonNull final PfConceptKey policyKey) throws PfModelException {
+ public ToscaServiceTemplate getPolicies(final String name, final String version) throws PfModelException {
assertInitilized();
- return new SimpleToscaProvider().getPolicies(pfDao, policyKey);
+ return new AuthorativeToscaProvider().getPolicies(pfDao, name, version);
}
@Override
- public JpaToscaServiceTemplate createPolicies(@NonNull final JpaToscaServiceTemplate serviceTemplate)
+ public List<ToscaPolicy> getPolicyList(final String name, final String version) throws PfModelException {
+ assertInitilized();
+ return new AuthorativeToscaProvider().getPolicyList(pfDao, name, version);
+ }
+
+ @Override
+ public List<ToscaPolicy> getPolicyList4PolicyType(@NonNull final String policyTypeName) throws PfModelException {
+ assertInitilized();
+ return new AuthorativeToscaProvider().getPolicyList4PolicyType(pfDao, policyTypeName);
+ }
+
+ @Override
+ public ToscaServiceTemplate getLatestPolicies(final String name) throws PfModelException {
+ assertInitilized();
+ return new AuthorativeToscaProvider().getLatestPolicies(pfDao, name);
+ }
+
+ @Override
+ public List<ToscaPolicy> getLatestPolicyList(final String name) throws PfModelException {
+ assertInitilized();
+ return new AuthorativeToscaProvider().getLatestPolicyList(pfDao, name);
+ }
+
+ @Override
+ public ToscaServiceTemplate createPolicies(@NonNull final ToscaServiceTemplate serviceTemplate)
throws PfModelException {
assertInitilized();
- return new SimpleToscaProvider().createPolicies(pfDao, serviceTemplate);
+ return new AuthorativeToscaProvider().createPolicies(pfDao, serviceTemplate);
}
@Override
- public JpaToscaServiceTemplate updatePolicies(@NonNull final JpaToscaServiceTemplate serviceTemplate)
+ public ToscaServiceTemplate updatePolicies(@NonNull final ToscaServiceTemplate serviceTemplate)
throws PfModelException {
assertInitilized();
- return new SimpleToscaProvider().updatePolicies(pfDao, serviceTemplate);
+ return new AuthorativeToscaProvider().updatePolicies(pfDao, serviceTemplate);
}
@Override
- public JpaToscaServiceTemplate deletePolicies(@NonNull final PfConceptKey policyKey) throws PfModelException {
+ public ToscaServiceTemplate deletePolicy(@NonNull final String name, @NonNull final String version)
+ throws PfModelException {
assertInitilized();
- return new SimpleToscaProvider().deletePolicies(pfDao, policyKey);
+ return new AuthorativeToscaProvider().deletePolicy(pfDao, name, version);
}
@Override
@@ -244,27 +293,68 @@
}
@Override
- public PdpGroups getPdpGroups(@NonNull String pdpGroupFilter) throws PfModelException {
+ public PdpGroups getPdpGroups(final String name, final String version) throws PfModelException {
assertInitilized();
- return new PdpProvider().getPdpGroups(pfDao, pdpGroupFilter);
+ return new PdpProvider().getPdpGroups(pfDao, name, version);
}
@Override
- public PdpGroups createPdpGroups(@NonNull PdpGroups pdpGroups) throws PfModelException {
+ public PdpGroups getLatestPdpGroups(final String name) throws PfModelException {
+ assertInitilized();
+ return new PdpProvider().getLatestPdpGroups(pfDao, name);
+ }
+
+ @Override
+ public PdpGroups getFilteredPdpGroups(@NonNull final String pdpType,
+ @NonNull final List<Pair<String, String>> supportedPolicyTypes) {
+ assertInitilized();
+ return new PdpProvider().getFilteredPdpGroups(pfDao, pdpType, supportedPolicyTypes);
+ }
+
+ @Override
+ public PdpGroups createPdpGroups(@NonNull final PdpGroups pdpGroups) throws PfModelException {
assertInitilized();
return new PdpProvider().createPdpGroups(pfDao, pdpGroups);
}
@Override
- public PdpGroups updatePdpGroups(@NonNull PdpGroups pdpGroups) throws PfModelException {
+ public PdpGroups updatePdpGroups(@NonNull final PdpGroups pdpGroups) throws PfModelException {
assertInitilized();
return new PdpProvider().updatePdpGroups(pfDao, pdpGroups);
}
@Override
- public PdpGroups deletePdpGroups(@NonNull String pdpGroupFilter) throws PfModelException {
+ public void updatePdpSubGroup(@NonNull final String pdpGroupName, @NonNull final String pdpGroupVersion,
+ @NonNull final PdpSubGroup pdpSubGroup) throws PfModelException {
assertInitilized();
- return new PdpProvider().deletePdpGroups(pfDao, pdpGroupFilter);
+ new PdpProvider().updatePdpSubGroup(pfDao, pdpGroupName, pdpGroupVersion, pdpSubGroup);
+ }
+
+ @Override
+ public PdpGroup deletePdpGroup(@NonNull final String name, @NonNull final String version) throws PfModelException {
+ assertInitilized();
+ return new PdpProvider().deletePdpGroup(pfDao, name, version);
+ }
+
+ @Override
+ public List<PdpStatistics> getPdpStatistics(final String name, final String version) throws PfModelException {
+ assertInitilized();
+ return new PdpProvider().getPdpStatistics(pfDao, name, version);
+ }
+
+ @Override
+ public void updatePdpStatistics(@NonNull final String pdpGroupName, @NonNull final String pdpGroupVersion,
+ @NonNull final String pdpType, @NonNull final String pdpInstanceId,
+ @NonNull final PdpStatistics pdppStatistics) throws PfModelException {
+ assertInitilized();
+ new PdpProvider().updatePdpStatistics(pfDao, pdpGroupName, pdpGroupVersion, pdpType, pdpInstanceId,
+ pdppStatistics);
+ }
+
+ @Override
+ public Map<PdpGroup, List<ToscaPolicy>> getDeployedPolicyList(final String name) throws PfModelException {
+ assertInitilized();
+ return new PdpProvider().getDeployedPolicyList(pfDao, name);
}
/**
diff --git a/models-provider/src/main/java/org/onap/policy/models/provider/impl/DummyPolicyModelsProviderImpl.java b/models-provider/src/main/java/org/onap/policy/models/provider/impl/DummyPolicyModelsProviderImpl.java
index e37b1d6..3db8e5e 100644
--- a/models-provider/src/main/java/org/onap/policy/models/provider/impl/DummyPolicyModelsProviderImpl.java
+++ b/models-provider/src/main/java/org/onap/policy/models/provider/impl/DummyPolicyModelsProviderImpl.java
@@ -21,25 +21,31 @@
package org.onap.policy.models.provider.impl;
-import com.google.gson.Gson;
-
+import java.util.ArrayList;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import javax.ws.rs.core.Response;
import lombok.NonNull;
+
+import org.apache.commons.lang3.tuple.Pair;
+import org.onap.policy.common.utils.coder.StandardCoder;
import org.onap.policy.common.utils.resources.ResourceUtils;
-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.pdp.concepts.PdpGroup;
import org.onap.policy.models.pdp.concepts.PdpGroups;
+import org.onap.policy.models.pdp.concepts.PdpStatistics;
+import org.onap.policy.models.pdp.concepts.PdpSubGroup;
import org.onap.policy.models.provider.PolicyModelsProvider;
import org.onap.policy.models.provider.PolicyModelsProviderParameters;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyType;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
import org.onap.policy.models.tosca.legacy.concepts.LegacyGuardPolicyInput;
import org.onap.policy.models.tosca.legacy.concepts.LegacyGuardPolicyOutput;
import org.onap.policy.models.tosca.legacy.concepts.LegacyOperationalPolicy;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate;
-import org.onap.policy.models.tosca.simple.serialization.ToscaServiceTemplateMessageBodyHandler;
/**
* This class provides a dummy implementation of the Policy Models Provider for the ONAP Policy Framework.
@@ -66,47 +72,83 @@
}
@Override
- public JpaToscaServiceTemplate getPolicyTypes(@NonNull final PfConceptKey policyTypeKey) throws PfModelException {
+ public ToscaServiceTemplate getPolicyTypes(final String name, final String version) throws PfModelException {
return getDummyResponse("dummyimpl/DummyToscaPolicyTypeGetResponse.json");
}
@Override
- public JpaToscaServiceTemplate createPolicyTypes(@NonNull final JpaToscaServiceTemplate serviceTemplate)
+ public List<ToscaPolicyType> getPolicyTypeList(final String name, final String version) throws PfModelException {
+ return new ArrayList<>();
+ }
+
+ @Override
+ public ToscaServiceTemplate getLatestPolicyTypes(final String name) throws PfModelException {
+ return null;
+ }
+
+ @Override
+ public List<ToscaPolicyType> getLatestPolicyTypeList(final String name) throws PfModelException {
+ return new ArrayList<>();
+ }
+
+ @Override
+ public ToscaServiceTemplate createPolicyTypes(@NonNull final ToscaServiceTemplate serviceTemplate)
throws PfModelException {
return serviceTemplate;
}
@Override
- public JpaToscaServiceTemplate updatePolicyTypes(@NonNull final JpaToscaServiceTemplate serviceTemplate)
+ public ToscaServiceTemplate updatePolicyTypes(@NonNull final ToscaServiceTemplate serviceTemplate)
throws PfModelException {
return serviceTemplate;
}
@Override
- public JpaToscaServiceTemplate deletePolicyTypes(@NonNull final PfConceptKey policyTypeKey)
+ public ToscaServiceTemplate deletePolicyType(@NonNull final String name, @NonNull final String version)
throws PfModelException {
return getDummyResponse("dummyimpl/DummyToscaPolicyTypeDeleteResponse.json");
}
@Override
- public JpaToscaServiceTemplate getPolicies(@NonNull final PfConceptKey policyKey) throws PfModelException {
+ public ToscaServiceTemplate getPolicies(final String name, final String version) throws PfModelException {
return getDummyResponse("dummyimpl/DummyToscaPolicyGetResponse.json");
}
@Override
- public JpaToscaServiceTemplate createPolicies(@NonNull final JpaToscaServiceTemplate serviceTemplate)
+ public List<ToscaPolicy> getPolicyList(final String name, final String version) throws PfModelException {
+ return new ArrayList<>();
+ }
+
+ @Override
+ public List<ToscaPolicy> getPolicyList4PolicyType(@NonNull final String policyTypeName) throws PfModelException {
+ return new ArrayList<>();
+ }
+
+ @Override
+ public ToscaServiceTemplate getLatestPolicies(final String name) throws PfModelException {
+ return null;
+ }
+
+ @Override
+ public List<ToscaPolicy> getLatestPolicyList(final String name) throws PfModelException {
+ return new ArrayList<>();
+ }
+
+ @Override
+ public ToscaServiceTemplate createPolicies(@NonNull final ToscaServiceTemplate serviceTemplate)
throws PfModelException {
return serviceTemplate;
}
@Override
- public JpaToscaServiceTemplate updatePolicies(@NonNull final JpaToscaServiceTemplate serviceTemplate)
+ public ToscaServiceTemplate updatePolicies(@NonNull final ToscaServiceTemplate serviceTemplate)
throws PfModelException {
return serviceTemplate;
}
@Override
- public JpaToscaServiceTemplate deletePolicies(@NonNull final PfConceptKey policyKey) throws PfModelException {
+ public ToscaServiceTemplate deletePolicy(@NonNull final String name, @NonNull final String version)
+ throws PfModelException {
return getDummyResponse("dummyimpl/DummyToscaPolicyDeleteResponse.json");
}
@@ -157,23 +199,57 @@
}
@Override
- public PdpGroups getPdpGroups(@NonNull String pdpGroupFilter) throws PfModelException {
- return new PdpGroups();
+ public PdpGroups getPdpGroups(final String name, final String version) throws PfModelException {
+ return null;
}
@Override
- public PdpGroups createPdpGroups(@NonNull PdpGroups pdpGroups) throws PfModelException {
- return new PdpGroups();
+ public PdpGroups getLatestPdpGroups(final String name) throws PfModelException {
+ return null;
}
@Override
- public PdpGroups updatePdpGroups(@NonNull PdpGroups pdpGroups) throws PfModelException {
- return new PdpGroups();
+ public PdpGroups getFilteredPdpGroups(@NonNull final String pdpType,
+ @NonNull final List<Pair<String, String>> supportedPolicyTypes) {
+ return null;
}
@Override
- public PdpGroups deletePdpGroups(@NonNull String pdpGroupFilter) throws PfModelException {
- return new PdpGroups();
+ public PdpGroups createPdpGroups(@NonNull final PdpGroups pdpGroups) throws PfModelException {
+ return null;
+ }
+
+ @Override
+ public PdpGroups updatePdpGroups(@NonNull final PdpGroups pdpGroups) throws PfModelException {
+ return null;
+ }
+
+ @Override
+ public void updatePdpSubGroup(@NonNull final String pdpGroupName, @NonNull final String pdpGroupVersion,
+ @NonNull final PdpSubGroup pdpSubGroup) throws PfModelException {
+ // Not implemented
+ }
+
+ @Override
+ public PdpGroup deletePdpGroup(@NonNull final String name, @NonNull final String version) throws PfModelException {
+ return null;
+ }
+
+ @Override
+ public List<PdpStatistics> getPdpStatistics(final String name, final String version) throws PfModelException {
+ return new ArrayList<>();
+ }
+
+ @Override
+ public void updatePdpStatistics(@NonNull final String pdpGroupName, @NonNull final String pdpGroupVersion,
+ @NonNull final String pdpType, @NonNull final String pdpInstanceId,
+ @NonNull final PdpStatistics pdppStatistics) throws PfModelException {
+ // Not implemented
+ }
+
+ @Override
+ public Map<PdpGroup, List<ToscaPolicy>> getDeployedPolicyList(final String name) throws PfModelException {
+ return null;
}
/**
@@ -182,12 +258,13 @@
* @param fileName the file name containing the dummy response
* @return the ToscaServiceTemplate with the dummy response
*/
- protected JpaToscaServiceTemplate getDummyResponse(@NonNull final String fileName) {
- Gson gson = new ToscaServiceTemplateMessageBodyHandler().getGson();
- JpaToscaServiceTemplate serviceTemplate;
+ protected ToscaServiceTemplate getDummyResponse(@NonNull final String fileName) {
+ StandardCoder standardCoder = new StandardCoder();
+ ToscaServiceTemplate serviceTemplate;
try {
- serviceTemplate = gson.fromJson(ResourceUtils.getResourceAsString(fileName), JpaToscaServiceTemplate.class);
+ serviceTemplate =
+ standardCoder.decode(ResourceUtils.getResourceAsString(fileName), ToscaServiceTemplate.class);
if (serviceTemplate == null) {
throw new PfModelException(Response.Status.INTERNAL_SERVER_ERROR, "error reading specified file");
}
diff --git a/models-provider/src/test/java/org/onap/policy/models/provider/impl/DatabasePolicyModelsProviderTest.java b/models-provider/src/test/java/org/onap/policy/models/provider/impl/DatabasePolicyModelsProviderTest.java
index 3352334..d925333 100644
--- a/models-provider/src/test/java/org/onap/policy/models/provider/impl/DatabasePolicyModelsProviderTest.java
+++ b/models-provider/src/test/java/org/onap/policy/models/provider/impl/DatabasePolicyModelsProviderTest.java
@@ -28,14 +28,13 @@
import org.junit.Before;
import org.junit.Test;
-import org.onap.policy.models.base.PfConceptKey;
import org.onap.policy.models.pdp.concepts.PdpGroups;
import org.onap.policy.models.provider.PolicyModelsProvider;
import org.onap.policy.models.provider.PolicyModelsProviderFactory;
import org.onap.policy.models.provider.PolicyModelsProviderParameters;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
import org.onap.policy.models.tosca.legacy.concepts.LegacyGuardPolicyInput;
import org.onap.policy.models.tosca.legacy.concepts.LegacyOperationalPolicy;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -120,9 +119,16 @@
databaseProvider.init();
assertThatThrownBy(() -> {
- databaseProvider.getPolicyTypes(null);
- }).hasMessage("policyTypeKey is marked @NonNull but is null");
+ databaseProvider.getPolicyTypes(null, null);
+ }).hasMessage("name is marked @NonNull but is null");
+ assertThatThrownBy(() -> {
+ databaseProvider.getPolicyTypes("aaa", null);
+ }).hasMessage("version is marked @NonNull but is null");
+
+ assertThatThrownBy(() -> {
+ databaseProvider.getPolicyTypes(null, "aaa");
+ }).hasMessage("name is marked @NonNull but is null");
assertThatThrownBy(() -> {
databaseProvider.createPolicyTypes(null);
@@ -133,12 +139,28 @@
}).hasMessage("serviceTemplate is marked @NonNull but is null");
assertThatThrownBy(() -> {
- databaseProvider.deletePolicyTypes(null);
- }).hasMessage("policyTypeKey is marked @NonNull but is null");
+ databaseProvider.deletePolicyType(null, null);
+ }).hasMessage("name is marked @NonNull but is null");
assertThatThrownBy(() -> {
- databaseProvider.getPolicies(null);
- }).hasMessage("policyKey is marked @NonNull but is null");
+ databaseProvider.deletePolicyType("aaa", null);
+ }).hasMessage("version is marked @NonNull but is null");
+
+ assertThatThrownBy(() -> {
+ databaseProvider.deletePolicyType(null, "aaa");
+ }).hasMessage("name is marked @NonNull but is null");
+
+ assertThatThrownBy(() -> {
+ databaseProvider.getPolicies(null, null);
+ }).hasMessage("name is marked @NonNull but is null");
+
+ assertThatThrownBy(() -> {
+ databaseProvider.getPolicies(null, "aaa");
+ }).hasMessage("name is marked @NonNull but is null");
+
+ assertThatThrownBy(() -> {
+ databaseProvider.getPolicies("aaa", null);
+ }).hasMessage("version is marked @NonNull but is null");
assertThatThrownBy(() -> {
databaseProvider.createPolicies(null);
@@ -149,8 +171,16 @@
}).hasMessage("serviceTemplate is marked @NonNull but is null");
assertThatThrownBy(() -> {
- databaseProvider.deletePolicies(null);
- }).hasMessage("policyKey is marked @NonNull but is null");
+ databaseProvider.deletePolicy(null, null);
+ }).hasMessage("name is marked @NonNull but is null");
+
+ assertThatThrownBy(() -> {
+ databaseProvider.deletePolicy(null, "aaa");
+ }).hasMessage("name is marked @NonNull but is null");
+
+ assertThatThrownBy(() -> {
+ databaseProvider.deletePolicy("aaa", null);
+ }).hasMessage("version is marked @NonNull but is null");
assertThatThrownBy(() -> {
databaseProvider.getOperationalPolicy(null);
@@ -185,10 +215,6 @@
}).hasMessage("policyId is marked @NonNull but is null");
assertThatThrownBy(() -> {
- databaseProvider.getPdpGroups(null);
- }).hasMessage("pdpGroupFilter is marked @NonNull but is null");
-
- assertThatThrownBy(() -> {
databaseProvider.createPdpGroups(null);
}).hasMessage("pdpGroups is marked @NonNull but is null");
@@ -197,8 +223,8 @@
}).hasMessage("pdpGroups is marked @NonNull but is null");
assertThatThrownBy(() -> {
- databaseProvider.deletePdpGroups(null);
- }).hasMessage("pdpGroupFilter is marked @NonNull but is null");
+ databaseProvider.deletePdpGroup(null, null);
+ }).hasMessage("name is marked @NonNull but is null");
databaseProvider.close();
@@ -210,7 +236,7 @@
new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
assertThatThrownBy(() -> {
- databaseProvider.getPolicyTypes(new PfConceptKey());
+ databaseProvider.getPolicyTypes("name", "version");
}).hasMessage("policy models provider is not initilaized");
}
@@ -221,36 +247,36 @@
databaseProvider.init();
assertThatThrownBy(() -> {
- databaseProvider.getPolicyTypes(new PfConceptKey());
- }).hasMessage("policy type not found: NULL:0.0.0");
+ databaseProvider.getPolicyTypes("name", "version");
+ }).hasMessage("policy type not found: name:version");
assertThatThrownBy(() -> {
- databaseProvider.createPolicyTypes(new JpaToscaServiceTemplate());
+ databaseProvider.createPolicyTypes(new ToscaServiceTemplate());
}).hasMessage("no policy types specified on service template");
assertThatThrownBy(() -> {
- databaseProvider.updatePolicyTypes(new JpaToscaServiceTemplate());
+ databaseProvider.updatePolicyTypes(new ToscaServiceTemplate());
}).hasMessage("no policy types specified on service template");
assertThatThrownBy(() -> {
- databaseProvider.deletePolicyTypes(new PfConceptKey());
- }).hasMessage("policy type not found: NULL:0.0.0");
+ databaseProvider.deletePolicyType("name", "version");
+ }).hasMessage("policy type not found: name:version");
assertThatThrownBy(() -> {
- databaseProvider.getPolicies(new PfConceptKey());
- }).hasMessage("policy not found: NULL:0.0.0");
+ databaseProvider.getPolicies("name", "version");
+ }).hasMessage("policy not found: name:version");
assertThatThrownBy(() -> {
- databaseProvider.createPolicies(new JpaToscaServiceTemplate());
+ databaseProvider.createPolicies(new ToscaServiceTemplate());
}).hasMessage("topology template not specified on service template");
assertThatThrownBy(() -> {
- databaseProvider.updatePolicies(new JpaToscaServiceTemplate());
+ databaseProvider.updatePolicies(new ToscaServiceTemplate());
}).hasMessage("topology template not specified on service template");
assertThatThrownBy(() -> {
- databaseProvider.deletePolicies(new PfConceptKey());
- }).hasMessage("policy not found: NULL:0.0.0");
+ databaseProvider.deletePolicy("name", "version");
+ }).hasMessage("policy not found: name:version");
assertThatThrownBy(() -> {
databaseProvider.getOperationalPolicy("policy_id");
@@ -284,10 +310,10 @@
databaseProvider.deleteGuardPolicy("policy_id");
}).hasMessage("no policy found for policy ID: policy_id");
- assertNotNull(databaseProvider.getPdpGroups("filter"));
+ assertNotNull(databaseProvider.getPdpGroups("name", "version"));
assertNotNull(databaseProvider.createPdpGroups(new PdpGroups()));
assertNotNull(databaseProvider.updatePdpGroups(new PdpGroups()));
- assertNotNull(databaseProvider.deletePdpGroups("filter"));
+ assertNotNull(databaseProvider.deletePdpGroup("name", "version"));
} catch (Exception exc) {
LOGGER.warn("test should not throw an exception", exc);
diff --git a/models-provider/src/test/java/org/onap/policy/models/provider/impl/DummyBadProviderImpl.java b/models-provider/src/test/java/org/onap/policy/models/provider/impl/DummyBadProviderImpl.java
index 2ee210c..9320df5 100644
--- a/models-provider/src/test/java/org/onap/policy/models/provider/impl/DummyBadProviderImpl.java
+++ b/models-provider/src/test/java/org/onap/policy/models/provider/impl/DummyBadProviderImpl.java
@@ -20,21 +20,27 @@
package org.onap.policy.models.provider.impl;
+import java.util.List;
import java.util.Map;
import javax.ws.rs.core.Response;
import lombok.NonNull;
-import org.onap.policy.models.base.PfConceptKey;
+import org.apache.commons.lang3.tuple.Pair;
import org.onap.policy.models.base.PfModelException;
import org.onap.policy.models.base.PfModelRuntimeException;
+import org.onap.policy.models.pdp.concepts.PdpGroup;
import org.onap.policy.models.pdp.concepts.PdpGroups;
+import org.onap.policy.models.pdp.concepts.PdpStatistics;
+import org.onap.policy.models.pdp.concepts.PdpSubGroup;
import org.onap.policy.models.provider.PolicyModelsProvider;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyType;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
import org.onap.policy.models.tosca.legacy.concepts.LegacyGuardPolicyInput;
import org.onap.policy.models.tosca.legacy.concepts.LegacyGuardPolicyOutput;
import org.onap.policy.models.tosca.legacy.concepts.LegacyOperationalPolicy;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate;
/**
* Dummy implementation of {@link PolicyModelsProvider} with bad constructor.
@@ -53,46 +59,46 @@
public void init() throws PfModelException {}
@Override
- public JpaToscaServiceTemplate getPolicyTypes(@NonNull PfConceptKey policyTypeKey) throws PfModelException {
+ public ToscaServiceTemplate getPolicyTypes(final String name, final String version) throws PfModelException {
return null;
}
@Override
- public JpaToscaServiceTemplate createPolicyTypes(@NonNull JpaToscaServiceTemplate serviceTemplate)
+ public ToscaServiceTemplate createPolicyTypes(@NonNull ToscaServiceTemplate serviceTemplate)
throws PfModelException {
return null;
}
@Override
- public JpaToscaServiceTemplate updatePolicyTypes(@NonNull JpaToscaServiceTemplate serviceTemplate)
+ public ToscaServiceTemplate updatePolicyTypes(@NonNull ToscaServiceTemplate serviceTemplate)
throws PfModelException {
return null;
}
@Override
- public JpaToscaServiceTemplate deletePolicyTypes(@NonNull PfConceptKey policyTypeKey) throws PfModelException {
+ public ToscaServiceTemplate deletePolicyType(final String name, final String version) throws PfModelException {
return null;
}
@Override
- public JpaToscaServiceTemplate getPolicies(@NonNull PfConceptKey policyKey) throws PfModelException {
+ public ToscaServiceTemplate getPolicies(final String name, final String version) throws PfModelException {
return null;
}
@Override
- public JpaToscaServiceTemplate createPolicies(@NonNull JpaToscaServiceTemplate serviceTemplate)
+ public ToscaServiceTemplate createPolicies(@NonNull ToscaServiceTemplate serviceTemplate)
throws PfModelException {
return null;
}
@Override
- public JpaToscaServiceTemplate updatePolicies(@NonNull JpaToscaServiceTemplate serviceTemplate)
+ public ToscaServiceTemplate updatePolicies(@NonNull ToscaServiceTemplate serviceTemplate)
throws PfModelException {
return null;
}
@Override
- public JpaToscaServiceTemplate deletePolicies(@NonNull PfConceptKey policyKey) throws PfModelException {
+ public ToscaServiceTemplate deletePolicy(final String name, final String version) throws PfModelException {
return null;
}
@@ -141,7 +147,7 @@
}
@Override
- public PdpGroups getPdpGroups(@NonNull String pdpGroupFilter) throws PfModelException {
+ public PdpGroups getPdpGroups(String name, String version) throws PfModelException {
return null;
}
@@ -156,7 +162,73 @@
}
@Override
- public PdpGroups deletePdpGroups(@NonNull String pdpGroupFilter) throws PfModelException {
+ public PdpGroup deletePdpGroup(@NonNull String name, @NonNull String verison) throws PfModelException {
+ return null;
+ }
+
+ @Override
+ public List<ToscaPolicyType> getPolicyTypeList(String name, String version) throws PfModelException {
+ return null;
+ }
+
+ @Override
+ public ToscaServiceTemplate getLatestPolicyTypes(String name) throws PfModelException {
+ return null;
+ }
+
+ @Override
+ public List<ToscaPolicyType> getLatestPolicyTypeList(String name) throws PfModelException {
+ return null;
+ }
+
+ @Override
+ public List<ToscaPolicy> getPolicyList(String name, String version) throws PfModelException {
+ return null;
+ }
+
+ @Override
+ public List<ToscaPolicy> getPolicyList4PolicyType(@NonNull String policyTypeName) throws PfModelException {
+ return null;
+ }
+
+ @Override
+ public ToscaServiceTemplate getLatestPolicies(String name) throws PfModelException {
+ return null;
+ }
+
+ @Override
+ public List<ToscaPolicy> getLatestPolicyList(String name) throws PfModelException {
+ return null;
+ }
+
+ @Override
+ public PdpGroups getLatestPdpGroups(String name) throws PfModelException {
+ return null;
+ }
+
+ @Override
+ public PdpGroups getFilteredPdpGroups(@NonNull String pdpType,
+ @NonNull List<Pair<String, String>> supportedPolicyTypes) {
+ return null;
+ }
+
+ @Override
+ public void updatePdpSubGroup(@NonNull String pdpGroupName, @NonNull String pdpGroupVersion,
+ @NonNull PdpSubGroup pdpSubGroup) throws PfModelException {
+ }
+
+ @Override
+ public List<PdpStatistics> getPdpStatistics(String name, String version) throws PfModelException {
+ return null;
+ }
+
+ @Override
+ public void updatePdpStatistics(@NonNull String pdpGroupName, @NonNull String pdpGroupVersion,
+ @NonNull String pdpType, @NonNull String pdpInstanceId, @NonNull PdpStatistics pdppStatistics) {
+ }
+
+ @Override
+ public Map<PdpGroup, List<ToscaPolicy>> getDeployedPolicyList(String name) throws PfModelException {
return null;
}
}
diff --git a/models-provider/src/test/java/org/onap/policy/models/provider/impl/DummyPolicyModelsProviderSubImpl.java b/models-provider/src/test/java/org/onap/policy/models/provider/impl/DummyPolicyModelsProviderSubImpl.java
index 66c7762..797b1ac 100644
--- a/models-provider/src/test/java/org/onap/policy/models/provider/impl/DummyPolicyModelsProviderSubImpl.java
+++ b/models-provider/src/test/java/org/onap/policy/models/provider/impl/DummyPolicyModelsProviderSubImpl.java
@@ -23,7 +23,7 @@
import lombok.NonNull;
import org.onap.policy.models.provider.PolicyModelsProviderParameters;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
/**
* Sub class to check getDummyResponse() method in base class.
@@ -40,11 +40,11 @@
super(parameters);
}
- public JpaToscaServiceTemplate getBadDummyResponse1() {
+ public ToscaServiceTemplate getBadDummyResponse1() {
return super.getDummyResponse("/i/dont/exist");
}
- public JpaToscaServiceTemplate getBadDummyResponse2() {
+ public ToscaServiceTemplate getBadDummyResponse2() {
return super.getDummyResponse(null);
}
}
diff --git a/models-provider/src/test/java/org/onap/policy/models/provider/impl/DummyPolicyModelsProviderTest.java b/models-provider/src/test/java/org/onap/policy/models/provider/impl/DummyPolicyModelsProviderTest.java
index af76edb..a0b4857 100644
--- a/models-provider/src/test/java/org/onap/policy/models/provider/impl/DummyPolicyModelsProviderTest.java
+++ b/models-provider/src/test/java/org/onap/policy/models/provider/impl/DummyPolicyModelsProviderTest.java
@@ -23,17 +23,17 @@
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
import static org.junit.Assert.fail;
import org.junit.Test;
-import org.onap.policy.models.base.PfConceptKey;
import org.onap.policy.models.pdp.concepts.PdpGroups;
import org.onap.policy.models.provider.PolicyModelsProvider;
import org.onap.policy.models.provider.PolicyModelsProviderFactory;
import org.onap.policy.models.provider.PolicyModelsProviderParameters;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
import org.onap.policy.models.tosca.legacy.concepts.LegacyGuardPolicyInput;
import org.onap.policy.models.tosca.legacy.concepts.LegacyOperationalPolicy;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate;
/**
* Test the dummy models provider implementation.
@@ -53,10 +53,10 @@
dummyProvider.init();
- JpaToscaServiceTemplate serviceTemplate = dummyProvider.getPolicies(new PfConceptKey());
+ ToscaServiceTemplate serviceTemplate = dummyProvider.getPolicies("onap.vcpe.tca", "1.0.0");
assertNotNull(serviceTemplate);
- assertEquals("onap.vcpe.tca:1.0.0",
- serviceTemplate.getTopologyTemplate().getPolicies().get("onap.vcpe.tca").getId());
+ assertEquals("onap.policies.monitoring.cdap.tca.hi.lo.app",
+ serviceTemplate.getToscaTopologyTemplate().getPolicies().get(0).get("onap.vcpe.tca").getType());
dummyProvider.close();
}
@@ -71,15 +71,15 @@
PolicyModelsProvider dummyProvider = new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
dummyProvider.init();
- assertNotNull(dummyProvider.getPolicyTypes(new PfConceptKey()));
- assertNotNull(dummyProvider.createPolicyTypes(new JpaToscaServiceTemplate()));
- assertNotNull(dummyProvider.updatePolicyTypes(new JpaToscaServiceTemplate()));
- assertNotNull(dummyProvider.deletePolicyTypes(new PfConceptKey()));
+ assertNotNull(dummyProvider.getPolicyTypes("name", "version"));
+ assertNotNull(dummyProvider.createPolicyTypes(new ToscaServiceTemplate()));
+ assertNotNull(dummyProvider.updatePolicyTypes(new ToscaServiceTemplate()));
+ assertNotNull(dummyProvider.deletePolicyType("name", "version"));
- assertNotNull(dummyProvider.getPolicies(new PfConceptKey()));
- assertNotNull(dummyProvider.createPolicies(new JpaToscaServiceTemplate()));
- assertNotNull(dummyProvider.updatePolicies(new JpaToscaServiceTemplate()));
- assertNotNull(dummyProvider.deletePolicies(new PfConceptKey()));
+ assertNotNull(dummyProvider.getPolicies("name", "version"));
+ assertNotNull(dummyProvider.createPolicies(new ToscaServiceTemplate()));
+ assertNotNull(dummyProvider.updatePolicies(new ToscaServiceTemplate()));
+ assertNotNull(dummyProvider.deletePolicy("name", "version"));
assertNotNull(dummyProvider.getOperationalPolicy("policy_id"));
assertNotNull(dummyProvider.createOperationalPolicy(new LegacyOperationalPolicy()));
@@ -91,36 +91,11 @@
assertNotNull(dummyProvider.updateGuardPolicy(new LegacyGuardPolicyInput()));
assertNotNull(dummyProvider.deleteGuardPolicy("policy_id"));
- assertNotNull(dummyProvider.getPdpGroups("filter"));
- assertNotNull(dummyProvider.createPdpGroups(new PdpGroups()));
- assertNotNull(dummyProvider.updatePdpGroups(new PdpGroups()));
- assertNotNull(dummyProvider.deletePdpGroups("filter"));
+ assertNull(dummyProvider.getPdpGroups("name", "version"));
+ assertNull(dummyProvider.createPdpGroups(new PdpGroups()));
+ assertNull(dummyProvider.updatePdpGroups(new PdpGroups()));
+ assertNull(dummyProvider.deletePdpGroup("name", "version"));
- assertThatThrownBy(() -> {
- dummyProvider.getPolicyTypes(null);
- }).hasMessage("policyTypeKey is marked @NonNull but is null");
- assertThatThrownBy(() -> {
- dummyProvider.createPolicyTypes(null);
- }).hasMessage("serviceTemplate is marked @NonNull but is null");
- assertThatThrownBy(() -> {
- dummyProvider.updatePolicyTypes(null);
- }).hasMessage("serviceTemplate is marked @NonNull but is null");
- assertThatThrownBy(() -> {
- dummyProvider.deletePolicyTypes(null);
- }).hasMessage("policyTypeKey is marked @NonNull but is null");
-
- assertThatThrownBy(() -> {
- dummyProvider.getPolicies(null);
- }).hasMessage("policyKey is marked @NonNull but is null");
- assertThatThrownBy(() -> {
- dummyProvider.createPolicies(null);
- }).hasMessage("serviceTemplate is marked @NonNull but is null");
- assertThatThrownBy(() -> {
- dummyProvider.updatePolicies(null);
- }).hasMessage("serviceTemplate is marked @NonNull but is null");
- assertThatThrownBy(() -> {
- dummyProvider.deletePolicies(null);
- }).hasMessage("policyKey is marked @NonNull but is null");
assertThatThrownBy(() -> {
dummyProvider.getOperationalPolicy(null);
@@ -149,17 +124,14 @@
}).hasMessage("policyId is marked @NonNull but is null");
assertThatThrownBy(() -> {
- dummyProvider.getPdpGroups(null);
- }).hasMessage("pdpGroupFilter is marked @NonNull but is null");
- assertThatThrownBy(() -> {
dummyProvider.createPdpGroups(null);
}).hasMessage("pdpGroups is marked @NonNull but is null");
assertThatThrownBy(() -> {
dummyProvider.updatePdpGroups(null);
}).hasMessage("pdpGroups is marked @NonNull but is null");
assertThatThrownBy(() -> {
- dummyProvider.deletePdpGroups(null);
- }).hasMessage("pdpGroupFilter is marked @NonNull but is null");
+ dummyProvider.deletePdpGroup(null, null);
+ }).hasMessage("name is marked @NonNull but is null");
dummyProvider.close();
}
diff --git a/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyPersistenceTest.java b/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyPersistenceTest.java
index e0aba8a..b29e1d6 100644
--- a/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyPersistenceTest.java
+++ b/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyPersistenceTest.java
@@ -22,29 +22,26 @@
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 com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.util.Base64;
+import java.util.Map;
import lombok.NonNull;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
+import org.onap.policy.common.utils.coder.StandardCoder;
import org.onap.policy.common.utils.resources.ResourceUtils;
-import org.onap.policy.models.base.PfConceptKey;
import org.onap.policy.models.base.PfModelException;
-import org.onap.policy.models.base.PfValidationResult;
import org.onap.policy.models.provider.PolicyModelsProvider;
import org.onap.policy.models.provider.PolicyModelsProviderFactory;
import org.onap.policy.models.provider.PolicyModelsProviderParameters;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicy;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate;
-import org.onap.policy.models.tosca.simple.serialization.ToscaServiceTemplateMessageBodyHandler;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.yaml.snakeyaml.Yaml;
@@ -58,7 +55,7 @@
// Logger for this class
private static final Logger LOGGER = LoggerFactory.getLogger(PolicyPersistenceTest.class);
- private Gson gson;
+ private StandardCoder standardCoder;
private PolicyModelsProvider databaseProvider;
@@ -101,7 +98,7 @@
*/
@Before
public void setupGson() {
- gson = new ToscaServiceTemplateMessageBodyHandler().getGson();
+ standardCoder = new StandardCoder();
}
@After
@@ -141,19 +138,20 @@
* @throws Exception any exception thrown
*/
public void testJsonStringPolicyPersistence(@NonNull final String policyString) throws Exception {
- JpaToscaServiceTemplate serviceTemplate = gson.fromJson(policyString, JpaToscaServiceTemplate.class);
+ ToscaServiceTemplate serviceTemplate = standardCoder.decode(policyString, ToscaServiceTemplate.class);
assertNotNull(serviceTemplate);
- LOGGER.info(serviceTemplate.validate(new PfValidationResult()).toString());
- assertTrue(serviceTemplate.validate(new PfValidationResult()).isValid());
databaseProvider.createPolicies(serviceTemplate);
- for (PfConceptKey policyKey : serviceTemplate.getTopologyTemplate().getPolicies().getConceptMap().keySet()) {
- JpaToscaPolicy incomingPolicy = serviceTemplate.getTopologyTemplate().getPolicies().get(policyKey);
- JpaToscaPolicy databasePolicy =
- databaseProvider.getPolicies(policyKey).getTopologyTemplate().getPolicies().get(policyKey);
- assertEquals(incomingPolicy, databasePolicy);
+ for (Map<String, ToscaPolicy> policyMap : serviceTemplate.getToscaTopologyTemplate().getPolicies()) {
+ for (ToscaPolicy policy : policyMap.values()) {
+ ToscaServiceTemplate goToscaServiceTemplate =
+ databaseProvider.getPolicies(policy.getName(), policy.getVersion());
+
+ assertEquals(goToscaServiceTemplate.getToscaTopologyTemplate().getPolicies().get(0)
+ .get(policy.getName()).getType(), policy.getType());
+ }
}
}
}
diff --git a/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyToscaPersistenceTest.java b/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyToscaPersistenceTest.java
index bd85358..f2b8676 100644
--- a/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyToscaPersistenceTest.java
+++ b/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyToscaPersistenceTest.java
@@ -22,10 +22,8 @@
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 com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.util.Base64;
@@ -35,16 +33,14 @@
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
+import org.onap.policy.common.utils.coder.StandardCoder;
import org.onap.policy.common.utils.resources.ResourceUtils;
-import org.onap.policy.models.base.PfConceptKey;
import org.onap.policy.models.base.PfModelException;
-import org.onap.policy.models.base.PfValidationResult;
import org.onap.policy.models.provider.PolicyModelsProvider;
import org.onap.policy.models.provider.PolicyModelsProviderFactory;
import org.onap.policy.models.provider.PolicyModelsProviderParameters;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicy;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate;
-import org.onap.policy.models.tosca.simple.serialization.ToscaServiceTemplateMessageBodyHandler;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.yaml.snakeyaml.Yaml;
@@ -58,7 +54,7 @@
// Logger for this class
private static final Logger LOGGER = LoggerFactory.getLogger(PolicyToscaPersistenceTest.class);
- private Gson gson;
+ private StandardCoder standardCoder;
private PolicyModelsProvider databaseProvider;
@@ -97,11 +93,11 @@
}
/**
- * Set up GSON.
+ * Set up the standard coder.
*/
@Before
- public void setupGson() {
- gson = new ToscaServiceTemplateMessageBodyHandler().getGson();
+ public void setupStandardCoder() {
+ standardCoder = new StandardCoder();
}
@After
@@ -141,19 +137,18 @@
* @throws Exception any exception thrown
*/
public void testJsonStringPolicyPersistence(@NonNull final String policyString) throws Exception {
- JpaToscaServiceTemplate serviceTemplate = gson.fromJson(policyString, JpaToscaServiceTemplate.class);
+ ToscaServiceTemplate serviceTemplate = standardCoder.decode(policyString, ToscaServiceTemplate.class);
assertNotNull(serviceTemplate);
- LOGGER.info(serviceTemplate.validate(new PfValidationResult()).toString());
- assertTrue(serviceTemplate.validate(new PfValidationResult()).isValid());
databaseProvider.createPolicies(serviceTemplate);
- for (PfConceptKey policyKey : serviceTemplate.getTopologyTemplate().getPolicies().getConceptMap().keySet()) {
- JpaToscaPolicy incomingPolicy = serviceTemplate.getTopologyTemplate().getPolicies().get(policyKey);
- JpaToscaPolicy databasePolicy =
- databaseProvider.getPolicies(policyKey).getTopologyTemplate().getPolicies().get(policyKey);
- assertEquals(incomingPolicy, databasePolicy);
+ for (String policyKey : serviceTemplate.getToscaTopologyTemplate().getPolicies().get(0).keySet()) {
+ ToscaPolicy incomingPolicy = serviceTemplate.getToscaTopologyTemplate().getPolicies().get(0).get(policyKey);
+ ToscaPolicy databasePolicy =
+ databaseProvider.getPolicies(incomingPolicy.getName(), incomingPolicy.getVersion())
+ .getToscaTopologyTemplate().getPolicies().get(0).get(policyKey);
+ assertEquals(incomingPolicy.getType(), databasePolicy.getType());
}
}
}
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 13b4adf..4623b20 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
@@ -3,6 +3,7 @@
* ONAP Policy Model
* ================================================================================
* Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * Modifications 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.
@@ -38,4 +39,17 @@
private List<String> validValues;
private String equal;
+
+ @SerializedName("greater_than")
+ private String greaterThan;
+
+ @SerializedName("greater_or_equal")
+ private String greaterOrEqual;
+
+ @SerializedName("less_than")
+ private String lessThan;
+
+ @SerializedName("less_or_equal")
+ private String lessOrEqual;
+
}
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaDataType.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaDataType.java
index 9aae320..b07163b 100644
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaDataType.java
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaDataType.java
@@ -3,6 +3,7 @@
* ONAP Policy Model
* ================================================================================
* Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * Modifications 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.
@@ -22,9 +23,11 @@
package org.onap.policy.models.tosca.authorative.concepts;
-import com.google.gson.annotations.SerializedName;
+import java.util.List;
import java.util.Map;
import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
/**
* Class to represent TOSCA data type matching input/output from/to client.
@@ -32,16 +35,10 @@
* @author Chenfei Gao (cgao@research.att.com)
*/
@Data
-public class ToscaDataType {
-
- @SerializedName("derived_from")
- private String derivedFrom;
-
- private String version;
-
- private Map<String, String> metadata;
-
- private String description;
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+public class ToscaDataType extends ToscaEntity {
+ private List<ToscaConstraint> constraints;
private Map<String, ToscaProperty> properties;
}
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
new file mode 100644
index 0000000..a61f2a7
--- /dev/null
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaEntity.java
@@ -0,0 +1,75 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP Policy Model
+ * ================================================================================
+ * 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 com.google.gson.annotations.SerializedName;
+
+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;
+
+/**
+ * Class to represent TOSCA data type matching input/output from/to client.
+ *
+ * @author Chenfei Gao (cgao@research.att.com)
+ */
+@Data
+@NoArgsConstructor
+public class ToscaEntity implements PfNameVersion {
+ private String name;
+
+ private String version;
+
+ @SerializedName("derived_from")
+ private String derivedFrom;
+
+ private Map<String, String> metadata;
+
+ private String description;
+
+ /**
+ * Copy COnstructor.
+ *
+ * @param copyObject object to copy from
+ */
+ public ToscaEntity(@NonNull ToscaEntity copyObject) {
+ this.name = copyObject.name;
+ this.version = copyObject.version;
+ this.derivedFrom = copyObject.derivedFrom;
+ this.description = copyObject.description;
+
+ if (copyObject.metadata != null) {
+ metadata = new LinkedHashMap<>();
+ for (final Entry<String, String> metadataEntry : copyObject.metadata.entrySet()) {
+ metadata.put(metadataEntry.getKey(), metadataEntry.getValue());
+ }
+ }
+ }
+
+}
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaEntrySchema.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaEntrySchema.java
index a3526f7..352dfa7 100644
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaEntrySchema.java
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaEntrySchema.java
@@ -3,6 +3,7 @@
* ONAP Policy Model
* ================================================================================
* Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * Modifications 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.
@@ -32,9 +33,12 @@
*/
@Data
public class ToscaEntrySchema {
+ private String name;
private String type;
+ private String typeVersion;
+
private String description;
private List<ToscaConstraint> constraints;
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 e861606..38c6859 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
@@ -3,6 +3,7 @@
* ONAP Policy Model
* ================================================================================
* Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * Modifications 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.
@@ -24,9 +25,13 @@
import java.util.LinkedHashMap;
import java.util.Map;
+import java.util.Map.Entry;
+
import lombok.Data;
+import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.NonNull;
+import lombok.ToString;
/**
* Class to represent TOSCA policy matching input/output from/to client.
@@ -34,16 +39,13 @@
* @author Chenfei Gao (cgao@research.att.com)
*/
@Data
+@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
-public class ToscaPolicy {
-
+@ToString(callSuper = true)
+public class ToscaPolicy extends ToscaEntity {
private String type;
- private String version;
-
- private String description;
-
- private Map<String, String> metadata;
+ private String typeVersion;
private Map<String, Object> properties;
@@ -53,10 +55,16 @@
* @param copyObject the obejct to copy from.
*/
public ToscaPolicy(@NonNull ToscaPolicy copyObject) {
+ super(copyObject);
+
this.type = copyObject.type;
- this.version = copyObject.version;
- this.description = copyObject.description;
- this.metadata = (metadata != null ? new LinkedHashMap<>(copyObject.metadata) : null);
- this.properties = (properties != null ? new LinkedHashMap<>(copyObject.properties) : null);
+ this.typeVersion = copyObject.typeVersion;
+
+ if (copyObject.properties != null) {
+ properties = new LinkedHashMap<>();
+ for (final Entry<String, Object> propertyEntry : copyObject.properties.entrySet()) {
+ properties.put(propertyEntry.getKey(), propertyEntry.getValue());
+ }
+ }
}
}
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyType.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyType.java
index c46402b..d64a5fa 100644
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyType.java
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyType.java
@@ -3,6 +3,7 @@
* ONAP Policy Model
* ================================================================================
* Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * Modifications 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.
@@ -22,9 +23,10 @@
package org.onap.policy.models.tosca.authorative.concepts;
-import com.google.gson.annotations.SerializedName;
import java.util.Map;
import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
/**
* Class to represent TOSCA policy type matching input/output from/to client.
@@ -32,16 +34,8 @@
* @author Chenfei Gao (cgao@research.att.com)
*/
@Data
-public class ToscaPolicyType {
-
- @SerializedName("derived_from")
- private String derivedFrom;
-
- private String version;
-
- private Map<String, String> metadata;
-
- private String description;
-
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+public class ToscaPolicyType extends ToscaEntity {
private Map<String, ToscaProperty> properties;
}
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 9eda83b..84f798b 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
@@ -3,6 +3,7 @@
* ONAP Policy Model
* ================================================================================
* Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * Modifications 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.
@@ -33,18 +34,27 @@
*/
@Data
public class ToscaProperty {
+ public enum Status {
+ SUPPORTED, UNSUPPORTED, EXPERIMENTAL, DEPRECATED
+ }
+
+ private String name;
private String type;
- private String description;
+ private String typeVersion;
- private boolean required = false;
+ private String description;
@SerializedName("default")
private String defaultValue;
- @SerializedName("entry_schema")
- private ToscaEntrySchema entrySchema;
+ private boolean required = false;
+
+ private Status status;
private List<ToscaConstraint> constraints;
+
+ @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 3d1b963..a9a1783 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
@@ -3,6 +3,7 @@
* ONAP Policy Model
* ================================================================================
* Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * Modifications 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.
@@ -26,6 +27,7 @@
import java.util.List;
import java.util.Map;
import lombok.Data;
+import lombok.EqualsAndHashCode;
/**
* Class to represent TOSCA service template matching input/output from/to client.
@@ -33,7 +35,8 @@
* @author Chenfei Gao (cgao@research.att.com)
*/
@Data
-public class ToscaServiceTemplate {
+@EqualsAndHashCode(callSuper = true)
+public class ToscaServiceTemplate extends ToscaEntity {
@SerializedName("tosca_definitions_version")
private String toscaDefinitionsVersion;
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/mapping/PlainToscaServiceTemplateMapper.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/mapping/PlainToscaServiceTemplateMapper.java
deleted file mode 100644
index cef8348..0000000
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/mapping/PlainToscaServiceTemplateMapper.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP Policy Model
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.models.tosca.authorative.mapping;
-
-import com.google.gson.Gson;
-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.mapping.JpaToscaServiceTemplateMapper;
-import org.onap.policy.models.tosca.simple.serialization.ToscaServiceTemplateMessageBodyHandler;
-
-/**
- * This class maps a TOSCA service template from client input form to internal representation and vice verse.
- *
- * @author Chenfei Gao (cgao@research.att.com)
- */
-public class PlainToscaServiceTemplateMapper
- implements JpaToscaServiceTemplateMapper<ToscaServiceTemplate, ToscaServiceTemplate> {
-
- private Gson defaultGson = new Gson();
- private Gson customGson = new ToscaServiceTemplateMessageBodyHandler().getGson();
-
- @Override
- public JpaToscaServiceTemplate toToscaServiceTemplate(ToscaServiceTemplate otherPolicy) {
-
- String serializedServiceTemplate = defaultGson.toJson(otherPolicy);
- return customGson.fromJson(serializedServiceTemplate, JpaToscaServiceTemplate.class);
-
- }
-
- @Override
- public ToscaServiceTemplate fromToscaServiceTemplate(JpaToscaServiceTemplate serviceTemplate) {
-
- String serializedServiceTemplate = customGson.toJson(serviceTemplate);
- return defaultGson.fromJson(serializedServiceTemplate, ToscaServiceTemplate.class);
- }
-}
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
new file mode 100644
index 0000000..e9e92d3
--- /dev/null
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/provider/AuthorativeToscaProvider.java
@@ -0,0 +1,253 @@
+/*-
+ * ============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.provider;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import lombok.NonNull;
+
+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.ToscaPolicyType;
+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;
+
+/**
+ * This class provides the provision of information on TOSCA concepts in the database to callers.
+ *
+ * @author Liam Fallon (liam.fallon@est.tech)
+ */
+public class AuthorativeToscaProvider {
+ /**
+ * Get policy types.
+ *
+ * @param dao the DAO to use to access the database
+ * @param name the name of the policy type to get.
+ * @param version the version of the policy type to get.
+ * @return the policy types found
+ * @throws PfModelException on errors getting policy types
+ */
+ 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();
+ }
+
+ /**
+ * Get 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 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 List<ToscaPolicyType> getPolicyTypeList(@NonNull final PfDao dao, final String name, final String version)
+ throws PfModelException {
+ return new ArrayList<>();
+ }
+
+ /**
+ * Get latest 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
+ * @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;
+ }
+
+ /**
+ * Get latest 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
+ * @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<>();
+ }
+
+ /**
+ * Create policy types.
+ *
+ * @param dao the DAO to use to access the database
+ * @param serviceTemplate the service template containing the definition of the policy types to be created
+ * @return the TOSCA service template containing the created policy types
+ * @throws PfModelException on errors creating policy types
+ */
+ public ToscaServiceTemplate createPolicyTypes(@NonNull final PfDao dao,
+ @NonNull final ToscaServiceTemplate serviceTemplate) throws PfModelException {
+
+ return new SimpleToscaProvider().createPolicyTypes(dao, new JpaToscaServiceTemplate(serviceTemplate))
+ .toAuthorative();
+ }
+
+ /**
+ * Update policy types.
+ *
+ * @param dao the DAO to use to access the database
+ * @param serviceTemplate the service template containing the definition of the policy types to be modified
+ * @return the TOSCA service template containing the modified policy types
+ * @throws PfModelException on errors updating policy types
+ */
+ public ToscaServiceTemplate updatePolicyTypes(@NonNull final PfDao dao,
+ @NonNull final ToscaServiceTemplate serviceTemplate) throws PfModelException {
+
+ return new SimpleToscaProvider().updatePolicyTypes(dao, new JpaToscaServiceTemplate(serviceTemplate))
+ .toAuthorative();
+ }
+
+ /**
+ * Delete policy type.
+ *
+ * @param dao the DAO to use to access the database
+ * @param name the name of the policy type to delete.
+ * @param version the version of the policy type to delete.
+ * @return the TOSCA service template containing the policy type that was deleted
+ * @throws PfModelException on errors deleting policy types
+ */
+ public ToscaServiceTemplate deletePolicyType(@NonNull final PfDao dao, @NonNull final String name,
+ @NonNull final String version) throws PfModelException {
+
+ return new SimpleToscaProvider().deletePolicyType(dao, new PfConceptKey(name, version)).toAuthorative();
+ }
+
+ /**
+ * Get policies.
+ *
+ * @param dao the DAO to use to access the database
+ * @param name the name of the policy to get.
+ * @param version the version of the policy to get.
+ * @return the policies found
+ * @throws PfModelException on errors getting policies
+ */
+ 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();
+ }
+
+ /**
+ * Get 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 version the version of the policy to get, null to get all versions of a policy
+ * @return the policies found
+ * @throws PfModelException on errors getting policies
+ */
+ 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
+ * @return the policies found
+ * @throws PfModelException on errors getting policies
+ */
+ public List<ToscaPolicy> getPolicyList4PolicyType(@NonNull final PfDao dao, @NonNull final String policyTypeName)
+ throws PfModelException {
+ return new ArrayList<>();
+ }
+
+ /**
+ * 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;
+ }
+
+ /**
+ * 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 List<ToscaPolicy> getLatestPolicyList(@NonNull final PfDao dao, final String name) throws PfModelException {
+ return new ArrayList<>();
+ }
+
+ /**
+ * Create policies.
+ *
+ * @param dao the DAO to use to access the database
+ * @param serviceTemplate the service template containing the definitions of the new policies to be created.
+ * @return the TOSCA service template containing the policy types that were created
+ * @throws PfModelException on errors creating policies
+ */
+ public ToscaServiceTemplate createPolicies(@NonNull final PfDao dao,
+ @NonNull final ToscaServiceTemplate serviceTemplate) throws PfModelException {
+
+ return new SimpleToscaProvider().createPolicies(dao, new JpaToscaServiceTemplate(serviceTemplate))
+ .toAuthorative();
+ }
+
+ /**
+ * Update policies.
+ *
+ * @param dao the DAO to use to access the database
+ * @param serviceTemplate the service template containing the definitions of the policies to be updated.
+ * @return the TOSCA service template containing the policies that were updated
+ * @throws PfModelException on errors updating policies
+ */
+ public ToscaServiceTemplate updatePolicies(@NonNull final PfDao dao,
+ @NonNull final ToscaServiceTemplate serviceTemplate) throws PfModelException {
+
+ return new SimpleToscaProvider().updatePolicies(dao, new JpaToscaServiceTemplate(serviceTemplate))
+ .toAuthorative();
+ }
+
+ /**
+ * Delete policy.
+ *
+ * @param dao the DAO to use to access the database
+ * @param name the name of the policy to delete.
+ * @param version the version of the policy to delete.
+ * @return the TOSCA service template containing the policy that weas deleted
+ * @throws PfModelException on errors deleting policies
+ */
+ public ToscaServiceTemplate deletePolicy(@NonNull final PfDao dao, @NonNull final String name,
+ @NonNull final String version) throws PfModelException {
+
+ return new SimpleToscaProvider().deletePolicy(dao, new PfConceptKey(name, version)).toAuthorative();
+ }
+}
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraint.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraint.java
index bde53c3..fad227c 100644
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraint.java
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraint.java
@@ -23,22 +23,13 @@
package org.onap.policy.models.tosca.simple.concepts;
-import java.util.List;
+import java.io.Serializable;
-import javax.persistence.EmbeddedId;
-import javax.ws.rs.core.Response;
-
-import lombok.Data;
import lombok.EqualsAndHashCode;
-import lombok.NonNull;
+import lombok.NoArgsConstructor;
-import org.onap.policy.models.base.PfConcept;
-import org.onap.policy.models.base.PfKey;
-import org.onap.policy.models.base.PfModelRuntimeException;
-import org.onap.policy.models.base.PfReferenceKey;
-import org.onap.policy.models.base.PfValidationMessage;
-import org.onap.policy.models.base.PfValidationResult;
-import org.onap.policy.models.base.PfValidationResult.ValidationResult;
+import org.onap.policy.models.base.PfAuthorative;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaConstraint;
/**
* Immutable class to represent the Constraint of property in TOSCA definition.
@@ -46,80 +37,37 @@
* @author Chenfei Gao (cgao@research.att.com)
* @author Liam Fallon (liam.fallon@est.tech)
*/
-@Data
-@EqualsAndHashCode(callSuper = false)
-public abstract class JpaToscaConstraint extends PfConcept {
- private static final long serialVersionUID = 6426438089914347734L;
-
- @EmbeddedId
- private final PfReferenceKey key;
+@NoArgsConstructor
+@EqualsAndHashCode
+public abstract class JpaToscaConstraint
+ implements PfAuthorative<ToscaConstraint>, Serializable, Comparable<JpaToscaConstraint> {
+ private static final long serialVersionUID = -2689472945262507455L;
/**
- * The Default Constructor creates a {@link JpaToscaConstraint} object with a null key.
- */
- public JpaToscaConstraint() {
- this(new PfReferenceKey());
- }
-
- /**
- * The Key Constructor creates a {@link JpaToscaConstraint} object with the given concept key.
+ * Authorative constructor.
*
- * @param key the key
+ * @param authorativeConcept the authorative concept to copy from
*/
- public JpaToscaConstraint(@NonNull final PfReferenceKey key) {
- this.key = key;
+ public JpaToscaConstraint(final ToscaConstraint authorativeConcept) {
+ this.fromAuthorative(authorativeConcept);
+ }
+
+ @Override
+ public int compareTo(JpaToscaConstraint otherConstraint) {
+ return 0;
}
/**
- * Copy constructor.
+ * Create instances of constraints of various types.
*
- * @param copyConcept the concept to copy from
+ * @param toscaConstraint the incoming constraint
+ * @return the constraint
*/
- public JpaToscaConstraint(@NonNull final JpaToscaConstraint copyConcept) {
- throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR, "cannot copy an immutable constraint");
- }
-
- @Override
- public List<PfKey> getKeys() {
- return getKey().getKeys();
- }
-
- @Override
- public void clean() {
- key.clean();
- }
-
- @Override
- public PfValidationResult validate(@NonNull final PfValidationResult resultIn) {
- PfValidationResult result = resultIn;
-
- if (key.isNullKey()) {
- result.addValidationMessage(
- new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, "key is a null key"));
+ public static JpaToscaConstraint newInstance(final ToscaConstraint toscaConstraint) {
+ if (toscaConstraint.getValidValues() != null) {
+ return new JpaToscaConstraintValidValues(toscaConstraint);
}
- return key.validate(result);
- }
-
- @Override
- public int compareTo(final PfConcept otherConcept) {
- if (otherConcept == null) {
- return -1;
- }
- if (this == otherConcept) {
- return 0;
- }
- if (getClass() != otherConcept.getClass()) {
- return this.hashCode() - otherConcept.hashCode();
- }
-
- final JpaToscaConstraint other = (JpaToscaConstraint) otherConcept;
-
- return key.compareTo(other.key);
- }
-
- @Override
- public PfConcept copyTo(@NonNull final PfConcept target) {
- throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR, "cannot copy an immutable constraint");
+ return (new JpaToscaConstraintLogical(toscaConstraint));
}
}
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintLogical.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintLogical.java
index 231e261..9841cbe 100644
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintLogical.java
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintLogical.java
@@ -21,16 +21,14 @@
package org.onap.policy.models.tosca.simple.concepts;
import javax.persistence.Column;
-import javax.ws.rs.core.Response;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NonNull;
import lombok.ToString;
-import org.onap.policy.models.base.PfConcept;
-import org.onap.policy.models.base.PfModelRuntimeException;
-import org.onap.policy.models.base.PfReferenceKey;
+import org.apache.commons.lang3.ObjectUtils;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaConstraint;
/**
* This class represents a logical TOSCA constraint: =,>,>=,<,<=.
@@ -38,82 +36,117 @@
@EqualsAndHashCode(callSuper = false)
@ToString
public class JpaToscaConstraintLogical extends JpaToscaConstraint {
- private static final long serialVersionUID = 2562306457768745444L;
-
- public enum Operation {
- EQ,
- GT,
- GE,
- LT,
- LE
- }
+ private static final long serialVersionUID = -2730203215911880756L;
@Column
@NonNull
@Getter
- private final Operation operation;
+ private JpaToscaConstraintOperation operation;
+
+ @Column
+ @NonNull
+ @Getter
+ private String compareTo;
/**
- * The Default Constructor creates a {@link JpaToscaConstraintLogical} object with a null key.
- */
- public JpaToscaConstraintLogical() {
- this(new PfReferenceKey());
- }
-
- /**
- * The Key Constructor creates a {@link JpaToscaConstraintLogical} object with the given concept key.
+ * Constructor to set operation.
*
- * @param key the key of the constraint
+ * @param operation the operation to set
+ * @param compareTo the string to compare to
*/
- public JpaToscaConstraintLogical(final PfReferenceKey key) {
- this(key, Operation.EQ);
- }
-
- /**
- * The Key Constructor creates a {@link JpaToscaConstraintLogical} object with the given concept key and operation.
- *
- * @param key the key of the constraint
- * @param operation the logical operation of the constraint
- *
- */
- public JpaToscaConstraintLogical(final PfReferenceKey key, @NonNull final Operation operation) {
- super(key);
+ public JpaToscaConstraintLogical(@NonNull final JpaToscaConstraintOperation operation,
+ @NonNull final String compareTo) {
this.operation = operation;
+ this.compareTo = compareTo;
}
/**
- * Copy constructor.
+ * Authorative constructor.
*
- * @param copyConcept the concept to copy from
+ * @param authorativeConcept the authorative concept to copy from
*/
- public JpaToscaConstraintLogical(@NonNull final JpaToscaConstraintLogical copyConcept) {
- throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR, "cannot copy an immutable constraint");
+ public JpaToscaConstraintLogical(final ToscaConstraint authorativeConcept) {
+ super(authorativeConcept);
}
@Override
- public int compareTo(final PfConcept otherConcept) {
- if (otherConcept == null) {
+ public ToscaConstraint toAuthorative() {
+ ToscaConstraint toscaConstraint = new ToscaConstraint();
+
+ switch (operation) {
+ case EQ: {
+ toscaConstraint.setEqual(compareTo);
+ break;
+ }
+ case GT: {
+ toscaConstraint.setGreaterThan(compareTo);
+ break;
+ }
+ case GE: {
+ toscaConstraint.setGreaterOrEqual(compareTo);
+ break;
+ }
+ case LT: {
+ toscaConstraint.setLessThan(compareTo);
+ break;
+ }
+ case LE: {
+ toscaConstraint.setLessOrEqual(compareTo);
+ break;
+ }
+ default: {
+ // Can't happen
+ }
+ }
+
+ return toscaConstraint;
+ }
+
+ @Override
+ public void fromAuthorative(final ToscaConstraint toscaConstraint) {
+ // @formatter:off
+ if (toscaConstraint.getEqual() != null) {
+ operation = JpaToscaConstraintOperation.EQ;
+ compareTo = toscaConstraint.getEqual();
+ }
+ else if (toscaConstraint.getGreaterThan() != null) {
+ operation = JpaToscaConstraintOperation.GT;
+ compareTo = toscaConstraint.getGreaterThan();
+ }
+ else if (toscaConstraint.getGreaterOrEqual() != null) {
+ operation = JpaToscaConstraintOperation.GE;
+ compareTo = toscaConstraint.getGreaterOrEqual();
+ }
+ else if (toscaConstraint.getLessThan() != null) {
+ operation = JpaToscaConstraintOperation.LT;
+ compareTo = toscaConstraint.getLessThan();
+ }
+ else if (toscaConstraint.getLessOrEqual() != null) {
+ operation = JpaToscaConstraintOperation.LE;
+ compareTo = toscaConstraint.getLessOrEqual();
+ }
+ // @formatter:on
+ }
+
+ @Override
+ public int compareTo(JpaToscaConstraint otherConstraint) {
+ if (otherConstraint == null) {
return -1;
}
- if (this == otherConcept) {
+ if (this == otherConstraint) {
return 0;
}
- if (getClass() != otherConcept.getClass()) {
- return this.hashCode() - otherConcept.hashCode();
+ if (getClass() != otherConstraint.getClass()) {
+ return this.hashCode() - otherConstraint.hashCode();
}
- final JpaToscaConstraintLogical other = (JpaToscaConstraintLogical) otherConcept;
+ final JpaToscaConstraintLogical other = (JpaToscaConstraintLogical) otherConstraint;
- int result = super.compareTo(other);
+ int result = ObjectUtils.compare(operation, other.operation);
if (result != 0) {
return result;
}
- return operation.compareTo(other.operation);
- }
-
- @Override
- public PfConcept copyTo(@NonNull final PfConcept target) {
- throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR, "cannot copy an immutable constraint");
+ return ObjectUtils.compare(compareTo, other.compareTo);
}
}
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintLogicalKey.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintLogicalKey.java
deleted file mode 100644
index 13902db..0000000
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintLogicalKey.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*-
- * ============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.simple.concepts;
-
-import java.util.List;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Inheritance;
-import javax.persistence.InheritanceType;
-import javax.persistence.Table;
-import javax.ws.rs.core.Response;
-
-import lombok.EqualsAndHashCode;
-import lombok.Getter;
-import lombok.NonNull;
-import lombok.ToString;
-
-import org.onap.policy.models.base.PfConcept;
-import org.onap.policy.models.base.PfConceptKey;
-import org.onap.policy.models.base.PfKey;
-import org.onap.policy.models.base.PfModelRuntimeException;
-import org.onap.policy.models.base.PfReferenceKey;
-import org.onap.policy.models.base.PfValidationMessage;
-import org.onap.policy.models.base.PfValidationResult;
-import org.onap.policy.models.base.PfValidationResult.ValidationResult;
-
-/**
- * This immutable class represents a logical TOSCA constraint: =,>,>=,<,<= that compares the owner
- * of an instance of the class to the referenced key.
- */
-@Entity
-@Table(name = "ToscaConstraintLogicalKey")
-@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
-@EqualsAndHashCode(callSuper = false)
-@ToString
-public final class JpaToscaConstraintLogicalKey extends JpaToscaConstraintLogical {
- private static final long serialVersionUID = -2420828090326264341L;
-
- @Column
- @NonNull
- @Getter
- private final PfKey compareToKey;
-
- /**
- * The Default Constructor creates a {@link JpaToscaConstraintLogicalKey} object with a null key.
- */
- public JpaToscaConstraintLogicalKey() {
- this(new PfReferenceKey());
- }
-
- /**
- * The Key Constructor creates a {@link JpaToscaConstraintLogicalKey} object with the given concept
- * key.
- *
- * @param key the key of the constraint
- */
- public JpaToscaConstraintLogicalKey(final PfReferenceKey key) {
- this(key, Operation.EQ, PfConceptKey.getNullKey());
- }
-
- /**
- * The Key Constructor creates a {@link JpaToscaConstraintLogicalKey} object with the given concept
- * key, operation, and compare key.
- *
- * @param key the key of the constraint
- * @param operation the logical operation of the constraint
- * @param compareToKey the key of the object to which the object that owns this constraint will
- * be compared
- */
- public JpaToscaConstraintLogicalKey(final PfReferenceKey key, @NonNull final Operation operation,
- @NonNull final PfKey compareToKey) {
- super(key, operation);
- this.compareToKey = compareToKey;
- }
-
- /**
- * Copy constructor.
- *
- * @param copyConcept the concept to copy from
- */
- public JpaToscaConstraintLogicalKey(@NonNull final JpaToscaConstraintLogical copyConcept) {
- throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR, "cannot copy an immutable constraint");
- }
-
- @Override
- public List<PfKey> getKeys() {
- final List<PfKey> keyList = super.getKeys();
- keyList.addAll(compareToKey.getKeys());
- return keyList;
- }
-
- @Override
- public void clean() {
- super.clean();
- compareToKey.clean();
- }
-
- @Override
- public PfValidationResult validate(final PfValidationResult resultIn) {
- PfValidationResult result = super.validate(resultIn);
-
- if (compareToKey.isNullKey()) {
- result.addValidationMessage(new PfValidationMessage(getKey(), this.getClass(), ValidationResult.INVALID,
- "comparison key is a null key"));
- }
-
- return result;
- }
-
- @Override
- public int compareTo(final PfConcept otherConcept) {
- if (otherConcept == null) {
- return -1;
- }
- if (this == otherConcept) {
- return 0;
- }
- if (getClass() != otherConcept.getClass()) {
- return this.hashCode() - otherConcept.hashCode();
- }
-
- final JpaToscaConstraintLogicalKey other = (JpaToscaConstraintLogicalKey) otherConcept;
-
- int result = super.compareTo(other);
- if (result != 0) {
- return result;
- }
-
- return compareToKey.compareTo(other.compareToKey);
- }
-
- @Override
- public PfConcept copyTo(@NonNull final PfConcept target) {
- throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR, "cannot copy an immutable constraint");
- }
-}
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintLogicalString.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintLogicalString.java
deleted file mode 100644
index 5121273..0000000
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintLogicalString.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*-
- * ============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.simple.concepts;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Inheritance;
-import javax.persistence.InheritanceType;
-import javax.persistence.Table;
-import javax.ws.rs.core.Response;
-
-import lombok.EqualsAndHashCode;
-import lombok.Getter;
-import lombok.NonNull;
-
-import org.onap.policy.common.utils.validation.ParameterValidationUtils;
-import org.onap.policy.models.base.PfConcept;
-import org.onap.policy.models.base.PfModelRuntimeException;
-import org.onap.policy.models.base.PfReferenceKey;
-import org.onap.policy.models.base.PfValidationMessage;
-import org.onap.policy.models.base.PfValidationResult;
-import org.onap.policy.models.base.PfValidationResult.ValidationResult;
-
-/**
- * This class represents a logical TOSCA constraint: =,>,>=,<,<= that compares the owner of an
- * instance of the class to the given string.
- */
-@Entity
-@Table(name = "ToscaConstraintLogicalString")
-@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
-@EqualsAndHashCode(callSuper = false)
-public class JpaToscaConstraintLogicalString extends JpaToscaConstraintLogical {
- private static final long serialVersionUID = 8167550632122339195L;
-
- @Column
- @NonNull
- @Getter
- private final String compareToString;
-
- /**
- * The Default Constructor creates a {@link JpaToscaConstraintLogicalString} object with a null key.
- */
- public JpaToscaConstraintLogicalString() {
- this(new PfReferenceKey());
- }
-
- /**
- * The Key Constructor creates a {@link JpaToscaConstraintLogicalString} object with the given concept
- * key.
- *
- * @param key the key of the constraint
- */
- public JpaToscaConstraintLogicalString(final PfReferenceKey key) {
- this(key, Operation.EQ, "");
- }
-
- /**
- * The Key Constructor creates a {@link JpaToscaConstraintLogicalString} object with the given concept
- * key, operation, and compare string.
- *
- * @param key the key of the constraint
- * @param operation the logical operation of the constraint
- * @param compareToString the key of the object to which the object that owns this constraint will
- * be compared
- */
- public JpaToscaConstraintLogicalString(final PfReferenceKey key, @NonNull final Operation operation,
- @NonNull final String compareToString) {
- super(key, operation);
- this.compareToString = compareToString.trim();
- }
-
- /**
- * Copy constructor.
- *
- * @param copyConcept the concept to copy from
- */
- public JpaToscaConstraintLogicalString(@NonNull final JpaToscaConstraintLogical copyConcept) {
- throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR, "cannot copy an immutable constraint");
- }
-
- @Override
- public PfValidationResult validate(final PfValidationResult resultIn) {
- PfValidationResult result = super.validate(resultIn);
-
- if (!ParameterValidationUtils.validateStringParameter(compareToString)) {
- result.addValidationMessage(new PfValidationMessage(getKey(), this.getClass(), ValidationResult.INVALID,
- "comparison string is null or blank"));
- }
-
- return result;
- }
-
- @Override
- public int compareTo(final PfConcept otherConcept) {
- if (otherConcept == null) {
- return -1;
- }
- if (this == otherConcept) {
- return 0;
- }
- if (getClass() != otherConcept.getClass()) {
- return this.hashCode() - otherConcept.hashCode();
- }
-
- final JpaToscaConstraintLogicalString other = (JpaToscaConstraintLogicalString) otherConcept;
-
- int result = super.compareTo(other);
- if (result != 0) {
- return result;
- }
-
- return compareToString.compareTo(other.compareToString);
- }
-
- @Override
- public PfConcept copyTo(@NonNull final PfConcept target) {
- throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR, "cannot copy an immutable constraint");
- }
-}
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintOperation.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintOperation.java
new file mode 100644
index 0000000..0422ae2
--- /dev/null
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintOperation.java
@@ -0,0 +1,46 @@
+/*-
+ * ============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.simple.concepts;
+
+/**
+ * ENUM for TOSCA constraint operations.
+ *
+ * @author Liam Fallon (liam.fallon@est.tech)
+ */
+public enum JpaToscaConstraintOperation {
+ // @formatter:off
+ EQ("equal_to"),
+ GT("greater_than"),
+ GE("greater_or_equal"),
+ LT("less_than"),
+ LE("less_or_equal");
+ // @formatter:on
+
+ private final String toscaToken;
+
+ private JpaToscaConstraintOperation(final String toscaToken) {
+ this.toscaToken = toscaToken;
+ }
+
+ public String getToscaToken() {
+ return toscaToken;
+ }
+}
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintValidValues.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintValidValues.java
index 608605f..248ca49 100644
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintValidValues.java
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintValidValues.java
@@ -1,6 +1,7 @@
/*-
* ============LICENSE_START=======================================================
* Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * Modifications 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.
@@ -20,20 +21,17 @@
package org.onap.policy.models.tosca.simple.concepts;
-import com.google.gson.annotations.SerializedName;
-
-import java.util.LinkedList;
+import java.util.ArrayList;
import java.util.List;
import javax.persistence.ElementCollection;
-import javax.ws.rs.core.Response;
-import lombok.Data;
import lombok.EqualsAndHashCode;
+import lombok.Getter;
import lombok.NonNull;
+import lombok.ToString;
-import org.onap.policy.models.base.PfConcept;
-import org.onap.policy.models.base.PfModelRuntimeException;
-import org.onap.policy.models.base.PfReferenceKey;
+import org.onap.policy.models.base.PfUtils;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaConstraint;
/**
* This class represents valid_values TOSCA constraint.
@@ -41,81 +39,64 @@
* @author Chenfei Gao (cgao@research.att.com)
*/
@EqualsAndHashCode(callSuper = false)
-@Data
+@ToString
public class JpaToscaConstraintValidValues extends JpaToscaConstraint {
- private static final long serialVersionUID = 3152323457560746844L;
+ private static final long serialVersionUID = -5060193250508635456L;
- @SerializedName("valid_values")
- @NonNull
@ElementCollection
- private final List<String> validValues;
+ @NonNull
+ @Getter
+ private List<String> validValues;
/**
- * The Default Constructor creates a {@link JpaToscaConstraintValidValues} object with a null key.
- */
- public JpaToscaConstraintValidValues() {
- this(new PfReferenceKey());
- }
-
- /**
- * The Key Constructor creates a {@link JpaToscaConstraintValidValues} object with the given concept key.
+ * Constructor to set the valid values.
*
- * @param key the key of the constraint
+ * @param validValues the valid values that are allowed
*/
- public JpaToscaConstraintValidValues(final PfReferenceKey key) {
- super(key);
- validValues = new LinkedList<>();
- }
-
- /**
- * The Key Constructor creates a {@link JpaToscaConstraintLogical} object with the given concept key
- * and valid values list.
- *
- * @param key the key of the constraint
- * @param validValues the valid values list of the constraint
- *
- */
- public JpaToscaConstraintValidValues(final PfReferenceKey key, @NonNull final List<String> validValues) {
- super(key);
+ public JpaToscaConstraintValidValues(@NonNull final List<String> validValues) {
this.validValues = validValues;
}
/**
- * Copy constructor.
+ * Authorative constructor.
*
- * @param copyConcept the concept to copy from
+ * @param authorativeConcept the authorative concept to copy from
*/
- public JpaToscaConstraintValidValues(@NonNull final JpaToscaConstraintValidValues copyConcept) {
- throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR, "cannot copy an immutable constraint");
+ public JpaToscaConstraintValidValues(final ToscaConstraint authorativeConcept) {
+ super(authorativeConcept);
}
@Override
- public int compareTo(final PfConcept otherConcept) {
- if (otherConcept == null) {
+ public ToscaConstraint toAuthorative() {
+ ToscaConstraint toscaConstraint = new ToscaConstraint();
+
+ toscaConstraint.setValidValues(validValues);
+
+ return toscaConstraint;
+ }
+
+ @Override
+ public void fromAuthorative(final ToscaConstraint toscaConstraint) {
+ if (toscaConstraint.getValidValues() != null) {
+ validValues = new ArrayList<>();
+ validValues.addAll(toscaConstraint.getValidValues());
+ }
+ }
+
+ @Override
+ public int compareTo(JpaToscaConstraint otherConstraint) {
+ if (otherConstraint == null) {
return -1;
}
- if (this == otherConcept) {
+ if (this == otherConstraint) {
return 0;
}
- if (getClass() != otherConcept.getClass()) {
- return this.hashCode() - otherConcept.hashCode();
+ if (getClass() != otherConstraint.getClass()) {
+ return this.hashCode() - otherConstraint.hashCode();
}
- final JpaToscaConstraintValidValues other = (JpaToscaConstraintValidValues) otherConcept;
+ final JpaToscaConstraintValidValues other = (JpaToscaConstraintValidValues) otherConstraint;
- int result = super.compareTo(other);
- if (result != 0) {
- return result;
- }
-
- if (validValues.equals(other.validValues)) {
- return 0;
- }
- return -1;
- }
-
- @Override
- public PfConcept copyTo(@NonNull final PfConcept target) {
- throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR, "cannot copy an immutable constraint");
+ return PfUtils.compareObjects(validValues, other.validValues);
}
}
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaDataType.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaDataType.java
index 0035eb0..cf1150a 100644
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaDataType.java
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaDataType.java
@@ -24,7 +24,10 @@
package org.onap.policy.models.tosca.simple.concepts;
import java.util.ArrayList;
+import java.util.LinkedHashMap;
import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
@@ -37,13 +40,18 @@
import lombok.NonNull;
import org.onap.policy.common.utils.validation.Assertions;
+import org.onap.policy.models.base.PfAuthorative;
import org.onap.policy.models.base.PfConcept;
import org.onap.policy.models.base.PfConceptKey;
import org.onap.policy.models.base.PfKey;
+import org.onap.policy.models.base.PfReferenceKey;
import org.onap.policy.models.base.PfUtils;
import org.onap.policy.models.base.PfValidationMessage;
import org.onap.policy.models.base.PfValidationResult;
import org.onap.policy.models.base.PfValidationResult.ValidationResult;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaConstraint;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaDataType;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaProperty;
/**
* Class to represent custom data type in TOSCA definition.
@@ -56,14 +64,14 @@
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@Data
@EqualsAndHashCode(callSuper = true)
-public class JpaToscaDataType extends JpaToscaEntityType {
+public class JpaToscaDataType extends JpaToscaEntityType<ToscaDataType> implements PfAuthorative<ToscaDataType> {
private static final long serialVersionUID = -3922690413436539164L;
@ElementCollection
private List<JpaToscaConstraint> constraints;
@ElementCollection
- private List<JpaToscaProperty> properties;
+ private Map<String, JpaToscaProperty> properties;
/**
* The Default Constructor creates a {@link JpaToscaDataType} object with a null key.
@@ -90,18 +98,72 @@
super(copyConcept);
}
+ /**
+ * Authorative constructor.
+ *
+ * @param authorativeConcept the authorative concept to copy from
+ */
+ public JpaToscaDataType(final ToscaDataType authorativeConcept) {
+ this.fromAuthorative(authorativeConcept);
+ }
+
+ @Override
+ public ToscaDataType toAuthorative() {
+ ToscaDataType toscaDataType = new ToscaDataType();
+ super.setToscaEntity(toscaDataType);
+ super.toAuthorative();
+
+ if (constraints != null) {
+ List<ToscaConstraint> toscaConstraints = new ArrayList<>();
+
+ for (JpaToscaConstraint constraint : constraints) {
+ toscaConstraints.add(constraint.toAuthorative());
+ }
+
+ toscaDataType.setConstraints(toscaConstraints);
+ }
+
+ if (properties != null) {
+ Map<String, ToscaProperty> propertyMap = new LinkedHashMap<>();
+
+ for (Entry<String, JpaToscaProperty> entry : properties.entrySet()) {
+ propertyMap.put(entry.getKey(), entry.getValue().toAuthorative());
+ }
+
+ toscaDataType.setProperties(propertyMap);
+ }
+
+ return toscaDataType;
+ }
+
+ @Override
+ public void fromAuthorative(final ToscaDataType toscaDataType) {
+ super.fromAuthorative(toscaDataType);
+
+ if (toscaDataType.getConstraints() != null) {
+ constraints = new ArrayList<>();
+
+ for (ToscaConstraint toscaConstraint: toscaDataType.getConstraints()) {
+ constraints.add(JpaToscaConstraint.newInstance(toscaConstraint));
+ }
+ }
+
+ if (toscaDataType.getProperties() != null) {
+ properties = new LinkedHashMap<>();
+ for (Entry<String, ToscaProperty> toscaPropertyEntry : toscaDataType.getProperties().entrySet()) {
+ JpaToscaProperty jpaProperty = new JpaToscaProperty(toscaPropertyEntry.getValue());
+ jpaProperty.setKey(new PfReferenceKey(getKey(), toscaPropertyEntry.getKey()));
+ properties.put(toscaPropertyEntry.getKey(), jpaProperty);
+ }
+ }
+ }
+
@Override
public List<PfKey> getKeys() {
final List<PfKey> keyList = super.getKeys();
- if (constraints != null) {
- for (JpaToscaConstraint constraint : constraints) {
- keyList.addAll(constraint.getKeys());
- }
- }
-
if (properties != null) {
- for (JpaToscaProperty property : properties) {
+ for (JpaToscaProperty property : properties.values()) {
keyList.addAll(property.getKeys());
}
}
@@ -113,14 +175,8 @@
public void clean() {
super.clean();
- if (constraints != null) {
- for (JpaToscaConstraint constraint : constraints) {
- constraint.clean();
- }
- }
-
if (properties != null) {
- for (JpaToscaProperty property : properties) {
+ for (JpaToscaProperty property : properties.values()) {
property.clean();
}
}
@@ -154,8 +210,6 @@
if (constraint == null) {
result.addValidationMessage(new PfValidationMessage(getKey(), this.getClass(), ValidationResult.INVALID,
"data type constraint may not be null "));
- } else {
- result = constraint.validate(result);
}
}
return result;
@@ -170,7 +224,7 @@
private PfValidationResult validateProperties(final PfValidationResult resultIn) {
PfValidationResult result = resultIn;
- for (JpaToscaProperty property : properties) {
+ for (JpaToscaProperty property : properties.values()) {
if (property == null) {
result.addValidationMessage(new PfValidationMessage(getKey(), this.getClass(), ValidationResult.INVALID,
"data type property may not be null "));
@@ -221,8 +275,7 @@
if (constraints == null) {
copy.setConstraints(null);
- }
- else {
+ } else {
final List<JpaToscaConstraint> newConstraints = new ArrayList<>();
for (final JpaToscaConstraint constraint : constraints) {
newConstraints.add(constraint); // Constraints are immutable
@@ -232,15 +285,14 @@
if (properties == null) {
copy.setProperties(null);
- }
- else {
- final List<JpaToscaProperty> newProperties = new ArrayList<>();
- for (final JpaToscaProperty property : properties) {
- newProperties.add(new JpaToscaProperty(property));
+ } else {
+ final Map<String, JpaToscaProperty> newProperties = new LinkedHashMap<>();
+ for (final Entry<String, JpaToscaProperty> propertyEntry : properties.entrySet()) {
+ newProperties.put(propertyEntry.getKey(), new JpaToscaProperty(propertyEntry.getValue()));
}
copy.setProperties(newProperties);
}
return copy;
}
-}
\ No newline at end of file
+}
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaDataTypes.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaDataTypes.java
index 7fedd06..67d4ecf 100644
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaDataTypes.java
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaDataTypes.java
@@ -20,6 +20,7 @@
package org.onap.policy.models.tosca.simple.concepts;
+import java.util.List;
import java.util.Map;
import java.util.TreeMap;
@@ -33,6 +34,7 @@
import org.onap.policy.models.base.PfConceptContainer;
import org.onap.policy.models.base.PfConceptKey;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaDataType;
/**
* This class is a container for TOSCA data types.
@@ -44,23 +46,23 @@
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@Data
@EqualsAndHashCode(callSuper = true)
-public class JpaToscaDataTypes extends PfConceptContainer<JpaToscaDataType> {
+public class JpaToscaDataTypes extends PfConceptContainer<JpaToscaDataType, ToscaDataType> {
private static final long serialVersionUID = 2941102271022190348L;
public static final String DEFAULT_NAME = "ToscaDataTypesSimple";
public static final String DEFAULT_VERSION = "1.0.0";
/**
- * The Default Constructor creates a {@link JpaToscaDataTypes} object with a null artifact key
- * and creates an empty concept map.
+ * The Default Constructor creates a {@link JpaToscaDataTypes} object with a null artifact key and creates an empty
+ * concept map.
*/
public JpaToscaDataTypes() {
super(new PfConceptKey(DEFAULT_NAME, DEFAULT_VERSION));
}
/**
- * The Key Constructor creates a {@link JpaToscaDataTypes} object with the given artifact key
- * and creates an empty concept map.
+ * The Key Constructor creates a {@link JpaToscaDataTypes} object with the given artifact key and creates an empty
+ * concept map.
*
* @param key the concept key
*/
@@ -86,4 +88,13 @@
public JpaToscaDataTypes(final JpaToscaDataTypes copyConcept) {
super(copyConcept);
}
+
+ /**
+ * Authorative constructor.
+ *
+ * @param authorativeConceptMapList the authorative concept to copy from
+ */
+ public JpaToscaDataTypes(final List<Map<String, ToscaDataType>> authorativeConceptMapList) {
+ this.fromAuthorative(authorativeConceptMapList);
+ }
}
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaEntityType.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaEntityType.java
index e7d51a5..f2ab246 100644
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaEntityType.java
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaEntityType.java
@@ -20,6 +20,7 @@
package org.onap.policy.models.tosca.simple.concepts;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
@@ -39,6 +40,7 @@
import org.apache.commons.lang3.ObjectUtils;
import org.onap.policy.common.utils.validation.Assertions;
import org.onap.policy.common.utils.validation.ParameterValidationUtils;
+import org.onap.policy.models.base.PfAuthorative;
import org.onap.policy.models.base.PfConcept;
import org.onap.policy.models.base.PfConceptKey;
import org.onap.policy.models.base.PfKey;
@@ -46,6 +48,7 @@
import org.onap.policy.models.base.PfValidationMessage;
import org.onap.policy.models.base.PfValidationResult;
import org.onap.policy.models.base.PfValidationResult.ValidationResult;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaEntity;
/**
* Class to represent the EntrySchema of list/map property in TOSCA definition.
@@ -53,7 +56,7 @@
@MappedSuperclass
@Data
@EqualsAndHashCode(callSuper = false)
-public class JpaToscaEntityType extends PfConcept {
+public class JpaToscaEntityType<T extends ToscaEntity> extends PfConcept implements PfAuthorative<T> {
private static final long serialVersionUID = -1330661834220739393L;
@EmbeddedId
@@ -74,6 +77,8 @@
@Column
private String description;
+
+ private transient T toscaEntity;
// @formatter:on
/**
@@ -97,10 +102,81 @@
*
* @param copyConcept the concept to copy from
*/
- public JpaToscaEntityType(final JpaToscaEntityType copyConcept) {
+ public JpaToscaEntityType(final JpaToscaEntityType<T> copyConcept) {
super(copyConcept);
}
+ /**
+ * Authorative constructor.
+ *
+ * @param authorativeConcept the authorative concept to copy from
+ */
+ public JpaToscaEntityType(final T authorativeConcept) {
+ this.fromAuthorative(authorativeConcept);
+ }
+
+ @Override
+ public T toAuthorative() {
+ toscaEntity.setName(getKey().getName());
+ toscaEntity.setVersion(getKey().getVersion());
+
+ if (derivedFrom != null) {
+ toscaEntity.setDerivedFrom(derivedFrom.getId());
+ }
+
+ if (description != null) {
+ toscaEntity.setDescription(description);
+ }
+
+ if (metadata != null) {
+ Map<String, String> metadataMap = new LinkedHashMap<>();
+
+ for (Entry<String, String> entry : metadata.entrySet()) {
+ metadataMap.put(entry.getKey(), entry.getValue());
+ }
+
+ toscaEntity.setMetadata(metadataMap);
+ }
+
+ return toscaEntity;
+ }
+
+ @Override
+ public void fromAuthorative(T toscaEntity) {
+ key = new PfConceptKey();
+
+ if (toscaEntity.getName() != null) {
+ key.setName(toscaEntity.getName());
+ }
+
+ if (toscaEntity.getVersion() != null) {
+ key.setVersion(toscaEntity.getVersion());
+ }
+
+
+ if (toscaEntity.getDerivedFrom() != null) {
+ // CHeck if the derived from field contains a name-version ID
+ if (toscaEntity.getDerivedFrom().contains(":")) {
+ derivedFrom = new PfConceptKey(toscaEntity.getDerivedFrom());
+ }
+ else {
+ derivedFrom = new PfConceptKey(toscaEntity.getDerivedFrom(), PfKey.NULL_KEY_VERSION);
+ }
+ }
+
+ if (toscaEntity.getDescription() != null) {
+ description = toscaEntity.getDescription();
+ }
+
+ if (toscaEntity.getMetadata() != null) {
+ metadata = new LinkedHashMap<>();
+
+ for (Entry<String, String> metadataEntry : toscaEntity.getMetadata().entrySet()) {
+ metadata.put(metadataEntry.getKey(), metadataEntry.getValue());
+ }
+ }
+ }
+
@Override
public List<PfKey> getKeys() {
final List<PfKey> keyList = getKey().getKeys();
@@ -176,7 +252,8 @@
return this.hashCode() - otherConcept.hashCode();
}
- final JpaToscaEntityType other = (JpaToscaEntityType) otherConcept;
+ @SuppressWarnings("unchecked")
+ final JpaToscaEntityType<T> other = (JpaToscaEntityType<T>) otherConcept;
if (!key.equals(other.key)) {
return key.compareTo(other.key);
}
@@ -199,7 +276,8 @@
final Object copyObject = target;
Assertions.instanceOf(copyObject, PfConcept.class);
- final JpaToscaEntityType copy = ((JpaToscaEntityType) copyObject);
+ @SuppressWarnings("unchecked")
+ final JpaToscaEntityType<T> copy = ((JpaToscaEntityType<T>) copyObject);
copy.setKey(new PfConceptKey(key));
copy.setDerivedFrom(derivedFrom != null ? new PfConceptKey(derivedFrom) : null);
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaEntrySchema.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaEntrySchema.java
index e5ae20e..1177368 100644
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaEntrySchema.java
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaEntrySchema.java
@@ -23,31 +23,29 @@
package org.onap.policy.models.tosca.simple.concepts;
+import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.ElementCollection;
-import javax.persistence.EmbeddedId;
-import javax.persistence.Entity;
-import javax.persistence.Inheritance;
-import javax.persistence.InheritanceType;
-import javax.persistence.Table;
import lombok.Data;
import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
import lombok.NonNull;
import org.apache.commons.lang3.ObjectUtils;
import org.onap.policy.common.utils.validation.Assertions;
-import org.onap.policy.models.base.PfConcept;
+import org.onap.policy.models.base.PfAuthorative;
import org.onap.policy.models.base.PfConceptKey;
import org.onap.policy.models.base.PfKey;
-import org.onap.policy.models.base.PfReferenceKey;
import org.onap.policy.models.base.PfUtils;
import org.onap.policy.models.base.PfValidationMessage;
import org.onap.policy.models.base.PfValidationResult;
import org.onap.policy.models.base.PfValidationResult.ValidationResult;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaConstraint;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaEntrySchema;
/**
@@ -56,17 +54,13 @@
* @author Chenfei Gao (cgao@research.att.com)
* @author Liam Fallon (liam.fallon@est.tech)
*/
-@Entity
-@Table(name = "ToscaEntrySchema")
-@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@Data
@EqualsAndHashCode(callSuper = false)
-public class JpaToscaEntrySchema extends PfConcept {
+@NoArgsConstructor
+public class JpaToscaEntrySchema
+ implements PfAuthorative<ToscaEntrySchema>, Serializable, Comparable<JpaToscaEntrySchema> {
private static final long serialVersionUID = 3645882081163287058L;
- @EmbeddedId
- private PfReferenceKey key;
-
@Column
private PfConceptKey type;
@@ -77,29 +71,11 @@
private List<JpaToscaConstraint> constraints;
/**
- * The Default Constructor creates a {@link JpaToscaEntrySchema} object with a null key.
- */
- public JpaToscaEntrySchema() {
- this(new PfReferenceKey());
- }
-
- /**
- * The Key Constructor creates a {@link JpaToscaEntrySchema} object with the given concept key.
- *
- * @param key the key
- */
- public JpaToscaEntrySchema(@NonNull final PfReferenceKey key) {
- this(key, new PfConceptKey());
- }
-
- /**
* The full constructor creates a {@link JpaToscaEntrySchema} object with mandatory fields.
*
- * @param key the key
* @param type the type of the entry schema
*/
- public JpaToscaEntrySchema(@NonNull final PfReferenceKey key, @NonNull final PfConceptKey type) {
- this.key = key;
+ public JpaToscaEntrySchema(@NonNull final PfConceptKey type) {
this.type = type;
}
@@ -108,68 +84,95 @@
*
* @param copyConcept the concept to copy from
*/
- public JpaToscaEntrySchema(final JpaToscaEntrySchema copyConcept) {
- super(copyConcept);
+ public JpaToscaEntrySchema(@NonNull final JpaToscaEntrySchema copyConcept) {
+ copyConcept.copyTo(this);
+ }
+
+ /**
+ * Authorative constructor.
+ *
+ * @param authorativeConcept the authorative concept to copy from
+ */
+ public JpaToscaEntrySchema(final ToscaEntrySchema authorativeConcept) {
+ this.fromAuthorative(authorativeConcept);
}
@Override
- public List<PfKey> getKeys() {
- final List<PfKey> keyList = getKey().getKeys();
+ public ToscaEntrySchema toAuthorative() {
+ ToscaEntrySchema toscaEntrySchema = new ToscaEntrySchema();
- keyList.addAll(type.getKeys());
+ toscaEntrySchema.setType(type.getName());
+ toscaEntrySchema.setTypeVersion(type.getVersion());
+
+ toscaEntrySchema.setDescription(description);
if (constraints != null) {
+ List<ToscaConstraint> toscaConstraints = new ArrayList<>();
+
for (JpaToscaConstraint constraint : constraints) {
- keyList.addAll(constraint.getKeys());
+ toscaConstraints.add(constraint.toAuthorative());
}
+
+ toscaEntrySchema.setConstraints(toscaConstraints);
}
- return keyList;
+ return toscaEntrySchema;
}
@Override
- public void clean() {
- key.clean();
+ public void fromAuthorative(final ToscaEntrySchema toscaEntrySchema) {
+ if (toscaEntrySchema.getTypeVersion() != null) {
+ type = new PfConceptKey(toscaEntrySchema.getType(), toscaEntrySchema.getTypeVersion());
+ } else {
+ type = new PfConceptKey(toscaEntrySchema.getType(), PfKey.NULL_KEY_VERSION);
+ }
+ description = toscaEntrySchema.getDescription();
+
+ if (toscaEntrySchema.getConstraints() != null) {
+ constraints = new ArrayList<>();
+
+ for (ToscaConstraint toscaConstraint : toscaEntrySchema.getConstraints()) {
+ constraints.add(JpaToscaConstraint.newInstance(toscaConstraint));
+ }
+ }
+ }
+
+ public List<PfKey> getKeys() {
+ return type.getKeys();
+ }
+
+ public void clean() {
type.clean();
description = (description != null ? description.trim() : null);
-
- if (constraints != null) {
- for (JpaToscaConstraint constraint : constraints) {
- constraint.clean();
- }
- }
}
- @Override
+ /**
+ * Validate the entry schema.
+ *
+ * @param resultIn the incoming result
+ * @return the ooutput result witht he result of this validation
+ */
public PfValidationResult validate(@NonNull final PfValidationResult resultIn) {
PfValidationResult result = resultIn;
- if (key.isNullKey()) {
- result.addValidationMessage(
- new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, "key is a null key"));
- }
-
- result = key.validate(result);
-
if (type == null || type.isNullKey()) {
- result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID,
- "entry schema type may not be null"));
+ result.addValidationMessage(new PfValidationMessage(new PfConceptKey("EntrySchema", PfKey.NULL_KEY_VERSION),
+ this.getClass(), ValidationResult.INVALID, "entry schema type may not be null"));
}
if (description != null && description.trim().length() == 0) {
- result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID,
- "entry schema description may not be blank"));
+ result.addValidationMessage(new PfValidationMessage(new PfConceptKey("EntrySchema", PfKey.NULL_KEY_VERSION),
+ this.getClass(), ValidationResult.INVALID, "entry schema description may not be blank"));
}
if (constraints != null) {
for (JpaToscaConstraint constraint : constraints) {
if (constraint == null) {
- result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID,
- "property constraint may not be null "));
- } else {
- result = constraint.validate(result);
+ result.addValidationMessage(
+ new PfValidationMessage(new PfConceptKey("EntrySchema", PfKey.NULL_KEY_VERSION),
+ this.getClass(), ValidationResult.INVALID, "property constraint may not be null "));
}
}
}
@@ -178,25 +181,13 @@
}
@Override
- public int compareTo(final PfConcept otherConcept) {
- if (otherConcept == null) {
+ public int compareTo(final JpaToscaEntrySchema other) {
+ if (other == null) {
return -1;
}
- if (this == otherConcept) {
+ if (this == other) {
return 0;
}
- if (getClass() != otherConcept.getClass()) {
- return this.hashCode() - otherConcept.hashCode();
- }
-
- final JpaToscaEntrySchema other = (JpaToscaEntrySchema) otherConcept;
- if (!key.equals(other.key)) {
- return key.compareTo(other.key);
- }
-
- if (!type.equals(other.type)) {
- return type.compareTo(other.type);
- }
int result = ObjectUtils.compare(description, other.description);
if (result != 0) {
@@ -206,12 +197,16 @@
return PfUtils.compareObjects(constraints, other.constraints);
}
- @Override
- public PfConcept copyTo(@NonNull final PfConcept target) {
+ /**
+ * Copy this entry schema to another.
+ *
+ * @param target the other schemaa
+ * @return the copied concept
+ */
+ public JpaToscaEntrySchema copyTo(@NonNull final JpaToscaEntrySchema target) {
Assertions.instanceOf(target, JpaToscaEntrySchema.class);
- final JpaToscaEntrySchema copy = ((JpaToscaEntrySchema) target);
- copy.setKey(new PfReferenceKey(key));
+ final JpaToscaEntrySchema copy = (target);
copy.setType(new PfConceptKey(type));
copy.setDescription(description);
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicies.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicies.java
index d59f470..012d8a2 100644
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicies.java
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicies.java
@@ -20,6 +20,7 @@
package org.onap.policy.models.tosca.simple.concepts;
+import java.util.List;
import java.util.Map;
import java.util.TreeMap;
@@ -31,8 +32,10 @@
import lombok.Data;
import lombok.EqualsAndHashCode;
+import org.onap.policy.models.base.PfAuthorative;
import org.onap.policy.models.base.PfConceptContainer;
import org.onap.policy.models.base.PfConceptKey;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
/**
* This class is a container for TOSCA data types.
@@ -44,23 +47,24 @@
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@Data
@EqualsAndHashCode(callSuper = true)
-public class JpaToscaPolicies extends PfConceptContainer<JpaToscaPolicy> {
+public class JpaToscaPolicies extends PfConceptContainer<JpaToscaPolicy, ToscaPolicy>
+ implements PfAuthorative<List<Map<String, ToscaPolicy>>> {
private static final long serialVersionUID = -7526648702327776101L;
public static final String DEFAULT_NAME = "ToscaPoliciesSimple";
public static final String DEFAULT_VERSION = "1.0.0";
/**
- * The Default Constructor creates a {@link JpaToscaPolicies} object with a null artifact key and
- * creates an empty concept map.
+ * The Default Constructor creates a {@link JpaToscaPolicies} object with a null artifact key and creates an empty
+ * concept map.
*/
public JpaToscaPolicies() {
super(new PfConceptKey(DEFAULT_NAME, DEFAULT_VERSION));
}
/**
- * The Key Constructor creates a {@link JpaToscaPolicies} object with the given artifact key and
- * creates an empty concept map.
+ * The Key Constructor creates a {@link JpaToscaPolicies} object with the given artifact key and creates an empty
+ * concept map.
*
* @param key the concept key
*/
@@ -86,4 +90,13 @@
public JpaToscaPolicies(final JpaToscaPolicies copyConcept) {
super(copyConcept);
}
+
+ /**
+ * Authorative constructor.
+ *
+ * @param authorativeConceptMapList the authorative concept to copy from
+ */
+ public JpaToscaPolicies(final List<Map<String, ToscaPolicy>> authorativeConceptMapList) {
+ this.fromAuthorative(authorativeConceptMapList);
+ }
}
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicy.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicy.java
index e889192..67a833c 100644
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicy.java
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicy.java
@@ -24,6 +24,7 @@
package org.onap.policy.models.tosca.simple.concepts;
import java.util.ArrayList;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
@@ -43,6 +44,7 @@
import org.onap.policy.common.utils.validation.Assertions;
import org.onap.policy.common.utils.validation.ParameterValidationUtils;
+import org.onap.policy.models.base.PfAuthorative;
import org.onap.policy.models.base.PfConcept;
import org.onap.policy.models.base.PfConceptKey;
import org.onap.policy.models.base.PfKey;
@@ -50,6 +52,7 @@
import org.onap.policy.models.base.PfValidationMessage;
import org.onap.policy.models.base.PfValidationResult;
import org.onap.policy.models.base.PfValidationResult.ValidationResult;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
/**
* Class to represent the policy in TOSCA definition.
@@ -62,7 +65,7 @@
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@Data
@EqualsAndHashCode(callSuper = true)
-public class JpaToscaPolicy extends JpaToscaEntityType {
+public class JpaToscaPolicy extends JpaToscaEntityType<ToscaPolicy> implements PfAuthorative<ToscaPolicy> {
private static final long serialVersionUID = 3265174757061982805L;
// @formatter:off
@@ -119,6 +122,66 @@
super(copyConcept);
}
+ /**
+ * Authorative constructor.
+ *
+ * @param authorativeConcept the authorative concept to copy from
+ */
+ public JpaToscaPolicy(final ToscaPolicy authorativeConcept) {
+ this.fromAuthorative(authorativeConcept);
+ }
+
+ @Override
+ public ToscaPolicy toAuthorative() {
+ ToscaPolicy toscaPolicy = new ToscaPolicy();
+ super.setToscaEntity(toscaPolicy);
+ super.toAuthorative();
+
+ toscaPolicy.setType(type.getName());
+
+ if (!PfKey.NULL_KEY_VERSION.equals(type.getVersion())) {
+ toscaPolicy.setTypeVersion(type.getVersion());
+ }
+ else {
+ toscaPolicy.setTypeVersion(null);
+ }
+
+ if (properties != null) {
+ Map<String, Object> propertyMap = new LinkedHashMap<>();
+
+ for (Entry<String, String> entry : properties.entrySet()) {
+ propertyMap.put(entry.getKey(), entry.getValue());
+ }
+
+ toscaPolicy.setProperties(propertyMap);
+ }
+
+ return toscaPolicy;
+ }
+
+ @Override
+ public void fromAuthorative(@NonNull final ToscaPolicy toscaPolicy) {
+ super.fromAuthorative(toscaPolicy);
+
+ type.setName(toscaPolicy.getType());
+ type.setVersion(toscaPolicy.getTypeVersion());
+ if (type.getVersion() == null) {
+ type.setVersion(PfKey.NULL_KEY_VERSION);
+ }
+
+ if (toscaPolicy.getProperties() != null) {
+ properties = new LinkedHashMap<>();
+
+ for (Entry<String, Object> propertyEntry : toscaPolicy.getProperties().entrySet()) {
+ // TODO: This is a HACK, we need to validate the properties against their
+ // TODO: their data type in their policy type definition in TOSCA, which means reading
+ // TODO: the policy type from the database and parsing the property value object correctly
+ // TODO: Here we are simply serializing the property value into a string and storing it
+ // TODO: unvalidated into the database
+ properties.put(propertyEntry.getKey(), propertyEntry.getValue().toString());
+ }
+ }
+ }
@Override
public List<PfKey> getKeys() {
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicyType.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicyType.java
index 610987c..fc98296 100644
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicyType.java
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicyType.java
@@ -24,7 +24,10 @@
package org.onap.policy.models.tosca.simple.concepts;
import java.util.ArrayList;
+import java.util.LinkedHashMap;
import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
@@ -37,13 +40,17 @@
import lombok.NonNull;
import org.onap.policy.common.utils.validation.Assertions;
+import org.onap.policy.models.base.PfAuthorative;
import org.onap.policy.models.base.PfConcept;
import org.onap.policy.models.base.PfConceptKey;
import org.onap.policy.models.base.PfKey;
+import org.onap.policy.models.base.PfReferenceKey;
import org.onap.policy.models.base.PfUtils;
import org.onap.policy.models.base.PfValidationMessage;
import org.onap.policy.models.base.PfValidationResult;
import org.onap.policy.models.base.PfValidationResult.ValidationResult;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyType;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaProperty;
/**
* Class to represent the policy type in TOSCA definition.
@@ -57,11 +64,11 @@
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@Data
@EqualsAndHashCode(callSuper = true)
-public class JpaToscaPolicyType extends JpaToscaEntityType {
+public class JpaToscaPolicyType extends JpaToscaEntityType<ToscaPolicyType> implements PfAuthorative<ToscaPolicyType> {
private static final long serialVersionUID = -563659852901842616L;
@ElementCollection
- private List<JpaToscaProperty> properties;
+ private Map<String, JpaToscaProperty> properties;
@ElementCollection
private List<PfConceptKey> targets;
@@ -94,13 +101,55 @@
super(copyConcept);
}
+ /**
+ * Authorative constructor.
+ *
+ * @param authorativeConcept the authorative concept to copy from
+ */
+ public JpaToscaPolicyType(final ToscaPolicyType authorativeConcept) {
+ this.fromAuthorative(authorativeConcept);
+ }
+
+ @Override
+ public ToscaPolicyType toAuthorative() {
+ ToscaPolicyType toscaPolicyType = new ToscaPolicyType();
+ super.setToscaEntity(toscaPolicyType);
+ super.toAuthorative();
+
+ if (properties != null) {
+ Map<String, ToscaProperty> propertyMap = new LinkedHashMap<>();
+
+ for (Entry<String, JpaToscaProperty> entry : properties.entrySet()) {
+ propertyMap.put(entry.getKey(), entry.getValue().toAuthorative());
+ }
+
+ toscaPolicyType.setProperties(propertyMap);
+ }
+
+ return toscaPolicyType;
+ }
+
+ @Override
+ public void fromAuthorative(final ToscaPolicyType toscaPolicyType) {
+ super.fromAuthorative(toscaPolicyType);
+
+ // Set properties
+ if (toscaPolicyType.getProperties() != null) {
+ properties = new LinkedHashMap<>();
+ for (Entry<String, ToscaProperty> toscaPropertyEntry : toscaPolicyType.getProperties().entrySet()) {
+ JpaToscaProperty jpaProperty = new JpaToscaProperty(toscaPropertyEntry.getValue());
+ jpaProperty.setKey(new PfReferenceKey(getKey(), toscaPropertyEntry.getKey()));
+ properties.put(toscaPropertyEntry.getKey(), jpaProperty);
+ }
+ }
+ }
@Override
public List<PfKey> getKeys() {
final List<PfKey> keyList = super.getKeys();
if (properties != null) {
- for (JpaToscaProperty property : properties) {
+ for (JpaToscaProperty property : properties.values()) {
keyList.addAll(property.getKeys());
}
}
@@ -123,7 +172,7 @@
super.clean();
if (properties != null) {
- for (JpaToscaProperty property : properties) {
+ for (JpaToscaProperty property : properties.values()) {
property.clean();
}
}
@@ -169,7 +218,7 @@
private PfValidationResult validateProperties(final PfValidationResult resultIn) {
PfValidationResult result = resultIn;
- for (JpaToscaProperty property : properties) {
+ for (JpaToscaProperty property : properties.values()) {
if (property == null) {
result.addValidationMessage(new PfValidationMessage(getKey(), this.getClass(), ValidationResult.INVALID,
"policy property may not be null "));
@@ -258,13 +307,12 @@
final JpaToscaPolicyType copy = ((JpaToscaPolicyType) copyObject);
super.copyTo(target);
- final List<JpaToscaProperty> newProperties = new ArrayList<>();
-
if (properties == null) {
copy.setProperties(null);
} else {
- for (final JpaToscaProperty property : properties) {
- newProperties.add(new JpaToscaProperty(property));
+ final Map<String, JpaToscaProperty> newProperties = new LinkedHashMap<>();
+ for (final Entry<String, JpaToscaProperty> propertyEntry : properties.entrySet()) {
+ newProperties.put(propertyEntry.getKey(), new JpaToscaProperty(propertyEntry.getValue()));
}
copy.setProperties(newProperties);
}
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicyTypes.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicyTypes.java
index ce3a813..af8a21a 100644
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicyTypes.java
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicyTypes.java
@@ -20,6 +20,7 @@
package org.onap.policy.models.tosca.simple.concepts;
+import java.util.List;
import java.util.Map;
import java.util.TreeMap;
@@ -33,6 +34,7 @@
import org.onap.policy.models.base.PfConceptContainer;
import org.onap.policy.models.base.PfConceptKey;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyType;
/**
* This class is a container for TOSCA policy types.
@@ -44,23 +46,23 @@
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@Data
@EqualsAndHashCode(callSuper = true)
-public class JpaToscaPolicyTypes extends PfConceptContainer<JpaToscaPolicyType> {
+public class JpaToscaPolicyTypes extends PfConceptContainer<JpaToscaPolicyType, ToscaPolicyType> {
private static final long serialVersionUID = -4157979965271220098L;
public static final String DEFAULT_NAME = "ToscaPolicyTypesSimple";
public static final String DEFAULT_VERSION = "1.0.0";
/**
- * The Default Constructor creates a {@link JpaToscaPolicyTypes} object with a null artifact key
- * and creates an empty concept map.
+ * The Default Constructor creates a {@link JpaToscaPolicyTypes} object with a null artifact key and creates an
+ * empty concept map.
*/
public JpaToscaPolicyTypes() {
super(new PfConceptKey(DEFAULT_NAME, DEFAULT_VERSION));
}
/**
- * The Key Constructor creates a {@link JpaToscaPolicyTypes} object with the given artifact key and
- * creates an empty concept map.
+ * The Key Constructor creates a {@link JpaToscaPolicyTypes} object with the given artifact key and creates an empty
+ * concept map.
*
* @param key the concept key
*/
@@ -86,4 +88,13 @@
public JpaToscaPolicyTypes(final JpaToscaPolicyTypes copyConcept) {
super(copyConcept);
}
+
+ /**
+ * Authorative constructor.
+ *
+ * @param authorativeConceptMapList the authorative concept to copy from
+ */
+ public JpaToscaPolicyTypes(final List<Map<String, ToscaPolicyType>> authorativeConceptMapList) {
+ this.fromAuthorative(authorativeConceptMapList);
+ }
}
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaProperty.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaProperty.java
index 376c2b3..38d5c09 100644
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaProperty.java
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaProperty.java
@@ -23,8 +23,7 @@
package org.onap.policy.models.tosca.simple.concepts;
-import com.google.gson.annotations.SerializedName;
-
+import java.util.ArrayList;
import java.util.List;
import javax.persistence.Column;
@@ -41,6 +40,7 @@
import org.apache.commons.lang3.ObjectUtils;
import org.onap.policy.common.utils.validation.Assertions;
+import org.onap.policy.models.base.PfAuthorative;
import org.onap.policy.models.base.PfConcept;
import org.onap.policy.models.base.PfConceptKey;
import org.onap.policy.models.base.PfKey;
@@ -49,6 +49,9 @@
import org.onap.policy.models.base.PfValidationMessage;
import org.onap.policy.models.base.PfValidationResult;
import org.onap.policy.models.base.PfValidationResult.ValidationResult;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaConstraint;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaProperty;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaProperty.Status;
/**
* Class to represent the property in TOSCA definition.
@@ -61,13 +64,9 @@
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@Data
@EqualsAndHashCode(callSuper = false)
-public class JpaToscaProperty extends PfConcept {
+public class JpaToscaProperty extends PfConcept implements PfAuthorative<ToscaProperty> {
private static final long serialVersionUID = 1675770231921107988L;
- public enum Status {
- SUPPORTED, UNSUPPORTED, EXPERIMENTAL, DEPRECATED
- }
-
@EmbeddedId
private PfReferenceKey key;
@@ -81,7 +80,6 @@
private boolean required = false;
@Column(name = "default")
- @SerializedName("default")
private String defaultValue;
@Column
@@ -92,7 +90,6 @@
private List<JpaToscaConstraint> constraints;
@Column
- @SerializedName("entry_schema")
private JpaToscaEntrySchema entrySchema;
/**
@@ -131,18 +128,81 @@
super(copyConcept);
}
+ /**
+ * Authorative constructor.
+ *
+ * @param authorativeConcept the authorative concept to copy from
+ */
+ public JpaToscaProperty(final ToscaProperty authorativeConcept) {
+ this.fromAuthorative(authorativeConcept);
+ }
+
+ @Override
+ public ToscaProperty toAuthorative() {
+ ToscaProperty toscaProperty = new ToscaProperty();
+
+ toscaProperty.setName(key.getLocalName());
+
+ toscaProperty.setType(type.getName());
+ toscaProperty.setTypeVersion(type.getVersion());
+
+ toscaProperty.setDescription(description);
+ toscaProperty.setRequired(required);
+ toscaProperty.setDefaultValue(defaultValue);
+ toscaProperty.setStatus(status);
+
+ if (constraints != null) {
+ List<ToscaConstraint> toscaConstraints = new ArrayList<>();
+
+ for (JpaToscaConstraint constraint : constraints) {
+ toscaConstraints.add(constraint.toAuthorative());
+ }
+
+ toscaProperty.setConstraints(toscaConstraints);
+ }
+
+ if (entrySchema != null) {
+ toscaProperty.setEntrySchema(entrySchema.toAuthorative());
+ }
+
+ return toscaProperty;
+ }
+
+ @Override
+ public void fromAuthorative(ToscaProperty toscaProperty) {
+ this.setKey(new PfReferenceKey());
+ getKey().setLocalName(toscaProperty.getName());
+
+ if (toscaProperty.getTypeVersion() != null) {
+ type = new PfConceptKey(toscaProperty.getType(), toscaProperty.getTypeVersion());
+ } else {
+ type = new PfConceptKey(toscaProperty.getType(), PfKey.NULL_KEY_VERSION);
+ }
+
+ description = toscaProperty.getDescription();
+ required = toscaProperty.isRequired();
+ defaultValue = toscaProperty.getDefaultValue();
+ status = toscaProperty.getStatus();
+
+ if (toscaProperty.getConstraints() != null) {
+ constraints = new ArrayList<>();
+
+ for (ToscaConstraint toscaConstraint : toscaProperty.getConstraints()) {
+ constraints.add(JpaToscaConstraint.newInstance(toscaConstraint));
+ }
+ }
+
+ if (toscaProperty.getEntrySchema() != null) {
+ entrySchema = new JpaToscaEntrySchema(toscaProperty.getEntrySchema());
+ }
+ }
+
@Override
public List<PfKey> getKeys() {
final List<PfKey> keyList = getKey().getKeys();
keyList.addAll(type.getKeys());
- if (constraints != null) {
- for (JpaToscaConstraint constraint : constraints) {
- keyList.addAll(constraint.getKeys());
- }
- }
-
if (entrySchema != null) {
keyList.addAll(entrySchema.getKeys());
}
@@ -164,12 +224,6 @@
defaultValue = defaultValue.trim();
}
- if (constraints != null) {
- for (JpaToscaConstraint constraint : constraints) {
- constraint.clean();
- }
- }
-
if (entrySchema != null) {
entrySchema.clean();
}
@@ -218,8 +272,6 @@
if (constraint == null) {
result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID,
"property constraint may not be null "));
- } else {
- result = constraint.validate(result);
}
}
}
@@ -247,8 +299,7 @@
}
/**
- * Compare the fields of this ToscaProperty object with the fields of the other ToscaProperty
- * object.
+ * Compare the fields of this ToscaProperty object with the fields of the other ToscaProperty object.
*
* @param other the other ToscaProperty object
*/
@@ -296,7 +347,17 @@
copy.setRequired(required);
copy.setDefaultValue(defaultValue);
copy.setStatus(status);
- copy.constraints = constraints; // Constraints are immutable
+
+ if (constraints == null) {
+ copy.setConstraints(null);
+ } else {
+ final List<JpaToscaConstraint> newConstraints = new ArrayList<>();
+ for (final JpaToscaConstraint constraint : constraints) {
+ newConstraints.add(constraint); // Constraints are immutable
+ }
+ copy.setConstraints(newConstraints);
+ }
+
copy.setEntrySchema(entrySchema != null ? new JpaToscaEntrySchema(entrySchema) : null);
return copy;
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaServiceTemplate.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaServiceTemplate.java
index fa2d2aa..fda0c80 100644
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaServiceTemplate.java
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaServiceTemplate.java
@@ -39,16 +39,18 @@
import org.apache.commons.lang3.ObjectUtils;
import org.onap.policy.common.utils.validation.Assertions;
import org.onap.policy.common.utils.validation.ParameterValidationUtils;
+import org.onap.policy.models.base.PfAuthorative;
import org.onap.policy.models.base.PfConcept;
import org.onap.policy.models.base.PfConceptKey;
import org.onap.policy.models.base.PfKey;
import org.onap.policy.models.base.PfValidationMessage;
import org.onap.policy.models.base.PfValidationResult;
import org.onap.policy.models.base.PfValidationResult.ValidationResult;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
/**
- * This class holds a full TOSCA service template. Note: Only the policy specific parts of the TOSCA
- * service template are implemented.
+ * This class holds a full TOSCA service template. Note: Only the policy specific parts of the TOSCA service template
+ * are implemented.
*
* @author Liam Fallon (liam.fallon@est.tech)
*/
@@ -57,7 +59,8 @@
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@Data
@EqualsAndHashCode(callSuper = true)
-public class JpaToscaServiceTemplate extends JpaToscaEntityType {
+public class JpaToscaServiceTemplate extends JpaToscaEntityType<ToscaServiceTemplate>
+ implements PfAuthorative<ToscaServiceTemplate> {
private static final long serialVersionUID = 8084846046148349401L;
public static final String DEFAULT_NAME = "ToscaServiceTemplateSimple";
@@ -96,8 +99,7 @@
}
/**
- * The full constructor creates a {@link JpaToscaServiceTemplate} object with all mandatory
- * parameters.
+ * The full constructor creates a {@link JpaToscaServiceTemplate} object with all mandatory parameters.
*
* @param key the key
* @param toscaDefinitionsVersion the TOSCA version string
@@ -116,6 +118,70 @@
super(copyConcept);
}
+ /**
+ * Authorative constructor.
+ *
+ * @param authorativeConcept the authorative concept to copy from
+ */
+ public JpaToscaServiceTemplate(final ToscaServiceTemplate authorativeConcept) {
+ this.fromAuthorative(authorativeConcept);
+ }
+
+ @Override
+ public ToscaServiceTemplate toAuthorative() {
+ final ToscaServiceTemplate toscaServiceTemplate = new ToscaServiceTemplate();
+
+ super.setToscaEntity(toscaServiceTemplate);
+ super.toAuthorative();
+
+ toscaServiceTemplate.setToscaDefinitionsVersion(toscaDefinitionsVersion);
+
+ if (dataTypes != null) {
+ toscaServiceTemplate.setDataTypes(dataTypes.toAuthorative());
+ }
+
+ if (policyTypes != null) {
+ toscaServiceTemplate.setPolicyTypes(policyTypes.toAuthorative());
+ }
+
+ if (topologyTemplate != null) {
+ toscaServiceTemplate.setToscaTopologyTemplate(topologyTemplate.toAuthorative());
+ }
+
+ return toscaServiceTemplate;
+ }
+
+ @Override
+ public void fromAuthorative(ToscaServiceTemplate toscaServiceTemplate) {
+ super.fromAuthorative(toscaServiceTemplate);
+
+ if (getKey().getName() == PfKey.NULL_KEY_NAME) {
+ getKey().setName(DEFAULT_NAME);
+ }
+
+ if (getKey().getVersion() == PfKey.NULL_KEY_VERSION) {
+ getKey().setVersion(DEFAULT_VERSION);
+ }
+
+ toscaDefinitionsVersion = toscaServiceTemplate.getToscaDefinitionsVersion();
+
+ if (toscaServiceTemplate.getDataTypes() != null) {
+ dataTypes = new JpaToscaDataTypes();
+ dataTypes.fromAuthorative(toscaServiceTemplate.getDataTypes());
+ }
+
+ if (toscaServiceTemplate.getPolicyTypes() != null) {
+ policyTypes = new JpaToscaPolicyTypes();
+ policyTypes.fromAuthorative(toscaServiceTemplate.getPolicyTypes());
+ }
+
+
+ if (toscaServiceTemplate.getToscaTopologyTemplate() != null) {
+ topologyTemplate = new JpaToscaTopologyTemplate();
+ topologyTemplate.fromAuthorative(toscaServiceTemplate.getToscaTopologyTemplate());
+ }
+ }
+
@Override
public List<PfKey> getKeys() {
final List<PfKey> keyList = super.getKeys();
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaServiceTemplates.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaServiceTemplates.java
index 39e5531..08624f6 100644
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaServiceTemplates.java
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaServiceTemplates.java
@@ -20,6 +20,7 @@
package org.onap.policy.models.tosca.simple.concepts;
+import java.util.List;
import java.util.Map;
import java.util.TreeMap;
@@ -33,6 +34,7 @@
import org.onap.policy.models.base.PfConceptContainer;
import org.onap.policy.models.base.PfConceptKey;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
/**
* This class is a container for TOSCA service templates.
@@ -44,7 +46,7 @@
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@Data
@EqualsAndHashCode(callSuper = true)
-public class JpaToscaServiceTemplates extends PfConceptContainer<JpaToscaServiceTemplate> {
+public class JpaToscaServiceTemplates extends PfConceptContainer<JpaToscaServiceTemplate, ToscaServiceTemplate> {
private static final long serialVersionUID = -3053257884307604114L;
/**
@@ -84,4 +86,13 @@
public JpaToscaServiceTemplates(final JpaToscaServiceTemplates copyConcept) {
super(copyConcept);
}
+
+ /**
+ * Authorative constructor.
+ *
+ * @param authorativeConceptMapList the authorative concept to copy from
+ */
+ public JpaToscaServiceTemplates(final List<Map<String, ToscaServiceTemplate>> authorativeConceptMapList) {
+ this.fromAuthorative(authorativeConceptMapList);
+ }
}
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaTopologyTemplate.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaTopologyTemplate.java
index 095435a..3476258 100644
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaTopologyTemplate.java
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaTopologyTemplate.java
@@ -37,12 +37,14 @@
import org.apache.commons.lang3.ObjectUtils;
import org.onap.policy.common.utils.validation.Assertions;
+import org.onap.policy.models.base.PfAuthorative;
import org.onap.policy.models.base.PfConcept;
import org.onap.policy.models.base.PfKey;
import org.onap.policy.models.base.PfReferenceKey;
import org.onap.policy.models.base.PfValidationMessage;
import org.onap.policy.models.base.PfValidationResult;
import org.onap.policy.models.base.PfValidationResult.ValidationResult;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaTopologyTemplate;
/**
* This class holds a TOSCA topology template. Note: Only the policy specific parts of the TOSCA topology template are
@@ -55,7 +57,7 @@
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@Data
@EqualsAndHashCode(callSuper = false)
-public class JpaToscaTopologyTemplate extends PfConcept {
+public class JpaToscaTopologyTemplate extends PfConcept implements PfAuthorative<ToscaTopologyTemplate> {
private static final long serialVersionUID = 8969698734673232603L;
public static final String DEFAULT_LOCAL_NAME = "ToscaTopologyTemplateSimple";
@@ -96,6 +98,38 @@
super(copyConcept);
}
+ /**
+ * Authorative constructor.
+ *
+ * @param authorativeConcept the authorative concept to copy from
+ */
+ public JpaToscaTopologyTemplate(final ToscaTopologyTemplate authorativeConcept) {
+ this.fromAuthorative(authorativeConcept);
+ }
+
+ @Override
+ public ToscaTopologyTemplate toAuthorative() {
+ final ToscaTopologyTemplate toscaTopologyTemplate = new ToscaTopologyTemplate();
+
+ toscaTopologyTemplate.setDescription(description);
+
+ if (policies != null) {
+ toscaTopologyTemplate.setPolicies(policies.toAuthorative());
+ }
+
+ return toscaTopologyTemplate;
+ }
+
+ @Override
+ public void fromAuthorative(ToscaTopologyTemplate toscaTopologyTemplate) {
+ description = toscaTopologyTemplate.getDescription();
+
+ if (toscaTopologyTemplate.getPolicies() != null) {
+ policies = new JpaToscaPolicies();
+ policies.fromAuthorative(toscaTopologyTemplate.getPolicies());
+ }
+ }
+
@Override
public List<PfKey> getKeys() {
final List<PfKey> keyList = getKey().getKeys();
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaTrigger.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaTrigger.java
index 0a32701..551dbe5 100644
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaTrigger.java
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaTrigger.java
@@ -148,12 +148,6 @@
if (targetFilter != null) {
keyList.addAll(targetFilter.getKeys());
}
- if (condition != null) {
- keyList.addAll(condition.getKeys());
- }
- if (constraint != null) {
- keyList.addAll(constraint.getKeys());
- }
return keyList;
}
@@ -170,12 +164,6 @@
if (targetFilter != null) {
targetFilter.clean();
}
- if (condition != null) {
- condition.clean();
- }
- if (constraint != null) {
- constraint.clean();
- }
method = (method != null ? method.trim() : method);
action = action.trim();
@@ -233,8 +221,6 @@
result = (schedule != null ? schedule.validate(result) : result);
result = (targetFilter != null ? targetFilter.validate(result) : result);
- result = (condition != null ? condition.validate(result) : result);
- result = (constraint != null ? constraint.validate(result) : result);
return result;
}
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 6e356d0..e7e8160 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
@@ -143,7 +143,7 @@
* @return the TOSCA service template containing the policy types that were deleted
* @throws PfModelException on errors deleting policy types
*/
- public JpaToscaServiceTemplate deletePolicyTypes(@NonNull final PfDao dao,
+ public JpaToscaServiceTemplate deletePolicyType(@NonNull final PfDao dao,
@NonNull final PfConceptKey policyTypeKey)
throws PfModelException {
@@ -251,7 +251,7 @@
* @return the TOSCA service template containing the policies that were deleted
* @throws PfModelException on errors deleting policies
*/
- public JpaToscaServiceTemplate deletePolicies(@NonNull final PfDao dao, @NonNull final PfConceptKey policyKey)
+ public JpaToscaServiceTemplate deletePolicy(@NonNull final PfDao dao, @NonNull final PfConceptKey policyKey)
throws PfModelException {
JpaToscaServiceTemplate serviceTemplate = getPolicies(dao, policyKey);
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaDataTypeJsonAdapter.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaDataTypeJsonAdapter.java
deleted file mode 100644
index 6b00b20..0000000
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaDataTypeJsonAdapter.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.models.tosca.simple.serialization;
-
-import com.google.gson.JsonDeserializationContext;
-import com.google.gson.JsonDeserializer;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
-import com.google.gson.JsonSerializationContext;
-import com.google.gson.JsonSerializer;
-
-import java.lang.reflect.Type;
-import javax.ws.rs.core.Response;
-
-import lombok.NonNull;
-
-import org.onap.policy.models.base.PfConceptKey;
-import org.onap.policy.models.base.PfModelRuntimeException;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaDataType;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaProperty;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * GSON type adapter for TOSCA data types.
- *
- * @author Chenfei Gao (cgao@research.att.com)
- */
-public class ToscaDataTypeJsonAdapter implements JsonSerializer<JpaToscaDataType>, JsonDeserializer<JpaToscaDataType> {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(ToscaDataTypeJsonAdapter.class);
-
- private static final String DERIVED_FROM = "derived_from";
- private static final String DESCRIPTION = "description";
- private static final String VERSION = "version";
- private static final String PROPERTIES = "properties";
- private static final String DEFAULT_VERSION = "1.0.0";
-
- @Override
- public JpaToscaDataType deserialize(@NonNull final JsonElement dataTypeElement, @NonNull final Type type,
- @NonNull final JsonDeserializationContext context) {
-
- // The incoming JSON
- final JsonObject dataTypeJsonMapObject = dataTypeElement.getAsJsonObject();
-
- // We should only have a single entry for the policy type
- if (dataTypeJsonMapObject.entrySet().size() != 1) {
- String errorMessage = "a policy type list entry may only contain one and only one policy type";
- LOGGER.debug(errorMessage);
- throw new PfModelRuntimeException(Response.Status.BAD_REQUEST, errorMessage);
- }
-
- final String dataTypeName = dataTypeJsonMapObject.entrySet().iterator().next().getKey();
- final JsonObject dataTypeJsonObject = dataTypeJsonMapObject.entrySet().iterator().next()
- .getValue().getAsJsonObject();
-
- // Set keys
- PfConceptKey dataTypeKey;
- if (dataTypeJsonObject.get(VERSION) == null) {
- dataTypeKey = new PfConceptKey(dataTypeName, DEFAULT_VERSION);
- } else {
- dataTypeKey = new PfConceptKey(dataTypeName, dataTypeJsonObject.get(VERSION).getAsString());
- }
- JpaToscaDataType dataType = new JpaToscaDataType(dataTypeKey);
-
- // Set derived_from
- dataType.setDerivedFrom(new PfConceptKey(dataTypeJsonObject.get(DERIVED_FROM).getAsString(),
- DEFAULT_VERSION));
-
- // Set description
- if (dataTypeJsonObject.has(DESCRIPTION)) {
- final String dataTypeDescription = dataTypeJsonObject.get(DESCRIPTION).getAsString();
- dataType.setDescription(dataTypeDescription);
- }
-
- // Set properties
- if (dataTypeJsonObject.has(PROPERTIES)) {
- dataType.setProperties(
- new ToscaPropertiesJsonAdapter().deserializeProperties(dataTypeJsonObject.get(PROPERTIES)));
- for (JpaToscaProperty property : dataType.getProperties()) {
- property.getKey().setParentConceptKey(dataTypeKey);
- property.getType().setVersion(dataType.getKey().getVersion());
- }
- }
-
- return dataType;
- }
-
- @Override
- public JsonElement serialize(@NonNull final JpaToscaDataType dataType, @NonNull final Type type,
- @NonNull final JsonSerializationContext context) {
-
- JsonObject dataTypeValJsonObject = new JsonObject();
-
- // Add derived_from
- if (dataType.getDerivedFrom() != null) {
- dataTypeValJsonObject.addProperty(DERIVED_FROM, dataType.getDerivedFrom().getName());
- }
-
- // Add description
- if (dataType.getDescription() != null) {
- dataTypeValJsonObject.addProperty(DESCRIPTION, dataType.getDescription());
- }
-
- // Add version
- if (dataType.getKey().getVersion() != null) {
- dataTypeValJsonObject.addProperty(VERSION, dataType.getKey().getVersion());
- }
-
- // Add properties
- if (dataType.getProperties() != null) {
- JsonElement propertiesJsonElement = new ToscaPropertiesJsonAdapter()
- .serializeProperties(dataType.getProperties());
- dataTypeValJsonObject.add(PROPERTIES, propertiesJsonElement);
- }
-
- JsonObject dataTypeJsonObject = new JsonObject();
- dataTypeJsonObject.add(dataType.getKey().getName(), dataTypeValJsonObject);
- return dataTypeJsonObject;
- }
-}
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaDataTypesJsonAdapter.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaDataTypesJsonAdapter.java
deleted file mode 100644
index 6131581..0000000
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaDataTypesJsonAdapter.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.models.tosca.simple.serialization;
-
-import com.google.gson.JsonArray;
-import com.google.gson.JsonDeserializationContext;
-import com.google.gson.JsonDeserializer;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonSerializationContext;
-import com.google.gson.JsonSerializer;
-
-import java.lang.reflect.Type;
-import java.util.Iterator;
-import javax.ws.rs.core.Response;
-import lombok.NonNull;
-
-import org.onap.policy.models.base.PfConceptKey;
-import org.onap.policy.models.base.PfModelRuntimeException;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaDataType;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaDataTypes;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * GSON type adapter for TOSCA data types.
- *
- * @author Chenfei Gao (cgao@research.att.com)
- */
-public class ToscaDataTypesJsonAdapter
- implements JsonSerializer<JpaToscaDataTypes>, JsonDeserializer<JpaToscaDataTypes> {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(ToscaDataTypesJsonAdapter.class);
-
- @Override
- public JpaToscaDataTypes deserialize(@NonNull final JsonElement dataTypesElement, @NonNull final Type type,
- @NonNull final JsonDeserializationContext context) {
-
- // The incoming JSON
- final JsonArray dataTypesJsonArray = dataTypesElement.getAsJsonArray();
-
- // The outgoing object
- final PfConceptKey dataTypesKey = new PfConceptKey("IncomingDataTypes", "0.0.1");
- final JpaToscaDataTypes dataTypes = new JpaToscaDataTypes(dataTypesKey);
-
- // Get the dataTypes
- Iterator<JsonElement> dataTypesIterator = dataTypesJsonArray.iterator();
- while (dataTypesIterator.hasNext()) {
- JpaToscaDataType dataType = new ToscaDataTypeJsonAdapter().deserialize(dataTypesIterator.next(),
- JpaToscaDataType.class, context);
-
- dataTypes.getConceptMap().put(dataType.getKey(), dataType);
- }
-
- return dataTypes;
- }
-
- @Override
- public JsonElement serialize(@NonNull final JpaToscaDataTypes dataTypes, @NonNull final Type type,
- @NonNull final JsonSerializationContext context) {
-
- JsonArray dataTypesJsonArray = new JsonArray();
-
- if (dataTypes.getConceptMap().isEmpty()) {
- String errorMessage = "data type list is empty";
- LOGGER.debug(errorMessage);
- throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR, errorMessage);
- }
-
- for (JpaToscaDataType dataType : dataTypes.getConceptMap().values()) {
- JsonElement dataTypeEntry = new ToscaDataTypeJsonAdapter().serialize(dataType, type, context);
- dataTypesJsonArray.add(dataTypeEntry);
- }
-
- return dataTypesJsonArray;
- }
-}
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaPoliciesJsonAdapter.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaPoliciesJsonAdapter.java
deleted file mode 100644
index ca0e3d9..0000000
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaPoliciesJsonAdapter.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.models.tosca.simple.serialization;
-
-import com.google.gson.JsonArray;
-import com.google.gson.JsonDeserializationContext;
-import com.google.gson.JsonDeserializer;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonSerializationContext;
-import com.google.gson.JsonSerializer;
-
-import java.lang.reflect.Type;
-import java.util.Iterator;
-import lombok.NonNull;
-
-import org.onap.policy.models.base.PfConceptKey;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicies;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicy;
-
-/**
- * GSON type adapter for TOSCA policies.
- *
- * @author Liam Fallon (liam.fallon@est.tech)
- * @author Chenfei Gao (cgao@research.att.com)
- */
-public class ToscaPoliciesJsonAdapter implements JsonSerializer<JpaToscaPolicies>, JsonDeserializer<JpaToscaPolicies> {
-
- @Override
- public JpaToscaPolicies deserialize(@NonNull final JsonElement policiesElement, @NonNull final Type type,
- @NonNull final JsonDeserializationContext context) {
- // The incoming JSON
- final JsonArray policiesJsonArray = policiesElement.getAsJsonArray();
-
- // The outgoing object
- final PfConceptKey policiesKey = new PfConceptKey("IncomingPolicies", "0.0.1");
- final JpaToscaPolicies policies = new JpaToscaPolicies(policiesKey);
-
- // Get the policies
- for (Iterator<JsonElement> policiesIterator = policiesJsonArray.iterator(); policiesIterator.hasNext(); ) {
- JpaToscaPolicy policy = new ToscaPolicyJsonAdapter()
- .deserialize(policiesIterator.next(), JpaToscaPolicy.class, context);
-
- policies.getConceptMap().put(policy.getKey(), policy);
- }
-
- return policies;
- }
-
- @Override
- public JsonElement serialize(@NonNull final JpaToscaPolicies policies, @NonNull final Type type,
- @NonNull final JsonSerializationContext context) {
-
- JsonArray policiesJsonArray = new JsonArray();
-
- for (JpaToscaPolicy policy: policies.getConceptMap().values()) {
- policiesJsonArray.add(new ToscaPolicyJsonAdapter().serialize(policy, type, context));
- }
- return policiesJsonArray;
- }
-}
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaPolicyJsonAdapter.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaPolicyJsonAdapter.java
deleted file mode 100644
index 6b666e2..0000000
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaPolicyJsonAdapter.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.models.tosca.simple.serialization;
-
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import com.google.gson.JsonDeserializationContext;
-import com.google.gson.JsonDeserializer;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
-import com.google.gson.JsonSerializationContext;
-import com.google.gson.JsonSerializer;
-
-import java.lang.reflect.Type;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Map.Entry;
-import javax.ws.rs.core.Response;
-
-import lombok.NonNull;
-
-import org.onap.policy.models.base.PfConceptKey;
-import org.onap.policy.models.base.PfModelRuntimeException;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicy;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * GSON type adapter for TOSCA policies.
- *
- * @author Liam Fallon (liam.fallon@est.tech)
- * @author Chenfei Gao (cgao@research.att.com)
- */
-public class ToscaPolicyJsonAdapter implements JsonSerializer<JpaToscaPolicy>, JsonDeserializer<JpaToscaPolicy> {
- // Logger for this class
- private static final Logger LOGGER = LoggerFactory.getLogger(ToscaPolicyJsonAdapter.class);
-
- private static final String TYPE = "type";
- private static final String DESCRIPTION = "description";
- private static final String VERSION = "version";
- private static final String METADATA = "metadata";
- private static final String PROPERTIES = "properties";
-
- private final Gson gson = new GsonBuilder().setPrettyPrinting().create();
-
- @Override
- public JpaToscaPolicy deserialize(@NonNull final JsonElement policyElement, @NonNull final Type type,
- @NonNull final JsonDeserializationContext context) {
-
- // The incoming JSON
- final JsonObject policyJsonMapObject = policyElement.getAsJsonObject();
-
- // We should only have a single entry for the policy
- if (policyJsonMapObject.entrySet().size() != 1) {
- String errorMessage = "a policy list entry may only contain one and only one policy";
- LOGGER.debug(errorMessage);
- throw new PfModelRuntimeException(Response.Status.BAD_REQUEST, errorMessage);
- }
-
- final String policyName = policyJsonMapObject.entrySet().iterator().next().getKey();
- final JsonObject policyJsonObject = policyJsonMapObject.entrySet().iterator().next()
- .getValue().getAsJsonObject();
-
- // Set keys
- PfConceptKey policyKey = new PfConceptKey(policyName, policyJsonObject.get(VERSION).getAsString());
- PfConceptKey policyTypeKey = new PfConceptKey(
- policyJsonObject.get(TYPE).getAsString(),
- policyJsonObject.get(VERSION).getAsString());
- JpaToscaPolicy policy = new JpaToscaPolicy(policyKey, policyTypeKey);
-
- // Set description
- if (policyJsonObject.has(DESCRIPTION)) {
- final String policyDescription = policyJsonObject.get(DESCRIPTION).getAsString();
- policy.setDescription(policyDescription);
- }
-
- // Set metadata
- if (policyJsonObject.has(METADATA)) {
- final JsonObject policyMetadataMapObject = policyJsonObject.get(METADATA).getAsJsonObject();
- Map<String, String> policyMetadataMap = new HashMap<>();
- for (Entry<String, JsonElement> entry : policyMetadataMapObject.entrySet()) {
- policyMetadataMap.put(entry.getKey(), entry.getValue().getAsString());
- }
- policy.setMetadata(policyMetadataMap);
- }
-
- // Set properties
- if (policyJsonObject.has(PROPERTIES)) {
- final JsonObject policyPropertiesMapObject = policyJsonObject.get(PROPERTIES).getAsJsonObject();
- Map<String, String> propertiesMap = new HashMap<>();
- for (Entry<String, JsonElement> entry : policyPropertiesMapObject.entrySet()) {
- // TODO: This is a HACK, we need to validate the properties against their
- // TODO: their data type in their policy type definition in TOSCA, which means reading
- // TODO: the policy type from the database and parsing the property value object correctly
- // TODO: Here we are simply serializing the property value into a string and storing it
- // TODO: unvalidated into the database
- propertiesMap.put(entry.getKey(), gson.toJson(entry.getValue()));
- }
- policy.setProperties(propertiesMap);
- }
- return policy;
- }
-
- @Override
- public JsonElement serialize(@NonNull final JpaToscaPolicy policy, @NonNull final Type type,
- @NonNull final JsonSerializationContext context) {
-
- JsonObject policyValJsonObject = new JsonObject();
-
- // Add type
- policyValJsonObject.addProperty(TYPE, policy.getType().getName());
-
- // Add version
- policyValJsonObject.addProperty(VERSION, policy.getType().getVersion());
-
- // Add description
- if (policy.getDescription() != null) {
- policyValJsonObject.addProperty(DESCRIPTION, policy.getDescription());
- }
-
- // Add metadata
- if (policy.getMetadata() != null) {
- JsonObject metadataMapObject = new JsonObject();
- for (Entry<String, String> entry : policy.getMetadata().entrySet()) {
- metadataMapObject.addProperty(entry.getKey(), entry.getValue());
- }
- policyValJsonObject.add(METADATA, metadataMapObject);
- }
-
- // Add properties
- if (policy.getProperties() != null) {
- JsonObject propertiesMapObject = new JsonObject();
- for (Entry<String, String> entry : policy.getProperties().entrySet()) {
- // TODO: This is the other direction of the HACK
- JsonElement valueObject = gson.fromJson(entry.getValue(), JsonElement.class);
- propertiesMapObject.add(entry.getKey(), valueObject);
- }
- policyValJsonObject.add(PROPERTIES, propertiesMapObject);
- }
-
- JsonObject policyJsonObject = new JsonObject();
- policyJsonObject.add(policy.getKey().getName(), policyValJsonObject);
- return policyJsonObject;
- }
-}
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaPolicyTypeJsonAdapter.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaPolicyTypeJsonAdapter.java
deleted file mode 100644
index a966422..0000000
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaPolicyTypeJsonAdapter.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.models.tosca.simple.serialization;
-
-import com.google.gson.JsonDeserializationContext;
-import com.google.gson.JsonDeserializer;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
-import com.google.gson.JsonSerializationContext;
-import com.google.gson.JsonSerializer;
-import java.lang.reflect.Type;
-import javax.ws.rs.core.Response;
-
-import lombok.NonNull;
-
-import org.onap.policy.models.base.PfConceptKey;
-import org.onap.policy.models.base.PfModelRuntimeException;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyType;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaProperty;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * GSON type adapter for TOSCA policy types.
- *
- * @author Chenfei Gao (cgao@research.att.com)
- */
-public class ToscaPolicyTypeJsonAdapter
- implements JsonSerializer<JpaToscaPolicyType>, JsonDeserializer<JpaToscaPolicyType> {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(ToscaPolicyTypeJsonAdapter.class);
-
- private static final String DERIVED_FROM = "derived_from";
- private static final String DESCRIPTION = "description";
- private static final String VERSION = "version";
- private static final String PROPERTIES = "properties";
- private static final String DEFAULT_VERSION = "1.0.0";
-
- @Override
- public JpaToscaPolicyType deserialize(@NonNull final JsonElement policyTypeElement, @NonNull final Type type,
- @NonNull final JsonDeserializationContext context) {
-
- // The incoming JSON
- final JsonObject policyTypeJsonMapObject = policyTypeElement.getAsJsonObject();
-
- // We should only have a single entry for the policy type
- if (policyTypeJsonMapObject.entrySet().size() != 1) {
- String errorMessage = "a policy type list entry may only contain one and only one policy type";
- LOGGER.debug(errorMessage);
- throw new PfModelRuntimeException(Response.Status.BAD_REQUEST, errorMessage);
- }
-
- final String policyTypeName = policyTypeJsonMapObject.entrySet().iterator().next().getKey();
- final JsonObject policyTypeJsonObject =
- policyTypeJsonMapObject.entrySet().iterator().next().getValue().getAsJsonObject();
-
- // Set keys
- PfConceptKey policyTypeKey;
- if (policyTypeJsonObject.get(VERSION) == null) {
- policyTypeKey = new PfConceptKey(policyTypeName, DEFAULT_VERSION);
- } else {
- policyTypeKey = new PfConceptKey(policyTypeName, policyTypeJsonObject.get(VERSION).getAsString());
- }
- JpaToscaPolicyType policyType = new JpaToscaPolicyType(policyTypeKey);
-
- // Set derived_from
- policyType.setDerivedFrom(
- new PfConceptKey(policyTypeJsonObject.get(DERIVED_FROM).getAsString(), DEFAULT_VERSION));
-
- // Set description
- if (policyTypeJsonObject.has(DESCRIPTION)) {
- final String policyTypeDescription = policyTypeJsonObject.get(DESCRIPTION).getAsString();
- policyType.setDescription(policyTypeDescription);
- }
-
- // Set properties
- if (policyTypeJsonObject.has(PROPERTIES)) {
- policyType.setProperties(
- new ToscaPropertiesJsonAdapter().deserializeProperties(policyTypeJsonObject.get(PROPERTIES)));
- for (JpaToscaProperty property : policyType.getProperties()) {
- property.getKey().setParentConceptKey(policyTypeKey);
- property.getType().setVersion(policyType.getKey().getVersion());
- }
- }
-
- return policyType;
- }
-
- @Override
- public JsonElement serialize(@NonNull final JpaToscaPolicyType policyType, @NonNull final Type type,
- @NonNull final JsonSerializationContext context) {
-
- JsonObject policyTypeValJsonObject = new JsonObject();
-
- // Add derived_from
- if (policyType.getDerivedFrom() != null) {
- policyTypeValJsonObject.addProperty(DERIVED_FROM, policyType.getDerivedFrom().getName());
- }
-
- // Add description
- if (policyType.getDescription() != null) {
- policyTypeValJsonObject.addProperty(DESCRIPTION, policyType.getDescription());
- }
-
- // Add version
- if (policyType.getKey().getVersion() != null) {
- policyTypeValJsonObject.addProperty(VERSION, policyType.getKey().getVersion());
- }
-
- // Add properties
- if (policyType.getProperties() != null) {
- JsonElement propertiesJsonElement =
- new ToscaPropertiesJsonAdapter().serializeProperties(policyType.getProperties());
- policyTypeValJsonObject.add(PROPERTIES, propertiesJsonElement);
- }
-
- JsonObject policyTypeJsonObject = new JsonObject();
- policyTypeJsonObject.add(policyType.getKey().getName(), policyTypeValJsonObject);
- return policyTypeJsonObject;
- }
-}
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaPolicyTypesJsonAdapter.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaPolicyTypesJsonAdapter.java
deleted file mode 100644
index ac6d8e5..0000000
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaPolicyTypesJsonAdapter.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.models.tosca.simple.serialization;
-
-import com.google.gson.JsonArray;
-import com.google.gson.JsonDeserializationContext;
-import com.google.gson.JsonDeserializer;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonSerializationContext;
-import com.google.gson.JsonSerializer;
-
-import java.lang.reflect.Type;
-import java.util.Iterator;
-import javax.ws.rs.core.Response;
-import lombok.NonNull;
-
-import org.onap.policy.models.base.PfConceptKey;
-import org.onap.policy.models.base.PfModelRuntimeException;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyType;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyTypes;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * GSON type adapter for TOSCA policy types.
- *
- * @author Chenfei Gao (cgao@research.att.com)
- */
-public class ToscaPolicyTypesJsonAdapter implements JsonSerializer<JpaToscaPolicyTypes>,
- JsonDeserializer<JpaToscaPolicyTypes> {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(ToscaPolicyTypesJsonAdapter.class);
-
- @Override
- public JpaToscaPolicyTypes deserialize(@NonNull final JsonElement policyTypesElement, @NonNull final Type type,
- @NonNull final JsonDeserializationContext context) {
-
- // The incoming JSON
- final JsonArray policyTypesJsonArray = policyTypesElement.getAsJsonArray();
-
- // The outgoing object
- final PfConceptKey policyTypesKey = new PfConceptKey("IncomingPolicyTypes", "0.0.1");
- final JpaToscaPolicyTypes policyTypes = new JpaToscaPolicyTypes(policyTypesKey);
-
- // Get the policyTypes
- Iterator<JsonElement> policyTypesIterator = policyTypesJsonArray.iterator();
- while (policyTypesIterator.hasNext()) {
- JpaToscaPolicyType policyType = new ToscaPolicyTypeJsonAdapter()
- .deserialize(policyTypesIterator.next(), JpaToscaPolicyType.class, context);
-
- policyTypes.getConceptMap().put(policyType.getKey(), policyType);
- }
-
- return policyTypes;
- }
-
- @Override
- public JsonElement serialize(@NonNull final JpaToscaPolicyTypes policyTypes, @NonNull final Type type,
- @NonNull final JsonSerializationContext context) {
-
- JsonArray policyTypesJsonArray = new JsonArray();
-
- if (policyTypes.getConceptMap().isEmpty()) {
- String errorMessage = "policy type list is empty";
- LOGGER.debug(errorMessage);
- throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR, errorMessage);
- }
-
- for (JpaToscaPolicyType policyType: policyTypes.getConceptMap().values()) {
- JsonElement policyTypeEntry = new ToscaPolicyTypeJsonAdapter().serialize(policyType, type, context);
- policyTypesJsonArray.add(policyTypeEntry);
- }
-
- return policyTypesJsonArray;
- }
-}
\ No newline at end of file
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaPropertiesJsonAdapter.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaPropertiesJsonAdapter.java
deleted file mode 100644
index b5c8755..0000000
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaPropertiesJsonAdapter.java
+++ /dev/null
@@ -1,284 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.models.tosca.simple.serialization;
-
-import com.google.gson.JsonArray;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
-
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map.Entry;
-import javax.ws.rs.core.Response;
-
-import org.onap.policy.models.base.PfConceptKey;
-import org.onap.policy.models.base.PfModelRuntimeException;
-import org.onap.policy.models.base.PfReferenceKey;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaConstraint;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaConstraintLogical.Operation;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaConstraintLogicalString;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaConstraintValidValues;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaEntrySchema;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaProperty;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-
-/**
- * GSON type adapter for TOSCA properties.
- *
- * @author Chenfei Gao (cgao@research.att.com)
- */
-public class ToscaPropertiesJsonAdapter {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(ToscaPropertiesJsonAdapter.class);
-
- private static final String DESCRIPTION = "description";
- private static final String REQUIRED = "required";
- private static final String DEFAULT = "default";
- private static final String TYPE = "type";
- private static final String ENTRY_SCHEMA = "entry_schema";
- private static final String CONSTRAINTS = "constraints";
- private static final String EQUAL = "equal";
- private static final String VALID_VALUES = "valid_values";
- private static final String DEFAULT_VERSION = "1.0.0";
-
- /**
- * Deserializes the properties.
- *
- * @param propertiesElement the properties in JsonElement
- *
- * @return deserialized ToscaProperty list
- */
- public List<JpaToscaProperty> deserializeProperties(JsonElement propertiesElement) {
-
- final JsonObject propertiesMapObject = propertiesElement.getAsJsonObject();
- List<JpaToscaProperty> properties = new LinkedList<>();
-
- for (Entry<String, JsonElement> entry : propertiesMapObject.entrySet()) {
- final String propertyEntryKey = entry.getKey();
- final JsonElement propertyEntryVal = entry.getValue();
-
- // Set property: key and type
- JpaToscaProperty property = new JpaToscaProperty(
- new PfReferenceKey(new PfConceptKey(), propertyEntryKey),
- new PfConceptKey(propertyEntryVal.getAsJsonObject().get(TYPE).getAsString(), DEFAULT_VERSION));
-
- // Set property: description
- JsonObject propertyJsonObject = propertyEntryVal.getAsJsonObject();
- if (propertyJsonObject.has(DESCRIPTION)) {
- property.setDescription(propertyJsonObject.get(DESCRIPTION).getAsString());
- }
-
- // Set property: required
- if (propertyJsonObject.has(REQUIRED)) {
- property.setRequired(propertyJsonObject.get(REQUIRED).getAsBoolean());
- }
-
- // Set property: default
- if (propertyJsonObject.has(DEFAULT)) {
- property.setDefaultValue(propertyJsonObject.get(DEFAULT).getAsString());
- }
-
- // Set property: entry_schema
- if (propertyJsonObject.has(ENTRY_SCHEMA)) {
- checkEntrySchemaCompatibility(property.getType().getName());
- property.setEntrySchema(deserializeEntrySchema(propertyJsonObject.get(ENTRY_SCHEMA)));
- property.getEntrySchema().getKey().setParentConceptKey(property.getType());
- property.getEntrySchema().getType().setVersion(property.getType().getVersion());
- }
-
- // Set property: constraints
- if (propertyJsonObject.has(CONSTRAINTS)) {
- property.setConstraints(deserializeConstraints(propertyJsonObject.get(CONSTRAINTS)));
- for (JpaToscaConstraint c : property.getConstraints()) {
- c.getKey().setParentConceptKey(property.getType());
- }
- }
-
- // Add property to properties list
- properties.add(property);
- }
-
- return properties;
- }
-
- /**
- * Serializes the properties.
- *
- * @param properties the list of ToscaProperty
- *
- * @return serialized JsonElement
- */
- public JsonElement serializeProperties(List<JpaToscaProperty> properties) {
-
- JsonObject propertiesJsonObject = new JsonObject();
-
- for (JpaToscaProperty property : properties) {
- JsonObject propertyValJsonObject = new JsonObject();
-
- // Add type
- propertyValJsonObject.addProperty(TYPE, property.getType().getName());
-
- // Add description
- if (property.getDescription() != null) {
- propertyValJsonObject.addProperty(DESCRIPTION, property.getDescription());
- }
-
- // Add required
- propertyValJsonObject.addProperty(REQUIRED, property.isRequired());
-
- // Add defaultValue
- if (property.getDefaultValue() != null) {
- propertyValJsonObject.addProperty(DEFAULT, property.getDefaultValue());
- }
-
- // Add constraints
- if (property.getConstraints() != null) {
- propertyValJsonObject.add(CONSTRAINTS, serializeConstraints(property.getConstraints()));
- }
-
- // Add entry_schema
- if (property.getEntrySchema() != null) {
- propertyValJsonObject.add(ENTRY_SCHEMA, serializeEntrySchema(property.getEntrySchema()));
- }
-
- propertiesJsonObject.add(property.getKey().getLocalName(), propertyValJsonObject);
- }
-
- return propertiesJsonObject;
- }
-
- private JsonElement serializeConstraints(List<JpaToscaConstraint> constraints) {
-
- JsonArray constraintsValJsonArray = new JsonArray();
-
- for (JpaToscaConstraint c : constraints) {
- JsonObject constraintJsonObject = new JsonObject();
-
- // Check which type of constraint it is
- // TODO: here we only support valid_values and equal
- if (c instanceof JpaToscaConstraintValidValues) {
- JsonArray validValuesJsonArray = new JsonArray();
- for (String validValue : ((JpaToscaConstraintValidValues)c).getValidValues()) {
- validValuesJsonArray.add(validValue);
- }
- constraintJsonObject.add(VALID_VALUES, validValuesJsonArray);
- } else if (c instanceof JpaToscaConstraintLogicalString) {
- constraintJsonObject.addProperty(EQUAL, ((JpaToscaConstraintLogicalString)c).getCompareToString());
- } else {
- String errorMessage = "constraint is neither valid_values nor equal";
- LOGGER.debug(errorMessage);
- throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR, errorMessage);
- }
-
- constraintsValJsonArray.add(constraintJsonObject);
- }
-
- return constraintsValJsonArray;
- }
-
- private JsonElement serializeEntrySchema(JpaToscaEntrySchema entrySchema) {
-
- JsonObject entrySchemaValJsonObject = new JsonObject();
-
- // Add type
- entrySchemaValJsonObject.addProperty(TYPE, entrySchema.getType().getName());
-
- // Add description
- if (entrySchema.getDescription() != null) {
- entrySchemaValJsonObject.addProperty(DESCRIPTION, entrySchema.getDescription());
- }
-
- // Add constraints
- if (entrySchema.getConstraints() != null) {
- entrySchemaValJsonObject.add(CONSTRAINTS, serializeConstraints(entrySchema.getConstraints()));
- }
-
- return entrySchemaValJsonObject;
- }
-
- private JpaToscaEntrySchema deserializeEntrySchema(JsonElement entrySchemaElement) {
-
- JsonObject entrySchemaJsonObject = entrySchemaElement.getAsJsonObject();
-
- // Set entry_schema: key and type
- JpaToscaEntrySchema entrySchema = new JpaToscaEntrySchema(
- new PfReferenceKey(new PfConceptKey(), ENTRY_SCHEMA),
- new PfConceptKey(entrySchemaJsonObject.get(TYPE).getAsString(), DEFAULT_VERSION));
-
- // Set entry_schema: description
- if (entrySchemaJsonObject.has(DESCRIPTION)) {
- entrySchema.setDescription(entrySchemaJsonObject.get(DESCRIPTION).getAsString());
- }
-
- // Set entry_schema: constraints
- if (entrySchemaJsonObject.has(CONSTRAINTS)) {
- entrySchema.setConstraints(deserializeConstraints(entrySchemaJsonObject.get(CONSTRAINTS)));
- for (JpaToscaConstraint c : entrySchema.getConstraints()) {
- c.getKey().setParentConceptKey(entrySchema.getType());
- }
- }
-
- return entrySchema;
- }
-
- private List<JpaToscaConstraint> deserializeConstraints(JsonElement constraintsElement) {
-
- JsonArray constraintsJsonArray = constraintsElement.getAsJsonArray();
- List<JpaToscaConstraint> constraints = new LinkedList<>();
-
- for (Iterator<JsonElement> constraintsIter = constraintsJsonArray.iterator(); constraintsIter.hasNext(); ) {
- JsonObject constraintJsonObject = constraintsIter.next().getAsJsonObject();
- // Check which type of constraint it is
- // TODO: here we only check 'valid_values' and 'equal'
- if (constraintJsonObject.get(VALID_VALUES) != null) {
- List<String> validValues = new LinkedList<>();
- for (Iterator<JsonElement> validValuesIter = constraintJsonObject.get(VALID_VALUES).getAsJsonArray()
- .iterator(); validValuesIter.hasNext(); ) {
- validValues.add(validValuesIter.next().getAsString());
- }
- JpaToscaConstraint constraint = new JpaToscaConstraintValidValues(
- new PfReferenceKey(new PfConceptKey(), VALID_VALUES), validValues);
- constraints.add(constraint);
- } else if (constraintJsonObject.get(EQUAL) != null) {
- JpaToscaConstraint constraint = new JpaToscaConstraintLogicalString(new PfReferenceKey(
- new PfConceptKey(), EQUAL), Operation.EQ, constraintJsonObject.get(EQUAL).getAsString());
- constraints.add(constraint);
- } else {
- String errorMessage = "specified constraint is neither valid_values nor equal";
- LOGGER.debug(errorMessage);
- throw new PfModelRuntimeException(Response.Status.BAD_REQUEST, errorMessage);
- }
- }
-
- return constraints;
- }
-
- private void checkEntrySchemaCompatibility(String type) {
- if (!("list".equalsIgnoreCase(type)) && !("map".equalsIgnoreCase(type))) {
- String errorMessage = "entry schema can only be specified for list or map property";
- LOGGER.debug(errorMessage);
- throw new PfModelRuntimeException(Response.Status.BAD_REQUEST, errorMessage);
- }
- }
-}
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaServiceTemplateJsonAdapter.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaServiceTemplateJsonAdapter.java
deleted file mode 100644
index bb2ace8..0000000
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaServiceTemplateJsonAdapter.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.models.tosca.simple.serialization;
-
-import com.google.gson.JsonDeserializationContext;
-import com.google.gson.JsonDeserializer;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
-import com.google.gson.JsonSerializationContext;
-import com.google.gson.JsonSerializer;
-
-import java.lang.reflect.Type;
-
-import lombok.NonNull;
-
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaDataTypes;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyTypes;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaTopologyTemplate;
-
-/**
- * GSON type adapter for TOSCA policies.
- *
- * @author Liam Fallon (liam.fallon@est.tech)
- * @author Chenfei Gao (cgao@research.att.com)
- */
-public class ToscaServiceTemplateJsonAdapter
- implements JsonSerializer<JpaToscaServiceTemplate>, JsonDeserializer<JpaToscaServiceTemplate> {
-
- private static final String TOPOLOGY_TEMPLATE = "topology_template";
- private static final String TOSCA_DEFINITIONS_VERSION = "tosca_definitions_version";
- private static final String POLICY_TYPES = "policy_types";
- private static final String DATA_TYPES = "data_types";
-
- @Override
- public JpaToscaServiceTemplate deserialize(@NonNull final JsonElement serviceTemplateElement,
- @NonNull final Type type, @NonNull final JsonDeserializationContext context) {
-
- // The incoming JSON
- final JsonObject serviceTemplateJsonObject = serviceTemplateElement.getAsJsonObject();
-
- // The outgoing object
- final JpaToscaServiceTemplate serviceTemplate = new JpaToscaServiceTemplate();
- serviceTemplate
- .setToscaDefinitionsVersion(serviceTemplateJsonObject.get(TOSCA_DEFINITIONS_VERSION).getAsString());
-
- // Set topology_template
- if (serviceTemplateJsonObject.has(TOPOLOGY_TEMPLATE)) {
- serviceTemplate.setTopologyTemplate(new ToscaTopologyTemplateJsonAdapter().deserialize(
- serviceTemplateJsonObject.get(TOPOLOGY_TEMPLATE), JpaToscaTopologyTemplate.class, context));
- }
-
- // Set policy_types
- if (serviceTemplateJsonObject.has(POLICY_TYPES)) {
- serviceTemplate.setPolicyTypes(new ToscaPolicyTypesJsonAdapter()
- .deserialize(serviceTemplateJsonObject.get(POLICY_TYPES), JpaToscaPolicyTypes.class, context));
- }
-
- // Set data_types
- if (serviceTemplateJsonObject.has(DATA_TYPES)) {
- serviceTemplate.setDataTypes(new ToscaDataTypesJsonAdapter()
- .deserialize(serviceTemplateJsonObject.get(DATA_TYPES), JpaToscaDataTypes.class, context));
- }
-
- return serviceTemplate;
- }
-
- @Override
- public JsonElement serialize(@NonNull final JpaToscaServiceTemplate serviceTemplate, @NonNull final Type type,
- @NonNull final JsonSerializationContext context) {
-
- JsonObject serviceTemplateJsonObject = new JsonObject();
-
- // Serialize tosca_definitions_version
- if (serviceTemplate.getToscaDefinitionsVersion() != null) {
- serviceTemplateJsonObject.addProperty(TOSCA_DEFINITIONS_VERSION,
- serviceTemplate.getToscaDefinitionsVersion());
- }
-
- // Serialize topoligy_template
- if (serviceTemplate.getTopologyTemplate() != null) {
- JsonElement topologyTemplateJsonElement = new ToscaTopologyTemplateJsonAdapter()
- .serialize(serviceTemplate.getTopologyTemplate(), type, context);
- serviceTemplateJsonObject.add(TOPOLOGY_TEMPLATE, topologyTemplateJsonElement);
- }
-
- // Serialize policy_types
- if (serviceTemplate.getPolicyTypes() != null) {
- JsonElement policyTypesJsonElement =
- new ToscaPolicyTypesJsonAdapter().serialize(serviceTemplate.getPolicyTypes(), type, context);
- serviceTemplateJsonObject.add(POLICY_TYPES, policyTypesJsonElement);
- }
-
- // Serialize data_types
- if (serviceTemplate.getDataTypes() != null) {
- JsonElement dataTypesJsonElement =
- new ToscaDataTypesJsonAdapter().serialize(serviceTemplate.getDataTypes(), type, context);
- serviceTemplateJsonObject.add(DATA_TYPES, dataTypesJsonElement);
- }
-
- return serviceTemplateJsonObject;
- }
-}
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaServiceTemplateMessageBodyHandler.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaServiceTemplateMessageBodyHandler.java
deleted file mode 100644
index b15a830..0000000
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaServiceTemplateMessageBodyHandler.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*-
- * ============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.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.models.tosca.simple.serialization;
-
-import com.google.gson.GsonBuilder;
-
-import org.onap.policy.common.gson.GsonMessageBodyHandler;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaDataType;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaDataTypes;
-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;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyTypes;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaTopologyTemplate;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Provider used to serialize and deserialize TOSCA objects using GSON.
- */
-public class ToscaServiceTemplateMessageBodyHandler extends GsonMessageBodyHandler {
-
- public static final Logger logger = LoggerFactory.getLogger(ToscaServiceTemplateMessageBodyHandler.class);
-
- /**
- * Constructs the object.
- */
- public ToscaServiceTemplateMessageBodyHandler() {
- this(new GsonBuilder());
-
- logger.info("Using GSON with TOSCA for REST calls");
- }
-
- /**
- * Constructs the object.
- *
- * @param builder builder to use to create the gson object
- */
- public ToscaServiceTemplateMessageBodyHandler(final GsonBuilder builder) {
- // @formatter:off
- super(builder
- .registerTypeAdapter(JpaToscaServiceTemplate.class, new ToscaServiceTemplateJsonAdapter())
- .registerTypeAdapter(JpaToscaTopologyTemplate.class, new ToscaTopologyTemplateJsonAdapter())
- .registerTypeAdapter(JpaToscaPolicies.class, new ToscaPoliciesJsonAdapter())
- .registerTypeAdapter(JpaToscaPolicy.class, new ToscaPolicyJsonAdapter())
- .registerTypeAdapter(JpaToscaPolicyTypes.class, new ToscaPolicyTypesJsonAdapter())
- .registerTypeAdapter(JpaToscaPolicyType.class, new ToscaPolicyTypeJsonAdapter())
- .registerTypeAdapter(JpaToscaDataTypes.class, new ToscaDataTypesJsonAdapter())
- .registerTypeAdapter(JpaToscaDataType.class, new ToscaDataTypeJsonAdapter())
- .setPrettyPrinting()
- .create()
- );
- // @formatter:on
- }
-
-}
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaTopologyTemplateJsonAdapter.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaTopologyTemplateJsonAdapter.java
deleted file mode 100644
index df8ebb5..0000000
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/serialization/ToscaTopologyTemplateJsonAdapter.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.models.tosca.simple.serialization;
-
-import com.google.gson.JsonDeserializationContext;
-import com.google.gson.JsonDeserializer;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
-import com.google.gson.JsonSerializationContext;
-import com.google.gson.JsonSerializer;
-
-import java.lang.reflect.Type;
-
-import lombok.NonNull;
-
-import org.onap.policy.models.base.PfConceptKey;
-import org.onap.policy.models.base.PfReferenceKey;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicies;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaTopologyTemplate;
-
-/**
- * GSON type adapter for TOSCA policies.
- *
- * @author Liam Fallon (liam.fallon@est.tech)
- * @author Chenfei Gao (cgao@research.att.com)
- */
-public class ToscaTopologyTemplateJsonAdapter
- implements JsonSerializer<JpaToscaTopologyTemplate>, JsonDeserializer<JpaToscaTopologyTemplate> {
-
- private static final String POLICIES = "policies";
- private static final String DESCRIPTION = "description";
-
- @Override
- public JpaToscaTopologyTemplate deserialize(@NonNull final JsonElement toplogyTemplateElement,
- @NonNull final Type type, @NonNull final JsonDeserializationContext context) {
-
- // The incoming JSON
- final JsonObject topologyTemplateJsonObject = toplogyTemplateElement.getAsJsonObject();
-
- // The outgoing object
- final PfReferenceKey topologyTemplateKey = new PfReferenceKey(new PfConceptKey(), "IncomingTopologyTemplate");
- final JpaToscaTopologyTemplate topologyTemplate = new JpaToscaTopologyTemplate(topologyTemplateKey);
-
- if (topologyTemplateJsonObject.has(DESCRIPTION)) {
- topologyTemplate.setDescription(topologyTemplateJsonObject.get(DESCRIPTION).getAsString());
- }
-
- if (topologyTemplateJsonObject.has(POLICIES)) {
- topologyTemplate.setPolicies(new ToscaPoliciesJsonAdapter()
- .deserialize(topologyTemplateJsonObject.get(POLICIES), JpaToscaPolicies.class, context));
- }
-
- return topologyTemplate;
- }
-
- @Override
- public JsonElement serialize(@NonNull final JpaToscaTopologyTemplate topologyTemplate, @NonNull final Type type,
- @NonNull final JsonSerializationContext context) {
-
- JsonObject topologyTemplateJsonObject = new JsonObject();
- JsonElement policiesJsonElement = new ToscaPoliciesJsonAdapter()
- .serialize(topologyTemplate.getPolicies(), type, context);
-
- topologyTemplateJsonObject.add(POLICIES, policiesJsonElement);
-
- if (topologyTemplate.getDescription() != null) {
- topologyTemplateJsonObject.addProperty(DESCRIPTION, topologyTemplate.getDescription());
- }
-
- return topologyTemplateJsonObject;
- }
-}
diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/mapping/PlainToscaServiceTemplateMapperTest.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/mapping/ToscaServiceTemplateMappingTest.java
similarity index 68%
rename from models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/mapping/PlainToscaServiceTemplateMapperTest.java
rename to models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/mapping/ToscaServiceTemplateMappingTest.java
index 6ec9123..1bac0b9 100644
--- a/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/mapping/PlainToscaServiceTemplateMapperTest.java
+++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/mapping/ToscaServiceTemplateMappingTest.java
@@ -3,6 +3,7 @@
* ONAP Policy Model
* ================================================================================
* Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * Modifications 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.
@@ -22,6 +23,7 @@
package org.onap.policy.models.tosca.authorative.mapping;
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
@@ -30,8 +32,11 @@
import org.onap.policy.common.utils.coder.StandardCoder;
import org.onap.policy.common.utils.resources.ResourceUtils;
import org.onap.policy.models.base.PfValidationResult;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.yaml.snakeyaml.Yaml;
/**
@@ -39,15 +44,14 @@
*
* @author Chenfei Gao (cgao@research.att.com)
*/
-public class PlainToscaServiceTemplateMapperTest {
+public class ToscaServiceTemplateMappingTest {
+ private static final Logger LOGGER = LoggerFactory.getLogger(ToscaServiceTemplateMappingTest.class);
private StandardCoder standardCoder;
- private PlainToscaServiceTemplateMapper mapper;
@Before
public void setUp() {
standardCoder = new StandardCoder();
- mapper = new PlainToscaServiceTemplateMapper();
}
@Test
@@ -56,12 +60,19 @@
String inputJson = ResourceUtils.getResourceAsString("policies/vCPE.policy.monitoring.input.tosca.json");
ToscaServiceTemplate plainPolicies = standardCoder.decode(inputJson, ToscaServiceTemplate.class);
- JpaToscaServiceTemplate internalPolicies = mapper.toToscaServiceTemplate(plainPolicies);
+ JpaToscaServiceTemplate internalPolicies = new JpaToscaServiceTemplate();
+ internalPolicies.fromAuthorative(plainPolicies);
+
assertTrue(internalPolicies.validate(new PfValidationResult()).isValid());
- ToscaServiceTemplate plainPolicies2 = mapper.fromToscaServiceTemplate(internalPolicies);
- assertTrue(plainPolicies.equals(plainPolicies2));
+ ToscaServiceTemplate plainPolicies2 = internalPolicies.toAuthorative();
+
+ ToscaPolicy pp1 = plainPolicies.getToscaTopologyTemplate().getPolicies().get(0).values().iterator().next();
+ ToscaPolicy pp2 = plainPolicies2.getToscaTopologyTemplate().getPolicies().get(0).values().iterator().next();
+
+ assertEquals(pp1.getProperties().keySet(), pp2.getProperties().keySet());
} catch (Exception e) {
+ LOGGER.warn("no exception should be thrown", e);
fail("no exception should be thrown");
}
}
@@ -77,14 +88,17 @@
ToscaServiceTemplate plainPolicyTypes = standardCoder.decode(yamlAsJsonString,
ToscaServiceTemplate.class);
- JpaToscaServiceTemplate internalPolicyTypes = mapper.toToscaServiceTemplate(plainPolicyTypes);
+ JpaToscaServiceTemplate internalPolicyTypes = new JpaToscaServiceTemplate();
+ internalPolicyTypes.fromAuthorative(plainPolicyTypes);
assertTrue(internalPolicyTypes.validate(new PfValidationResult()).isValid());
- ToscaServiceTemplate plainPolicyTypes2 = mapper.fromToscaServiceTemplate(internalPolicyTypes);
- JpaToscaServiceTemplate internalPolicyTypes2 = mapper.toToscaServiceTemplate(plainPolicyTypes2);
+ ToscaServiceTemplate plainPolicyTypes2 = internalPolicyTypes.toAuthorative();
+ JpaToscaServiceTemplate internalPolicyTypes2 = new JpaToscaServiceTemplate();
+ internalPolicyTypes2.fromAuthorative(plainPolicyTypes2);
assertTrue(internalPolicyTypes2.validate(new PfValidationResult()).isValid());
assertTrue(internalPolicyTypes.compareTo(internalPolicyTypes2) == 0);
} catch (Exception e) {
+ LOGGER.warn("no exception should be thrown", e);
fail("no exception should be thrown");
}
diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintLogicalKeyTest.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintLogicalKeyTest.java
deleted file mode 100644
index 98d7dcf..0000000
--- a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintLogicalKeyTest.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*-
- * ============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.simple.concepts;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import org.junit.Test;
-import org.onap.policy.models.base.PfConceptKey;
-import org.onap.policy.models.base.PfReferenceKey;
-import org.onap.policy.models.base.PfValidationResult;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaConstraintLogicalKey;
-
-/**
- * DAO test for ToscaConstraintLogicalKey.
- *
- * @author Liam Fallon (liam.fallon@est.tech)
- */
-public class JpaToscaConstraintLogicalKeyTest {
-
- @Test
- public void testConstraintLogicalKeyPojo() {
- assertNotNull(new JpaToscaConstraintLogicalKey());
- assertNotNull(new JpaToscaConstraintLogicalKey(new PfReferenceKey()));
- assertNotNull(new JpaToscaConstraintLogicalKey(new PfReferenceKey(), JpaToscaConstraintLogicalKey.Operation.EQ,
- new PfConceptKey()));
-
- try {
- new JpaToscaConstraintLogicalKey((PfReferenceKey) null);
- fail("test should throw an exception");
- } catch (Exception exc) {
- assertEquals("key is marked @NonNull but is null", exc.getMessage());
- }
-
- try {
- new JpaToscaConstraintLogicalKey((JpaToscaConstraintLogicalKey) null);
- fail("test should throw an exception");
- } catch (Exception exc) {
- assertEquals("copyConcept is marked @NonNull but is null", exc.getMessage());
- }
-
- PfConceptKey tclParentKey = new PfConceptKey("tParentKey", "0.0.1");
- PfReferenceKey tclKey = new PfReferenceKey(tclParentKey, "trigger0");
- PfConceptKey constraintKey = new PfConceptKey("tParentKey", "0.0.1");
- JpaToscaConstraintLogicalKey tcl =
- new JpaToscaConstraintLogicalKey(tclKey, JpaToscaConstraintLogicalKey.Operation.EQ, constraintKey);
-
- try {
- new JpaToscaConstraintLogicalKey(tcl);
- fail("test should throw an exception");
- } catch (Exception exc) {
- assertEquals("cannot copy an immutable constraint", exc.getMessage());
- }
-
- JpaToscaConstraintLogicalKey tclClone1 = new JpaToscaConstraintLogicalKey();
- try {
- tcl.copyTo(tclClone1);
- fail("test should throw an exception");
- } catch (Exception exc) {
- assertEquals("cannot copy an immutable constraint", exc.getMessage());
- }
- tclClone1 = new JpaToscaConstraintLogicalKey(tclKey, JpaToscaConstraintLogicalKey.Operation.EQ, constraintKey);
-
- assertEquals(tcl, tclClone1);
- assertEquals(0, tcl.compareTo(tclClone1));
-
- assertEquals(-1, tcl.compareTo(null));
- assertEquals(0, tcl.compareTo(tcl));
- assertFalse(tcl.compareTo(tcl.getKey()) == 0);
-
- JpaToscaConstraintLogicalKey differentTcl = new JpaToscaConstraintLogicalKey(new PfReferenceKey(),
- JpaToscaConstraintLogicalKey.Operation.EQ, constraintKey);
- assertFalse(tcl.compareTo(differentTcl) == 0);
-
- JpaToscaConstraintLogicalKey otherTc =
- new JpaToscaConstraintLogicalKey(tclKey, JpaToscaConstraintLogicalKey.Operation.EQ, constraintKey);
- assertEquals(0, tcl.compareTo(otherTc));
-
- try {
- tcl.copyTo(null);
- fail("test should throw an exception");
- } catch (Exception exc) {
- assertEquals("target is marked @NonNull but is null", exc.getMessage());
- }
-
- assertEquals(2, tcl.getKeys().size());
- assertEquals(2, new JpaToscaConstraintLogicalKey().getKeys().size());
-
- new JpaToscaConstraintLogicalKey().clean();
- tcl.clean();
- assertEquals(tclClone1, tcl);
-
- assertFalse(new JpaToscaConstraintLogicalKey().validate(new PfValidationResult()).isValid());
- assertTrue(tcl.validate(new PfValidationResult()).isValid());
-
- try {
- tcl.validate(null);
- fail("test should throw an exception");
- } catch (Exception exc) {
- assertEquals("resultIn is marked @NonNull but is null", exc.getMessage());
- }
-
- try {
- new JpaToscaConstraintLogicalKey(tclKey, JpaToscaConstraintLogicalKey.Operation.EQ, null)
- .validate(new PfValidationResult());
- fail("test should throw an exception");
- } catch (Exception exc) {
- assertEquals("compareToKey is marked @NonNull but is null", exc.getMessage());
- }
-
- assertFalse(
- new JpaToscaConstraintLogicalKey(tclKey, JpaToscaConstraintLogicalKey.Operation.EQ, new PfConceptKey())
- .validate(new PfValidationResult()).isValid());
- }
-}
diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintLogicalStringTest.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintLogicalStringTest.java
deleted file mode 100644
index c27ec26..0000000
--- a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintLogicalStringTest.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*-
- * ============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.simple.concepts;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import org.junit.Test;
-import org.onap.policy.models.base.PfConceptKey;
-import org.onap.policy.models.base.PfReferenceKey;
-import org.onap.policy.models.base.PfValidationResult;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaConstraintLogicalString;
-
-/**
- * DAO test for ToscaConstraintLogicalString.
- *
- * @author Liam Fallon (liam.fallon@est.tech)
- */
-public class JpaToscaConstraintLogicalStringTest {
-
- @Test
- public void testConstraintLogicalStringPojo() {
- assertNotNull(new JpaToscaConstraintLogicalString());
- assertNotNull(new JpaToscaConstraintLogicalString(new PfReferenceKey()));
- assertNotNull(new JpaToscaConstraintLogicalString(new PfReferenceKey(),
- JpaToscaConstraintLogicalString.Operation.EQ, "Constraint"));
-
- try {
- new JpaToscaConstraintLogicalString((PfReferenceKey) null);
- fail("test should throw an exception");
- } catch (Exception exc) {
- assertEquals("key is marked @NonNull but is null", exc.getMessage());
- }
-
- try {
- new JpaToscaConstraintLogicalString((JpaToscaConstraintLogicalString) null);
- fail("test should throw an exception");
- } catch (Exception exc) {
- assertEquals("copyConcept is marked @NonNull but is null", exc.getMessage());
- }
-
- PfConceptKey tclParentKey = new PfConceptKey("tParentKey", "0.0.1");
- PfReferenceKey tclKey = new PfReferenceKey(tclParentKey, "trigger0");
- JpaToscaConstraintLogicalString tcl =
- new JpaToscaConstraintLogicalString(tclKey, JpaToscaConstraintLogicalString.Operation.EQ, "Constraint");
-
- try {
- new JpaToscaConstraintLogicalString(tcl);
- fail("test should throw an exception");
- } catch (Exception exc) {
- assertEquals("cannot copy an immutable constraint", exc.getMessage());
- }
-
- JpaToscaConstraintLogicalString tclClone1 = new JpaToscaConstraintLogicalString();
- try {
- tcl.copyTo(tclClone1);
- fail("test should throw an exception");
- } catch (Exception exc) {
- assertEquals("cannot copy an immutable constraint", exc.getMessage());
- }
- tclClone1 =
- new JpaToscaConstraintLogicalString(tclKey, JpaToscaConstraintLogicalString.Operation.EQ, "Constraint");
-
- assertEquals(tcl, tclClone1);
- assertEquals(0, tcl.compareTo(tclClone1));
-
- assertEquals(-1, tcl.compareTo(null));
- assertEquals(0, tcl.compareTo(tcl));
- assertFalse(tcl.compareTo(tcl.getKey()) == 0);
-
- JpaToscaConstraintLogicalString differentTcl = new JpaToscaConstraintLogicalString(new PfReferenceKey(),
- JpaToscaConstraintLogicalString.Operation.EQ, "Constraint");
- assertFalse(tcl.compareTo(differentTcl) == 0);
-
- JpaToscaConstraintLogicalString otherTc =
- new JpaToscaConstraintLogicalString(tclKey, JpaToscaConstraintLogicalString.Operation.EQ, "Constraint");
- assertEquals(0, tcl.compareTo(otherTc));
-
- try {
- tcl.copyTo(null);
- fail("test should throw an exception");
- } catch (Exception exc) {
- assertEquals("target is marked @NonNull but is null", exc.getMessage());
- }
-
- assertEquals(1, tcl.getKeys().size());
- assertEquals(1, new JpaToscaConstraintLogicalString().getKeys().size());
-
- new JpaToscaConstraintLogicalString().clean();
- tcl.clean();
- assertEquals(tclClone1, tcl);
-
- assertFalse(new JpaToscaConstraintLogicalString().validate(new PfValidationResult()).isValid());
- assertTrue(tcl.validate(new PfValidationResult()).isValid());
-
- try {
- tcl.validate(null);
- fail("test should throw an exception");
- } catch (Exception exc) {
- assertEquals("resultIn is marked @NonNull but is null", exc.getMessage());
- }
-
- try {
- new JpaToscaConstraintLogicalString(tclKey, JpaToscaConstraintLogicalString.Operation.EQ, null)
- .validate(new PfValidationResult());
- fail("test should throw an exception");
- } catch (Exception exc) {
- assertEquals("compareToString is marked @NonNull but is null", exc.getMessage());
- }
-
- assertFalse(new JpaToscaConstraintLogicalString(tclKey, JpaToscaConstraintLogicalString.Operation.EQ, "")
- .validate(new PfValidationResult()).isValid());
- }
-}
diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintLogicalTest.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintLogicalTest.java
index 2da46a7..de0c813 100644
--- a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintLogicalTest.java
+++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaConstraintLogicalTest.java
@@ -21,148 +21,44 @@
package org.onap.policy.models.tosca.simple.concepts;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import org.junit.Test;
-import org.onap.policy.models.base.PfConceptKey;
-import org.onap.policy.models.base.PfReferenceKey;
-import org.onap.policy.models.base.PfValidationResult;
import org.onap.policy.models.tosca.simple.concepts.JpaToscaConstraintLogical;
-import org.onap.policy.models.tosca.simple.concepts.testconcepts.DummyToscaConstraint;
/**
- * DAO test for ToscaConstraintLogical.
+ * DAO test for ToscaConstraintLogicalString.
*
* @author Liam Fallon (liam.fallon@est.tech)
*/
public class JpaToscaConstraintLogicalTest {
@Test
- public void testConstraintLogicalPojo() {
- assertNotNull(new JpaToscaConstraintLogical());
- assertNotNull(new JpaToscaConstraintLogical(new PfReferenceKey()));
+ public void testConstraintLogicalStringPojo() {
+ assertNotNull(new JpaToscaConstraintLogical(JpaToscaConstraintOperation.EQ, "Constraint"));
try {
- new JpaToscaConstraintLogical((PfReferenceKey) null);
+ new JpaToscaConstraintLogical((JpaToscaConstraintOperation) null, null);
fail("test should throw an exception");
} catch (Exception exc) {
- assertEquals("key is marked @NonNull but is null", exc.getMessage());
+ assertEquals("operation is marked @NonNull but is null", exc.getMessage());
}
try {
- new JpaToscaConstraintLogical((JpaToscaConstraintLogical) null);
+ new JpaToscaConstraintLogical((JpaToscaConstraintOperation) null, "Hello");
fail("test should throw an exception");
} catch (Exception exc) {
- assertEquals("copyConcept is marked @NonNull but is null", exc.getMessage());
+ assertEquals("operation is marked @NonNull but is null", exc.getMessage());
}
- PfConceptKey tclParentKey = new PfConceptKey("tParentKey", "0.0.1");
- PfReferenceKey tclKey = new PfReferenceKey(tclParentKey, "trigger0");
- JpaToscaConstraintLogical tcl = new JpaToscaConstraintLogical(tclKey, JpaToscaConstraintLogical.Operation.EQ);
-
try {
- new JpaToscaConstraintLogical(tcl);
+ new JpaToscaConstraintLogical(JpaToscaConstraintOperation.EQ, null);
fail("test should throw an exception");
} catch (Exception exc) {
- assertEquals("cannot copy an immutable constraint", exc.getMessage());
+ assertEquals("compareTo is marked @NonNull but is null", exc.getMessage());
}
- JpaToscaConstraintLogical tclClone1 = new JpaToscaConstraintLogical();
- try {
- tcl.copyTo(tclClone1);
- fail("test should throw an exception");
- } catch (Exception exc) {
- assertEquals("cannot copy an immutable constraint", exc.getMessage());
- }
- tclClone1 = new JpaToscaConstraintLogical(tclKey, JpaToscaConstraintLogical.Operation.EQ);
-
- assertEquals(tcl, tclClone1);
- assertEquals(0, tcl.compareTo(tclClone1));
-
- assertEquals(-1, tcl.compareTo(null));
- assertEquals(0, tcl.compareTo(tcl));
- assertFalse(tcl.compareTo(tcl.getKey()) == 0);
-
- JpaToscaConstraintLogical differentTcl =
- new JpaToscaConstraintLogical(new PfReferenceKey(), JpaToscaConstraintLogical.Operation.EQ);
- assertFalse(tcl.compareTo(differentTcl) == 0);
-
- JpaToscaConstraintLogical otherTc =
- new JpaToscaConstraintLogical(tclKey, JpaToscaConstraintLogical.Operation.EQ);
- assertEquals(0, tcl.compareTo(otherTc));
-
- try {
- tcl.copyTo(null);
- fail("test should throw an exception");
- } catch (Exception exc) {
- assertEquals("target is marked @NonNull but is null", exc.getMessage());
- }
-
- assertEquals(1, tcl.getKeys().size());
- assertEquals(1, new JpaToscaConstraintLogical().getKeys().size());
-
- JpaToscaConstraintLogical tclClone0 = new JpaToscaConstraintLogical();
- new JpaToscaConstraintLogical().clean();
- tcl.clean();
- assertEquals(tclClone0, tcl);
-
- assertFalse(new JpaToscaConstraintLogical().validate(new PfValidationResult()).isValid());
- assertTrue(tcl.validate(new PfValidationResult()).isValid());
-
- try {
- tcl.validate(null);
- fail("test should throw an exception");
- } catch (Exception exc) {
- assertEquals("resultIn is marked @NonNull but is null", exc.getMessage());
- }
-
- DummyToscaConstraint dtc = new DummyToscaConstraint();
- try {
- new DummyToscaConstraint(dtc);
- fail("test should throw an exception");
- } catch (Exception exc) {
- assertEquals("cannot copy an immutable constraint", exc.getMessage());
- }
-
- try {
- new DummyToscaConstraint((PfReferenceKey) null);
- fail("test should throw an exception");
- } catch (Exception exc) {
- assertEquals("key is marked @NonNull but is null", exc.getMessage());
- }
-
- try {
- new DummyToscaConstraint((DummyToscaConstraint) null);
- fail("test should throw an exception");
- } catch (Exception exc) {
- assertEquals("copyConcept is marked @NonNull but is null", exc.getMessage());
- }
-
- DummyToscaConstraint dtcClone = new DummyToscaConstraint();
-
- assertEquals(dtc, dtcClone);
- assertEquals(dtc, dtc);
- assertEquals(0, dtc.compareTo(dtcClone));
- assertEquals(0, dtc.compareTo(dtc));
- assertEquals(-1, dtc.compareTo(null));
- assertEquals(0, dtc.compareTo(dtcClone));
- assertFalse(dtc.compareTo(dtcClone.getKey()) == 0);
-
- try {
- dtc.copyTo(null);
- fail("test should throw an exception");
- } catch (Exception exc) {
- assertEquals("target is marked @NonNull but is null", exc.getMessage());
- }
-
- try {
- dtc.copyTo(dtcClone);
- fail("target should throw an exception");
- } catch (Exception exc) {
- assertEquals("cannot copy an immutable constraint", exc.getMessage());
- }
+ assertNotNull(new JpaToscaConstraintLogical(JpaToscaConstraintOperation.EQ, "Constraint"));
}
}
diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaDataTypeTest.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaDataTypeTest.java
index bf710e8..efdddcc 100644
--- a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaDataTypeTest.java
+++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaDataTypeTest.java
@@ -27,15 +27,15 @@
import static org.junit.Assert.fail;
import java.util.ArrayList;
+import java.util.LinkedHashMap;
import java.util.List;
+import java.util.Map;
import org.junit.Test;
import org.onap.policy.models.base.PfConceptKey;
import org.onap.policy.models.base.PfReferenceKey;
import org.onap.policy.models.base.PfValidationResult;
import org.onap.policy.models.tosca.simple.concepts.JpaToscaConstraint;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaConstraintLogical.Operation;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaConstraintLogicalString;
import org.onap.policy.models.tosca.simple.concepts.JpaToscaDataType;
import org.onap.policy.models.tosca.simple.concepts.JpaToscaProperty;
@@ -70,15 +70,14 @@
JpaToscaDataType tdt = new JpaToscaDataType(dtKey);
List<JpaToscaConstraint> constraints = new ArrayList<>();
- JpaToscaConstraintLogicalString lsc =
- new JpaToscaConstraintLogicalString(new PfReferenceKey(dtKey, "sc"), Operation.EQ, "hello");
+ JpaToscaConstraintLogical lsc = new JpaToscaConstraintLogical(JpaToscaConstraintOperation.EQ, "hello");
constraints.add(lsc);
tdt.setConstraints(constraints);
assertEquals(constraints, tdt.getConstraints());
- List<JpaToscaProperty> properties = new ArrayList<>();
+ Map<String, JpaToscaProperty> properties = new LinkedHashMap<>();
JpaToscaProperty tp = new JpaToscaProperty(new PfReferenceKey(dtKey, "pr"), new PfConceptKey("type", "0.0.1"));
- properties.add(tp);
+ properties.put(tp.getKey().getLocalName(), tp);
tdt.setProperties(properties);
assertEquals(properties, tdt.getProperties());
@@ -113,7 +112,7 @@
assertEquals("target is marked @NonNull but is null", exc.getMessage());
}
- assertEquals(4, tdt.getKeys().size());
+ assertEquals(3, tdt.getKeys().size());
assertEquals(1, new JpaToscaDataType().getKeys().size());
new JpaToscaDataType().clean();
@@ -128,7 +127,7 @@
tdt.getConstraints().remove(null);
assertTrue(tdt.validate(new PfValidationResult()).isValid());
- tdt.getProperties().add(null);
+ tdt.getProperties().put(null, null);
assertFalse(tdt.validate(new PfValidationResult()).isValid());
tdt.getProperties().remove(null);
assertTrue(tdt.validate(new PfValidationResult()).isValid());
diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaEntrySchemaTest.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaEntrySchemaTest.java
index a69b9a7..4a9bdbe 100644
--- a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaEntrySchemaTest.java
+++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaEntrySchemaTest.java
@@ -31,11 +31,8 @@
import org.junit.Test;
import org.onap.policy.models.base.PfConceptKey;
-import org.onap.policy.models.base.PfReferenceKey;
import org.onap.policy.models.base.PfValidationResult;
import org.onap.policy.models.tosca.simple.concepts.JpaToscaConstraint;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaConstraintLogical.Operation;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaConstraintLogicalString;
import org.onap.policy.models.tosca.simple.concepts.JpaToscaEntrySchema;
/**
@@ -47,16 +44,14 @@
@Test
public void testEntrySchemaPojo() {
- assertNotNull(new JpaToscaEntrySchema());
- assertNotNull(new JpaToscaEntrySchema(new PfReferenceKey()));
- assertNotNull(new JpaToscaEntrySchema(new PfReferenceKey(), new PfConceptKey()));
- assertNotNull(new JpaToscaEntrySchema(new JpaToscaEntrySchema()));
+ assertNotNull(new JpaToscaEntrySchema(new PfConceptKey()));
+ assertNotNull(new JpaToscaEntrySchema(new JpaToscaEntrySchema(new PfConceptKey())));
try {
- new JpaToscaEntrySchema((PfReferenceKey) null);
+ new JpaToscaEntrySchema((PfConceptKey) null);
fail("test should throw an exception");
} catch (Exception exc) {
- assertEquals("key is marked @NonNull but is null", exc.getMessage());
+ assertEquals("type is marked @NonNull but is null", exc.getMessage());
}
try {
@@ -66,16 +61,14 @@
assertEquals("copyConcept is marked @NonNull but is null", exc.getMessage());
}
- PfReferenceKey esKey = new PfReferenceKey("entrySchemaParent", "0.0.1", "entrySchema");
PfConceptKey typeKey = new PfConceptKey("type", "0.0.1");
- JpaToscaEntrySchema tes = new JpaToscaEntrySchema(esKey, typeKey);
+ JpaToscaEntrySchema tes = new JpaToscaEntrySchema(typeKey);
tes.setDescription("A Description");
assertEquals("A Description", tes.getDescription());
List<JpaToscaConstraint> constraints = new ArrayList<>();
- JpaToscaConstraintLogicalString lsc =
- new JpaToscaConstraintLogicalString(new PfReferenceKey(esKey, "sc"), Operation.EQ, "hello");
+ JpaToscaConstraintLogical lsc = new JpaToscaConstraintLogical(JpaToscaConstraintOperation.EQ, "hello");
constraints.add(lsc);
tes.setConstraints(constraints);
assertEquals(constraints, tes.getConstraints());
@@ -84,21 +77,16 @@
assertEquals(tes, tdtClone0);
assertEquals(0, tes.compareTo(tdtClone0));
- JpaToscaEntrySchema tdtClone1 = new JpaToscaEntrySchema();
- tes.copyTo(tdtClone1);
+ JpaToscaEntrySchema tdtClone1 = new JpaToscaEntrySchema(tes);
assertEquals(tes, tdtClone1);
assertEquals(0, tes.compareTo(tdtClone1));
assertEquals(-1, tes.compareTo(null));
assertEquals(0, tes.compareTo(tes));
- assertFalse(tes.compareTo(tes.getKey()) == 0);
- PfReferenceKey otherEsKey = new PfReferenceKey("entrySchemaParent", "0.0.1", "otherEntrySchema");
- JpaToscaEntrySchema otherEs = new JpaToscaEntrySchema(otherEsKey);
+ JpaToscaEntrySchema otherEs = new JpaToscaEntrySchema(typeKey);
assertFalse(tes.compareTo(otherEs) == 0);
- otherEs.setKey(esKey);
- assertFalse(tes.compareTo(otherEs) == 0);
otherEs.setType(typeKey);
assertFalse(tes.compareTo(otherEs) == 0);
otherEs.setDescription("A Description");
@@ -113,14 +101,14 @@
assertEquals("target is marked @NonNull but is null", exc.getMessage());
}
- assertEquals(3, tes.getKeys().size());
- assertEquals(2, new JpaToscaEntrySchema().getKeys().size());
+ assertEquals(1, tes.getKeys().size());
+ assertEquals(1, new JpaToscaEntrySchema(typeKey).getKeys().size());
- new JpaToscaEntrySchema().clean();
+ new JpaToscaEntrySchema(typeKey).clean();
tes.clean();
assertEquals(tdtClone0, tes);
- assertFalse(new JpaToscaEntrySchema().validate(new PfValidationResult()).isValid());
+ assertTrue(new JpaToscaEntrySchema(typeKey).validate(new PfValidationResult()).isValid());
assertTrue(tes.validate(new PfValidationResult()).isValid());
tes.setType(PfConceptKey.getNullKey());
diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicyTypeTest.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicyTypeTest.java
index 7dac268..870640e 100644
--- a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicyTypeTest.java
+++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicyTypeTest.java
@@ -28,6 +28,7 @@
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -35,6 +36,7 @@
import org.onap.policy.models.base.PfConceptKey;
import org.onap.policy.models.base.PfReferenceKey;
import org.onap.policy.models.base.PfValidationResult;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
import org.onap.policy.models.tosca.simple.concepts.JpaToscaEntityType;
import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyType;
import org.onap.policy.models.tosca.simple.concepts.JpaToscaProperty;
@@ -46,7 +48,6 @@
* @author Liam Fallon (liam.fallon@est.tech)
*/
public class JpaToscaPolicyTypeTest {
-
@Test
public void testPolicyTypePojo() {
assertNotNull(new JpaToscaPolicyType());
@@ -81,9 +82,9 @@
tpt.setDescription("A Description");
PfConceptKey propTypeKey = new PfConceptKey("propType", "0.0.1");
- List<JpaToscaProperty> properties = new ArrayList<>();
+ Map<String, JpaToscaProperty> properties = new LinkedHashMap<>();
JpaToscaProperty tp = new JpaToscaProperty(new PfReferenceKey(ptKey, "aProp"), propTypeKey);
- properties.add(tp);
+ properties.put(tp.getKey().getLocalName(), tp);
tpt.setProperties(properties);
assertEquals(properties, tpt.getProperties());
@@ -148,7 +149,7 @@
assertFalse(new JpaToscaPolicyType().validate(new PfValidationResult()).isValid());
assertTrue(tpt.validate(new PfValidationResult()).isValid());
- tpt.getProperties().add(null);
+ tpt.getProperties().put(null, null);
assertFalse(tpt.validate(new PfValidationResult()).isValid());
tpt.getProperties().remove(null);
assertTrue(tpt.validate(new PfValidationResult()).isValid());
@@ -191,20 +192,20 @@
}
try {
- new JpaToscaEntityType((PfConceptKey) null);
+ new JpaToscaEntityType<ToscaPolicy>((PfConceptKey) null);
fail("test should throw an exception");
} catch (Exception exc) {
assertEquals("key is marked @NonNull but is null", exc.getMessage());
}
try {
- new JpaToscaEntityType((JpaToscaEntityType) null);
+ new JpaToscaEntityType<ToscaPolicy>((JpaToscaEntityType<ToscaPolicy>) null);
fail("test should throw an exception");
} catch (Exception exc) {
assertEquals("copyConcept is marked @NonNull but is null", exc.getMessage());
}
- JpaToscaEntityType tet = new JpaToscaEntityType(tpt.getKey());
+ JpaToscaEntityType<ToscaPolicy> tet = new JpaToscaEntityType<ToscaPolicy>(tpt.getKey());
assertEquals(-1, tet.compareTo(null));
assertEquals(0, tet.compareTo(tet));
assertFalse(tet.compareTo(tet.getKey()) == 0);
diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPropertyTest.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPropertyTest.java
index 8d46c95..83100cc 100644
--- a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPropertyTest.java
+++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPropertyTest.java
@@ -33,11 +33,8 @@
import org.onap.policy.models.base.PfConceptKey;
import org.onap.policy.models.base.PfReferenceKey;
import org.onap.policy.models.base.PfValidationResult;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaProperty;
import org.onap.policy.models.tosca.simple.concepts.JpaToscaConstraint;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaConstraintLogical.Operation;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaConstraintLogicalString;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaEntrySchema;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaProperty;
/**
* DAO test for ToscaProperty.
@@ -101,18 +98,16 @@
tp.setDefaultValue("defaultKey");
- tp.setStatus(JpaToscaProperty.Status.SUPPORTED);
+ tp.setStatus(ToscaProperty.Status.SUPPORTED);
List<JpaToscaConstraint> constraints = new ArrayList<>();
- JpaToscaConstraintLogicalString lsc =
- new JpaToscaConstraintLogicalString(new PfReferenceKey(pkey, "sc"), Operation.EQ, "hello");
+ JpaToscaConstraintLogical lsc = new JpaToscaConstraintLogical(JpaToscaConstraintOperation.EQ, "hello");
constraints.add(lsc);
tp.setConstraints(constraints);
assertEquals(constraints, tp.getConstraints());
- PfReferenceKey esKey = new PfReferenceKey(pkey, "entrySchema");
PfConceptKey typeKey = new PfConceptKey("type", "0.0.1");
- JpaToscaEntrySchema tes = new JpaToscaEntrySchema(esKey, typeKey);
+ JpaToscaEntrySchema tes = new JpaToscaEntrySchema(typeKey);
tp.setEntrySchema(tes);
JpaToscaProperty tdtClone0 = new JpaToscaProperty(tp);
@@ -142,7 +137,7 @@
assertFalse(tp.compareTo(otherDt) == 0);
otherDt.setDefaultValue("defaultKey");
assertFalse(tp.compareTo(otherDt) == 0);
- otherDt.setStatus(JpaToscaProperty.Status.SUPPORTED);
+ otherDt.setStatus(ToscaProperty.Status.SUPPORTED);
assertFalse(tp.compareTo(otherDt) == 0);
assertFalse(tp.compareTo(otherDt) == 0);
otherDt.setConstraints(constraints);
@@ -155,9 +150,9 @@
otherDt.setRequired(false);
assertEquals(0, tp.compareTo(otherDt));
- otherDt.setStatus(JpaToscaProperty.Status.UNSUPPORTED);
+ otherDt.setStatus(ToscaProperty.Status.UNSUPPORTED);
assertFalse(tp.compareTo(otherDt) == 0);
- otherDt.setStatus(JpaToscaProperty.Status.SUPPORTED);
+ otherDt.setStatus(ToscaProperty.Status.SUPPORTED);
assertEquals(0, tp.compareTo(otherDt));
try {
@@ -167,7 +162,7 @@
assertEquals("target is marked @NonNull but is null", exc.getMessage());
}
- assertEquals(5, tp.getKeys().size());
+ assertEquals(3, tp.getKeys().size());
assertEquals(2, new JpaToscaProperty().getKeys().size());
new JpaToscaProperty().clean();
diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaTriggerTest.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaTriggerTest.java
index 661882a..0f69cb3 100644
--- a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaTriggerTest.java
+++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaTriggerTest.java
@@ -33,8 +33,6 @@
import org.onap.policy.models.base.PfConceptKey;
import org.onap.policy.models.base.PfReferenceKey;
import org.onap.policy.models.base.PfValidationResult;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaConstraintLogical.Operation;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaConstraintLogicalString;
import org.onap.policy.models.tosca.simple.concepts.JpaToscaEventFilter;
import org.onap.policy.models.tosca.simple.concepts.JpaToscaTimeInterval;
import org.onap.policy.models.tosca.simple.concepts.JpaToscaTrigger;
@@ -128,8 +126,7 @@
new JpaToscaEventFilter(new PfReferenceKey(tkey, "filter"), new PfConceptKey("NodeName", "0.0.1"));
tdt.setTargetFilter(targetFilter);
- JpaToscaConstraintLogicalString lsc =
- new JpaToscaConstraintLogicalString(new PfReferenceKey(tkey, "sc"), Operation.EQ, "hello");
+ JpaToscaConstraintLogical lsc = new JpaToscaConstraintLogical(JpaToscaConstraintOperation.EQ, "hello");
tdt.setCondition(lsc);
assertEquals(lsc, tdt.getCondition());
tdt.setConstraint(lsc);
@@ -194,7 +191,7 @@
assertEquals("target is marked @NonNull but is null", exc.getMessage());
}
- assertEquals(6, tdt.getKeys().size());
+ assertEquals(4, tdt.getKeys().size());
assertEquals(1, new JpaToscaTrigger().getKeys().size());
new JpaToscaTrigger().clean();
diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/TestPojos.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/TestPojos.java
index b3bdedf..e5be498 100644
--- a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/TestPojos.java
+++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/TestPojos.java
@@ -3,6 +3,7 @@
* ONAP Policy Model
* ================================================================================
* Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * Modifications 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.
@@ -26,7 +27,6 @@
import com.openpojo.validation.Validator;
import com.openpojo.validation.ValidatorBuilder;
import com.openpojo.validation.rule.impl.GetterMustExistRule;
-import com.openpojo.validation.rule.impl.SetterMustExistRule;
import com.openpojo.validation.test.impl.GetterTester;
import com.openpojo.validation.test.impl.SetterTester;
@@ -45,9 +45,16 @@
@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();
+ // @formatter:off
+ final Validator validator = ValidatorBuilder
+ .create()
+ .with(new ToStringTester())
+ .with(new GetterMustExistRule())
+ .with(new SetterTester())
+ .with(new GetterTester())
+ .build();
+ // @formatter:on
+
validator.validate(POJO_PACKAGE, new FilterPackageInfo());
}
}
diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/testconcepts/DummyToscaConstraint.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/testconcepts/DummyToscaConstraint.java
index a743e28..b13cb4b 100644
--- a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/testconcepts/DummyToscaConstraint.java
+++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/testconcepts/DummyToscaConstraint.java
@@ -20,10 +20,7 @@
package org.onap.policy.models.tosca.simple.concepts.testconcepts;
-import javax.ws.rs.core.Response;
-
-import org.onap.policy.models.base.PfModelRuntimeException;
-import org.onap.policy.models.base.PfReferenceKey;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaConstraint;
import org.onap.policy.models.tosca.simple.concepts.JpaToscaConstraint;
/**
@@ -38,25 +35,14 @@
* The Default Constructor creates a {@link DummyToscaConstraint} object with a null key.
*/
public DummyToscaConstraint() {
- super(new PfReferenceKey());
}
- /**
- * The Key Constructor creates a {@link DummyToscaConstraint} object with the given concept key.
- *
- * @param key the key of the constraint
- */
- public DummyToscaConstraint(final PfReferenceKey key) {
- super(key);
+ @Override
+ public ToscaConstraint toAuthorative() {
+ return null;
}
- /**
- * Copy constructor.
- *
- * @param copyConcept the concept to copy from
- */
- public DummyToscaConstraint(final DummyToscaConstraint copyConcept) {
- super(copyConcept);
- throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR, "cannot copy an immutable constraint");
+ @Override
+ public void fromAuthorative(ToscaConstraint authorativeConcept) {
}
}
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 029c7a7..0d486e3 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
@@ -24,14 +24,13 @@
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;
-import com.google.gson.Gson;
-
import java.sql.Connection;
import java.sql.DriverManager;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
+import org.onap.policy.common.utils.coder.StandardCoder;
import org.onap.policy.common.utils.resources.ResourceUtils;
import org.onap.policy.models.base.PfConceptKey;
import org.onap.policy.models.base.PfModelException;
@@ -39,10 +38,10 @@
import org.onap.policy.models.dao.PfDao;
import org.onap.policy.models.dao.PfDaoFactory;
import org.onap.policy.models.dao.impl.DefaultPfDao;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicies;
import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate;
import org.onap.policy.models.tosca.simple.concepts.JpaToscaTopologyTemplate;
-import org.onap.policy.models.tosca.simple.serialization.ToscaServiceTemplateMessageBodyHandler;
/**
* Test the {@link SimpleToscaProvider} class.
@@ -52,7 +51,7 @@
public class SimpleToscaProviderTest {
private Connection connection;
private PfDao pfDao;
- private Gson gson;
+ private StandardCoder standardCoder;
/**
@@ -82,7 +81,7 @@
*/
@Before
public void setupGson() {
- gson = new ToscaServiceTemplateMessageBodyHandler().getGson();
+ standardCoder = new StandardCoder();
}
@After
@@ -92,7 +91,7 @@
}
@Test
- public void testPoliciesGet() throws PfModelException {
+ public void testPoliciesGet() throws Exception {
try {
new SimpleToscaProvider().getPolicies(null, null);
fail("test should throw an exception here");
@@ -114,9 +113,12 @@
assertEquals("policyKey is marked @NonNull but is null", exc.getMessage());
}
- JpaToscaServiceTemplate originalServiceTemplate =
- gson.fromJson(ResourceUtils.getResourceAsString("policies/vCPE.policy.monitoring.input.tosca.json"),
- JpaToscaServiceTemplate.class);
+ ToscaServiceTemplate toscaServiceTemplate = standardCoder.decode(
+ ResourceUtils.getResourceAsString("policies/vCPE.policy.monitoring.input.tosca.json"),
+ ToscaServiceTemplate.class);
+
+ JpaToscaServiceTemplate originalServiceTemplate = new JpaToscaServiceTemplate();
+ originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
assertNotNull(originalServiceTemplate);
JpaToscaServiceTemplate createdServiceTemplate =
@@ -135,7 +137,7 @@
}
@Test
- public void testPolicyCreate() throws PfModelException {
+ public void testPolicyCreate() throws Exception {
try {
new SimpleToscaProvider().createPolicies(null, null);
fail("test should throw an exception here");
@@ -157,9 +159,12 @@
assertEquals("serviceTemplate is marked @NonNull but is null", exc.getMessage());
}
- JpaToscaServiceTemplate originalServiceTemplate =
- gson.fromJson(ResourceUtils.getResourceAsString("policies/vCPE.policy.monitoring.input.tosca.json"),
- JpaToscaServiceTemplate.class);
+ ToscaServiceTemplate toscaServiceTemplate = standardCoder.decode(
+ ResourceUtils.getResourceAsString("policies/vCPE.policy.monitoring.input.tosca.json"),
+ ToscaServiceTemplate.class);
+
+ JpaToscaServiceTemplate originalServiceTemplate = new JpaToscaServiceTemplate();
+ originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
assertNotNull(originalServiceTemplate);
JpaToscaServiceTemplate createdServiceTemplate =
@@ -169,7 +174,7 @@
}
@Test
- public void testPolicyUpdate() throws PfModelException {
+ public void testPolicyUpdate() throws Exception {
try {
new SimpleToscaProvider().updatePolicies(null, null);
fail("test should throw an exception here");
@@ -191,9 +196,12 @@
assertEquals("serviceTemplate is marked @NonNull but is null", exc.getMessage());
}
- JpaToscaServiceTemplate originalServiceTemplate =
- gson.fromJson(ResourceUtils.getResourceAsString("policies/vCPE.policy.monitoring.input.tosca.json"),
- JpaToscaServiceTemplate.class);
+ ToscaServiceTemplate toscaServiceTemplate = standardCoder.decode(
+ ResourceUtils.getResourceAsString("policies/vCPE.policy.monitoring.input.tosca.json"),
+ ToscaServiceTemplate.class);
+
+ JpaToscaServiceTemplate originalServiceTemplate = new JpaToscaServiceTemplate();
+ originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
assertNotNull(originalServiceTemplate);
JpaToscaServiceTemplate updatedServiceTemplate =
@@ -203,31 +211,34 @@
}
@Test
- public void testPoliciesDelete() throws PfModelException {
+ public void testPoliciesDelete() throws Exception {
try {
- new SimpleToscaProvider().deletePolicies(null, null);
+ new SimpleToscaProvider().deletePolicy(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().deletePolicies(null, new PfConceptKey());
+ new SimpleToscaProvider().deletePolicy(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().deletePolicies(pfDao, null);
+ new SimpleToscaProvider().deletePolicy(pfDao, null);
fail("test should throw an exception here");
} catch (Exception exc) {
assertEquals("policyKey is marked @NonNull but is null", exc.getMessage());
}
- JpaToscaServiceTemplate originalServiceTemplate =
- gson.fromJson(ResourceUtils.getResourceAsString("policies/vCPE.policy.monitoring.input.tosca.json"),
- JpaToscaServiceTemplate.class);
+ ToscaServiceTemplate toscaServiceTemplate = standardCoder.decode(
+ ResourceUtils.getResourceAsString("policies/vCPE.policy.monitoring.input.tosca.json"),
+ ToscaServiceTemplate.class);
+
+ JpaToscaServiceTemplate originalServiceTemplate = new JpaToscaServiceTemplate();
+ originalServiceTemplate.fromAuthorative(toscaServiceTemplate);
assertNotNull(originalServiceTemplate);
JpaToscaServiceTemplate createdServiceTemplate =
@@ -238,7 +249,7 @@
PfConceptKey policyKey = new PfConceptKey("onap.restart.tca:1.0.0");
JpaToscaServiceTemplate deletedServiceTemplate =
- new SimpleToscaProvider().deletePolicies(pfDao, new PfConceptKey(policyKey));
+ new SimpleToscaProvider().deletePolicy(pfDao, new PfConceptKey(policyKey));
assertEquals(originalServiceTemplate.getTopologyTemplate().getPolicies().get(policyKey),
deletedServiceTemplate.getTopologyTemplate().getPolicies().get(policyKey));
diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/serialization/MonitoringPolicySerializationTest.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/serialization/MonitoringPolicySerializationTest.java
index 1f17a43..5f0cbb3 100644
--- a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/serialization/MonitoringPolicySerializationTest.java
+++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/serialization/MonitoringPolicySerializationTest.java
@@ -26,23 +26,21 @@
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
-import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
-import com.google.gson.JsonSyntaxException;
-import java.io.IOException;
import java.util.Map;
import org.junit.Before;
import org.junit.Test;
+import org.onap.policy.common.utils.coder.CoderException;
import org.onap.policy.common.utils.coder.StandardCoder;
import org.onap.policy.common.utils.resources.ResourceUtils;
import org.onap.policy.models.base.PfConceptKey;
import org.onap.policy.models.base.PfValidationResult;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicy;
import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate;
-import org.onap.policy.models.tosca.simple.serialization.ToscaServiceTemplateMessageBodyHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.yaml.snakeyaml.Yaml;
@@ -64,11 +62,11 @@
private static final String VFW_MON_INPUT_JSON = "policies/vFirewall.policy.monitoring.input.tosca.json";
private static final String VFW_MON_INPUT_YAML = "policies/vFirewall.policy.monitoring.input.tosca.yaml";
- private Gson gson;
+ private StandardCoder standardCoder;
@Before
public void setUp() {
- gson = new ToscaServiceTemplateMessageBodyHandler().getGson();
+ standardCoder = new StandardCoder();
}
@Test
@@ -93,6 +91,7 @@
assertTrue(serviceTemplateFromJson.compareTo(serviceTemplateFromYaml) == 0);
} catch (Exception e) {
+ LOGGER.warn("No exception should be thrown", e);
fail("No exception should be thrown");
}
}
@@ -122,11 +121,13 @@
}
private JpaToscaServiceTemplate deserializeMonitoringInputJson(String resourcePath)
- throws JsonSyntaxException, IOException {
+ throws Exception {
String policyJson = ResourceUtils.getResourceAsString(resourcePath);
- JpaToscaServiceTemplate serviceTemplate = gson.fromJson(policyJson, JpaToscaServiceTemplate.class);
- return serviceTemplate;
+ ToscaServiceTemplate serviceTemplate = standardCoder.decode(policyJson, ToscaServiceTemplate.class);
+ JpaToscaServiceTemplate jpaToscaServiceTemplate = new JpaToscaServiceTemplate();
+ jpaToscaServiceTemplate.fromAuthorative(serviceTemplate);
+ return jpaToscaServiceTemplate;
}
private JpaToscaServiceTemplate deserializeMonitoringInputYaml(String resourcePath)
@@ -136,12 +137,15 @@
String policyYaml = ResourceUtils.getResourceAsString(resourcePath);
Object yamlObject = yaml.load(policyYaml);
String yamlAsJsonString = new StandardCoder().encode(yamlObject);
- JpaToscaServiceTemplate serviceTemplate = gson.fromJson(yamlAsJsonString, JpaToscaServiceTemplate.class);
- return serviceTemplate;
+ ToscaServiceTemplate serviceTemplate = standardCoder.decode(yamlAsJsonString, ToscaServiceTemplate.class);
+
+ JpaToscaServiceTemplate jpaToscaServiceTemplate = new JpaToscaServiceTemplate();
+ jpaToscaServiceTemplate.fromAuthorative(serviceTemplate);
+ return jpaToscaServiceTemplate;
}
- private String serializeMonitoringServiceTemplate(JpaToscaServiceTemplate serviceTemplate) {
- return gson.toJson(serviceTemplate);
+ private String serializeMonitoringServiceTemplate(JpaToscaServiceTemplate serviceTemplate) throws CoderException {
+ return standardCoder.encode(serviceTemplate.toAuthorative());
}
private void verifyVcpeMonitoringInputDeserialization(JpaToscaServiceTemplate serviceTemplate) {
diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/serialization/MonitoringPolicyTypeSerializationTest.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/serialization/MonitoringPolicyTypeSerializationTest.java
index b494199..569e1ad 100644
--- a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/serialization/MonitoringPolicyTypeSerializationTest.java
+++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/serialization/MonitoringPolicyTypeSerializationTest.java
@@ -26,26 +26,24 @@
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
-import com.google.gson.Gson;
-import com.google.gson.JsonSyntaxException;
-
-import java.io.IOException;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import org.junit.Before;
import org.junit.Test;
+import org.onap.policy.common.utils.coder.CoderException;
+import org.onap.policy.common.utils.coder.StandardCoder;
import org.onap.policy.common.utils.resources.ResourceUtils;
import org.onap.policy.models.base.PfConceptKey;
import org.onap.policy.models.base.PfValidationResult;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaConstraintLogicalString;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
+import org.onap.policy.models.tosca.simple.concepts.JpaToscaConstraintLogical;
import org.onap.policy.models.tosca.simple.concepts.JpaToscaConstraintValidValues;
import org.onap.policy.models.tosca.simple.concepts.JpaToscaDataType;
import org.onap.policy.models.tosca.simple.concepts.JpaToscaEntrySchema;
import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyType;
import org.onap.policy.models.tosca.simple.concepts.JpaToscaProperty;
import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate;
-import org.onap.policy.models.tosca.simple.serialization.ToscaServiceTemplateMessageBodyHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.yaml.snakeyaml.Yaml;
@@ -63,11 +61,11 @@
private static final String MONITORING_COLLECTORS_YAML =
"policytypes/onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server.yaml";
- private Gson gson;
+ private StandardCoder coder;
@Before
public void setUp() {
- gson = new ToscaServiceTemplateMessageBodyHandler().getGson();
+ coder = new StandardCoder();
}
@Test
@@ -82,6 +80,7 @@
verifyCollectorInputDeserialization(serviceTemplateFromYaml);
} catch (Exception e) {
+ LOGGER.warn("No exception should be thrown", e);
fail("No exception should be thrown");
}
}
@@ -90,34 +89,47 @@
public void testSerialization() {
try {
// TCA
- JpaToscaServiceTemplate serviceTemplateFromYaml = deserializeMonitoringInputYaml(MONITORING_TCA_YAML);
- String serializedServiceTemplate1 = serializeMonitoringServiceTemplate(serviceTemplateFromYaml);
- JpaToscaServiceTemplate serviceTemplateFromJson = gson.fromJson(serializedServiceTemplate1,
- JpaToscaServiceTemplate.class);
- String serializedServiceTemplate2 = serializeMonitoringServiceTemplate(serviceTemplateFromJson);
- assertEquals(serializedServiceTemplate1, serializedServiceTemplate2);
+ JpaToscaServiceTemplate tcaServiceTemplateFromYaml = deserializeMonitoringInputYaml(MONITORING_TCA_YAML);
+ String serializedServiceTemplateTca = serializeMonitoringServiceTemplate(tcaServiceTemplateFromYaml);
+
+ ToscaServiceTemplate toscaServiceTemplateFromJsonTca =
+ coder.decode(serializedServiceTemplateTca, ToscaServiceTemplate.class);
+
+ JpaToscaServiceTemplate serviceTemplateFromJsonTca = new JpaToscaServiceTemplate();
+ serviceTemplateFromJsonTca.fromAuthorative(toscaServiceTemplateFromJsonTca);
+ String serializedServiceTemplateTcaOut = serializeMonitoringServiceTemplate(serviceTemplateFromJsonTca);
+ assertEquals(serializedServiceTemplateTca, serializedServiceTemplateTcaOut);
// Collector
- serviceTemplateFromYaml = deserializeMonitoringInputYaml(MONITORING_COLLECTORS_YAML);
- serializedServiceTemplate1 = serializeMonitoringServiceTemplate(serviceTemplateFromYaml);
- serviceTemplateFromJson = gson.fromJson(serializedServiceTemplate1, JpaToscaServiceTemplate.class);
- serializedServiceTemplate2 = serializeMonitoringServiceTemplate(serviceTemplateFromJson);
- assertEquals(serializedServiceTemplate1, serializedServiceTemplate2);
+ JpaToscaServiceTemplate collectorServiceTemplateFromYaml =
+ deserializeMonitoringInputYaml(MONITORING_COLLECTORS_YAML);
+ String serializedServiceTemplateCollector =
+ serializeMonitoringServiceTemplate(collectorServiceTemplateFromYaml);
+ ToscaServiceTemplate toscaServiceTemplateFromJsonCollector =
+ coder.decode(serializedServiceTemplateCollector, ToscaServiceTemplate.class);
+ JpaToscaServiceTemplate serviceTemplateFromJsonCollector = new JpaToscaServiceTemplate();
+ serviceTemplateFromJsonCollector.fromAuthorative(toscaServiceTemplateFromJsonCollector);
+ String serializedServiceTemplateCollectorsOut =
+ serializeMonitoringServiceTemplate(serviceTemplateFromJsonCollector);
+ assertEquals(serializedServiceTemplateCollector, serializedServiceTemplateCollectorsOut);
} catch (Exception e) {
+ LOGGER.warn("No exception should be thrown", e);
fail("No exception should be thrown");
}
}
- private JpaToscaServiceTemplate deserializeMonitoringInputYaml(String resourcePath)
- throws JsonSyntaxException, IOException {
+ private JpaToscaServiceTemplate deserializeMonitoringInputYaml(String resourcePath) throws Exception {
Yaml yaml = new Yaml();
String policyTypeYaml = ResourceUtils.getResourceAsString(resourcePath);
Object yamlObject = yaml.load(policyTypeYaml);
- String yamlAsJsonString = new Gson().toJson(yamlObject);
- JpaToscaServiceTemplate serviceTemplate = gson.fromJson(yamlAsJsonString, JpaToscaServiceTemplate.class);
- return serviceTemplate;
+ String yamlAsJsonString = coder.encode(yamlObject);
+ ToscaServiceTemplate serviceTemplate = coder.decode(yamlAsJsonString, ToscaServiceTemplate.class);
+
+ JpaToscaServiceTemplate jpaToscaServiceTemplate = new JpaToscaServiceTemplate();
+ jpaToscaServiceTemplate.fromAuthorative(serviceTemplate);
+ return jpaToscaServiceTemplate;
}
private void verifyTcaInputDeserialization(JpaToscaServiceTemplate serviceTemplate) {
@@ -137,7 +149,7 @@
Entry<PfConceptKey, JpaToscaPolicyType> firstPolicyType = policyTypesIter.next();
assertEquals("onap.policies.Monitoring", firstPolicyType.getKey().getName());
- assertEquals("1.0.0", firstPolicyType.getKey().getVersion());
+ assertEquals("0.0.0", firstPolicyType.getKey().getVersion());
assertEquals("tosca.policies.Root", firstPolicyType.getValue().getDerivedFrom().getName());
assertEquals("a base policy type for all policies that governs monitoring provisioning",
firstPolicyType.getValue().getDescription());
@@ -148,7 +160,7 @@
assertEquals("onap.policies.Monitoring", secondPolicyType.getValue().getDerivedFrom().getName());
assertTrue(secondPolicyType.getValue().getProperties().size() == 1);
- JpaToscaProperty property = secondPolicyType.getValue().getProperties().iterator().next();
+ JpaToscaProperty property = secondPolicyType.getValue().getProperties().values().iterator().next();
assertEquals("onap.policy.monitoring.cdap.tca.hi.lo.app", property.getKey().getParentKeyName());
assertEquals("1.0.0", property.getKey().getParentKeyVersion());
assertEquals("tca_policy", property.getKey().getLocalName());
@@ -156,9 +168,6 @@
assertEquals("TCA Policy JSON", property.getDescription());
JpaToscaEntrySchema entrySchema = property.getEntrySchema();
- assertEquals("map", entrySchema.getKey().getParentKeyName());
- assertEquals("1.0.0", entrySchema.getKey().getParentKeyVersion());
- assertEquals("entry_schema", entrySchema.getKey().getLocalName());
assertEquals("onap.datatypes.monitoring.tca_policy", entrySchema.getType().getName());
// Check data_types
@@ -170,81 +179,74 @@
assertEquals("onap.datatypes.monitoring.metricsPerEventName", firstDataType.getKey().getName());
JpaToscaDataType firstDataTypeVal = firstDataType.getValue();
assertEquals("tosca.datatypes.Root", firstDataTypeVal.getDerivedFrom().getName());
- assertEquals("1.0.0", firstDataTypeVal.getDerivedFrom().getVersion());
+ assertEquals("0.0.0", firstDataTypeVal.getDerivedFrom().getVersion());
assertTrue(firstDataTypeVal.getProperties().size() == 6);
- Iterator<JpaToscaProperty> firstDataTypePropertiesIter = firstDataTypeVal.getProperties().iterator();
+ Iterator<JpaToscaProperty> firstDataTypePropertiesIter = firstDataTypeVal.getProperties().values().iterator();
JpaToscaProperty firstDataTypeFirstProperty = firstDataTypePropertiesIter.next();
- assertEquals("onap.datatypes.monitoring.metricsPerEventName", firstDataTypeFirstProperty.getKey()
- .getParentKeyName());
+ assertEquals("onap.datatypes.monitoring.metricsPerEventName",
+ firstDataTypeFirstProperty.getKey().getParentKeyName());
assertEquals("controlLoopSchemaType", firstDataTypeFirstProperty.getKey().getLocalName());
assertEquals("string", firstDataTypeFirstProperty.getType().getName());
assertTrue(firstDataTypeFirstProperty.isRequired());
assertEquals("Specifies Control Loop Schema Type for the event Name e.g. VNF, VM",
firstDataTypeFirstProperty.getDescription());
assertTrue(firstDataTypeFirstProperty.getConstraints().size() == 1);
- assertEquals("valid_values", firstDataTypeFirstProperty.getConstraints().iterator().next().getKey()
- .getLocalName());
- assertEquals("string", firstDataTypeFirstProperty.getConstraints().iterator().next().getKey()
- .getParentKeyName());
- assertTrue(firstDataTypeFirstProperty.getConstraints().iterator().next()
- instanceof JpaToscaConstraintValidValues);
- assertTrue(((JpaToscaConstraintValidValues)(firstDataTypeFirstProperty.getConstraints().iterator().next()))
+ assertEquals("org.onap.policy.models.tosca.simple.concepts.JpaToscaConstraintValidValues",
+ firstDataTypeFirstProperty.getConstraints().iterator().next().getClass().getCanonicalName());
+ assertTrue(((JpaToscaConstraintValidValues) (firstDataTypeFirstProperty.getConstraints().iterator().next()))
.getValidValues().size() == 2);
JpaToscaProperty firstDataTypeSecondProperty = firstDataTypePropertiesIter.next();
- assertEquals("onap.datatypes.monitoring.metricsPerEventName", firstDataTypeSecondProperty.getKey()
- .getParentKeyName());
+ assertEquals("onap.datatypes.monitoring.metricsPerEventName",
+ firstDataTypeSecondProperty.getKey().getParentKeyName());
assertEquals("eventName", firstDataTypeSecondProperty.getKey().getLocalName());
assertEquals("string", firstDataTypeSecondProperty.getType().getName());
assertTrue(firstDataTypeSecondProperty.isRequired());
- assertEquals("Event name to which thresholds need to be applied", firstDataTypeSecondProperty
- .getDescription());
+ assertEquals("Event name to which thresholds need to be applied", firstDataTypeSecondProperty.getDescription());
JpaToscaProperty firstDataTypeThirdProperty = firstDataTypePropertiesIter.next();
- assertEquals("onap.datatypes.monitoring.metricsPerEventName", firstDataTypeThirdProperty.getKey()
- .getParentKeyName());
+ assertEquals("onap.datatypes.monitoring.metricsPerEventName",
+ firstDataTypeThirdProperty.getKey().getParentKeyName());
assertEquals("policyName", firstDataTypeThirdProperty.getKey().getLocalName());
assertEquals("string", firstDataTypeThirdProperty.getType().getName());
assertTrue(firstDataTypeThirdProperty.isRequired());
assertEquals("TCA Policy Scope Name", firstDataTypeThirdProperty.getDescription());
JpaToscaProperty firstDataTypeFourthProperty = firstDataTypePropertiesIter.next();
- assertEquals("onap.datatypes.monitoring.metricsPerEventName", firstDataTypeFourthProperty.getKey()
- .getParentKeyName());
+ assertEquals("onap.datatypes.monitoring.metricsPerEventName",
+ firstDataTypeFourthProperty.getKey().getParentKeyName());
assertEquals("policyScope", firstDataTypeFourthProperty.getKey().getLocalName());
assertEquals("string", firstDataTypeFourthProperty.getType().getName());
assertTrue(firstDataTypeFourthProperty.isRequired());
assertEquals("TCA Policy Scope", firstDataTypeFourthProperty.getDescription());
JpaToscaProperty firstDataTypeFifthProperty = firstDataTypePropertiesIter.next();
- assertEquals("onap.datatypes.monitoring.metricsPerEventName", firstDataTypeFifthProperty.getKey()
- .getParentKeyName());
+ assertEquals("onap.datatypes.monitoring.metricsPerEventName",
+ firstDataTypeFifthProperty.getKey().getParentKeyName());
assertEquals("policyVersion", firstDataTypeFifthProperty.getKey().getLocalName());
assertEquals("string", firstDataTypeFifthProperty.getType().getName());
assertTrue(firstDataTypeFifthProperty.isRequired());
assertEquals("TCA Policy Scope Version", firstDataTypeFifthProperty.getDescription());
JpaToscaProperty firstDataTypeSixthProperty = firstDataTypePropertiesIter.next();
- assertEquals("onap.datatypes.monitoring.metricsPerEventName", firstDataTypeSixthProperty.getKey()
- .getParentKeyName());
+ assertEquals("onap.datatypes.monitoring.metricsPerEventName",
+ firstDataTypeSixthProperty.getKey().getParentKeyName());
assertEquals("thresholds", firstDataTypeSixthProperty.getKey().getLocalName());
assertEquals("list", firstDataTypeSixthProperty.getType().getName());
assertTrue(firstDataTypeSixthProperty.isRequired());
assertEquals("Thresholds associated with eventName", firstDataTypeSixthProperty.getDescription());
assertNotNull(firstDataTypeSixthProperty.getEntrySchema());
- assertEquals("entry_schema", firstDataTypeSixthProperty.getEntrySchema().getKey().getLocalName());
- assertEquals("list", firstDataTypeSixthProperty.getEntrySchema().getKey().getParentKeyName());
- assertEquals("onap.datatypes.monitoring.thresholds", firstDataTypeSixthProperty.getEntrySchema().getType()
- .getName());
+ assertEquals("onap.datatypes.monitoring.thresholds",
+ firstDataTypeSixthProperty.getEntrySchema().getType().getName());
Entry<PfConceptKey, JpaToscaDataType> secondDataType = dataTypesIter.next();
assertEquals("onap.datatypes.monitoring.tca_policy", secondDataType.getKey().getName());
JpaToscaDataType secondDataTypeVal = secondDataType.getValue();
assertEquals("tosca.datatypes.Root", secondDataTypeVal.getDerivedFrom().getName());
- assertEquals("1.0.0", secondDataTypeVal.getDerivedFrom().getVersion());
+ assertEquals("0.0.0", secondDataTypeVal.getDerivedFrom().getVersion());
assertTrue(secondDataTypeVal.getProperties().size() == 2);
- Iterator<JpaToscaProperty> secondDataTypePropertiesIter = secondDataTypeVal.getProperties().iterator();
+ Iterator<JpaToscaProperty> secondDataTypePropertiesIter = secondDataTypeVal.getProperties().values().iterator();
JpaToscaProperty secondDataTypeFirstProperty = secondDataTypePropertiesIter.next();
assertEquals("onap.datatypes.monitoring.tca_policy", secondDataTypeFirstProperty.getKey().getParentKeyName());
@@ -254,13 +256,10 @@
assertEquals("Domain name to which TCA needs to be applied", secondDataTypeFirstProperty.getDescription());
assertEquals("measurementsForVfScaling", secondDataTypeFirstProperty.getDefaultValue());
assertTrue(secondDataTypeFirstProperty.getConstraints().size() == 1);
- assertEquals("string", secondDataTypeFirstProperty.getConstraints().iterator().next().getKey()
- .getParentKeyName());
- assertEquals("equal", secondDataTypeFirstProperty.getConstraints().iterator().next().getKey().getLocalName());
- assertTrue(secondDataTypeFirstProperty.getConstraints().iterator().next()
- instanceof JpaToscaConstraintLogicalString);
- assertEquals("measurementsForVfScaling", ((JpaToscaConstraintLogicalString)(secondDataTypeFirstProperty
- .getConstraints().iterator().next())).getCompareToString());
+ assertTrue(secondDataTypeFirstProperty.getConstraints().iterator().next() instanceof JpaToscaConstraintLogical);
+ assertEquals("measurementsForVfScaling",
+ ((JpaToscaConstraintLogical) (secondDataTypeFirstProperty.getConstraints().iterator().next()))
+ .getCompareTo());
JpaToscaProperty secondDataTypeSecondProperty = secondDataTypePropertiesIter.next();
assertEquals("onap.datatypes.monitoring.tca_policy", secondDataTypeSecondProperty.getKey().getParentKeyName());
@@ -270,26 +269,24 @@
assertEquals("Contains eventName and threshold details that need to be applied to given eventName",
secondDataTypeSecondProperty.getDescription());
assertNotNull(secondDataTypeSecondProperty.getEntrySchema());
- assertEquals("list", secondDataTypeSecondProperty.getEntrySchema().getKey().getParentKeyName());
assertEquals("onap.datatypes.monitoring.metricsPerEventName",
secondDataTypeSecondProperty.getEntrySchema().getType().getName());
- assertEquals("entry_schema", secondDataTypeSecondProperty.getEntrySchema().getKey().getLocalName());
Entry<PfConceptKey, JpaToscaDataType> thirdDataType = dataTypesIter.next();
assertEquals("onap.datatypes.monitoring.thresholds", thirdDataType.getKey().getName());
JpaToscaDataType thirdDataTypeVal = thirdDataType.getValue();
assertEquals("tosca.datatypes.Root", thirdDataTypeVal.getDerivedFrom().getName());
- assertEquals("1.0.0", thirdDataTypeVal.getDerivedFrom().getVersion());
+ assertEquals("0.0.0", thirdDataTypeVal.getDerivedFrom().getVersion());
assertTrue(thirdDataTypeVal.getProperties().size() == 7);
- Iterator<JpaToscaProperty> thirdDataTypePropertiesIter = thirdDataTypeVal.getProperties().iterator();
+ Iterator<JpaToscaProperty> thirdDataTypePropertiesIter = thirdDataTypeVal.getProperties().values().iterator();
JpaToscaProperty thirdDataTypeFirstProperty = thirdDataTypePropertiesIter.next();
assertEquals("onap.datatypes.monitoring.thresholds", thirdDataTypeFirstProperty.getKey().getParentKeyName());
assertEquals("closedLoopControlName", thirdDataTypeFirstProperty.getKey().getLocalName());
assertEquals("string", thirdDataTypeFirstProperty.getType().getName());
assertTrue(thirdDataTypeFirstProperty.isRequired());
- assertEquals("Closed Loop Control Name associated with the threshold", thirdDataTypeFirstProperty
- .getDescription());
+ assertEquals("Closed Loop Control Name associated with the threshold",
+ thirdDataTypeFirstProperty.getDescription());
JpaToscaProperty thirdDataTypeSecondProperty = thirdDataTypePropertiesIter.next();
assertEquals("onap.datatypes.monitoring.thresholds", thirdDataTypeSecondProperty.getKey().getParentKeyName());
@@ -299,13 +296,11 @@
assertEquals("Closed Loop Event Status of the threshold", thirdDataTypeSecondProperty.getDescription());
assertNotNull(thirdDataTypeSecondProperty.getConstraints());
assertTrue(thirdDataTypeSecondProperty.getConstraints().size() == 1);
- assertEquals("string", thirdDataTypeSecondProperty.getConstraints().iterator().next().getKey()
- .getParentKeyName());
- assertEquals("valid_values", thirdDataTypeSecondProperty.getConstraints().iterator().next().getKey()
- .getLocalName());
- assertTrue(thirdDataTypeSecondProperty.getConstraints().iterator().next()
- instanceof JpaToscaConstraintValidValues);
- assertTrue(((JpaToscaConstraintValidValues)(thirdDataTypeSecondProperty.getConstraints().iterator().next()))
+ assertEquals("JpaToscaConstraintValidValues(validValues=[ONSET, ABATED])",
+ thirdDataTypeSecondProperty.getConstraints().iterator().next().toString());
+ assertTrue(thirdDataTypeSecondProperty.getConstraints().iterator()
+ .next() instanceof JpaToscaConstraintValidValues);
+ assertTrue(((JpaToscaConstraintValidValues) (thirdDataTypeSecondProperty.getConstraints().iterator().next()))
.getValidValues().size() == 2);
JpaToscaProperty thirdDataTypeThirdProperty = thirdDataTypePropertiesIter.next();
@@ -316,11 +311,10 @@
assertEquals("Direction of the threshold", thirdDataTypeThirdProperty.getDescription());
assertNotNull(thirdDataTypeThirdProperty.getConstraints());
assertTrue(thirdDataTypeThirdProperty.getConstraints().size() == 1);
- assertEquals("string", thirdDataTypeThirdProperty.getConstraints().iterator().next().getKey()
- .getParentKeyName());
- assertEquals("valid_values", thirdDataTypeThirdProperty.getConstraints().iterator().next().getKey()
- .getLocalName());
- assertTrue(((JpaToscaConstraintValidValues)(thirdDataTypeThirdProperty.getConstraints().iterator().next()))
+ assertEquals(
+ "JpaToscaConstraintValidValues(validValues=[LESS, LESS_OR_EQUAL, GREATER, GREATER_OR_EQUAL, EQUAL])",
+ thirdDataTypeThirdProperty.getConstraints().iterator().next().toString());
+ assertTrue(((JpaToscaConstraintValidValues) (thirdDataTypeThirdProperty.getConstraints().iterator().next()))
.getValidValues().size() == 5);
JpaToscaProperty thirdDataTypeFourthProperty = thirdDataTypePropertiesIter.next();
@@ -332,11 +326,7 @@
thirdDataTypeFourthProperty.getDescription());
assertNotNull(thirdDataTypeFourthProperty.getConstraints());
assertTrue(thirdDataTypeFourthProperty.getConstraints().size() == 1);
- assertEquals("string", thirdDataTypeFourthProperty.getConstraints().iterator().next().getKey()
- .getParentKeyName());
- assertEquals("valid_values", thirdDataTypeFourthProperty.getConstraints().iterator().next().getKey()
- .getLocalName());
- assertTrue(((JpaToscaConstraintValidValues)(thirdDataTypeFourthProperty.getConstraints().iterator().next()))
+ assertTrue(((JpaToscaConstraintValidValues) (thirdDataTypeFourthProperty.getConstraints().iterator().next()))
.getValidValues().size() == 43);
JpaToscaProperty thirdDataTypeFifthProperty = thirdDataTypePropertiesIter.next();
@@ -347,11 +337,9 @@
assertEquals("Threshold Event Severity", thirdDataTypeFifthProperty.getDescription());
assertNotNull(thirdDataTypeFifthProperty.getConstraints());
assertTrue(thirdDataTypeFifthProperty.getConstraints().size() == 1);
- assertEquals("string", thirdDataTypeFifthProperty.getConstraints().iterator().next().getKey()
- .getParentKeyName());
- assertEquals("valid_values", thirdDataTypeFifthProperty.getConstraints().iterator().next().getKey()
- .getLocalName());
- assertTrue(((JpaToscaConstraintValidValues)(thirdDataTypeFifthProperty.getConstraints().iterator().next()))
+ assertEquals("JpaToscaConstraintValidValues(validValues=[CRITICAL, MAJOR, MINOR, WARNING, NORMAL])",
+ thirdDataTypeFifthProperty.getConstraints().iterator().next().toString());
+ assertTrue(((JpaToscaConstraintValidValues) (thirdDataTypeFifthProperty.getConstraints().iterator().next()))
.getValidValues().size() == 5);;
JpaToscaProperty thirdDataTypeSixthProperty = thirdDataTypePropertiesIter.next();
@@ -359,8 +347,8 @@
assertEquals("thresholdValue", thirdDataTypeSixthProperty.getKey().getLocalName());
assertEquals("integer", thirdDataTypeSixthProperty.getType().getName());
assertTrue(thirdDataTypeSixthProperty.isRequired());
- assertEquals("Threshold value for the field Path inside CEF message", thirdDataTypeSixthProperty
- .getDescription());
+ assertEquals("Threshold value for the field Path inside CEF message",
+ thirdDataTypeSixthProperty.getDescription());
JpaToscaProperty thirdDataTypeSeventhProperty = thirdDataTypePropertiesIter.next();
assertEquals("onap.datatypes.monitoring.thresholds", thirdDataTypeSeventhProperty.getKey().getParentKeyName());
@@ -399,7 +387,7 @@
assertEquals("policy.nodes.Root", secondPolicyType.getValue().getDerivedFrom().getName());
assertTrue(secondPolicyType.getValue().getProperties().size() == 2);
- Iterator<JpaToscaProperty> propertiesIter = secondPolicyType.getValue().getProperties().iterator();
+ Iterator<JpaToscaProperty> propertiesIter = secondPolicyType.getValue().getProperties().values().iterator();
JpaToscaProperty firstProperty = propertiesIter.next();
assertEquals("onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server",
@@ -418,7 +406,8 @@
assertEquals("datafile Policy JSON as string", secondProperty.getDescription());
}
- private String serializeMonitoringServiceTemplate(JpaToscaServiceTemplate serviceTemplate) {
- return gson.toJson(serviceTemplate);
+ private String serializeMonitoringServiceTemplate(JpaToscaServiceTemplate serviceTemplate) throws CoderException {
+ ToscaServiceTemplate toscaServiceTemplate = serviceTemplate.toAuthorative();
+ return coder.encode(toscaServiceTemplate);
}
-}
\ No newline at end of file
+}