aboutsummaryrefslogtreecommitdiffstats
path: root/common/onap-tosca-datatype/src
diff options
context:
space:
mode:
Diffstat (limited to 'common/onap-tosca-datatype/src')
-rw-r--r--common/onap-tosca-datatype/src/main/java/org/onap/sdc/tosca/services/CommonUtil.java25
-rw-r--r--common/onap-tosca-datatype/src/test/java/org/onap/sdc/tosca/services/CommonUtilTest.java45
-rw-r--r--common/onap-tosca-datatype/src/test/java/org/onap/sdc/tosca/services/TestModel.java32
3 files changed, 96 insertions, 6 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 4ecf869ee8..fdbcb253dc 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
@@ -12,12 +12,14 @@
* 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=========================================================
+ * Modifications copyright (c) 2019 Nokia
+ * ================================================================================
*/
-
package org.onap.sdc.tosca.services;
-
import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
@@ -25,10 +27,10 @@ import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
-import org.apache.commons.beanutils.BeanUtils;
import com.google.common.collect.ImmutableSet;
import com.fasterxml.jackson.databind.ObjectMapper;
+import org.apache.commons.beanutils.BeanUtils;
public class CommonUtil {
@@ -47,9 +49,16 @@ public class CommonUtil {
return Optional.empty();
}
Map<String, Object> objectAsMap = getObjectAsMap(objectCandidate);
- T result = classToCreate.newInstance();
Field[] declaredFields = classToCreate.getDeclaredFields();
+ createSubObjectsUsingSetters(objectAsMap, declaredFields);
+ T result = populateBean(objectAsMap, classToCreate);
+
+ return Optional.of(result);
+ }
+
+ public static void createSubObjectsUsingSetters(Map<String, Object> objectAsMap, Field[] declaredFields)
+ throws Exception {
for (Field field : declaredFields) {
if (isComplexClass(field)) {
Optional<?> objectUsingSetters =
@@ -60,9 +69,13 @@ public class CommonUtil {
}
}
}
- BeanUtils.populate(result, objectAsMap);
+ }
- return Optional.of(result);
+ public static <T> T populateBean(Map<String, Object> propertiesMap, Class<T> classToCreate)
+ throws IllegalAccessException, InstantiationException, InvocationTargetException {
+ T result = classToCreate.newInstance();
+ BeanUtils.populate(result, propertiesMap);
+ return result;
}
public static Map<String, Object> getObjectAsMap(Object obj) {
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
new file mode 100644
index 0000000000..d9d7f69157
--- /dev/null
+++ b/common/onap-tosca-datatype/src/test/java/org/onap/sdc/tosca/services/CommonUtilTest.java
@@ -0,0 +1,45 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * Copyright (C) 2019 Nokia Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.sdc.tosca.services;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.HashMap;
+import java.util.Map;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class CommonUtilTest {
+
+ private static final String INT_FIELD_KEY = "field1";
+ private static final Integer INT_FIELD_VALUE = 1;
+ private static final String STRING_FIELD_KEY = "field2";
+ private static final String STRING_FIELD_VALUE = "abc";
+
+ @Test
+ public void testPopulateBeanMethod()
+ throws InstantiationException, IllegalAccessException, InvocationTargetException {
+ 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);
+ }
+} \ No newline at end of file
diff --git a/common/onap-tosca-datatype/src/test/java/org/onap/sdc/tosca/services/TestModel.java b/common/onap-tosca-datatype/src/test/java/org/onap/sdc/tosca/services/TestModel.java
new file mode 100644
index 0000000000..e8fc346494
--- /dev/null
+++ b/common/onap-tosca-datatype/src/test/java/org/onap/sdc/tosca/services/TestModel.java
@@ -0,0 +1,32 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * Copyright (C) 2019 Nokia Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.sdc.tosca.services;
+
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Setter
+@Getter
+@NoArgsConstructor
+public class TestModel {
+ private Integer field1;
+ private String field2;
+}