You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by di...@apache.org on 2018/10/29 19:32:15 UTC
[airavata] branch develop updated: Supporting serializable task
params in task framework
This is an automated email from the ASF dual-hosted git repository.
dimuthuupe pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/airavata.git
The following commit(s) were added to refs/heads/develop by this push:
new 3cba34f Supporting serializable task params in task framework
3cba34f is described below
commit 3cba34f343327ee611aa93f475d73591ddcedc7c
Author: Dimuthu Wannipurage <di...@datasprouts.com>
AuthorDate: Mon Oct 29 15:32:03 2018 -0400
Supporting serializable task params in task framework
---
.../java/org/apache/airavata/helix/core/AbstractTask.java | 2 +-
.../java/org/apache/airavata/helix/core/util/TaskUtil.java | 13 +++++++++----
2 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/modules/airavata-helix/task-core/src/main/java/org/apache/airavata/helix/core/AbstractTask.java b/modules/airavata-helix/task-core/src/main/java/org/apache/airavata/helix/core/AbstractTask.java
index 70652a9..e9a6ed0 100644
--- a/modules/airavata-helix/task-core/src/main/java/org/apache/airavata/helix/core/AbstractTask.java
+++ b/modules/airavata-helix/task-core/src/main/java/org/apache/airavata/helix/core/AbstractTask.java
@@ -76,7 +76,7 @@ public abstract class AbstractTask extends UserContentStore implements Task {
super.init(manager, workflowName, jobName, taskName);
try {
TaskUtil.deserializeTaskData(this, this.callbackContext.getTaskConfig().getConfigMap());
- } catch (IllegalAccessException | InstantiationException e) {
+ } catch (Exception e) {
e.printStackTrace();
}
}
diff --git a/modules/airavata-helix/task-core/src/main/java/org/apache/airavata/helix/core/util/TaskUtil.java b/modules/airavata-helix/task-core/src/main/java/org/apache/airavata/helix/core/util/TaskUtil.java
index 2a05061..539a75d 100644
--- a/modules/airavata-helix/task-core/src/main/java/org/apache/airavata/helix/core/util/TaskUtil.java
+++ b/modules/airavata-helix/task-core/src/main/java/org/apache/airavata/helix/core/util/TaskUtil.java
@@ -27,7 +27,9 @@ import org.apache.airavata.helix.task.api.annotation.TaskParam;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
import java.util.*;
/**
@@ -85,7 +87,7 @@ public class TaskUtil {
return result;
}
- public static <T extends AbstractTask> void deserializeTaskData(T instance, Map<String, String> params) throws IllegalAccessException, InstantiationException {
+ public static <T extends AbstractTask> void deserializeTaskData(T instance, Map<String, String> params) throws IllegalAccessException, NoSuchMethodException, InvocationTargetException, InstantiationException {
List<Field> allFields = new ArrayList<>();
Class genericClass = instance.getClass();
@@ -114,9 +116,12 @@ public class TaskUtil {
} else if (classField.getType().isAssignableFrom(Boolean.class) ||
classField.getType().isAssignableFrom(Boolean.TYPE)) {
classField.set(instance, Boolean.parseBoolean(params.get(param.name())));
- } else if (classField.getType().isAssignableFrom(TaskParamType.class)) {
- // TODO Fix me
- //classField.set(instance, )
+ } else if (TaskParamType.class.isAssignableFrom(classField.getType())) {
+ Class<?> clazz = classField.getType();
+ Constructor<?> ctor = clazz.getConstructor();
+ Object obj = ctor.newInstance();
+ ((TaskParamType)obj).deserialize(params.get(param.name()));
+ classField.set(instance, obj);
}
}
}