Title: [1015] trunk/jbehave-core/src/java/org/jbehave/scenario/parser: Extracted abstract scenario name resolver that holds common functionality to all resolvers.
Revision
1015
Author
mauro
Date
2008-12-14 13:32:53 -0600 (Sun, 14 Dec 2008)

Log Message

Extracted abstract scenario name resolver that holds common functionality to all resolvers.

Modified Paths

Added Paths

Diff

Added: trunk/jbehave-core/src/java/org/jbehave/scenario/parser/AbstractScenarioNameResolver.java (0 => 1015)

--- trunk/jbehave-core/src/java/org/jbehave/scenario/parser/AbstractScenarioNameResolver.java	                        (rev 0)
+++ trunk/jbehave-core/src/java/org/jbehave/scenario/parser/AbstractScenarioNameResolver.java	2008-12-14 19:32:53 UTC (rev 1015)
@@ -0,0 +1,14 @@
+package org.jbehave.scenario.parser;
+
+import org.jbehave.scenario.RunnableScenario;
+
+public abstract class AbstractScenarioNameResolver implements ScenarioNameResolver {
+
+	static final String DOT_REGEX = "\\.";
+    static final String SLASH = "/";
+
+    protected String toPackageDir(Class<? extends RunnableScenario> scenarioClass) {
+		return scenarioClass.getPackage().getName().replaceAll(DOT_REGEX, SLASH);
+	}
+
+}
\ No newline at end of file

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

--- trunk/jbehave-core/src/java/org/jbehave/scenario/parser/CasePreservingResolver.java	2008-12-14 19:13:56 UTC (rev 1014)
+++ trunk/jbehave-core/src/java/org/jbehave/scenario/parser/CasePreservingResolver.java	2008-12-14 19:32:53 UTC (rev 1015)
@@ -13,10 +13,8 @@
  * "org/jbehave/scenario/ICanLogin.scenario".
  * </p>
  */
-public class CasePreservingResolver implements ScenarioNameResolver {
+public class CasePreservingResolver extends AbstractScenarioNameResolver {
 
-    private static final String DOT_REGEX = "\\.";
-    private static final String SLASH = "/";
     private final String extension;
 
     public CasePreservingResolver(String extension) {
@@ -24,8 +22,7 @@
     }
 
     public String resolve(Class<? extends RunnableScenario> scenarioClass) {
-        String packageDir = scenarioClass.getPackage().getName().replaceAll(DOT_REGEX, SLASH);
-        return packageDir + SLASH + scenarioClass.getSimpleName() + extension;
+    	return toPackageDir(scenarioClass) + SLASH + scenarioClass.getSimpleName() + extension;
     }
 
 }

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

--- trunk/jbehave-core/src/java/org/jbehave/scenario/parser/UnderscoredCamelCaseResolver.java	2008-12-14 19:13:56 UTC (rev 1014)
+++ trunk/jbehave-core/src/java/org/jbehave/scenario/parser/UnderscoredCamelCaseResolver.java	2008-12-14 19:32:53 UTC (rev 1015)
@@ -16,17 +16,15 @@
  * "org/jbehave/scenario/i_can_login.scenario".
  * </p>
  */
-public class UnderscoredCamelCaseResolver implements ScenarioNameResolver {
+public class UnderscoredCamelCaseResolver extends AbstractScenarioNameResolver {
 
-    private static final String EMPTY = "";
-	private static final String DOT_REGEX = "\\.";
-    private static final String SLASH = "/";
-    private static final String PATTERN = "([A-Z0-9].*?)([A-Z0-9]|\\z)";
+    private static final String DEFAULT_EXTENSION = "";
+    private static final String SIMPLE_TO_UNDERSCORED_PATTERN = "([A-Z0-9].*?)([A-Z0-9]|\\z)";
     private static final String UNDERSCORE = "_";
     private final String extension;
 
     public UnderscoredCamelCaseResolver() {
-        this(EMPTY);
+        this(DEFAULT_EXTENSION);
     }
 
     public UnderscoredCamelCaseResolver(String extension) {
@@ -34,8 +32,11 @@
     }
 
     public String resolve(Class<? extends RunnableScenario> scenarioClass) {
-        String packageDir = scenarioClass.getPackage().getName().replaceAll(DOT_REGEX, SLASH);
-        Matcher matcher = Pattern.compile(PATTERN).matcher(scenarioClass.getSimpleName());
+        return toPackageDir(scenarioClass) + SLASH + toUnderscoredName(scenarioClass.getSimpleName()) + extension;
+    }
+
+	private String toUnderscoredName(String simpleName) {
+		Matcher matcher = Pattern.compile(SIMPLE_TO_UNDERSCORED_PATTERN).matcher(simpleName);
         int startAt = 0;
         StringBuilder builder = new StringBuilder();
         while (matcher.find(startAt)) {
@@ -43,9 +44,7 @@
             builder.append(UNDERSCORE);
             startAt = matcher.start(2);
         }
+        return builder.substring(0, builder.length() - 1);
+	}
 
-        String underscoredName = builder.substring(0, builder.length() - 1);
-        return packageDir + SLASH + underscoredName + extension;
-    }
-
 }


To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Reply via email to