public static Map serializeTaskData()

in data-orchestrator/workflow-engine/workflow-engine-core/src/main/java/org/apache/airavata/datalake/orchestrator/workflow/engine/task/TaskUtil.java [85:108]


    public static <T extends AbstractTask> Map<String, String> serializeTaskData(T data) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {

        Map<String, String> result = new HashMap<>();
        for (Class<?> c = data.getClass(); c != null; c = c.getSuperclass()) {
            Field[] fields = c.getDeclaredFields();
            for (Field classField : fields) {
                TaskParam parm = classField.getAnnotation(TaskParam.class);
                try {
                    if (parm != null) {
                        Object propertyValue = PropertyUtils.getProperty(data, classField.getName());
                        if (propertyValue instanceof TaskParamType) {
                            result.put(parm.name(), TaskParamType.class.cast(propertyValue).serialize());
                        } else {
                            result.put(parm.name(), propertyValue.toString());
                        }
                    }
                } catch (Exception e) {
                    logger.error("Failed to serialize task parameter {} in class {}", parm.name(), data.getClass().getName());
                    throw e;
                }
            }
        }
        return result;
    }