Skip to content

Commit 3b028dd

Browse files
gselzerctrueden
authored andcommitted
Add Supplier -> OpRunner support
1 parent 1bd7b19 commit 3b028dd

2 files changed

Lines changed: 25 additions & 0 deletions

File tree

src/main/java/org/scijava/ops/transform/FunctionalToOpRunnerTransformer.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import java.util.List;
3838
import java.util.function.BiFunction;
3939
import java.util.function.Function;
40+
import java.util.function.Supplier;
4041
import java.util.stream.Stream;
4142

4243
import org.scijava.ops.OpService;
@@ -137,6 +138,7 @@ private static OpRunner computerToRunner(final Object src, final Class<?> srcFun
137138
private static OpRunner functionToRunner(final Object src, final Class<?> srcFunctionalRawType)
138139
throws OpTransformationException
139140
{
141+
if (src instanceof Supplier) return OpRunners.Functions.toRunner((Supplier<?>) src);
140142
if (src instanceof Function) return OpRunners.Functions.toRunner((Function<?, ?>) src);
141143
if (src instanceof BiFunction) return OpRunners.Functions.toRunner((BiFunction<?, ?, ?>) src);
142144
if (src instanceof Function3) return OpRunners.Functions.toRunner((Function3<?, ?, ?, ?>) src);

src/main/java/org/scijava/ops/util/OpRunners.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.util.function.BiFunction;
44
import java.util.function.Function;
5+
import java.util.function.Supplier;
56

67
import org.scijava.ops.core.computer.BiComputer;
78
import org.scijava.ops.core.computer.Computer;
@@ -26,6 +27,28 @@
2627
// 2. Improve the matcher to respect the ops that implement KnowsTypes
2728
public class OpRunners {
2829
public static class Functions {
30+
31+
public static <O> OpRunner toRunner(Supplier<O> function) {
32+
return new OpRunner() {
33+
34+
@Override
35+
public Object getAdaptedOp() {
36+
return function;
37+
}
38+
39+
@Override
40+
public Nil<?>[] inTypes() {
41+
return new Nil<?>[] {};
42+
}
43+
44+
@SuppressWarnings("unchecked")
45+
@Override
46+
public O run(Object[] args) {
47+
return function.get();
48+
}
49+
50+
};
51+
}
2952

3053
public static <I, O> OpRunner toRunner(Function<I, O> function) {
3154
return new OpRunner() {

0 commit comments

Comments
 (0)