diff --git a/src/main/java/io/herrmann/generator/ConsumingGenerator.java b/src/main/java/io/herrmann/generator/ConsumingGenerator.java new file mode 100644 index 0000000..9d58664 --- /dev/null +++ b/src/main/java/io/herrmann/generator/ConsumingGenerator.java @@ -0,0 +1,6 @@ +package io.herrmann.generator; + +@FunctionalInterface +public interface ConsumingGenerator { + void generate(Generator generator) throws InterruptedException; +} diff --git a/src/main/java/io/herrmann/generator/LambdaGenerator.java b/src/main/java/io/herrmann/generator/LambdaGenerator.java new file mode 100644 index 0000000..0cd0916 --- /dev/null +++ b/src/main/java/io/herrmann/generator/LambdaGenerator.java @@ -0,0 +1,18 @@ +package io.herrmann.generator; + +public class LambdaGenerator extends Generator { + private ConsumingGenerator generator; + + public LambdaGenerator(ConsumingGenerator generator) { + this.generator = generator; + } + + public LambdaGenerator(final ValueGenerator generator) { + this(g -> generator.generate()); + } + + @Override + protected void run() throws InterruptedException { + this.generator.generate(this); + } +} diff --git a/src/main/java/io/herrmann/generator/ValueGenerator.java b/src/main/java/io/herrmann/generator/ValueGenerator.java new file mode 100644 index 0000000..9f14e93 --- /dev/null +++ b/src/main/java/io/herrmann/generator/ValueGenerator.java @@ -0,0 +1,6 @@ +package io.herrmann.generator; + +@FunctionalInterface +public interface ValueGenerator { + void generate() throws InterruptedException; +}