diff options
Diffstat (limited to 'common/onap-tosca-datatype/src')
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; +} |