From e14b0ef8851932cb06f1ab60a2b6a948d977c345 Mon Sep 17 00:00:00 2001
From: Christian Wulf <chw@informatik.uni-kiel.de>
Date: Sun, 28 Jun 2015 13:30:18 +0200
Subject: [PATCH] changed package structure for distributor and merger

---
 .../java/teetime/framework/AbstractPort.java    |  6 +++---
 .../stage/basic/distributor/Distributor.java    |  2 ++
 .../distributor/dynamic/DynamicDistributor.java |  4 ++--
 .../{ => strategy}/CloneStrategy.java           | 10 ++++------
 .../{ => strategy}/CopyByReferenceStrategy.java |  2 +-
 .../{ => strategy}/IDistributorStrategy.java    |  2 +-
 .../{ => strategy}/RoundRobinStrategy.java      |  3 ++-
 .../{ => strategy}/RoundRobinStrategy2.java     |  3 ++-
 .../java/teetime/stage/basic/merger/Merger.java |  2 ++
 .../basic/merger/dynamic/DynamicMerger.java     |  2 +-
 .../BusyWaitingRoundRobinStrategy.java          |  3 ++-
 .../merger/{ => strategy}/IMergerStrategy.java  |  3 ++-
 .../{ => strategy}/RoundRobinStrategy.java      |  3 ++-
 .../java/teetime/stage/io/EveryXthPrinter.java  |  2 +-
 .../java/teetime/framework/TraversorTest.java   |  2 +-
 .../basic/distributor/DistributorTest.java      | 17 +++++++++++++----
 .../teetime/stage/basic/merger/MergerTest.java  |  2 ++
 .../basic/merger/dynamic/DynamicMergerTest.java |  2 +-
 18 files changed, 44 insertions(+), 26 deletions(-)
 rename src/main/java/teetime/stage/basic/distributor/{ => strategy}/CloneStrategy.java (92%)
 rename src/main/java/teetime/stage/basic/distributor/{ => strategy}/CopyByReferenceStrategy.java (96%)
 rename src/main/java/teetime/stage/basic/distributor/{ => strategy}/IDistributorStrategy.java (95%)
 rename src/main/java/teetime/stage/basic/distributor/{ => strategy}/RoundRobinStrategy.java (94%)
 rename src/main/java/teetime/stage/basic/distributor/{ => strategy}/RoundRobinStrategy2.java (95%)
 rename src/main/java/teetime/stage/basic/merger/{ => strategy}/BusyWaitingRoundRobinStrategy.java (95%)
 rename src/main/java/teetime/stage/basic/merger/{ => strategy}/IMergerStrategy.java (91%)
 rename src/main/java/teetime/stage/basic/merger/{ => strategy}/RoundRobinStrategy.java (95%)

