The problem is that in your CalendarConverter you return a null object for the "none" date entry. Simply return an empty string and it will work for now.
Cheers On 28/01/2010 15:52, Christopher Gardner wrote: > Mauro, > > I can't give the real version of the Steps class, as it has > significant proprietary information, but attached are 2 files: A > .scenario file and a CalendarConverter.java file that converts string > dates in the form of mm/dd/yyyy or "none" into an appropriate Calendar > representation. Note in the .scenario file the parameter "<outcome>" > is quoted. In the Steps class those quotes are escaped. > > > > On Thu, Jan 28, 2010 at 9:16 AM, Mauro Talevi > <[email protected]> wrote: >> Hi Christopher, >> >> the problem occurs because it tries to escape HTML chars from the values >> of the examples table that it does not find (defaulting to null). The >> reason it does not fail for CONSOLE and TXT is that only HTML and XML >> reporters escape chars. >> >> Opened issue to improve resilience: >> >> http://jira.codehaus.org/browse/JBEHAVE-237 >> >> But if could you please forward the scenario you're using we can help >> you sort out the data issues to get it working properly in the first place. >> >> Cheers >> >> On 27/01/2010 22:10, Christopher Gardner wrote: >>> I created my own AbstractScenario class to handle the configuration of >>> the scenario filenames, pending steps, and reports. If I specify only >>> CONSOLE and TXT, reports work as expected: The jbehave-reports >>> directory is generated with the .txt and .stats files. If, however, I >>> add HTML the builder, I receive an exception: >>> >>> java.lang.NullPointerException >>> at >>> org.jbehave.scenario.reporters.PrintStreamScenarioReporter$1.transform(PrintStreamScenarioReporter.java:245) >>> at >>> org.apache.commons.collections.CollectionUtils.transform(CollectionUtils.java:433) >>> at >>> org.jbehave.scenario.reporters.PrintStreamScenarioReporter.escape(PrintStreamScenarioReporter.java:252) >>> at >>> org.jbehave.scenario.reporters.PrintStreamScenarioReporter.escapeAll(PrintStreamScenarioReporter.java:230) >>> at >>> org.jbehave.scenario.reporters.PrintStreamScenarioReporter.format(PrintStreamScenarioReporter.java:222) >>> at >>> org.jbehave.scenario.reporters.PrintStreamScenarioReporter.beforeExamples(PrintStreamScenarioReporter.java:188) >>> at >>> org.jbehave.scenario.reporters.DelegatingScenarioReporter.beforeExamples(DelegatingScenarioReporter.java:80) >>> at >>> org.jbehave.scenario.ScenarioRunner.runExamplesTableScenario(ScenarioRunner.java:94) >>> at org.jbehave.scenario.ScenarioRunner.run(ScenarioRunner.java:63) >>> at org.jbehave.scenario.ScenarioRunner.run(ScenarioRunner.java:48) >>> at org.jbehave.scenario.ScenarioRunner.run(ScenarioRunner.java:38) >>> at >>> org.jbehave.scenario.AbstractScenario.runScenario(AbstractScenario.java:75) >>> at >>> org.jbehave.scenario.JUnitScenario.runScenario(JUnitScenario.java:54) >>> at >>> org.jbehave.scenario.JUnitScenario.testScenario(JUnitScenario.java:84) >>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>> at >>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) >>> at >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) >>> at java.lang.reflect.Method.invoke(Method.java:592) >>> at junit.framework.TestCase.runTest(TestCase.java:168) >>> at junit.framework.TestCase.runBare(TestCase.java:134) >>> at junit.framework.TestResult$1.protect(TestResult.java:110) >>> at junit.framework.TestResult.runProtected(TestResult.java:128) >>> at junit.framework.TestResult.run(TestResult.java:113) >>> at junit.framework.TestCase.run(TestCase.java:124) >>> at junit.framework.TestSuite.runTest(TestSuite.java:232) >>> at junit.framework.TestSuite.run(TestSuite.java:227) >>> at >>> org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:79) >>> at >>> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46) >>> at >>> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) >>> at >>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) >>> at >>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) >>> at >>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) >>> at >>> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) >>> >>> >>> Here is my AbstractScenario. Subclasses are responsible for providing >>> their class objects and instantiating CandidateSteps. >>> >>> package base; >>> >>> import static >>> org.jbehave.scenario.reporters.ScenarioReporterBuilder.Format.*; >>> import org.jbehave.scenario.*; >>> import org.jbehave.scenario.errors.*; >>> import org.jbehave.scenario.parser.*; >>> import org.jbehave.scenario.reporters.FilePrintStreamFactory; >>> import org.jbehave.scenario.reporters.ScenarioReporter; >>> import org.jbehave.scenario.reporters.ScenarioReporterBuilder; >>> import org.jbehave.scenario.steps.*; >>> >>> public abstract class AbstractScenario extends JUnitScenario { >>> >>> protected static ScenarioNameResolver converter = new >>> UnderscoredCamelCaseResolver(".scenario"); >>> >>> public AbstractScenario(final Class<? extends RunnableScenario> >>> scenarioClass, CandidateSteps... candidateSteps) { >>> super(new PropertyBasedConfiguration() { >>> @Override >>> public ScenarioDefiner forDefiningScenarios() { >>> return new ClasspathScenarioDefiner(converter, new >>> PatternScenarioParser(keywords())); >>> } >>> >>> @Override >>> public PendingErrorStrategy forPendingSteps() { >>> return PendingErrorStrategy.FAILING; >>> } >>> >>> @Override >>> public ScenarioReporter forReportingScenarios() { >>> return new ScenarioReporterBuilder(new >>> FilePrintStreamFactory(scenarioClass, converter)) >>> .with(CONSOLE) >>> .with(HTML) >>> .with(TXT) >>> .build(); >>> } >>> }, candidateSteps); >>> } >>> } >>> >>> Any suggestions as to what I'm doing wrong? >>> >>> Thanks. >>> >>> --------------------------------------------------------------------- >>> To unsubscribe from this list, please visit: >>> >>> http://xircles.codehaus.org/manage_email >>> >>> >>> >> >> >> >> --------------------------------------------------------------------- >> To unsubscribe from this list, please visit: >> >> http://xircles.codehaus.org/manage_email >> >> >> >> >> >> --------------------------------------------------------------------- >> To unsubscribe from this list, please visit: >> >> http://xircles.codehaus.org/manage_email --------------------------------------------------------------------- To unsubscribe from this list, please visit: http://xircles.codehaus.org/manage_email
