Title: [921] trunk/jbehave-core/src/java/org/jbehave/scenario: Renamed ScenarioFileLoader to ClasspathFileDefiner, more in line with interface and the scope of implementation which loads scenario resources from classpath.
Revision
921
Author
mauro
Date
2008-09-03 02:50:58 -0500 (Wed, 03 Sep 2008)

Log Message

Renamed ScenarioFileLoader to ClasspathFileDefiner, more in line with interface and the scope of implementation which loads scenario resources from classpath.
Renamed ScenarioFileNameResolver to ScenarioNameResolver to better reflect the generic nature of scenario resources, ie that they are not necessarily Java Files.

Modified Paths

Added Paths

Removed Paths

Diff

Modified: trunk/examples/gameoflife/src/scenario/com/lunivore/gameoflife/ICanToggleACell.java (920 => 921)

--- trunk/examples/gameoflife/src/scenario/com/lunivore/gameoflife/ICanToggleACell.java	2008-09-03 07:27:24 UTC (rev 920)
+++ trunk/examples/gameoflife/src/scenario/com/lunivore/gameoflife/ICanToggleACell.java	2008-09-03 07:50:58 UTC (rev 921)
@@ -3,7 +3,7 @@
 import org.jbehave.scenario.PropertyBasedConfiguration;
 import org.jbehave.scenario.Scenario;
 import org.jbehave.scenario.parser.PatternScenarioParser;
-import org.jbehave.scenario.parser.ScenarioFileLoader;
+import org.jbehave.scenario.parser.ClasspathScenarioDefiner;
 import org.jbehave.scenario.parser.UnderscoredCamelCaseResolver;
 
 import com.lunivore.gameoflife.steps.GridSteps;
