[jbehave-scm] [1014] trunk/jbehave-core/src/java/org/jbehave/scenario/parser: JBEHAVE-154: Moved separation ":" to scenario keyword.
Title: [1014] trunk/jbehave-core/src/java/org/jbehave/scenario/parser: JBEHAVE-154: Moved separation ":" to scenario keyword. Revision 1014 Author mauro Date 2008-12-14 13:13:56 -0600 (Sun, 14 Dec 2008) Log Message JBEHAVE-154: Moved separation ":" to scenario keyword. Modified Paths trunk/examples/noughtsandcrosses/src/scenario/com/lunivore/noughtsandcrosses/PlayersCanHazTurns.java trunk/jbehave-core/src/java/org/jbehave/scenario/definition/ScenarioGivenWhenThenAnd.java trunk/jbehave-core/src/java/org/jbehave/scenario/parser/PatternScenarioParser.java Diff Modified: trunk/examples/noughtsandcrosses/src/scenario/com/lunivore/noughtsandcrosses/PlayersCanHazTurns.java (1013 => 1014) --- trunk/examples/noughtsandcrosses/src/scenario/com/lunivore/noughtsandcrosses/PlayersCanHazTurns.java 2008-11-29 16:54:30 UTC (rev 1013) +++ trunk/examples/noughtsandcrosses/src/scenario/com/lunivore/noughtsandcrosses/PlayersCanHazTurns.java 2008-12-14 19:13:56 UTC (rev 1014) @@ -28,7 +28,7 @@ public PlayersCanHazTurns(final ClassLoader classLoader, OAndXUniverse universe) { super(new MostUsefulConfiguration() { public KeyWords keywords() { -return new KeyWords("I can haz", "Gief", "Wen", "Den", "And"); +return new KeyWords("I can haz:", "Gief", "Wen", "Den", "And"); } public ClasspathScenarioDefiner forDefiningScenarios() { return new ClasspathScenarioDefiner(new UnderscoredCamelCaseResolver(), new PatternScenarioParser(this), Modified: trunk/jbehave-core/src/java/org/jbehave/scenario/definition/ScenarioGivenWhenThenAnd.java (1013 => 1014) --- trunk/jbehave-core/src/java/org/jbehave/scenario/definition/ScenarioGivenWhenThenAnd.java 2008-11-29 16:54:30 UTC (rev 1013) +++ trunk/jbehave-core/src/java/org/jbehave/scenario/definition/ScenarioGivenWhenThenAnd.java 2008-12-14 19:13:56 UTC (rev 1014) @@ -3,7 +3,7 @@ public class ScenarioGivenWhenThenAnd extends KeyWords { public ScenarioGivenWhenThenAnd() { -super("Scenario", "Given", "When", "Then", "And"); +super("Scenario:", "Given", "When", "Then", "And"); } } Modified: trunk/jbehave-core/src/java/org/jbehave/scenario/parser/PatternScenarioParser.java (1013 => 1014) --- trunk/jbehave-core/src/java/org/jbehave/scenario/parser/PatternScenarioParser.java 2008-11-29 16:54:30 UTC (rev 1013) +++ trunk/jbehave-core/src/java/org/jbehave/scenario/parser/PatternScenarioParser.java 2008-12-14 19:13:56 UTC (rev 1014) @@ -57,7 +57,7 @@ } private Blurb parseBlurbFrom(String wholeStoryAsString) { -Pattern findStoryBlurb = Pattern.compile("(.*?)(" + configuration.keywords().scenario() + ":).*", +Pattern findStoryBlurb = Pattern.compile("(.*?)(" + configuration.keywords().scenario() + ").*", Pattern.DOTALL); Matcher matcher = findStoryBlurb.matcher(wholeStoryAsString); if (matcher.find()) { @@ -85,14 +85,14 @@ } private Pattern patternToPullScenariosIntoGroupFour() { -return Pattern.compile(".*?((Scenario:) (.|\\s)*?)\\s*(\\Z|Scenario:).*".replace("Scenario", configuration +return Pattern.compile(".*?((Scenario) (.|\\s)*?)\\s*(\\Z|Scenario).*".replace("Scenario", configuration .keywords().scenario()), Pattern.DOTALL); } private Pattern patternToPullScenarioTitlesIntoGroupOne() { String concatenatedKeywords = concatenateWithOr(configuration.keywords().given(), configuration.keywords() .when(), configuration.keywords().then(), configuration.keywords().others()); -return Pattern.compile(configuration.keywords().scenario() + ":(.*?)\\s*(" + concatenatedKeywords + ").*"); +return Pattern.compile(configuration.keywords().scenario() + "(.*?)\\s*(" + concatenatedKeywords + ").*"); } private String concatenateWithOr(String given, String when, String then, String[] others) { @@ -134,6 +134,6 @@ String givenWhenThenSpaced = concatenateWithSpaceOr(configuration.keywords().given(), configuration.keywords().when(), configuration.keywords().then(), configuration.keywords().others()); return Pattern.compile("((" + givenWhenThen + ") (.|\\s)*?)\\s*(\\Z|" + givenWhenThenSpaced + "|" -+ configuration.keywords().scenario() + ":)"); ++ configuration.keywords().scenario() + ")"); } } To unsubscribe from this list please visit: http://xircles.codehaus.org/manage_email
[jbehave-dev] [jira] Closed: (JBEHAVE-154) Scenario keyword should include any separation char, e.g. ":"
[ http://jira.codehaus.org/browse/JBEHAVE-154?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Mauro Talevi closed JBEHAVE-154. Resolution: Fixed > Scenario keyword should include any separation char, e.g. ":" > - > > Key: JBEHAVE-154 > URL: http://jira.codehaus.org/browse/JBEHAVE-154 > Project: JBehave > Issue Type: Improvement > Components: Core >Affects Versions: 2.0, 2.0.1, 2.1 >Reporter: Mauro Talevi >Assignee: Mauro Talevi >Priority: Minor > Fix For: 2.2 > > > ATM, the pattern parser assumes that the keyword Scenario is followed by a > ":". It is better that any separation char to be part of the keyword > configured in Keywords.scenario() so it can be configured and is not > hardcorded in the pattern parser. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira - To unsubscribe from this list, please visit: http://xircles.codehaus.org/manage_email
[jbehave-dev] [jira] Created: (JBEHAVE-154) Scenario keyword should include any separation char, e.g. ":"
Scenario keyword should include any separation char, e.g. ":" - Key: JBEHAVE-154 URL: http://jira.codehaus.org/browse/JBEHAVE-154 Project: JBehave Issue Type: Improvement Components: Core Affects Versions: 2.0, 2.0.1, 2.1 Reporter: Mauro Talevi Assignee: Mauro Talevi Priority: Minor Fix For: 2.2 ATM, the pattern parser assumes that the keyword Scenario is followed by a ":". It is better that any separation char to be part of the keyword configured in Keywords.scenario() so it can be configured and is not hardcorded in the pattern parser. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira - To unsubscribe from this list, please visit: http://xircles.codehaus.org/manage_email
[jbehave-scm] [1015] trunk/jbehave-core/src/java/org/jbehave/scenario/parser: Extracted abstract scenario name resolver that holds common functionality to all resolvers.
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 trunk/jbehave-core/src/java/org/jbehave/scenario/parser/CasePreservingResolver.java trunk/jbehave-core/src/java/org/jbehave/scenario/parser/UnderscoredCamelCaseResolver.java Added Paths trunk/jbehave-core/src/java/org/jbehave/scenario/parser/AbstractScenarioNameResolver.java 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 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". * */ -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 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". * */ -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 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
[jbehave-scm] [1016] trunk/jbehave-core/src/java/org/jbehave/scenario/parser/AbstractScenarioNameResolver.java: JBEHAVE-152: Ensured default package scenario classes are supported and return empty pa
Title: [1016] trunk/jbehave-core/src/java/org/jbehave/scenario/parser/AbstractScenarioNameResolver.java: JBEHAVE-152: Ensured default package scenario classes are supported and return empty package dir. Revision 1016 Author mauro Date 2008-12-14 16:30:37 -0600 (Sun, 14 Dec 2008) Log Message JBEHAVE-152: Ensured default package scenario classes are supported and return empty package dir. Modified Paths trunk/jbehave-core/src/java/org/jbehave/scenario/parser/AbstractScenarioNameResolver.java Diff Modified: trunk/jbehave-core/src/java/org/jbehave/scenario/parser/AbstractScenarioNameResolver.java (1015 => 1016) --- trunk/jbehave-core/src/java/org/jbehave/scenario/parser/AbstractScenarioNameResolver.java 2008-12-14 19:32:53 UTC (rev 1015) +++ trunk/jbehave-core/src/java/org/jbehave/scenario/parser/AbstractScenarioNameResolver.java 2008-12-14 22:30:37 UTC (rev 1016) @@ -6,9 +6,14 @@ static final String DOT_REGEX = "\\."; static final String SLASH = "/"; + static final String EMPTY = ""; protected String toPackageDir(Class scenarioClass) { - return scenarioClass.getPackage().getName().replaceAll(DOT_REGEX, SLASH); + Package scenarioPackage = scenarioClass.getPackage(); + if ( scenarioPackage != null ){ + return scenarioPackage.getName().replaceAll(DOT_REGEX, SLASH); + } + return EMPTY; } } \ No newline at end of file To unsubscribe from this list please visit: http://xircles.codehaus.org/manage_email
[jbehave-dev] [jira] Commented: (JBEHAVE-152) Scenario's in the default package cause NullPointerException
[ http://jira.codehaus.org/browse/JBEHAVE-152?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=157965#action_157965 ] Mauro Talevi commented on JBEHAVE-152: -- Committed fix but not the unit test as I could not get it to recognise the default package scenario class. > Scenario's in the default package cause NullPointerException > > > Key: JBEHAVE-152 > URL: http://jira.codehaus.org/browse/JBEHAVE-152 > Project: JBehave > Issue Type: Bug > Components: Core >Affects Versions: 2.0, 2.0.1, 2.1 > Environment: Windows XP >Reporter: Andy Mac Gilvery >Assignee: Mauro Talevi >Priority: Minor > Fix For: 2.2 > > Attachments: JBehave.patch > > > I'm playing around with JBehave, and encountered the folloing > NullPointerException > Testcase: testScenario(HeyHeyMyMy):Caused an ERROR > null > java.lang.NullPointerException > at > org.jbehave.scenario.parser.UnderscoredCamelCaseResolver.resolve(UnderscoredCamelCaseResolver.java:37) > at > org.jbehave.scenario.parser.ClasspathScenarioDefiner.loadInputStreamFor(ClasspathScenarioDefiner.java:52) > at > org.jbehave.scenario.parser.ClasspathScenarioDefiner.loadScenarioDefinitionsFor(ClasspathScenarioDefiner.java:47) > at > org.jbehave.scenario.AbstractScenario.runScenario(AbstractScenario.java:69) > at > org.jbehave.scenario.JUnitScenario.runScenario(JUnitScenario.java:49) > at > org.jbehave.scenario.JUnitScenario.testScenario(JUnitScenario.java:64) > I've enclosed a patch for you consideration :-) -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira - To unsubscribe from this list, please visit: http://xircles.codehaus.org/manage_email