diff options
author | vasraz <vasyl.razinkov@est.tech> | 2022-12-15 10:12:06 +0000 |
---|---|---|
committer | Vasyl Razinkov <vasyl.razinkov@est.tech> | 2022-12-15 18:44:43 +0000 |
commit | a64c4b2e9ede88f2448bde3c80a36f3b5770ca57 (patch) | |
tree | 6a3a0b564bf22e1428b61b5c8901d44092e4bd6f | |
parent | d1e9af11f6c846d97713d64dd8b5f7e15cd1af95 (diff) |
Fix 'Tosca List Entry Schema failed to be recoginized with creating VSP'-bug
Signed-off-by: Vasyl Razinkov <vasyl.razinkov@est.tech>
Change-Id: Id33f7eff96b06a1cfb5e3e5d967b4e17da14a9a8
Issue-ID: SDC-2851
3 files changed, 27 insertions, 15 deletions
diff --git a/common/onap-tosca-datatype/src/main/java/org/onap/sdc/tosca/services/CommonUtil.java b/common/onap-tosca-datatype/src/main/java/org/onap/sdc/tosca/services/CommonUtil.java index d6ff22c501..66fac9338a 100644 --- a/common/onap-tosca-datatype/src/main/java/org/onap/sdc/tosca/services/CommonUtil.java +++ b/common/onap-tosca-datatype/src/main/java/org/onap/sdc/tosca/services/CommonUtil.java @@ -19,7 +19,6 @@ package org.onap.sdc.tosca.services; import com.fasterxml.jackson.databind.ObjectMapper; -import com.google.common.collect.ImmutableSet; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.util.Arrays; @@ -30,13 +29,15 @@ import java.util.Objects; import java.util.Optional; import java.util.Set; import org.apache.commons.beanutils.BeanUtils; +import org.onap.sdc.tosca.datatypes.model.EntrySchema; public class CommonUtil { public static final String DEFAULT = "default"; public static final String UNDERSCORE_DEFAULT = "_default"; - private static ImmutableSet<Class<?>> complexClassType = ImmutableSet - .of(Map.class, String.class, Integer.class, Float.class, Double.class, Set.class, Object.class, List.class); + private static final String ENTRY_SCHEMA = "entry_schema"; + private static final Set<Class<?>> complexClassType = + Set.of(Map.class, String.class, Integer.class, Float.class, Double.class, Set.class, Object.class, List.class); private CommonUtil() { throw new IllegalStateException("Utility class"); @@ -49,10 +50,22 @@ public class CommonUtil { Map<String, Object> objectAsMap = getObjectAsMap(objectCandidate); Field[] declaredFields = classToCreate.getDeclaredFields(); createSubObjectsUsingSetters(objectAsMap, declaredFields); + handleEntrySchema(objectAsMap); T result = populateBean(objectAsMap, classToCreate); return Optional.of(result); } + private static void handleEntrySchema(final Map<String, Object> objectAsMap) { + if (objectAsMap.containsKey(ENTRY_SCHEMA)) { + final Object entrySchema = objectAsMap.get(ENTRY_SCHEMA); + if (entrySchema instanceof Map) { + objectAsMap.remove(ENTRY_SCHEMA); + final Map<String, String> map = (Map<String, String>) entrySchema; + objectAsMap.put(ENTRY_SCHEMA, new EntrySchema(map.get("type"))); + } + } + } + public static void createSubObjectsUsingSetters(Map<String, Object> objectAsMap, Field[] declaredFields) throws Exception { for (Field field : declaredFields) { if (isComplexClass(field)) { @@ -66,8 +79,8 @@ public class CommonUtil { } public static <T> T populateBean(Map<String, Object> propertiesMap, Class<T> classToCreate) - throws IllegalAccessException, InstantiationException, InvocationTargetException { - T result = classToCreate.newInstance(); + throws IllegalAccessException, InstantiationException, InvocationTargetException, NoSuchMethodException { + T result = classToCreate.getDeclaredConstructor().newInstance(); BeanUtils.populate(result, propertiesMap); return result; } diff --git a/common/onap-tosca-datatype/src/main/java/org/onap/sdc/tosca/services/YamlUtil.java b/common/onap-tosca-datatype/src/main/java/org/onap/sdc/tosca/services/YamlUtil.java index d8e592d353..45409c3439 100644 --- a/common/onap-tosca-datatype/src/main/java/org/onap/sdc/tosca/services/YamlUtil.java +++ b/common/onap-tosca-datatype/src/main/java/org/onap/sdc/tosca/services/YamlUtil.java @@ -88,7 +88,7 @@ public class YamlUtil { TypeDescription yamlFileDescription = new TypeDescription(typClass); constructor.addTypeDescription(yamlFileDescription); T yamlObj = new Yaml(constructor, new Representer(), new DumperOptions(), getLoaderOptions()).load(yamlContent); - ; + //noinspection ResultOfMethodCallIgnored yamlObj.toString(); return yamlObj; diff --git a/common/onap-tosca-datatype/src/test/java/org/onap/sdc/tosca/services/CommonUtilTest.java b/common/onap-tosca-datatype/src/test/java/org/onap/sdc/tosca/services/CommonUtilTest.java index d9d7f69157..74dd40c638 100644 --- a/common/onap-tosca-datatype/src/test/java/org/onap/sdc/tosca/services/CommonUtilTest.java +++ b/common/onap-tosca-datatype/src/test/java/org/onap/sdc/tosca/services/CommonUtilTest.java @@ -19,13 +19,13 @@ */ package org.onap.sdc.tosca.services; -import java.lang.reflect.InvocationTargetException; +import static org.junit.jupiter.api.Assertions.assertEquals; + import java.util.HashMap; import java.util.Map; -import org.junit.Assert; -import org.junit.Test; +import org.junit.jupiter.api.Test; -public class CommonUtilTest { +class CommonUtilTest { private static final String INT_FIELD_KEY = "field1"; private static final Integer INT_FIELD_VALUE = 1; @@ -33,13 +33,12 @@ public class CommonUtilTest { private static final String STRING_FIELD_VALUE = "abc"; @Test - public void testPopulateBeanMethod() - throws InstantiationException, IllegalAccessException, InvocationTargetException { + void testPopulateBeanMethod() throws Exception { Map<String, Object> props = new HashMap<>(); props.put(INT_FIELD_KEY, INT_FIELD_VALUE); props.put(STRING_FIELD_KEY, STRING_FIELD_VALUE); TestModel testModel = CommonUtil.populateBean(props, TestModel.class); - Assert.assertEquals(testModel.getField1(), INT_FIELD_VALUE); - Assert.assertEquals(testModel.getField2(), STRING_FIELD_VALUE); + assertEquals(testModel.getField1(), INT_FIELD_VALUE); + assertEquals(testModel.getField2(), STRING_FIELD_VALUE); } -}
\ No newline at end of file +} |