aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorliamfallon <liam.fallon@est.tech>2020-09-24 16:12:50 +0100
committerliamfallon <liam.fallon@est.tech>2020-10-15 11:00:40 +0100
commit78a5a8cd584f5bcd8c68a93f10a57fbd726f644b (patch)
tree2c8279ea9ab6b2c4cbb3a0494c7f3b1b34f08ac8
parentc48e63f81e072c3cdf3f3fe84983285c0b8f1439 (diff)
Default should be an object on TOSCA properties
Property default value is serialized to the database as Yaml and deserialized back into an object on a DB read. Issue-ID: POLICY-2844 Change-Id: I69f2843a93cd5f831359a0965223298b769498d9 Signed-off-by: liamfallon <liam.fallon@est.tech>
-rw-r--r--models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaEntity.java6
-rw-r--r--models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaProperty.java4
-rw-r--r--models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaProperty.java29
-rw-r--r--models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPropertyTest.java57
4 files changed, 83 insertions, 13 deletions
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaEntity.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaEntity.java
index e588a59fe..b242bff65 100644
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaEntity.java
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaEntity.java
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* ONAP Policy Model
* ================================================================================
- * Copyright (C) 2019 Nordix Foundation.
+ * Copyright (C) 2019-2020 Nordix Foundation.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -88,7 +88,7 @@ public class ToscaEntity implements PfNameVersion {
*
* @param listOfMapsOfEntities the incoming list of maps of entities
* @return The entities on a regular map
- * @throws PfModelException on duplicate entity entries
+ * @throws PfModelRuntimeException on duplicate entity entries
*/
public static <T extends ToscaEntity> Map<ToscaEntityKey, T> getEntityListMapAsMap(
List<Map<String, T>> listOfMapsOfEntities) {
@@ -114,7 +114,7 @@ public class ToscaEntity implements PfNameVersion {
*
* @param mapOfEntities the incoming list of maps of entities
* @return The entities on a regular map
- * @throws PfModelException on duplicate entity entries
+ * @throws PfModelRuntimeException on duplicate entity entries
*/
public static <T extends ToscaEntity> Map<ToscaEntityKey, T> getEntityMapAsMap(Map<String, T> mapOfEntities) {
// Declare the return map
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 fd8a86a0d..59fbc8b22 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,7 +3,7 @@
* ONAP Policy Model
* ================================================================================
* Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2019 Nordix Foundation.
+ * Modifications Copyright (C) 2019-2020 Nordix Foundation.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -50,7 +50,7 @@ public class ToscaProperty {
@ApiModelProperty(name = "default")
@SerializedName("default")
- private String defaultValue;
+ private Object defaultValue;
private boolean required = false;
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 25d22661f..60e2fa05a 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
@@ -35,14 +35,19 @@ import javax.persistence.Entity;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.Table;
+import javax.ws.rs.core.Response;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NonNull;
import org.apache.commons.lang3.ObjectUtils;
+import org.onap.policy.common.utils.coder.CoderException;
+import org.onap.policy.common.utils.coder.StandardCoder;
+import org.onap.policy.common.utils.coder.YamlJsonTranslator;
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.PfModelRuntimeException;
import org.onap.policy.models.base.PfReferenceKey;
import org.onap.policy.models.base.PfUtils;
import org.onap.policy.models.base.PfValidationMessage;
@@ -112,7 +117,7 @@ public class JpaToscaProperty extends PfConcept implements PfAuthorative<ToscaPr
/**
* The Key Constructor creates a {@link JpaToscaProperty} object with the given concept key.
*
- * @param key the key
+ * @param key the key
* @param type the key of the property type
*/
public JpaToscaProperty(@NonNull final PfReferenceKey key, @NonNull final PfConceptKey type) {
@@ -159,9 +164,12 @@ public class JpaToscaProperty extends PfConcept implements PfAuthorative<ToscaPr
toscaProperty.setDescription(description);
toscaProperty.setRequired(required);
- toscaProperty.setDefaultValue(defaultValue);
toscaProperty.setStatus(status);
+ if (defaultValue != null) {
+ toscaProperty.setDefaultValue(new YamlJsonTranslator().fromYaml(defaultValue, Object.class));
+ }
+
if (constraints != null) {
List<ToscaConstraint> toscaConstraints = new ArrayList<>();
@@ -196,9 +204,14 @@ public class JpaToscaProperty extends PfConcept implements PfAuthorative<ToscaPr
description = toscaProperty.getDescription();
required = toscaProperty.isRequired();
- defaultValue = toscaProperty.getDefaultValue();
status = toscaProperty.getStatus();
+ if (toscaProperty.getDefaultValue() != null) {
+ defaultValue = new YamlJsonTranslator().toYaml(toscaProperty.getDefaultValue()).trim();
+ } else {
+ defaultValue = null;
+ }
+
if (toscaProperty.getConstraints() != null) {
constraints = new ArrayList<>();
@@ -262,14 +275,14 @@ public class JpaToscaProperty extends PfConcept implements PfAuthorative<ToscaPr
if (key.isNullKey()) {
result.addValidationMessage(
- new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID, "key is a null key"));
+ 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,
- "property type may not be null"));
+ "property type may not be null"));
}
return validateFields(result);
@@ -286,19 +299,19 @@ public class JpaToscaProperty extends PfConcept implements PfAuthorative<ToscaPr
if (description != null && description.trim().length() == 0) {
result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID,
- "property description may not be blank"));
+ "property description may not be blank"));
}
if (defaultValue != null && defaultValue.trim().length() == 0) {
result.addValidationMessage(new PfValidationMessage(key, this.getClass(), ValidationResult.INVALID,
- "property default value may not be null"));
+ "property default value may not be null"));
}
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 "));
+ "property constraint may not be null "));
}
}
}
diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPropertyTest.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPropertyTest.java
new file mode 100644
index 000000000..6aa2e1639
--- /dev/null
+++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPropertyTest.java
@@ -0,0 +1,57 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019-2020 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 static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.junit.Test;
+import org.onap.policy.models.tosca.simple.concepts.JpaToscaProperty;
+
+public class ToscaPropertyTest {
+ @Test
+ public void testToscaPropertyDefaultValue() {
+ ToscaProperty property = new ToscaProperty();
+ property.setName("test");
+ property.setType("testType");
+
+ JpaToscaProperty jpaProperty = new JpaToscaProperty(property);
+ assertNull(jpaProperty.getDefaultValue());
+ ToscaProperty outProperty = jpaProperty.toAuthorative();
+ assertNull(outProperty.getDefaultValue());
+
+ List<String> testList = new ArrayList<>();
+ property.setDefaultValue(testList);
+ jpaProperty = new JpaToscaProperty(property);
+ assertEquals("[]", jpaProperty.getDefaultValue());
+ outProperty = jpaProperty.toAuthorative();
+ assertEquals("[]", outProperty.getDefaultValue().toString());
+
+ testList.add("Foo");
+ testList.add("Bar");
+ jpaProperty = new JpaToscaProperty(property);
+ assertEquals("- Foo\n- Bar", jpaProperty.getDefaultValue());
+ outProperty = jpaProperty.toAuthorative();
+ assertEquals("[Foo, Bar]", outProperty.getDefaultValue().toString());
+ }
+}