From e01218edbe79651b67def5805b6c59a88da4f1ca Mon Sep 17 00:00:00 2001
From: Nelson Tavares de Sousa <ntd@informatik.uni-kiel.de>
Date: Fri, 20 Feb 2015 15:13:20 +0100
Subject: [PATCH] changed visibilities; added setter to Iterable- and
 InitialElementProducer

---
 .../framework/AnalysisConfiguration.java      |  5 ++++-
 .../teetime/framework/CompositeStage.java     |  2 +-
 .../teetime/stage/InitialElementProducer.java | 14 +++++++++++-
 .../java/teetime/stage/IterableProducer.java  | 22 ++++++++++++++-----
 4 files changed, 35 insertions(+), 8 deletions(-)

diff --git a/src/main/java/teetime/framework/AnalysisConfiguration.java b/src/main/java/teetime/framework/AnalysisConfiguration.java
index ef5ae8a4..71441436 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 4765fe87..210ecd4c 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 733d3be8..9aa93ec7 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 a14959a0..3f85021a 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();
+	}
+
 }
-- 
GitLab