- 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
- trunk/jbehave-core/src/java/org/jbehave/scenario/parser/CasePreservingResolver.java
- trunk/jbehave-core/src/java/org/jbehave/scenario/parser/UnderscoredCamelCaseResolver.java
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: