Skip to content

Commit 5f51acf

Browse files
committed
CodeRunner: add API for running with an input map
1 parent 571c053 commit 5f51acf

File tree

3 files changed

+27
-0
lines changed

3 files changed

+27
-0
lines changed

src/main/java/org/scijava/command/run/CommandCodeRunner.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@
3131

3232
package org.scijava.command.run;
3333

34+
import java.lang.reflect.InvocationTargetException;
35+
import java.util.Map;
36+
3437
import org.scijava.command.Command;
3538
import org.scijava.command.CommandService;
3639
import org.scijava.plugin.Parameter;
@@ -60,6 +63,13 @@ public void run(final Object code, final Object... args) {
6063
commandService.run(getCommandClass(code), true, args);
6164
}
6265

66+
@Override
67+
public void run(final Object code, final Map<String, Object> inputMap)
68+
throws InvocationTargetException
69+
{
70+
commandService.run(getCommandClass(code), true, inputMap);
71+
}
72+
6373
// -- Typed methods --
6474

6575
@Override

src/main/java/org/scijava/main/run/MainCodeRunner.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333

3434
import java.lang.reflect.InvocationTargetException;
3535
import java.lang.reflect.Method;
36+
import java.util.Map;
3637

3738
import org.scijava.Priority;
3839
import org.scijava.log.LogService;
@@ -71,6 +72,14 @@ public void run(final Object code, final Object... args)
7172
}
7273
}
7374

75+
@Override
76+
public void run(final Object code, final Map<String, Object> inputMap)
77+
throws InvocationTargetException
78+
{
79+
throw new UnsupportedOperationException(
80+
"Cannot execute main method with a map of inputs");
81+
}
82+
7483
// -- Typed methods --
7584

7685
@Override

src/main/java/org/scijava/run/CodeRunner.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
package org.scijava.run;
3333

3434
import java.lang.reflect.InvocationTargetException;
35+
import java.util.Map;
3536

3637
import org.scijava.Identifiable;
3738
import org.scijava.plugin.HandlerPlugin;
@@ -60,4 +61,11 @@ public interface CodeRunner extends HandlerPlugin<Object> {
6061
*/
6162
void run(Object code, Object... args) throws InvocationTargetException;
6263

64+
/**
65+
* Executes the code identified by the given object, passing the arguments in
66+
* the specified map as inputs.
67+
*/
68+
void run(Object code, Map<String, Object> inputMap)
69+
throws InvocationTargetException;
70+
6371
}

0 commit comments

Comments
 (0)