diff --git a/src/main/java/teetime/framework/AnalysisConfiguration.java b/src/main/java/teetime/framework/AnalysisConfiguration.java index ef5ae8a4bd7df6c67d878c709bba15dfcf039455..71441436e1e9843d18dc7142843ca79f9a0b7562 100644 --- a/src/main/java/teetime/framework/AnalysisConfiguration.java +++ b/src/main/java/teetime/framework/AnalysisConfiguration.java @@ -26,6 +26,9 @@ import teetime.framework.pipe.PipeFactoryRegistry; */ public abstract class AnalysisConfiguration { + /** + * Can be used by subclasses, to obtain pipe factories + */ protected static final PipeFactoryRegistry PIPE_FACTORY_REGISTRY = PipeFactoryRegistry.INSTANCE; private final List<Stage> threadableStageJobs = new LinkedList<Stage>(); @@ -39,7 +42,7 @@ public abstract class AnalysisConfiguration { * @param stage * A arbitrary stage, which will be added to the configuration und executed in a thread. */ - public void addThreadableStage(final Stage stage) { + protected void addThreadableStage(final Stage stage) { this.threadableStageJobs.add(stage); } diff --git a/src/main/java/teetime/framework/CompositeStage.java b/src/main/java/teetime/framework/CompositeStage.java index 4765fe8732ddd8673de456815fc0d1e410208bf8..210ecd4c6e685ac8bfd3cd5da978b4a55f46e47d 100644 --- a/src/main/java/teetime/framework/CompositeStage.java +++ b/src/main/java/teetime/framework/CompositeStage.java @@ -35,7 +35,7 @@ import teetime.framework.validation.InvalidPortConnection; @SuppressWarnings("PMD.AbstractNaming") public abstract class CompositeStage extends Stage { - protected static final IPipeFactory INTRA_PIPE_FACTORY = PipeFactoryRegistry.INSTANCE + private static final IPipeFactory INTRA_PIPE_FACTORY = PipeFactoryRegistry.INSTANCE .getPipeFactory(ThreadCommunication.INTRA, PipeOrdering.ARBITRARY, false); protected abstract Stage getFirstStage(); diff --git a/src/main/java/teetime/stage/InitialElementProducer.java b/src/main/java/teetime/stage/InitialElementProducer.java index 733d3be8aeef1404520f9d8a24166ff4d70b973e..9aa93ec762f7338a4431554c85f4588253760c06 100644 --- a/src/main/java/teetime/stage/InitialElementProducer.java +++ b/src/main/java/teetime/stage/InitialElementProducer.java @@ -19,7 +19,7 @@ import teetime.framework.AbstractProducerStage; public final class InitialElementProducer<T> extends AbstractProducerStage<T> { - private final T[] elements; + private T[] elements; public InitialElementProducer(final T... elements) { this.elements = elements; @@ -33,4 +33,16 @@ public final class InitialElementProducer<T> extends AbstractProducerStage<T> { this.terminate(); } + public void setIter(final T[] elements) { + this.elements = elements; + } + + @Override + public void onStarting() throws Exception { + if (elements == null) { + throw new NullPointerException("iter must not be null"); + } + super.onStarting(); + } + } diff --git a/src/main/java/teetime/stage/IterableProducer.java b/src/main/java/teetime/stage/IterableProducer.java index a14959a05d6f727a51b9abeb28390ffd041dc3e0..3f85021ac9ae88710ac153124c659ca51e81f5ef 100644 --- a/src/main/java/teetime/stage/IterableProducer.java +++ b/src/main/java/teetime/stage/IterableProducer.java @@ -17,20 +17,32 @@ package teetime.stage; import teetime.framework.AbstractProducerStage; -public final class IterableProducer<O extends Iterable<T>, T> extends AbstractProducerStage<T> { +public final class IterableProducer<T> extends AbstractProducerStage<T> { - private O iter = null; + private Iterable<T> iter; - public IterableProducer(final O iter) { + public <O extends Iterable<T>> IterableProducer(final O iter) { this.iter = iter; } @Override protected void execute() { - for (T i : iter) { - outputPort.send(i); + for (final T i : this.iter) { + this.outputPort.send(i); } } + public void setIter(final Iterable<T> iter) { + this.iter = iter; + } + + @Override + public void onStarting() throws Exception { + if (iter == null) { + throw new NullPointerException("iter must not be null"); + } + super.onStarting(); + } + }