From 344ac678b57a5634bd3f69bd5c4f4c0a3674fd04 Mon Sep 17 00:00:00 2001 From: Nelson Tavares de Sousa <ntd@informatik.uni-kiel.de> Date: Fri, 17 Apr 2015 15:49:07 +0200 Subject: [PATCH] refactored visitor and adopted changes to all classes; made the exception test more restrictive --- src/main/java/teetime/framework/Analysis.java | 8 +------- src/main/java/teetime/framework/IStageVisitor.java | 2 +- .../java/teetime/framework/IntraStageVisitor.java | 2 +- src/main/java/teetime/framework/Traversor.java | 11 +++-------- src/test/java/teetime/framework/TraversorTest.java | 2 +- .../exceptionHandling/ExceptionHandlingTest.java | 5 ++++- 6 files changed, 11 insertions(+), 19 deletions(-) diff --git a/src/main/java/teetime/framework/Analysis.java b/src/main/java/teetime/framework/Analysis.java index b71cfd55..dfbc4bbb 100644 --- a/src/main/java/teetime/framework/Analysis.java +++ b/src/main/java/teetime/framework/Analysis.java @@ -17,7 +17,6 @@ package teetime.framework; import java.lang.Thread.UncaughtExceptionHandler; import java.util.Collection; -import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Set; @@ -162,8 +161,6 @@ public final class Analysis<T extends AnalysisConfiguration> implements Uncaught private Thread createThread(final AbstractExceptionListener newListener, final Set<Stage> intraStages, final Stage stage, final AbstractRunnableStage runnable) { final Thread thread = new Thread(runnable); - stage.setExceptionHandler(newListener); - stage.setOwningThread(thread); for (Stage intraStage : intraStages) { intraStage.setOwningThread(thread); intraStage.setExceptionHandler(newListener); @@ -324,10 +321,7 @@ public final class Analysis<T extends AnalysisConfiguration> implements Uncaught private Set<Stage> traverseIntraStages(final Stage stage) { final Traversor traversor = new Traversor(new IntraStageVisitor()); - if (stage.getOutputPorts().length == 0) { - return new HashSet<Stage>(); - } - traversor.traverse(stage, stage.getOutputPorts()[0].getPipe()); + traversor.traverse(stage); return traversor.getVisitedStage(); } } diff --git a/src/main/java/teetime/framework/IStageVisitor.java b/src/main/java/teetime/framework/IStageVisitor.java index 2b27c598..e6ff08c7 100644 --- a/src/main/java/teetime/framework/IStageVisitor.java +++ b/src/main/java/teetime/framework/IStageVisitor.java @@ -23,6 +23,6 @@ public interface IStageVisitor { CONTINUE, STOP } - VisitorBehavior visit(Stage stage, IPipe inputPipe); + VisitorBehavior visit(IPipe inputPipe); } diff --git a/src/main/java/teetime/framework/IntraStageVisitor.java b/src/main/java/teetime/framework/IntraStageVisitor.java index fb903e06..b3dba395 100644 --- a/src/main/java/teetime/framework/IntraStageVisitor.java +++ b/src/main/java/teetime/framework/IntraStageVisitor.java @@ -22,7 +22,7 @@ public class IntraStageVisitor implements IStageVisitor { public IntraStageVisitor() {} @Override - public VisitorBehavior visit(final Stage stage, final IPipe inputPipe) { + public VisitorBehavior visit(final IPipe inputPipe) { if (inputPipe instanceof AbstractIntraThreadPipe) { return VisitorBehavior.CONTINUE; } diff --git a/src/main/java/teetime/framework/Traversor.java b/src/main/java/teetime/framework/Traversor.java index dd873d1b..f81aaefd 100644 --- a/src/main/java/teetime/framework/Traversor.java +++ b/src/main/java/teetime/framework/Traversor.java @@ -30,12 +30,7 @@ public class Traversor { this.stageVisitor = stageVisitor; } - public void traverse(final Stage stage, final IPipe inputPipe) { - - VisitorBehavior visitorBehavior = stageVisitor.visit(stage, inputPipe); - if (visitorBehavior == VisitorBehavior.STOP) { - return; - } + public void traverse(final Stage stage) { if (!visitedStage.add(stage)) { return; @@ -44,9 +39,9 @@ public class Traversor { OutputPort<?>[] outputPorts = stage.getOutputPorts(); for (OutputPort<?> outputPort : outputPorts) { IPipe pipe = outputPort.getPipe(); - if (null != pipe) { + if (null != pipe && stageVisitor.visit(pipe) == VisitorBehavior.CONTINUE) { Stage owningStage = pipe.getTargetPort().getOwningStage(); - traverse(owningStage, pipe); // recursive call + traverse(owningStage); // recursive call } } } diff --git a/src/test/java/teetime/framework/TraversorTest.java b/src/test/java/teetime/framework/TraversorTest.java index 197a66d2..209fb6c8 100644 --- a/src/test/java/teetime/framework/TraversorTest.java +++ b/src/test/java/teetime/framework/TraversorTest.java @@ -28,7 +28,7 @@ public class TraversorTest { @Test public void traverse() { TestConfiguration tc = new TestConfiguration(); - traversor.traverse(tc.init, tc.init.getOutputPort().getPipe()); + traversor.traverse(tc.init); Set<Stage> comparingSet = new HashSet<Stage>(); comparingSet.add(tc.init); comparingSet.add(tc.f2b); diff --git a/src/test/java/teetime/framework/exceptionHandling/ExceptionHandlingTest.java b/src/test/java/teetime/framework/exceptionHandling/ExceptionHandlingTest.java index 0b2d44c1..e50b59f6 100644 --- a/src/test/java/teetime/framework/exceptionHandling/ExceptionHandlingTest.java +++ b/src/test/java/teetime/framework/exceptionHandling/ExceptionHandlingTest.java @@ -18,6 +18,7 @@ package teetime.framework.exceptionHandling; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; import org.junit.Test; @@ -52,12 +53,14 @@ public class ExceptionHandlingTest { @Test public void forAFewTimes() { for (int i = 0; i < 100; i++) { + boolean exceptionArised = false; try { exceptionPassingAndTermination(); terminatesAllStages(); } catch (AnalysisException e) { - // Correct behavior + exceptionArised = true; } + assertTrue(exceptionArised); } } } -- GitLab