aboutsummaryrefslogtreecommitdiffstats
path: root/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/ToscaConverterUtil.java
diff options
context:
space:
mode:
Diffstat (limited to 'openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/ToscaConverterUtil.java')
-rw-r--r--openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/ToscaConverterUtil.java65
1 files changed, 65 insertions, 0 deletions
diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/ToscaConverterUtil.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/ToscaConverterUtil.java
new file mode 100644
index 0000000000..4120c6994c
--- /dev/null
+++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/main/java/org/openecomp/core/impl/ToscaConverterUtil.java
@@ -0,0 +1,65 @@
+package org.openecomp.core.impl;
+
+import org.apache.commons.lang.StringUtils;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.openecomp.core.converter.errors.CreateToscaObjectErrorBuilder;
+import org.openecomp.core.utilities.json.JsonUtil;
+import org.openecomp.sdc.common.errors.CoreException;
+import org.openecomp.sdc.common.errors.ErrorCategory;
+import org.openecomp.sdc.common.errors.ErrorCode;
+
+import java.lang.reflect.Field;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+
+public class ToscaConverterUtil {
+ private static final String set = "set";
+
+ public static <T> Optional<T> createObjectFromClass(String objectId,
+ Object objectCandidate,
+ Class<T> classToCreate) {
+ try {
+ return createObjectUsingSetters(objectCandidate, classToCreate);
+ } catch (Exception e) {
+ throw new CoreException(
+ new CreateToscaObjectErrorBuilder(classToCreate.getSimpleName(), objectId, e.getMessage())
+ .build());
+ }
+ }
+
+ private static <T> Optional<T> createObjectUsingSetters(Object objectCandidate,
+ Class<T> classToCreate) throws Exception {
+ if(!(objectCandidate instanceof Map)){
+ return Optional.empty();
+ }
+
+ Map<String, Object> objectAsMap = (Map<String, Object>) objectCandidate;
+ Field[] classFields = classToCreate.getDeclaredFields();
+ T result = classToCreate.newInstance();
+
+ for(Field field : classFields){
+ Object fieldValueToAssign = objectAsMap.get(field.getName());
+ String methodName = set + StringUtils.capitalize(field.getName());
+
+ if(shouldSetterMethodNeedsToGetInvoked(classToCreate, field, fieldValueToAssign, methodName)){
+ classToCreate.getMethod(methodName, field.getType()).invoke(result, fieldValueToAssign);
+ }
+ }
+
+ return Optional.of(result);
+ }
+
+ private static <T> boolean shouldSetterMethodNeedsToGetInvoked(Class<T> classToCreate,
+ Field field,
+ Object fieldValueToAssign,
+ String methodName) {
+
+ try {
+ return Objects.nonNull(fieldValueToAssign)
+ && Objects.nonNull(classToCreate.getMethod(methodName, field.getType()));
+ } catch (NoSuchMethodException e) {
+ return false;
+ }
+ }
+}