@@ -17,8 +17,8 @@
     public ICanToggleACell(final ClassLoader classLoader) {
         super(new PropertyBasedConfiguration() {
             @Override
-            public ScenarioFileLoader forDefiningScenarios() {
-                return new ScenarioFileLoader(new UnderscoredCamelCaseResolver(), new PatternScenarioParser(this),
+            public ClasspathScenarioDefiner forDefiningScenarios() {
+                return new ClasspathScenarioDefiner(new UnderscoredCamelCaseResolver(), new PatternScenarioParser(this),
                         classLoader);
             }
         }, new GridSteps());

Modified: trunk/examples/gameoflife/src/scenario/com/lunivore/gameoflife/TheGridStartsEmpty.java (920 => 921)

--- trunk/examples/gameoflife/src/scenario/com/lunivore/gameoflife/TheGridStartsEmpty.java	2008-09-03 07:27:24 UTC (rev 920)
+++ trunk/examples/gameoflife/src/scenario/com/lunivore/gameoflife/TheGridStartsEmpty.java	2008-09-03 07:50:58 UTC (rev 921)
@@ -3,7 +3,7 @@
 import org.jbehave.scenario.PropertyBasedConfiguration;
 import org.jbehave.scenario.Scenario;
 import org.jbehave.scenario.parser.PatternScenarioParser;
-import org.jbehave.scenario.parser.ScenarioFileLoader;
+import org.jbehave.scenario.parser.ClasspathScenarioDefiner;
 import org.jbehave.scenario.parser.UnderscoredCamelCaseResolver;
 
 import com.lunivore.gameoflife.steps.GridSteps;
@@ -17,8 +17,8 @@
     public TheGridStartsEmpty(final ClassLoader classLoader) {
         super(new PropertyBasedConfiguration() {
             @Override
-            public ScenarioFileLoader forDefiningScenarios() {
-                return new ScenarioFileLoader(new UnderscoredCamelCaseResolver(), new PatternScenarioParser(this),
+            public ClasspathScenarioDefiner forDefiningScenarios() {
+                return new ClasspathScenarioDefiner(new UnderscoredCamelCaseResolver(), new PatternScenarioParser(this),
                         classLoader);
             }
         }, new GridSteps());

Modified: trunk/examples/noughtsandcrosses/src/scenario/com/lunivore/noughtsandcrosses/PlayersCanHazTurns.java (920 => 921)

--- trunk/examples/noughtsandcrosses/src/scenario/com/lunivore/noughtsandcrosses/PlayersCanHazTurns.java	2008-09-03 07:27:24 UTC (rev 920)
+++ trunk/examples/noughtsandcrosses/src/scenario/com/lunivore/noughtsandcrosses/PlayersCanHazTurns.java	2008-09-03 07:50:58 UTC (rev 921)
@@ -4,7 +4,7 @@
 import org.jbehave.scenario.Scenario;
 import org.jbehave.scenario.definition.KeyWords;
 import org.jbehave.scenario.parser.PatternScenarioParser;
-import org.jbehave.scenario.parser.ScenarioFileLoader;
+import org.jbehave.scenario.parser.ClasspathScenarioDefiner;
 import org.jbehave.scenario.parser.UnderscoredCamelCaseResolver;
 
 import com.lunivore.noughtsandcrosses.steps.LolCatzSteps;
@@ -24,8 +24,8 @@
             public KeyWords keywords() {
                 return new KeyWords("I can haz", "Gief", "Wen", "Den", "And");
             }
-            public ScenarioFileLoader forDefiningScenarios() {
-                return new ScenarioFileLoader(new UnderscoredCamelCaseResolver(), new PatternScenarioParser(this),
+            public ClasspathScenarioDefiner forDefiningScenarios() {
+                return new ClasspathScenarioDefiner(new UnderscoredCamelCaseResolver(), new PatternScenarioParser(this),
                         classLoader);
             }
         }, new LolCatzSteps());

Modified: trunk/examples/noughtsandcrosses/src/scenario/com/lunivore/noughtsandcrosses/PlayersCanTakeTurns.java (920 => 921)

--- trunk/examples/noughtsandcrosses/src/scenario/com/lunivore/noughtsandcrosses/PlayersCanTakeTurns.java	2008-09-03 07:27:24 UTC (rev 920)
+++ trunk/examples/noughtsandcrosses/src/scenario/com/lunivore/noughtsandcrosses/PlayersCanTakeTurns.java	2008-09-03 07:50:58 UTC (rev 921)
@@ -3,7 +3,7 @@
 import org.jbehave.scenario.MostUsefulConfiguration;
 import org.jbehave.scenario.Scenario;
 import org.jbehave.scenario.parser.PatternScenarioParser;
-import org.jbehave.scenario.parser.ScenarioFileLoader;
+import org.jbehave.scenario.parser.ClasspathScenarioDefiner;
 import org.jbehave.scenario.parser.UnderscoredCamelCaseResolver;
 
 import com.lunivore.noughtsandcrosses.steps.GridSteps;
@@ -16,8 +16,8 @@
 
     public PlayersCanTakeTurns(final ClassLoader classLoader) {
         super(new MostUsefulConfiguration() {
-            public ScenarioFileLoader forDefiningScenarios() {
-                return new ScenarioFileLoader(new UnderscoredCamelCaseResolver(), new PatternScenarioParser(this),
+            public ClasspathScenarioDefiner forDefiningScenarios() {
+                return new ClasspathScenarioDefiner(new UnderscoredCamelCaseResolver(), new PatternScenarioParser(this),
                         classLoader);
             }
         }, new GridSteps());

Modified: trunk/examples/noughtsandcrosses/src/scenario/com/lunivore/noughtsandcrosses/TheGridStartsEmpty.java (920 => 921)

--- trunk/examples/noughtsandcrosses/src/scenario/com/lunivore/noughtsandcrosses/TheGridStartsEmpty.java	2008-09-03 07:27:24 UTC (rev 920)
+++ trunk/examples/noughtsandcrosses/src/scenario/com/lunivore/noughtsandcrosses/TheGridStartsEmpty.java	2008-09-03 07:50:58 UTC (rev 921)
@@ -3,7 +3,7 @@
 import org.jbehave.scenario.PropertyBasedConfiguration;
 import org.jbehave.scenario.Scenario;
 import org.jbehave.scenario.parser.PatternScenarioParser;
-import org.jbehave.scenario.parser.ScenarioFileLoader;
+import org.jbehave.scenario.parser.ClasspathScenarioDefiner;
 import org.jbehave.scenario.parser.UnderscoredCamelCaseResolver;
 
 import com.lunivore.noughtsandcrosses.steps.GridSteps;
@@ -17,8 +17,8 @@
     public TheGridStartsEmpty(final ClassLoader classLoader) {
         super(new PropertyBasedConfiguration() {
             @Override
-            public ScenarioFileLoader forDefiningScenarios() {
-                return new ScenarioFileLoader(new UnderscoredCamelCaseResolver(), new PatternScenarioParser(this),
+            public ClasspathScenarioDefiner forDefiningScenarios() {
+                return new ClasspathScenarioDefiner(new UnderscoredCamelCaseResolver(), new PatternScenarioParser(this),
                         classLoader);
             }
         }, new GridSteps());

Modified: trunk/examples/noughtsandcrosses/src/scenario/com/lunivore/noughtsandcrosses/ThreeInARowWins.java (920 => 921)

--- trunk/examples/noughtsandcrosses/src/scenario/com/lunivore/noughtsandcrosses/ThreeInARowWins.java	2008-09-03 07:27:24 UTC (rev 920)
+++ trunk/examples/noughtsandcrosses/src/scenario/com/lunivore/noughtsandcrosses/ThreeInARowWins.java	2008-09-03 07:50:58 UTC (rev 921)
@@ -3,7 +3,7 @@
 import org.jbehave.scenario.PropertyBasedConfiguration;
 import org.jbehave.scenario.Scenario;
 import org.jbehave.scenario.parser.PatternScenarioParser;
-import org.jbehave.scenario.parser.ScenarioFileLoader;
+import org.jbehave.scenario.parser.ClasspathScenarioDefiner;
 import org.jbehave.scenario.parser.UnderscoredCamelCaseResolver;
 
 import com.lunivore.noughtsandcrosses.steps.GridSteps;
@@ -17,8 +17,8 @@
     public ThreeInARowWins(final ClassLoader classLoader) {
         super(new PropertyBasedConfiguration() {
             @Override
-            public ScenarioFileLoader forDefiningScenarios() {
-                return new ScenarioFileLoader(new UnderscoredCamelCaseResolver(), new PatternScenarioParser(this),
+            public ClasspathScenarioDefiner forDefiningScenarios() {
+                return new ClasspathScenarioDefiner(new UnderscoredCamelCaseResolver(), new PatternScenarioParser(this),
                         classLoader);
             }
         }, new GridSteps());

Modified: trunk/examples/trader/src/main/java/org/jbehave/examples/trader/scenarios/StatusAlertCanBeActivated.java (920 => 921)

--- trunk/examples/trader/src/main/java/org/jbehave/examples/trader/scenarios/StatusAlertCanBeActivated.java	2008-09-03 07:27:24 UTC (rev 920)
+++ trunk/examples/trader/src/main/java/org/jbehave/examples/trader/scenarios/StatusAlertCanBeActivated.java	2008-09-03 07:50:58 UTC (rev 921)
@@ -5,7 +5,7 @@
 import org.jbehave.scenario.Scenario;
 import org.jbehave.scenario.parser.PatternScenarioParser;
 import org.jbehave.scenario.parser.ScenarioDefiner;
-import org.jbehave.scenario.parser.ScenarioFileLoader;
+import org.jbehave.scenario.parser.ClasspathScenarioDefiner;
 import org.jbehave.scenario.parser.UnderscoredCamelCaseResolver;
 
 
@@ -18,7 +18,7 @@
     public StatusAlertCanBeActivated(final ClassLoader classLoader) {
         super(new MostUsefulConfiguration() {
             public ScenarioDefiner forDefiningScenarios() {
-                return new ScenarioFileLoader(new UnderscoredCamelCaseResolver(".scenario"), new PatternScenarioParser(new PropertyBasedConfiguration()), classLoader);
+                return new ClasspathScenarioDefiner(new UnderscoredCamelCaseResolver(".scenario"), new PatternScenarioParser(new PropertyBasedConfiguration()), classLoader);
             }
         }, new StockSteps(10.0));
     }

Modified: trunk/examples/trader/src/main/java/org/jbehave/examples/trader/scenarios/StatusAlertIsNeverActivated.java (920 => 921)

--- trunk/examples/trader/src/main/java/org/jbehave/examples/trader/scenarios/StatusAlertIsNeverActivated.java	2008-09-03 07:27:24 UTC (rev 920)
+++ trunk/examples/trader/src/main/java/org/jbehave/examples/trader/scenarios/StatusAlertIsNeverActivated.java	2008-09-03 07:50:58 UTC (rev 921)
@@ -3,7 +3,7 @@
 import org.jbehave.scenario.PropertyBasedConfiguration;
 import org.jbehave.scenario.Scenario;
 import org.jbehave.scenario.parser.PatternScenarioParser;
-import org.jbehave.scenario.parser.ScenarioFileLoader;
+import org.jbehave.scenario.parser.ClasspathScenarioDefiner;
 import org.jbehave.scenario.parser.UnderscoredCamelCaseResolver;
 
 
@@ -16,8 +16,8 @@
     public StatusAlertIsNeverActivated(final ClassLoader classLoader) {
         super(new PropertyBasedConfiguration() {
             @Override
-            public ScenarioFileLoader forDefiningScenarios() {
-                return new ScenarioFileLoader(new UnderscoredCamelCaseResolver(".scenario"), new PatternScenarioParser(new PropertyBasedConfiguration()), classLoader);
+            public ClasspathScenarioDefiner forDefiningScenarios() {
+                return new ClasspathScenarioDefiner(new UnderscoredCamelCaseResolver(".scenario"), new PatternScenarioParser(new PropertyBasedConfiguration()), classLoader);
             }
         }, new StockSteps(100.0));
     }

Modified: trunk/examples/trader/src/main/java/org/jbehave/examples/trader/scenarios/TraderSellsAllStocks.java (920 => 921)

--- trunk/examples/trader/src/main/java/org/jbehave/examples/trader/scenarios/TraderSellsAllStocks.java	2008-09-03 07:27:24 UTC (rev 920)
+++ trunk/examples/trader/src/main/java/org/jbehave/examples/trader/scenarios/TraderSellsAllStocks.java	2008-09-03 07:50:58 UTC (rev 921)
@@ -4,7 +4,7 @@
 import org.jbehave.scenario.Scenario;
 import org.jbehave.scenario.parser.PatternScenarioParser;
 import org.jbehave.scenario.parser.ScenarioDefiner;
-import org.jbehave.scenario.parser.ScenarioFileLoader;
+import org.jbehave.scenario.parser.ClasspathScenarioDefiner;
 import org.jbehave.scenario.parser.UnderscoredCamelCaseResolver;
 
 
@@ -17,7 +17,7 @@
     public TraderSellsAllStocks(final ClassLoader classLoader) {
         super(new PropertyBasedConfiguration() {
             public ScenarioDefiner forDefiningScenarios() {
-                return new ScenarioFileLoader(new UnderscoredCamelCaseResolver(".scenario"), new PatternScenarioParser(this), classLoader);
+                return new ClasspathScenarioDefiner(new UnderscoredCamelCaseResolver(".scenario"), new PatternScenarioParser(this), classLoader);
             }
         }, new StockSteps(10.0));
     }

Modified: trunk/jbehave-core/src/behaviour/org/jbehave/scenario/parser/ScenarioFileLoaderBehaviour.java (920 => 921)

--- trunk/jbehave-core/src/behaviour/org/jbehave/scenario/parser/ScenarioFileLoaderBehaviour.java	2008-09-03 07:27:24 UTC (rev 920)
+++ trunk/jbehave-core/src/behaviour/org/jbehave/scenario/parser/ScenarioFileLoaderBehaviour.java	2008-09-03 07:50:58 UTC (rev 921)
@@ -18,7 +18,7 @@
     @Test
     public void canLoadScenario() {
         ScenarioParser parser = mock(ScenarioParser.class);
-        ScenarioFileLoader loader = new ScenarioFileLoader(parser);
+        ClasspathScenarioDefiner loader = new ClasspathScenarioDefiner(parser);
         loader.loadScenarioDefinitionsFor(MyPendingScenario.class);
         verify(parser).defineStoryFrom("Given my scenario");
     }
@@ -26,20 +26,20 @@
     @Test
     public void canLoadScenarioWithCustomFilenameResolver() {
         ScenarioParser parser = mock(ScenarioParser.class);
-        ScenarioFileLoader loader = new ScenarioFileLoader(new CasePreservingResolver(".scenario"), parser);
+        ClasspathScenarioDefiner loader = new ClasspathScenarioDefiner(new CasePreservingResolver(".scenario"), parser);
         loader.loadScenarioDefinitionsFor(MyPendingScenario.class);
         verify(parser).defineStoryFrom("Given my scenario");
     }
     
     @Test(expected = ScenarioNotFoundException.class)
     public void cannotLoadScenarioForInexistentResource() {
-        ScenarioFileLoader loader = new ScenarioFileLoader();
+        ClasspathScenarioDefiner loader = new ClasspathScenarioDefiner();
         loader.loadScenarioDefinitionsFor(InexistentScenario.class);
     }
 
     @Test(expected = InvalidScenarioResourceException.class)
     public void cannotLoadScenarioForInvalidResource() {
-        ScenarioFileLoader loader = new ScenarioFileLoader(new UnderscoredCamelCaseResolver(), new PatternScenarioParser(new PropertyBasedConfiguration()), new InvalidClassLoader());
+        ClasspathScenarioDefiner loader = new ClasspathScenarioDefiner(new UnderscoredCamelCaseResolver(), new PatternScenarioParser(new PropertyBasedConfiguration()), new InvalidClassLoader());
         loader.loadScenarioDefinitionsFor(MyPendingScenario.class);
     }
 

Modified: trunk/jbehave-core/src/java/org/jbehave/scenario/MostUsefulConfiguration.java (920 => 921)

--- trunk/jbehave-core/src/java/org/jbehave/scenario/MostUsefulConfiguration.java	2008-09-03 07:27:24 UTC (rev 920)
+++ trunk/jbehave-core/src/java/org/jbehave/scenario/MostUsefulConfiguration.java	2008-09-03 07:50:58 UTC (rev 921)
@@ -6,7 +6,7 @@
 import org.jbehave.scenario.errors.PendingErrorStrategy;
 import org.jbehave.scenario.parser.PatternScenarioParser;
 import org.jbehave.scenario.parser.ScenarioDefiner;
-import org.jbehave.scenario.parser.ScenarioFileLoader;
+import org.jbehave.scenario.parser.ClasspathScenarioDefiner;
 import org.jbehave.scenario.reporters.PassSilentlyDecorator;
 import org.jbehave.scenario.reporters.PrintStreamScenarioReporter;
 import org.jbehave.scenario.reporters.ScenarioReporter;
@@ -34,7 +34,7 @@
      * my_scenario.
      */
     public ScenarioDefiner forDefiningScenarios() {
-        return new ScenarioFileLoader(new PatternScenarioParser(this));
+        return new ClasspathScenarioDefiner(new PatternScenarioParser(this));
     }
 
     /**

Modified: trunk/jbehave-core/src/java/org/jbehave/scenario/Scenario.java (920 => 921)

--- trunk/jbehave-core/src/java/org/jbehave/scenario/Scenario.java	2008-09-03 07:27:24 UTC (rev 920)
+++ trunk/jbehave-core/src/java/org/jbehave/scenario/Scenario.java	2008-09-03 07:50:58 UTC (rev 921)
@@ -11,16 +11,16 @@
  * </p>
  * <p>
  * The Scenario should be in a matching text file in the same place, eg:
- * "i_can_login". The scenario name pattern can be configured via the
- * [EMAIL PROTECTED] ScenarioFileNameResolver}
+ * "i_can_login". The scenario name used can be configured via the
+ * [EMAIL PROTECTED] ScenarioNameResolver}.
  * </p>
  * <p>
  * Write some steps in your text scenario, starting each new step with Given,
- * When, Then or And. The keywords can be configured via the [EMAIL PROTECTED] KeyWorkds}
+ * When, Then or And. The keywords can be configured via the [EMAIL PROTECTED] KeyWords}
  * class, eg they can be translated/localized to other languages.
  * </p>
  * <p>
- * Then move on extending the Steps class.
+ * Then move on to extending the Steps class.
  * </p>
  */
 public abstract class Scenario {

Modified: trunk/jbehave-core/src/java/org/jbehave/scenario/parser/CasePreservingResolver.java (920 => 921)

--- trunk/jbehave-core/src/java/org/jbehave/scenario/parser/CasePreservingResolver.java	2008-09-03 07:27:24 UTC (rev 920)
+++ trunk/jbehave-core/src/java/org/jbehave/scenario/parser/CasePreservingResolver.java	2008-09-03 07:50:58 UTC (rev 921)
@@ -2,7 +2,18 @@
 
 import org.jbehave.scenario.Scenario;
 
-public class CasePreservingResolver implements ScenarioFileNameResolver {
+/**
+ * <p>
+ * Resolves scenario names while preserving the Java scenario class case eg:
+ * "org.jbehave.scenario.ICanLogin.java" -> "org/jbehave/scenario/ICanLogin".
+ * </p>
+ * <p>
+ * By default no extension is used, but this can be configured via the
+ * constructor so that we can resolve name to eg
+ * "org/jbehave/scenario/ICanLogin.scenario".
+ * </p>
+ */
+public class CasePreservingResolver implements ScenarioNameResolver {
 
     private static final String DOT_REGEX = "\\.";
     private static final String SLASH = "/";
@@ -13,7 +24,7 @@
     }
 
     public String resolve(Class<? extends Scenario> scenarioClass) {
-        String packageDir = scenarioClass.getPackage().getName().replaceAll(DOT_REGEX, SLASH);        
+        String packageDir = scenarioClass.getPackage().getName().replaceAll(DOT_REGEX, SLASH);
         return packageDir + SLASH + scenarioClass.getSimpleName() + extension;
     }
 

Copied: trunk/jbehave-core/src/java/org/jbehave/scenario/parser/ClasspathScenarioDefiner.java (from rev 920, trunk/jbehave-core/src/java/org/jbehave/scenario/parser/ScenarioFileLoader.java) (0 => 921)

--- trunk/jbehave-core/src/java/org/jbehave/scenario/parser/ClasspathScenarioDefiner.java	                        (rev 0)
+++ trunk/jbehave-core/src/java/org/jbehave/scenario/parser/ClasspathScenarioDefiner.java	2008-09-03 07:50:58 UTC (rev 921)
@@ -0,0 +1,72 @@
+package org.jbehave.scenario.parser;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.jbehave.scenario.Scenario;
+import org.jbehave.scenario.definition.StoryDefinition;
+import org.jbehave.scenario.errors.InvalidScenarioResourceException;
+import org.jbehave.scenario.errors.ScenarioNotFoundException;
+
+/**
+ * Loads scenario definition from classpath resources, which are handled by the
+ * [EMAIL PROTECTED] ScenarioParser}. Names of resources are resolved via the
+ * [EMAIL PROTECTED] ScenarioNameResolver}.
+ */
+public class ClasspathScenarioDefiner implements ScenarioDefiner {
+
+    private final ScenarioNameResolver resolver;
+    private final ScenarioParser parser;
+    private final ClassLoader classLoader;
+
+    public ClasspathScenarioDefiner() {
+        this(new UnderscoredCamelCaseResolver(), new PatternScenarioParser(), Thread.currentThread()
+                .getContextClassLoader());
+    }
+
+    public ClasspathScenarioDefiner(ScenarioParser parser) {
+        this(new UnderscoredCamelCaseResolver(), parser, Thread.currentThread().getContextClassLoader());
+    }
+
+    public ClasspathScenarioDefiner(ScenarioNameResolver converter, ScenarioParser parser) {
+        this(converter, parser, Thread.currentThread().getContextClassLoader());
+    }
+
+    public ClasspathScenarioDefiner(ScenarioNameResolver converter, ClassLoader classLoader) {
+        this(converter, new PatternScenarioParser(), classLoader);
+    }
+
+    public ClasspathScenarioDefiner(ScenarioNameResolver resolver, ScenarioParser parser, ClassLoader classLoader) {
+        this.resolver = resolver;
+        this.parser = parser;
+        this.classLoader = classLoader;
+    }
+
+    public StoryDefinition loadScenarioDefinitionsFor(Class<? extends Scenario> scenarioClass) {
+        String wholeFileAsString = asString(loadInputStreamFor(scenarioClass));
+        return parser.defineStoryFrom(wholeFileAsString);
+    }
+
+    private InputStream loadInputStreamFor(Class<? extends Scenario> scenarioClass) {
+        String scenarioName = resolver.resolve(scenarioClass);
+        InputStream stream = classLoader.getResourceAsStream(scenarioName);
+        if (stream == null) {
+            throw new ScenarioNotFoundException("Scenario " + scenarioName + " could not be found by classloader "
+                    + classLoader);
+        }
+        return stream;
+    }
+
+    private String asString(InputStream stream) {
+        try {
+            byte[] bytes = new byte[stream.available()];
+            stream.read(bytes);
+            ByteArrayOutputStream output = new ByteArrayOutputStream();
+            output.write(bytes);
+            return output.toString();
+        } catch (IOException e) {
+            throw new InvalidScenarioResourceException("Failed to convert scenario resource to string", e);
+        }
+    }
+}

Property changes: trunk/jbehave-core/src/java/org/jbehave/scenario/parser/ClasspathScenarioDefiner.java

Name: svn:mergeinfo
   + 

Modified: trunk/jbehave-core/src/java/org/jbehave/scenario/parser/ScenarioClassNameFinder.java (920 => 921)

--- trunk/jbehave-core/src/java/org/jbehave/scenario/parser/ScenarioClassNameFinder.java	2008-09-03 07:27:24 UTC (rev 920)
+++ trunk/jbehave-core/src/java/org/jbehave/scenario/parser/ScenarioClassNameFinder.java	2008-09-03 07:50:58 UTC (rev 921)
@@ -8,7 +8,7 @@
 import org.jbehave.scenario.errors.InvalidScenarioClassPathException;
 
 /**
- * Finds scenario class names from a base directory
+ * Finds scenario class names from a base directory using Ant's directory scanner.
  * 
  * @author Mauro Talevi
  */

Deleted: trunk/jbehave-core/src/java/org/jbehave/scenario/parser/ScenarioFileLoader.java (920 => 921)

--- trunk/jbehave-core/src/java/org/jbehave/scenario/parser/ScenarioFileLoader.java	2008-09-03 07:27:24 UTC (rev 920)
+++ trunk/jbehave-core/src/java/org/jbehave/scenario/parser/ScenarioFileLoader.java	2008-09-03 07:50:58 UTC (rev 921)
@@ -1,65 +0,0 @@
-package org.jbehave.scenario.parser;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-
-import org.jbehave.scenario.Scenario;
-import org.jbehave.scenario.definition.StoryDefinition;
-import org.jbehave.scenario.errors.InvalidScenarioResourceException;
-import org.jbehave.scenario.errors.ScenarioNotFoundException;
-
-public class ScenarioFileLoader implements ScenarioDefiner {
-    
-    private final ScenarioFileNameResolver resolver;
-    private final ScenarioParser parser;
-    private final ClassLoader classLoader;
-
-    public ScenarioFileLoader() {
-        this(new UnderscoredCamelCaseResolver(), new PatternScenarioParser(), Thread.currentThread().getContextClassLoader());
-    }
-
-    public ScenarioFileLoader(ScenarioParser parser) {
-        this(new UnderscoredCamelCaseResolver(), parser, Thread.currentThread().getContextClassLoader());
-    }
-
-    public ScenarioFileLoader(ScenarioFileNameResolver converter, ScenarioParser parser) {
-        this(converter, parser, Thread.currentThread().getContextClassLoader());
-    }
-
-    public ScenarioFileLoader(ScenarioFileNameResolver converter, ClassLoader classLoader) {
-        this(converter, new PatternScenarioParser(), classLoader);
-    }
-
-    public ScenarioFileLoader(ScenarioFileNameResolver resolver, ScenarioParser parser, ClassLoader classLoader) {
-        this.resolver = resolver;
-        this.parser = parser;
-        this.classLoader = classLoader;
-    }
-
-    private InputStream loadInputStreamFor(Class<? extends Scenario> scenarioClass) {
-        String scenarioFileName = resolver.resolve(scenarioClass);
-        InputStream stream = classLoader.getResourceAsStream(scenarioFileName);
-        if ( stream == null ){
-            throw new ScenarioNotFoundException("Scenario file "+scenarioFileName+" could not be found by classloader "+classLoader);
-        }
-        return stream;
-    }
-
-    public StoryDefinition loadScenarioDefinitionsFor(Class<? extends Scenario> scenarioClass) {
-        String wholeFileAsString = asString(loadInputStreamFor(scenarioClass));
-        return parser.defineStoryFrom(wholeFileAsString);
-    }
-  
-    private String asString(InputStream stream) {
-        try {            
-            byte[] bytes = new byte[stream.available()];
-            stream.read(bytes);
-            ByteArrayOutputStream output = new ByteArrayOutputStream();
-            output.write(bytes);
-            return output.toString();
-        } catch (IOException e) {
-            throw new InvalidScenarioResourceException("Failed to convert scenario resource to string", e);
-        }
-    }
-}

Deleted: trunk/jbehave-core/src/java/org/jbehave/scenario/parser/ScenarioFileNameResolver.java (920 => 921)

--- trunk/jbehave-core/src/java/org/jbehave/scenario/parser/ScenarioFileNameResolver.java	2008-09-03 07:27:24 UTC (rev 920)
+++ trunk/jbehave-core/src/java/org/jbehave/scenario/parser/ScenarioFileNameResolver.java	2008-09-03 07:50:58 UTC (rev 921)
@@ -1,9 +0,0 @@
-package org.jbehave.scenario.parser;
-
-import org.jbehave.scenario.Scenario;
-
-public interface ScenarioFileNameResolver {
-
-    String resolve(Class<? extends Scenario> scenarioClass);
-
-}

Copied: trunk/jbehave-core/src/java/org/jbehave/scenario/parser/ScenarioNameResolver.java (from rev 916, trunk/jbehave-core/src/java/org/jbehave/scenario/parser/ScenarioFileNameResolver.java) (0 => 921)

--- trunk/jbehave-core/src/java/org/jbehave/scenario/parser/ScenarioNameResolver.java	                        (rev 0)
+++ trunk/jbehave-core/src/java/org/jbehave/scenario/parser/ScenarioNameResolver.java	2008-09-03 07:50:58 UTC (rev 921)
@@ -0,0 +1,15 @@
+package org.jbehave.scenario.parser;
+
+import org.jbehave.scenario.Scenario;
+
+/**
+ * <p>
+ * Resolves scenario names converting the Java scenario class to a resource
+ * path.
+ * </p>
+ */
+public interface ScenarioNameResolver {
+
+    String resolve(Class<? extends Scenario> scenarioClass);
+
+}

Property changes: trunk/jbehave-core/src/java/org/jbehave/scenario/parser/ScenarioNameResolver.java

Name: svn:mergeinfo
   + 

Modified: trunk/jbehave-core/src/java/org/jbehave/scenario/parser/UnderscoredCamelCaseResolver.java (920 => 921)

--- trunk/jbehave-core/src/java/org/jbehave/scenario/parser/UnderscoredCamelCaseResolver.java	2008-09-03 07:27:24 UTC (rev 920)
+++ trunk/jbehave-core/src/java/org/jbehave/scenario/parser/UnderscoredCamelCaseResolver.java	2008-09-03 07:50:58 UTC (rev 921)
@@ -7,15 +7,16 @@
 
 /**
  * <p>
- * Resolves scenario filename converting the Java scenario class to underscored
- * eg: "ICanLogin.java" -> "i_can_login".
+ * Resolves scenario names converting the Java scenario class to underscored eg:
+ * "org.jbehave.scenario.ICanLogin.java" -> "org/jbehave/scenario/i_can_login".
  * </p>
  * <p>
- * By default no filename extension is used, but this can be configured via the
- * constructor so that we can resolve name to eg "i_can_login.scenario".
+ * By default no extension is used, but this can be configured via the
+ * constructor so that we can resolve name to eg
+ * "org/jbehave/scenario/i_can_login.scenario".
  * </p>
  */
-public class UnderscoredCamelCaseResolver implements ScenarioFileNameResolver {
+public class UnderscoredCamelCaseResolver implements ScenarioNameResolver {
 
     private static final String DOT_REGEX = "\\.";
     private static final String SLASH = "/";


To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Reply via email to