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);
     }



Reply via email to