commit 95a45ed4c1a55c3cc0bbdd2a0d18730375bb1a07 Author: Mauro Talevi <mauro.tal...@aquilonia.org> AuthorDate: Wed May 9 11:04:11 2012 +0200 Commit: Mauro Talevi <mauro.tal...@aquilonia.org> CommitDate: Wed May 9 11:04:11 2012 +0200
JBEHAVE-777: Better serialisation of performable tree, replacing executable steps with step results. diff --git a/jbehave-core/src/main/java/org/jbehave/core/embedder/PerformableTree.java b/jbehave-core/src/main/java/org/jbehave/core/embedder/PerformableTree.java index 67d776f..66f5ba9 100644 --- a/jbehave-core/src/main/java/org/jbehave/core/embedder/PerformableTree.java +++ b/jbehave-core/src/main/java/org/jbehave/core/embedder/PerformableTree.java @@ -251,16 +251,17 @@ public class PerformableTree { } public interface State { - State run(Step step, StoryReporter reporter, UUIDExceptionWrapper storyFailureIfItHappened); + State run(Step step, List<StepResult> results, StoryReporter reporter, UUIDExceptionWrapper storyFailureIfItHappened); } private final static class FineSoFar implements State { - public State run(Step step, StoryReporter reporter, UUIDExceptionWrapper storyFailureIfItHappened) { + public State run(Step step, List<StepResult> results, StoryReporter reporter, UUIDExceptionWrapper storyFailureIfItHappened) { if (step instanceof ParameterisedStep) { ((ParameterisedStep) step).describeTo(reporter); } StepResult result = step.perform(storyFailureIfItHappened); + results.add(result); result.describeTo(reporter); UUIDExceptionWrapper stepFailure = result.getFailure(); if (stepFailure == null) { @@ -286,8 +287,9 @@ public class PerformableTree { this.scenarioFailure = scenarioFailure; } - public State run(Step step, StoryReporter reporter, UUIDExceptionWrapper storyFailure) { + public State run(Step step, List<StepResult> results, StoryReporter reporter, UUIDExceptionWrapper storyFailure) { StepResult result = step.doNotPerform(storyFailure); + results.add(result); result.describeTo(reporter); return this; } @@ -696,7 +698,8 @@ public class PerformableTree { public static class PerformableSteps implements Performable { - private final List<Step> steps; + private transient final List<Step> steps; + private final List<StepResult> results = new ArrayList<StepResult>(); public PerformableSteps() { this(null); @@ -714,7 +717,7 @@ public class PerformableTree { StoryReporter reporter = context.reporter(); for (Step step : steps) { context.interruptIfCancelled(); - state = state.run(step, reporter, null); + state = state.run(step, results, reporter, null); } context.stateIs(state); generatePendingStepMethods(context, steps); diff --git a/jbehave-core/src/main/java/org/jbehave/core/model/ExamplesTable.java b/jbehave-core/src/main/java/org/jbehave/core/model/ExamplesTable.java index a5cb508..0948968 100755 --- a/jbehave-core/src/main/java/org/jbehave/core/model/ExamplesTable.java +++ b/jbehave-core/src/main/java/org/jbehave/core/model/ExamplesTable.java @@ -145,8 +145,9 @@ public class ExamplesTable { private final String headerSeparator; private final String valueSeparator; private final String ignorableSeparator; - private final ParameterConverters parameterConverters; - private final TableTransformers tableTransformers; + private final transient ParameterConverters parameterConverters; + private final transient TableTransformers tableTransformers; + private final transient Row defaults; private final List<String> headers = new ArrayList<String>(); private final List<Map<String, String>> data = new ArrayList<Map<String, String>>(); private final Properties properties = new Properties(); @@ -154,8 +155,6 @@ public class ExamplesTable { private Map<String, String> namedParameters = new HashMap<String, String>(); private boolean trim = true; - private final Row defaults; - public ExamplesTable(String tableAsString) { this(tableAsString, HEADER_SEPARATOR, VALUE_SEPARATOR); }