]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - cms/org.argeo.slc.spring/src/org/argeo/slc/core/execution/tasks/MethodCall.java
Clarify SLC project structure.
[gpl/argeo-slc.git] / cms / org.argeo.slc.spring / src / org / argeo / slc / core / execution / tasks / MethodCall.java
diff --git a/cms/org.argeo.slc.spring/src/org/argeo/slc/core/execution/tasks/MethodCall.java b/cms/org.argeo.slc.spring/src/org/argeo/slc/core/execution/tasks/MethodCall.java
new file mode 100644 (file)
index 0000000..88aeb47
--- /dev/null
@@ -0,0 +1,38 @@
+package org.argeo.slc.core.execution.tasks;
+
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.springframework.util.Assert;
+import org.springframework.util.ReflectionUtils;
+
+public class MethodCall implements Runnable {
+       private Object target;
+       private String method;
+       private List<Object> args = new ArrayList<Object>();
+
+       public void run() {
+               Assert.notNull(target, "target");
+               Assert.notNull(method, "method");
+               Method methodRef = ReflectionUtils
+                               .findMethod(target.getClass(), method);
+               if (args.size() == 0)
+                       ReflectionUtils.invokeMethod(methodRef, target);
+               else
+                       ReflectionUtils.invokeMethod(methodRef, methodRef, args.toArray());
+       }
+
+       public void setTarget(Object target) {
+               this.target = target;
+       }
+
+       public void setMethod(String method) {
+               this.method = method;
+       }
+
+       public void setArgs(List<Object> args) {
+               this.args = args;
+       }
+
+}