diff --git a/src/main/java/teetime/framework/AbstractPipe.java b/src/main/java/teetime/framework/AbstractPipe.java index d91e5fdcaa17f87b8f075515d0661ba9d0a336f3..19df8e3a096b218a77146cea1b94f68916896478 100644 --- a/src/main/java/teetime/framework/AbstractPipe.java +++ b/src/main/java/teetime/framework/AbstractPipe.java @@ -28,6 +28,7 @@ public abstract class AbstractPipe implements IPipe { */ protected final Stage cachedTargetStage; + private final OutputPort<?> sourcePort; private final InputPort<?> targetPort; protected <T> AbstractPipe(final OutputPort<? extends T> sourcePort, final InputPort<T> targetPort) { @@ -41,13 +42,19 @@ public abstract class AbstractPipe implements IPipe { sourcePort.setPipe(this); targetPort.setPipe(this); + this.sourcePort = sourcePort; this.targetPort = targetPort; this.cachedTargetStage = targetPort.getOwningStage(); } + @Override + public OutputPort<?> getSourcePort() { + return sourcePort; + } + @Override public InputPort<?> getTargetPort() { - return this.targetPort; + return targetPort; } @Override diff --git a/src/main/java/teetime/framework/pipe/DummyPipe.java b/src/main/java/teetime/framework/pipe/DummyPipe.java index 869355fc43a0bbef95399d6e83b1ed484488067d..c67015f1c4f5ebf6293016429e52ddeaf78b3e07 100644 --- a/src/main/java/teetime/framework/pipe/DummyPipe.java +++ b/src/main/java/teetime/framework/pipe/DummyPipe.java @@ -16,6 +16,7 @@ package teetime.framework.pipe; import teetime.framework.InputPort; +import teetime.framework.OutputPort; import teetime.framework.signal.ISignal; /** @@ -51,6 +52,11 @@ public final class DummyPipe implements IPipe { return 0; } + @Override + public OutputPort<?> getSourcePort() { + return null; + } + @Override public InputPort<Object> getTargetPort() { return null; diff --git a/src/main/java/teetime/framework/pipe/IPipe.java b/src/main/java/teetime/framework/pipe/IPipe.java index 017ed340d1822a6e48fd693405cd42cce936eb3c..a28a3419b4c9bee5352d20ab0c7169ec32c2d940 100644 --- a/src/main/java/teetime/framework/pipe/IPipe.java +++ b/src/main/java/teetime/framework/pipe/IPipe.java @@ -16,6 +16,7 @@ package teetime.framework.pipe; import teetime.framework.InputPort; +import teetime.framework.OutputPort; import teetime.framework.signal.ISignal; /** @@ -61,9 +62,12 @@ public interface IPipe { Object removeLast(); /** - * Retrieves the receiving port. - * - * @return InputPort which is connected to the pipe. + * @return the output port that is connected to the pipe. + */ + OutputPort<?> getSourcePort(); + + /** + * @return the input port that is connected to the pipe. */ InputPort<?> getTargetPort(); diff --git a/src/main/java/teetime/framework/pipe/InstantiationPipe.java b/src/main/java/teetime/framework/pipe/InstantiationPipe.java index 6f5f746c994709be72a3093acccebeafb7e6ec78..de753e9e47791848a41b1ad894a4ecc19b621e02 100644 --- a/src/main/java/teetime/framework/pipe/InstantiationPipe.java +++ b/src/main/java/teetime/framework/pipe/InstantiationPipe.java @@ -23,10 +23,12 @@ public class InstantiationPipe implements IPipe { private static final String ERROR_MESSAGE = "This must not be called while executing the configuration"; + private final OutputPort<?> sourcePort; private final InputPort<?> targetPort; private final int capacity; public <T> InstantiationPipe(final OutputPort<? extends T> sourcePort, final InputPort<T> targetPort, final int capacity) { + this.sourcePort = sourcePort; this.targetPort = targetPort; this.capacity = capacity; sourcePort.setPipe(this); @@ -37,9 +39,14 @@ public class InstantiationPipe implements IPipe { return capacity; } + @Override + public OutputPort<?> getSourcePort() { + return sourcePort; + } + @Override public InputPort<?> getTargetPort() { - return this.targetPort; + return targetPort; } @Override diff --git a/src/test/java/teetime/stage/basic/merger/MergerTestingPipe.java b/src/test/java/teetime/stage/basic/merger/MergerTestingPipe.java index 9aa0bf16ce2f2458f39e1bf33533adb716c422c9..ad77ffde99e487473817ea1368ad3dbd045a0bbe 100644 --- a/src/test/java/teetime/stage/basic/merger/MergerTestingPipe.java +++ b/src/test/java/teetime/stage/basic/merger/MergerTestingPipe.java @@ -16,6 +16,7 @@ package teetime.stage.basic.merger; import teetime.framework.InputPort; +import teetime.framework.OutputPort; import teetime.framework.pipe.IPipe; import teetime.framework.signal.ISignal; import teetime.framework.signal.StartingSignal; @@ -73,6 +74,11 @@ class MergerTestingPipe implements IPipe { return null; } + @Override + public OutputPort<?> getSourcePort() { + return null; + } + @Override public InputPort<?> getTargetPort() { return null;