diff --git a/src/main/java/teetime/stage/InstanceOfFilter.java b/src/main/java/teetime/stage/InstanceOfFilter.java index 76dab9b286b065bbf44f5aab0b5c680054783187..791b2da2ecc1089ef3e70018e48d2264ec542ee9 100644 --- a/src/main/java/teetime/stage/InstanceOfFilter.java +++ b/src/main/java/teetime/stage/InstanceOfFilter.java @@ -19,12 +19,13 @@ import teetime.framework.AbstractConsumerStage; import teetime.framework.OutputPort; /** - * @author Jan Waller, Nils Christian Ehmke, Christian Wulf + * @author Jan Waller, Nils Christian Ehmke, Christian Wulf, Nelson Tavares de Sousa * */ -public final class InstanceOfFilter<I, O> extends AbstractConsumerStage<I> { +public final class InstanceOfFilter<I, O extends I> extends AbstractConsumerStage<I> { - private final OutputPort<O> outputPort = this.createOutputPort(); + private final OutputPort<O> matchedOutputPort = this.createOutputPort(); + private final OutputPort<I> mismatchedOutputPort = this.createOutputPort(); private Class<O> type; @@ -36,11 +37,12 @@ public final class InstanceOfFilter<I, O> extends AbstractConsumerStage<I> { @Override protected void execute(final I element) { if (this.type.isInstance(element)) { - outputPort.send((O) element); - } else { // swallow up the element + matchedOutputPort.send((O) element); + } else { if (this.logger.isDebugEnabled()) { this.logger.debug("element is not an instance of " + this.type.getName() + ", but of " + element.getClass()); } + mismatchedOutputPort.send(element); } } @@ -52,8 +54,23 @@ public final class InstanceOfFilter<I, O> extends AbstractConsumerStage<I> { this.type = type; } + /** + * + * @return the output port that outputs + * + * @deprecated 1.1. Use {@link #getMatchedOutputPort()} instead. + */ + @Deprecated public OutputPort<O> getOutputPort() { - return this.outputPort; + return matchedOutputPort; + } + + public OutputPort<O> getMatchedOutputPort() { + return matchedOutputPort; + } + + public OutputPort<I> getMismatchedOutputPort() { + return mismatchedOutputPort; } } diff --git a/src/site/markdown/wiki b/src/site/markdown/wiki index 63ccbbc87bd2c0e6599ca91502149dba3cfb99de..0e4474577e1f49bc96e734c286b2d9e0363895e8 160000 --- a/src/site/markdown/wiki +++ b/src/site/markdown/wiki @@ -1 +1 @@ -Subproject commit 63ccbbc87bd2c0e6599ca91502149dba3cfb99de +Subproject commit 0e4474577e1f49bc96e734c286b2d9e0363895e8 diff --git a/src/test/java/teetime/stage/InstanceOfFilterTest.java b/src/test/java/teetime/stage/InstanceOfFilterTest.java index efbe1f4abf1a81bb9ba2e8c9a6e11750802147f9..ea1e93b644ffb88c48184c1a2a37e8d403afeb2d 100644 --- a/src/test/java/teetime/stage/InstanceOfFilterTest.java +++ b/src/test/java/teetime/stage/InstanceOfFilterTest.java @@ -45,7 +45,7 @@ public class InstanceOfFilterTest { final List<Clazz> results = new ArrayList<InstanceOfFilterTest.Clazz>(); final Object clazz = new Clazz(); - test(filter).and().send(clazz).to(filter.getInputPort()).and().receive(results).from(filter.getOutputPort()).start(); + test(filter).and().send(clazz).to(filter.getInputPort()).and().receive(results).from(filter.getMatchedOutputPort()).start(); assertThat(results, contains(clazz)); } @@ -55,7 +55,7 @@ public class InstanceOfFilterTest { final List<Clazz> results = new ArrayList<InstanceOfFilterTest.Clazz>(); final Object clazz = new SubClazz(); - test(filter).and().send(clazz).to(filter.getInputPort()).and().receive(results).from(filter.getOutputPort()).start(); + test(filter).and().send(clazz).to(filter.getInputPort()).and().receive(results).from(filter.getMatchedOutputPort()).start(); assertThat(results, contains(clazz)); } @@ -65,7 +65,7 @@ public class InstanceOfFilterTest { final List<Clazz> results = new ArrayList<InstanceOfFilterTest.Clazz>(); final Object object = new Object(); - test(filter).and().send(object).to(filter.getInputPort()).and().receive(results).from(filter.getOutputPort()).start(); + test(filter).and().send(object).to(filter.getInputPort()).and().receive(results).from(filter.getMatchedOutputPort()).start(); assertThat(results, is(empty())); } @@ -81,7 +81,7 @@ public class InstanceOfFilterTest { input.add(new SubClazz()); input.add(new Object()); - test(filter).and().send(input).to(filter.getInputPort()).and().receive(results).from(filter.getOutputPort()).start(); + test(filter).and().send(input).to(filter.getInputPort()).and().receive(results).from(filter.getMatchedOutputPort()).start(); assertThat(results, hasSize(2)); }