diff --git a/src/main/java/teetime/framework/AbstractPort.java b/src/main/java/teetime/framework/AbstractPort.java
index f6664b54..639f4bd0 100644
--- a/src/main/java/teetime/framework/AbstractPort.java
+++ b/src/main/java/teetime/framework/AbstractPort.java
@@ -31,11 +31,11 @@ public abstract class AbstractPort<T> {
 
 	protected IPipe pipe;
 
-	public AbstractPort(final Class<T> type, final Stage owningStage, final String name) {
+	protected AbstractPort(final Class<T> type, final Stage owningStage, final String name) {
 		super();
 		this.type = type;
 		this.owningStage = owningStage;
-		this.name = (name != null) ? name : super.toString();
+		this.name = name;
 	}
 
 	public Class<T> getType() {
@@ -56,6 +56,6 @@ public abstract class AbstractPort<T> {
 
 	@Override
 	public String toString() {
-		return name;
+		return (name != null) ? name : super.toString();
 	}
 }
diff --git a/src/main/java/teetime/stage/basic/distributor/Distributor.java b/src/main/java/teetime/stage/basic/distributor/Distributor.java
index f780e247..db0ef439 100644
--- a/src/main/java/teetime/stage/basic/distributor/Distributor.java
+++ b/src/main/java/teetime/stage/basic/distributor/Distributor.java
@@ -17,6 +17,8 @@ package teetime.stage.basic.distributor;
 
 import teetime.framework.AbstractConsumerStage;
 import teetime.framework.OutputPort;
+import teetime.stage.basic.distributor.strategy.IDistributorStrategy;
+import teetime.stage.basic.distributor.strategy.RoundRobinStrategy2;
 
 /**
  * @author Christian Wulf
diff --git a/src/main/java/teetime/stage/basic/distributor/dynamic/DynamicDistributor.java b/src/main/java/teetime/stage/basic/distributor/dynamic/DynamicDistributor.java
index b068f4df..aecb9d15 100644
--- a/src/main/java/teetime/stage/basic/distributor/dynamic/DynamicDistributor.java
+++ b/src/main/java/teetime/stage/basic/distributor/dynamic/DynamicDistributor.java
@@ -8,8 +8,8 @@ import teetime.framework.OutputPortRemovedListener;
 import teetime.framework.Stage;
 import teetime.framework.signal.TerminatingSignal;
 import teetime.stage.basic.distributor.Distributor;
-import teetime.stage.basic.distributor.IDistributorStrategy;
-import teetime.stage.basic.distributor.RoundRobinStrategy2;
+import teetime.stage.basic.distributor.strategy.IDistributorStrategy;
+import teetime.stage.basic.distributor.strategy.RoundRobinStrategy2;
 import teetime.util.framework.port.PortAction;
 import teetime.util.framework.port.PortActionHelper;
 
diff --git a/src/main/java/teetime/stage/basic/distributor/CloneStrategy.java b/src/main/java/teetime/stage/basic/distributor/strategy/CloneStrategy.java
similarity index 92%
rename from src/main/java/teetime/stage/basic/distributor/CloneStrategy.java
rename to src/main/java/teetime/stage/basic/distributor/strategy/CloneStrategy.java
index c41d4177..7f2a2b00 100644
--- a/src/main/java/teetime/stage/basic/distributor/CloneStrategy.java
+++ b/src/main/java/teetime/stage/basic/distributor/strategy/CloneStrategy.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package teetime.stage.basic.distributor;
+package teetime.stage.basic.distributor.strategy;
 
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
@@ -57,13 +57,11 @@ public final class CloneStrategy implements IDistributorStrategy {
 
 			return newInstance;
 		} catch (InstantiationException e) {
-			throw new UnsupportedOperationException();
+			throw new IllegalStateException(e);
 		} catch (IllegalAccessException e) {
-			throw new UnsupportedOperationException();
-		} catch (IllegalArgumentException e) {
-			throw new UnsupportedOperationException();
+			throw new IllegalStateException(e);
 		} catch (InvocationTargetException e) {
-			throw new UnsupportedOperationException();
+			throw new IllegalStateException(e);
 		}
 	}
 
diff --git a/src/main/java/teetime/stage/basic/distributor/CopyByReferenceStrategy.java b/src/main/java/teetime/stage/basic/distributor/strategy/CopyByReferenceStrategy.java
similarity index 96%
rename from src/main/java/teetime/stage/basic/distributor/CopyByReferenceStrategy.java
rename to src/main/java/teetime/stage/basic/distributor/strategy/CopyByReferenceStrategy.java
index 317a6eae..cb9d35b5 100644
--- a/src/main/java/teetime/stage/basic/distributor/CopyByReferenceStrategy.java
+++ b/src/main/java/teetime/stage/basic/distributor/strategy/CopyByReferenceStrategy.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package teetime.stage.basic.distributor;
+package teetime.stage.basic.distributor.strategy;
 
 import teetime.framework.OutputPort;
 import teetime.framework.Stage;
diff --git a/src/main/java/teetime/stage/basic/distributor/IDistributorStrategy.java b/src/main/java/teetime/stage/basic/distributor/strategy/IDistributorStrategy.java
similarity index 95%
rename from src/main/java/teetime/stage/basic/distributor/IDistributorStrategy.java
rename to src/main/java/teetime/stage/basic/distributor/strategy/IDistributorStrategy.java
index 4e42dc15..00c76d2f 100644
--- a/src/main/java/teetime/stage/basic/distributor/IDistributorStrategy.java
+++ b/src/main/java/teetime/stage/basic/distributor/strategy/IDistributorStrategy.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package teetime.stage.basic.distributor;
+package teetime.stage.basic.distributor.strategy;
 
 import teetime.framework.OutputPort;
 import teetime.framework.OutputPortRemovedListener;
diff --git a/src/main/java/teetime/stage/basic/distributor/RoundRobinStrategy.java b/src/main/java/teetime/stage/basic/distributor/strategy/RoundRobinStrategy.java
similarity index 94%
rename from src/main/java/teetime/stage/basic/distributor/RoundRobinStrategy.java
rename to src/main/java/teetime/stage/basic/distributor/strategy/RoundRobinStrategy.java
index 77dae925..f2038512 100644
--- a/src/main/java/teetime/stage/basic/distributor/RoundRobinStrategy.java
+++ b/src/main/java/teetime/stage/basic/distributor/strategy/RoundRobinStrategy.java
@@ -13,10 +13,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package teetime.stage.basic.distributor;
+package teetime.stage.basic.distributor.strategy;
 
 import teetime.framework.OutputPort;
 import teetime.framework.Stage;
+import teetime.stage.basic.distributor.Distributor;
 
 /**
  * @author Nils Christian Ehmke
diff --git a/src/main/java/teetime/stage/basic/distributor/RoundRobinStrategy2.java b/src/main/java/teetime/stage/basic/distributor/strategy/RoundRobinStrategy2.java
similarity index 95%
rename from src/main/java/teetime/stage/basic/distributor/RoundRobinStrategy2.java
rename to src/main/java/teetime/stage/basic/distributor/strategy/RoundRobinStrategy2.java
index 54103cb2..371ffa77 100644
--- a/src/main/java/teetime/stage/basic/distributor/RoundRobinStrategy2.java
+++ b/src/main/java/teetime/stage/basic/distributor/strategy/RoundRobinStrategy2.java
@@ -13,10 +13,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package teetime.stage.basic.distributor;
+package teetime.stage.basic.distributor.strategy;
 
 import teetime.framework.OutputPort;
 import teetime.framework.Stage;
+import teetime.stage.basic.distributor.Distributor;
 
 /**
  * @author Christian Wulf
diff --git a/src/main/java/teetime/stage/basic/merger/Merger.java b/src/main/java/teetime/stage/basic/merger/Merger.java
index 3e37f472..4ecec6a6 100644
--- a/src/main/java/teetime/stage/basic/merger/Merger.java
+++ b/src/main/java/teetime/stage/basic/merger/Merger.java
@@ -25,6 +25,8 @@ import teetime.framework.DynamicInputPort;
 import teetime.framework.InputPort;
 import teetime.framework.OutputPort;
 import teetime.framework.signal.ISignal;
+import teetime.stage.basic.merger.strategy.IMergerStrategy;
+import teetime.stage.basic.merger.strategy.RoundRobinStrategy;
 
 /**
  *
diff --git a/src/main/java/teetime/stage/basic/merger/dynamic/DynamicMerger.java b/src/main/java/teetime/stage/basic/merger/dynamic/DynamicMerger.java
index 4e70a825..b3121603 100644
--- a/src/main/java/teetime/stage/basic/merger/dynamic/DynamicMerger.java
+++ b/src/main/java/teetime/stage/basic/merger/dynamic/DynamicMerger.java
@@ -3,8 +3,8 @@ package teetime.stage.basic.merger.dynamic;
 import java.util.concurrent.BlockingQueue;
 
 import teetime.framework.DynamicInputPort;
-import teetime.stage.basic.merger.IMergerStrategy;
 import teetime.stage.basic.merger.Merger;
+import teetime.stage.basic.merger.strategy.IMergerStrategy;
 import teetime.util.framework.port.PortAction;
 import teetime.util.framework.port.PortActionHelper;
 
diff --git a/src/main/java/teetime/stage/basic/merger/BusyWaitingRoundRobinStrategy.java b/src/main/java/teetime/stage/basic/merger/strategy/BusyWaitingRoundRobinStrategy.java
similarity index 95%
rename from src/main/java/teetime/stage/basic/merger/BusyWaitingRoundRobinStrategy.java
rename to src/main/java/teetime/stage/basic/merger/strategy/BusyWaitingRoundRobinStrategy.java
index 0f7dcba7..9e5df6cf 100644
--- a/src/main/java/teetime/stage/basic/merger/BusyWaitingRoundRobinStrategy.java
+++ b/src/main/java/teetime/stage/basic/merger/strategy/BusyWaitingRoundRobinStrategy.java
@@ -13,10 +13,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package teetime.stage.basic.merger;
+package teetime.stage.basic.merger.strategy;
 
 import teetime.framework.InputPort;
 import teetime.framework.Stage;
+import teetime.stage.basic.merger.Merger;
 
 /**
  * @author Christian Wulf
diff --git a/src/main/java/teetime/stage/basic/merger/IMergerStrategy.java b/src/main/java/teetime/stage/basic/merger/strategy/IMergerStrategy.java
similarity index 91%
rename from src/main/java/teetime/stage/basic/merger/IMergerStrategy.java
rename to src/main/java/teetime/stage/basic/merger/strategy/IMergerStrategy.java
index 4fa1b4da..2de8659c 100644
--- a/src/main/java/teetime/stage/basic/merger/IMergerStrategy.java
+++ b/src/main/java/teetime/stage/basic/merger/strategy/IMergerStrategy.java
@@ -13,9 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package teetime.stage.basic.merger;
+package teetime.stage.basic.merger.strategy;
 
 import teetime.framework.InputPortRemovedListener;
+import teetime.stage.basic.merger.Merger;
 
 /**
  * @author Nils Christian Ehmke
diff --git a/src/main/java/teetime/stage/basic/merger/RoundRobinStrategy.java b/src/main/java/teetime/stage/basic/merger/strategy/RoundRobinStrategy.java
similarity index 95%
rename from src/main/java/teetime/stage/basic/merger/RoundRobinStrategy.java
rename to src/main/java/teetime/stage/basic/merger/strategy/RoundRobinStrategy.java
index d554e0ac..cfe269dd 100644
--- a/src/main/java/teetime/stage/basic/merger/RoundRobinStrategy.java
+++ b/src/main/java/teetime/stage/basic/merger/strategy/RoundRobinStrategy.java
@@ -13,10 +13,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package teetime.stage.basic.merger;
+package teetime.stage.basic.merger.strategy;
 
 import teetime.framework.InputPort;
 import teetime.framework.Stage;
+import teetime.stage.basic.merger.Merger;
 
 /**
  * @author Nils Christian Ehmke
diff --git a/src/main/java/teetime/stage/io/EveryXthPrinter.java b/src/main/java/teetime/stage/io/EveryXthPrinter.java
index 24eb08ec..6f38fbab 100644
--- a/src/main/java/teetime/stage/io/EveryXthPrinter.java
+++ b/src/main/java/teetime/stage/io/EveryXthPrinter.java
@@ -24,8 +24,8 @@ import teetime.framework.InputPort;
 import teetime.framework.OutputPort;
 import teetime.framework.Stage;
 import teetime.stage.EveryXthStage;
-import teetime.stage.basic.distributor.CopyByReferenceStrategy;
 import teetime.stage.basic.distributor.Distributor;
+import teetime.stage.basic.distributor.strategy.CopyByReferenceStrategy;
 
 public final class EveryXthPrinter<T> extends AbstractCompositeStage {
 
diff --git a/src/test/java/teetime/framework/TraversorTest.java b/src/test/java/teetime/framework/TraversorTest.java
index dcbb167a..95e118b1 100644
--- a/src/test/java/teetime/framework/TraversorTest.java
+++ b/src/test/java/teetime/framework/TraversorTest.java
@@ -29,7 +29,7 @@ import org.junit.Test;
 import teetime.stage.CountingMapMerger;
 import teetime.stage.InitialElementProducer;
 import teetime.stage.basic.distributor.Distributor;
-import teetime.stage.basic.distributor.RoundRobinStrategy2;
+import teetime.stage.basic.distributor.strategy.RoundRobinStrategy2;
 import teetime.stage.basic.merger.Merger;
 import teetime.stage.io.File2SeqOfWords;
 import teetime.stage.string.WordCounter;
diff --git a/src/test/java/teetime/stage/basic/distributor/DistributorTest.java b/src/test/java/teetime/stage/basic/distributor/DistributorTest.java
index 5e9381d8..3a8c235b 100644
--- a/src/test/java/teetime/stage/basic/distributor/DistributorTest.java
+++ b/src/test/java/teetime/stage/basic/distributor/DistributorTest.java
@@ -30,6 +30,11 @@ import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
 
+import teetime.stage.basic.distributor.strategy.CloneStrategy;
+import teetime.stage.basic.distributor.strategy.CopyByReferenceStrategy;
+import teetime.stage.basic.distributor.strategy.RoundRobinStrategy;
+import teetime.stage.basic.distributor.strategy.RoundRobinStrategy2;
+
 /**
  * @author Nils Christian Ehmke
  *
@@ -136,19 +141,23 @@ public class DistributorTest {
 		final List<SimpleBean> results = new ArrayList<SimpleBean>();
 		final SimpleBean originalBean = new SimpleBean(42);
 
-		test(distributor).and().send(originalBean).to(distributor.getInputPort()).and().receive(results).from(distributor.getNewOutputPort()).start();
+		test(distributor).and()
+				.send(originalBean).to(distributor.getInputPort()).and()
+				.receive(results).from(distributor.getNewOutputPort()).start();
 
 		final SimpleBean clonedBean = results.get(0);
 		assertThat(originalBean, is(not(clonedBean)));
 		assertThat(originalBean.getValue(), is(clonedBean.getValue()));
 	}
 
-	private static class SimpleBean {
+	// set to "public" to instantiate it via reflection
+	public static class SimpleBean {
 
 		private int value;
 
-		@SuppressWarnings("unused")
-		public SimpleBean() {}
+		public SimpleBean() {
+			// necessary to instantiate it via reflection
+		}
 
 		public SimpleBean(final int value) {
 			this.setValue(value);
diff --git a/src/test/java/teetime/stage/basic/merger/MergerTest.java b/src/test/java/teetime/stage/basic/merger/MergerTest.java
index 6306cd1c..85d1375c 100644
--- a/src/test/java/teetime/stage/basic/merger/MergerTest.java
+++ b/src/test/java/teetime/stage/basic/merger/MergerTest.java
@@ -25,6 +25,8 @@ import java.util.List;
 
 import org.junit.Test;
 
+import teetime.stage.basic.merger.strategy.RoundRobinStrategy;
+
 /**
  * @author Nils Christian Ehmke
  *
diff --git a/src/test/java/teetime/stage/basic/merger/dynamic/DynamicMergerTest.java b/src/test/java/teetime/stage/basic/merger/dynamic/DynamicMergerTest.java
index ee7dbf57..1af3b563 100644
--- a/src/test/java/teetime/stage/basic/merger/dynamic/DynamicMergerTest.java
+++ b/src/test/java/teetime/stage/basic/merger/dynamic/DynamicMergerTest.java
@@ -16,7 +16,7 @@ import teetime.framework.RunnableProducerStage;
 import teetime.framework.exceptionHandling.TerminatingExceptionListenerFactory;
 import teetime.stage.CollectorSink;
 import teetime.stage.InitialElementProducer;
-import teetime.stage.basic.merger.BusyWaitingRoundRobinStrategy;
+import teetime.stage.basic.merger.strategy.BusyWaitingRoundRobinStrategy;
 import teetime.util.framework.port.PortAction;
 
 public class DynamicMergerTest {
-- 
GitLab