From bbb2e1c049c40801e0c0cf834346ec63de273822 Mon Sep 17 00:00:00 2001 From: Christian Wulf <chw@informatik.uni-kiel.de> Date: Tue, 14 Jul 2015 12:15:52 +0200 Subject: [PATCH] removed dynamic port classes --- .settings/edu.umd.cs.findbugs.core.prefs | 2 +- .../java/teetime/framework/AbstractStage.java | 30 ++++++------- .../teetime/framework/DynamicInputPort.java | 44 ------------------- .../teetime/framework/DynamicOutputPort.java | 44 ------------------- .../framework/RunnableConsumerStage.java | 6 +-- src/main/java/teetime/framework/Stage.java | 4 +- .../stage/basic/distributor/Distributor.java | 5 +-- .../distributor/dynamic/CreatePortAction.java | 8 ++-- .../dynamic/DynamicDistributor.java | 5 +-- .../dynamic/PortActionListener.java | 4 +- .../distributor/dynamic/RemovePortAction.java | 6 +-- .../teetime/stage/basic/merger/Merger.java | 5 +-- .../basic/merger/dynamic/DynamicMerger.java | 6 +-- .../merger/dynamic/RemovePortAction.java | 7 ++- .../dynamic/DynamicDistributorTest.java | 8 ++-- .../distributor/dynamic/PortContainer.java | 8 ++-- .../dynamic/RemovePortActionDelegation.java | 6 +-- 17 files changed, 53 insertions(+), 145 deletions(-) delete mode 100644 src/main/java/teetime/framework/DynamicInputPort.java delete mode 100644 src/main/java/teetime/framework/DynamicOutputPort.java diff --git a/.settings/edu.umd.cs.findbugs.core.prefs b/.settings/edu.umd.cs.findbugs.core.prefs index 6102e83f..b8d923bd 100644 --- a/.settings/edu.umd.cs.findbugs.core.prefs +++ b/.settings/edu.umd.cs.findbugs.core.prefs @@ -1,5 +1,5 @@ #FindBugs User Preferences -#Mon Jul 06 14:06:35 CEST 2015 +#Fri Jul 10 13:06:00 CEST 2015 detector_threshold=2 effort=max excludefilter0=.fbExcludeFilterFile|true diff --git a/src/main/java/teetime/framework/AbstractStage.java b/src/main/java/teetime/framework/AbstractStage.java index e48efb06..22a467ce 100644 --- a/src/main/java/teetime/framework/AbstractStage.java +++ b/src/main/java/teetime/framework/AbstractStage.java @@ -283,21 +283,21 @@ public abstract class AbstractStage extends Stage { return TerminationStrategy.BY_SIGNAL; } - protected <T> DynamicOutputPort<T> createDynamicOutputPort() { - final DynamicOutputPort<T> outputPort = new DynamicOutputPort<T>(null, this, outputPorts.size()); - outputPorts.add(outputPort); - return outputPort; - } - - protected <T> DynamicInputPort<T> createDynamicInputPort() { - final DynamicInputPort<T> inputPort = new DynamicInputPort<T>(null, this, inputPorts.size()); - inputPorts.add(inputPort); - return inputPort; - } + // protected <T> DynamicOutputPort<T> createDynamicOutputPort() { + // final DynamicOutputPort<T> outputPort = new DynamicOutputPort<T>(null, this, outputPorts.size()); + // outputPorts.add(outputPort); + // return outputPort; + // } + + // protected <T> DynamicInputPort<T> createDynamicInputPort() { + // final DynamicInputPort<T> inputPort = new DynamicInputPort<T>(null, this, inputPorts.size()); + // inputPorts.add(inputPort); + // return inputPort; + // } @Override - protected void removeDynamicPort(final DynamicOutputPort<?> dynamicOutputPort) { - outputPorts.remove(dynamicOutputPort); // TODO update setIndex IF it is still used + protected void removeDynamicPort(final OutputPort<?> outputPort) { + outputPorts.remove(outputPort); // TODO update setIndex IF it is still used } protected final void addOutputPortRemovedListener(final PortRemovedListener<OutputPort<?>> outputPortRemovedListener) { @@ -305,8 +305,8 @@ public abstract class AbstractStage extends Stage { } @Override - protected void removeDynamicPort(final DynamicInputPort<?> dynamicInputPort) { - inputPorts.remove(dynamicInputPort); // TODO update setIndex IF it is still used + protected void removeDynamicPort(final InputPort<?> inputPort) { + inputPorts.remove(inputPort); // TODO update setIndex IF it is still used } protected final void addInputPortRemovedListener(final PortRemovedListener<InputPort<?>> inputPortRemovedListener) { diff --git a/src/main/java/teetime/framework/DynamicInputPort.java b/src/main/java/teetime/framework/DynamicInputPort.java deleted file mode 100644 index 1666d9cd..00000000 --- a/src/main/java/teetime/framework/DynamicInputPort.java +++ /dev/null @@ -1,44 +0,0 @@ -/** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://christianwulf.github.io/teetime) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package teetime.framework; - -/** - * - * @author Christian Wulf - * - * @param <T> - * the type of elements to be received - * - * @since 1.2 - */ -public final class DynamicInputPort<T> extends InputPort<T> { - - private int index; - - DynamicInputPort(final Class<T> type, final Stage owningStage, final int index) { - super(type, owningStage, null); - this.index = index; - } - - public int getIndex() { - return index; - } - - public void setIndex(final int index) { - this.index = index; - } - -} diff --git a/src/main/java/teetime/framework/DynamicOutputPort.java b/src/main/java/teetime/framework/DynamicOutputPort.java deleted file mode 100644 index a84bd9c4..00000000 --- a/src/main/java/teetime/framework/DynamicOutputPort.java +++ /dev/null @@ -1,44 +0,0 @@ -/** - * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://christianwulf.github.io/teetime) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package teetime.framework; - -/** - * - * @author Christian Wulf - * - * @param <T> - * the type of elements to be sent - * - * @since 1.2 - */ -public class DynamicOutputPort<T> extends OutputPort<T> { - - private int index; - - protected DynamicOutputPort(final Class<T> type, final Stage owningStage, final int index) { - super(type, owningStage, null); - this.index = index; - } - - public int getIndex() { - return index; - } - - public void setIndex(final int index) { - this.index = index; - } - -} diff --git a/src/main/java/teetime/framework/RunnableConsumerStage.java b/src/main/java/teetime/framework/RunnableConsumerStage.java index 6facffe8..7af5b4d6 100644 --- a/src/main/java/teetime/framework/RunnableConsumerStage.java +++ b/src/main/java/teetime/framework/RunnableConsumerStage.java @@ -54,11 +54,11 @@ final class RunnableConsumerStage extends AbstractRunnableStage { } private void checkForTerminationSignal(final Stage stage) { - System.out.println("checkForTerminationSignal: " + stage); // FIXME should getInputPorts() really be defined in Stage? for (InputPort<?> inputPort : stage.getInputPorts()) { - System.out.println("\tclosed: " + inputPort.isClosed() + " (" + inputPort); - if (!inputPort.isClosed()) { + if (inputPort.isClosed()) { + // stage.removeDynamicPort(inputPort); + } else { return; } } diff --git a/src/main/java/teetime/framework/Stage.java b/src/main/java/teetime/framework/Stage.java index 5c1ee1c4..5979b9eb 100644 --- a/src/main/java/teetime/framework/Stage.java +++ b/src/main/java/teetime/framework/Stage.java @@ -150,8 +150,8 @@ public abstract class Stage { this.exceptionHandler = exceptionHandler; } - protected abstract void removeDynamicPort(DynamicOutputPort<?> dynamicOutputPort); + protected abstract void removeDynamicPort(OutputPort<?> outputPort); - protected abstract void removeDynamicPort(DynamicInputPort<?> dynamicInputPort); + protected abstract void removeDynamicPort(InputPort<?> inputPort); } diff --git a/src/main/java/teetime/stage/basic/distributor/Distributor.java b/src/main/java/teetime/stage/basic/distributor/Distributor.java index 53e20270..fe7aee22 100644 --- a/src/main/java/teetime/stage/basic/distributor/Distributor.java +++ b/src/main/java/teetime/stage/basic/distributor/Distributor.java @@ -18,7 +18,6 @@ package teetime.stage.basic.distributor; import java.util.List; import teetime.framework.AbstractConsumerStage; -import teetime.framework.DynamicOutputPort; import teetime.framework.OutputPort; import teetime.stage.basic.distributor.strategy.IDistributorStrategy; import teetime.stage.basic.distributor.strategy.RoundRobinStrategy2; @@ -49,8 +48,8 @@ public class Distributor<T> extends AbstractConsumerStage<T> { this.strategy.distribute(this.getOutputPorts(), element); } - public DynamicOutputPort<T> getNewOutputPort() { - return this.createDynamicOutputPort(); + public OutputPort<T> getNewOutputPort() { // make public + return this.createOutputPort(); } public IDistributorStrategy getStrategy() { diff --git a/src/main/java/teetime/stage/basic/distributor/dynamic/CreatePortAction.java b/src/main/java/teetime/stage/basic/distributor/dynamic/CreatePortAction.java index 1e04ca08..92c3db23 100644 --- a/src/main/java/teetime/stage/basic/distributor/dynamic/CreatePortAction.java +++ b/src/main/java/teetime/stage/basic/distributor/dynamic/CreatePortAction.java @@ -19,8 +19,8 @@ import java.util.ArrayList; import java.util.List; import teetime.framework.DynamicActuator; -import teetime.framework.DynamicOutputPort; import teetime.framework.InputPort; +import teetime.framework.OutputPort; import teetime.framework.pipe.SpScPipeFactory; import teetime.framework.signal.InitializingSignal; import teetime.framework.signal.StartingSignal; @@ -41,13 +41,13 @@ public class CreatePortAction<T> implements PortAction<DynamicDistributor<T>> { @Override public void execute(final DynamicDistributor<T> dynamicDistributor) { - DynamicOutputPort<T> newOutputPort = dynamicDistributor.getNewOutputPort(); + OutputPort<T> newOutputPort = dynamicDistributor.getNewOutputPort(); processOutputPort(newOutputPort); onOutputPortCreated(dynamicDistributor, newOutputPort); } - private void processOutputPort(final DynamicOutputPort<T> newOutputPort) { + private void processOutputPort(final OutputPort<T> newOutputPort) { INTER_THREAD_PIPE_FACTORY.create(newOutputPort, inputPort); DYNAMIC_ACTUATOR.startWithinNewThread(inputPort.getOwningStage()); @@ -58,7 +58,7 @@ public class CreatePortAction<T> implements PortAction<DynamicDistributor<T>> { // FIXME pass the new thread to the analysis so that it can terminate the thread at the end } - private void onOutputPortCreated(final DynamicDistributor<T> dynamicDistributor, final DynamicOutputPort<T> newOutputPort) { + private void onOutputPortCreated(final DynamicDistributor<T> dynamicDistributor, final OutputPort<T> newOutputPort) { for (PortActionListener<T> listener : listeners) { listener.onOutputPortCreated(dynamicDistributor, newOutputPort); } 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 a05b4882..ad7f056c 100644 --- a/src/main/java/teetime/stage/basic/distributor/dynamic/DynamicDistributor.java +++ b/src/main/java/teetime/stage/basic/distributor/dynamic/DynamicDistributor.java @@ -17,7 +17,6 @@ package teetime.stage.basic.distributor.dynamic; import java.util.concurrent.BlockingQueue; -import teetime.framework.DynamicOutputPort; import teetime.framework.OutputPort; import teetime.framework.signal.TerminatingSignal; import teetime.stage.basic.distributor.Distributor; @@ -56,8 +55,8 @@ public class DynamicDistributor<T> extends Distributor<T> implements PortRemoved } @Override - public void removeDynamicPort(final DynamicOutputPort<?> dynamicOutputPort) { // make public - super.removeDynamicPort(dynamicOutputPort); + public void removeDynamicPort(final OutputPort<?> outputPort) { // make public + super.removeDynamicPort(outputPort); } public boolean addPortActionRequest(final PortAction<DynamicDistributor<T>> newPortActionRequest) { diff --git a/src/main/java/teetime/stage/basic/distributor/dynamic/PortActionListener.java b/src/main/java/teetime/stage/basic/distributor/dynamic/PortActionListener.java index 875db7e7..d160a14e 100644 --- a/src/main/java/teetime/stage/basic/distributor/dynamic/PortActionListener.java +++ b/src/main/java/teetime/stage/basic/distributor/dynamic/PortActionListener.java @@ -15,9 +15,9 @@ */ package teetime.stage.basic.distributor.dynamic; -import teetime.framework.DynamicOutputPort; +import teetime.framework.OutputPort; public interface PortActionListener<T> { - void onOutputPortCreated(DynamicDistributor<T> distributor, DynamicOutputPort<T> port); + void onOutputPortCreated(DynamicDistributor<T> distributor, OutputPort<T> port); } diff --git a/src/main/java/teetime/stage/basic/distributor/dynamic/RemovePortAction.java b/src/main/java/teetime/stage/basic/distributor/dynamic/RemovePortAction.java index 461d3fdb..2731b518 100644 --- a/src/main/java/teetime/stage/basic/distributor/dynamic/RemovePortAction.java +++ b/src/main/java/teetime/stage/basic/distributor/dynamic/RemovePortAction.java @@ -15,14 +15,14 @@ */ package teetime.stage.basic.distributor.dynamic; -import teetime.framework.DynamicOutputPort; +import teetime.framework.OutputPort; import teetime.util.framework.port.PortAction; public class RemovePortAction<T> implements PortAction<DynamicDistributor<T>> { - private final DynamicOutputPort<T> outputPort; + private final OutputPort<T> outputPort; - public RemovePortAction(final DynamicOutputPort<T> outputPort) { + public RemovePortAction(final OutputPort<T> outputPort) { if (null == outputPort) { throw new IllegalArgumentException("outputPort may not be null"); } diff --git a/src/main/java/teetime/stage/basic/merger/Merger.java b/src/main/java/teetime/stage/basic/merger/Merger.java index 2a28fed8..7043b542 100644 --- a/src/main/java/teetime/stage/basic/merger/Merger.java +++ b/src/main/java/teetime/stage/basic/merger/Merger.java @@ -22,7 +22,6 @@ import java.util.Map; import java.util.Set; import teetime.framework.AbstractStage; -import teetime.framework.DynamicInputPort; import teetime.framework.InputPort; import teetime.framework.OutputPort; import teetime.framework.signal.ISignal; @@ -112,8 +111,8 @@ public class Merger<T> extends AbstractStage { return super.getInputPorts(); } - public DynamicInputPort<T> getNewInputPort() { - return this.createDynamicInputPort(); + public InputPort<T> getNewInputPort() { + return this.createInputPort(); } public OutputPort<T> getOutputPort() { 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 6a513491..5559c105 100644 --- a/src/main/java/teetime/stage/basic/merger/dynamic/DynamicMerger.java +++ b/src/main/java/teetime/stage/basic/merger/dynamic/DynamicMerger.java @@ -17,7 +17,7 @@ package teetime.stage.basic.merger.dynamic; import java.util.concurrent.BlockingQueue; -import teetime.framework.DynamicInputPort; +import teetime.framework.InputPort; import teetime.stage.basic.merger.Merger; import teetime.stage.basic.merger.strategy.IMergerStrategy; import teetime.util.framework.port.PortAction; @@ -43,8 +43,8 @@ public class DynamicMerger<T> extends Merger<T> { } @Override - public void removeDynamicPort(final DynamicInputPort<?> dynamicInputPort) { // make public - super.removeDynamicPort(dynamicInputPort); + public void removeDynamicPort(final InputPort<?> inputPort) { // make public + super.removeDynamicPort(inputPort); } public boolean addPortActionRequest(final PortAction<DynamicMerger<T>> newPortActionRequest) { diff --git a/src/main/java/teetime/stage/basic/merger/dynamic/RemovePortAction.java b/src/main/java/teetime/stage/basic/merger/dynamic/RemovePortAction.java index d3fc845a..38141b0f 100644 --- a/src/main/java/teetime/stage/basic/merger/dynamic/RemovePortAction.java +++ b/src/main/java/teetime/stage/basic/merger/dynamic/RemovePortAction.java @@ -17,15 +17,14 @@ package teetime.stage.basic.merger.dynamic; import java.util.List; -import teetime.framework.DynamicInputPort; import teetime.framework.InputPort; import teetime.util.framework.port.PortAction; public class RemovePortAction<T> implements PortAction<DynamicMerger<T>> { - private final DynamicInputPort<T> inputPort; + private final InputPort<T> inputPort; - public RemovePortAction(final DynamicInputPort<T> inputPort) { + public RemovePortAction(final InputPort<T> inputPort) { super(); this.inputPort = inputPort; } @@ -42,6 +41,6 @@ public class RemovePortAction<T> implements PortAction<DynamicMerger<T>> { inputPortsToRemove = inputPort; } - dynamicMerger.removeDynamicPort((DynamicInputPort<?>) inputPortsToRemove); + dynamicMerger.removeDynamicPort(inputPortsToRemove); } } diff --git a/src/test/java/teetime/stage/basic/distributor/dynamic/DynamicDistributorTest.java b/src/test/java/teetime/stage/basic/distributor/dynamic/DynamicDistributorTest.java index 5aa70849..2a8775ec 100644 --- a/src/test/java/teetime/stage/basic/distributor/dynamic/DynamicDistributorTest.java +++ b/src/test/java/teetime/stage/basic/distributor/dynamic/DynamicDistributorTest.java @@ -26,8 +26,8 @@ import java.util.List; import org.junit.Test; import teetime.framework.Configuration; -import teetime.framework.DynamicOutputPort; import teetime.framework.Execution; +import teetime.framework.OutputPort; import teetime.framework.Stage; import teetime.stage.CollectorSink; import teetime.stage.InitialElementProducer; @@ -100,7 +100,7 @@ public class DynamicDistributorTest { assertThat(config.getOutputElements(), contains(0, 1, 2, 4, 5)); assertValuesForIndex(inputActions[0], Collections.<Integer> emptyList()); - assertValuesForIndex(inputActions[2], Arrays.asList(3)); + assertValuesForIndex(inputActions[2], Arrays.asList(3)); // FIXME fails sometimes assertValuesForIndex(inputActions[3], Collections.<Integer> emptyList()); } @@ -109,7 +109,7 @@ public class DynamicDistributorTest { CreatePortAction<Integer> portAction = new CreatePortAction<Integer>(newStage.getInputPort()); portAction.addPortActionListener(new PortActionListener<Integer>() { @Override - public void onOutputPortCreated(final DynamicDistributor<Integer> distributor, final DynamicOutputPort<Integer> port) { + public void onOutputPortCreated(final DynamicDistributor<Integer> distributor, final OutputPort<Integer> port) { portContainer.setPort(port); } }); @@ -122,7 +122,7 @@ public class DynamicDistributorTest { @SuppressWarnings("unchecked") CollectorSink<Integer> collectorSink = (CollectorSink<Integer>) stage; - assertThat(collectorSink.getElements(), is(values)); + assertThat(collectorSink.getElements(), is(values)); // FIXME fails sometimes with a ConcurrentModificationException } private static class DynamicDistributorTestConfig<T> extends Configuration { diff --git a/src/test/java/teetime/stage/basic/distributor/dynamic/PortContainer.java b/src/test/java/teetime/stage/basic/distributor/dynamic/PortContainer.java index 114c59ed..2646e79c 100644 --- a/src/test/java/teetime/stage/basic/distributor/dynamic/PortContainer.java +++ b/src/test/java/teetime/stage/basic/distributor/dynamic/PortContainer.java @@ -15,7 +15,7 @@ */ package teetime.stage.basic.distributor.dynamic; -import teetime.framework.DynamicOutputPort; +import teetime.framework.OutputPort; /** * Represents a container that eventually holds the output port that a {@link RemovePortAction} can use. @@ -26,15 +26,15 @@ import teetime.framework.DynamicOutputPort; */ final class PortContainer<T> { - private DynamicOutputPort<T> port; + private OutputPort<T> port; PortContainer() {} - public void setPort(final DynamicOutputPort<T> port) { + public void setPort(final OutputPort<T> port) { this.port = port; } - public DynamicOutputPort<T> getPort() { + public OutputPort<T> getPort() { return port; } diff --git a/src/test/java/teetime/stage/basic/distributor/dynamic/RemovePortActionDelegation.java b/src/test/java/teetime/stage/basic/distributor/dynamic/RemovePortActionDelegation.java index 89cd2329..52e4e331 100644 --- a/src/test/java/teetime/stage/basic/distributor/dynamic/RemovePortActionDelegation.java +++ b/src/test/java/teetime/stage/basic/distributor/dynamic/RemovePortActionDelegation.java @@ -15,7 +15,7 @@ */ package teetime.stage.basic.distributor.dynamic; -import teetime.framework.DynamicOutputPort; +import teetime.framework.OutputPort; import teetime.util.framework.port.PortAction; /** @@ -35,8 +35,8 @@ public class RemovePortActionDelegation<T> implements PortAction<DynamicDistribu @Override public void execute(final DynamicDistributor<T> dynamicDistributor) { - DynamicOutputPort<?> dynamicOutputPort = portContainer.getPort(); - dynamicDistributor.removeDynamicPort(dynamicOutputPort); + OutputPort<?> outputPort = portContainer.getPort(); + dynamicDistributor.removeDynamicPort(outputPort); } } -- GitLab