- Revision
- 1559
- Author
- mauro
- Date
- 2010-02-07 12:34:04 -0600 (Sun, 07 Feb 2010)
Log Message
Updated trader-web example to use Pico-enabled Steps composition
Modified Paths
- trunk/web/examples/pom.xml
- trunk/web/examples/trader-web/src/main/java/org/jbehave/web/examples/trader/runner/TraderRegistrar.java
- trunk/web/examples/trader-web/src/main/java/org/jbehave/web/examples/trader/scenarios/TraderSteps.java
- trunk/web/examples/trader-web/src/main/webapp/WEB-INF/web.xml
- trunk/web/pom.xml
Added Paths
Diff
Modified: trunk/web/examples/pom.xml (1558 => 1559)
--- trunk/web/examples/pom.xml 2010-02-07 18:31:49 UTC (rev 1558) +++ trunk/web/examples/pom.xml 2010-02-07 18:34:04 UTC (rev 1559) @@ -11,7 +11,15 @@ <name>JBehave Web Examples</name> <modules> - <module>trader-web</module> + <module>trader-web</module> </modules> - + + <dependencies> + <dependency> + <groupId>org.jbehave</groupId> + <artifactId>jbehave-pico</artifactId> + <version>${jbehave.version}</version> + </dependency> + </dependencies> + </project>
Added: trunk/web/examples/trader-web/src/main/java/org/jbehave/web/examples/trader/runner/PicoTraderRegistrar.java (0 => 1559)
--- trunk/web/examples/trader-web/src/main/java/org/jbehave/web/examples/trader/runner/PicoTraderRegistrar.java (rev 0) +++ trunk/web/examples/trader-web/src/main/java/org/jbehave/web/examples/trader/runner/PicoTraderRegistrar.java 2010-02-07 18:34:04 UTC (rev 1559) @@ -0,0 +1,43 @@ +package org.jbehave.web.examples.trader.runner; + +import org.codehaus.waffle.registrar.Registrar; +import org.jbehave.scenario.steps.CandidateSteps; +import org.jbehave.scenario.steps.StepsConfiguration; +import org.jbehave.scenario.steps.pico.PicoStepsFactory; +import org.jbehave.web.examples.trader.scenarios.StockExchangeSteps; +import org.jbehave.web.examples.trader.scenarios.TraderSteps; +import org.jbehave.web.examples.trader.scenarios.TradingService; +import org.picocontainer.Characteristics; +import org.picocontainer.DefaultPicoContainer; +import org.picocontainer.MutablePicoContainer; +import org.picocontainer.PicoContainer; +import org.picocontainer.behaviors.Caching; +import org.picocontainer.injectors.ConstructorInjection; + +public class PicoTraderRegistrar extends TraderRegistrar { + + public PicoTraderRegistrar(Registrar delegate) { + super(delegate); + } + + @Override + protected void registerSteps() { + for (CandidateSteps steps : createSteps()) { + registerInstance(steps); + } + } + + protected CandidateSteps[] createSteps() { + PicoContainer parent = createPicoContainer(); + return new PicoStepsFactory(new StepsConfiguration(), parent).createCandidateSteps(); + } + + private PicoContainer createPicoContainer() { + MutablePicoContainer parent = new DefaultPicoContainer(new Caching().wrap(new ConstructorInjection())); + parent.as(Characteristics.USE_NAMES).addComponent(TradingService.class); + parent.as(Characteristics.USE_NAMES).addComponent(TraderSteps.class); + parent.as(Characteristics.USE_NAMES).addComponent(StockExchangeSteps.class); + return parent; + } + +} \ No newline at end of file
Modified: trunk/web/examples/trader-web/src/main/java/org/jbehave/web/examples/trader/runner/TraderRegistrar.java (1558 => 1559)
--- trunk/web/examples/trader-web/src/main/java/org/jbehave/web/examples/trader/runner/TraderRegistrar.java 2010-02-07 18:31:49 UTC (rev 1558) +++ trunk/web/examples/trader-web/src/main/java/org/jbehave/web/examples/trader/runner/TraderRegistrar.java 2010-02-07 18:34:04 UTC (rev 1559) @@ -5,29 +5,30 @@ import org.codehaus.waffle.registrar.Registrar; import org.jbehave.web.examples.trader.scenarios.StockExchangeSteps; import org.jbehave.web.examples.trader.scenarios.TraderSteps; +import org.jbehave.web.examples.trader.scenarios.TradingService; import org.jbehave.web.io.PrintStreamFileMonitor; import org.jbehave.web.runner.waffle.JBehaveRegistrar; public class TraderRegistrar extends JBehaveRegistrar { - public TraderRegistrar(Registrar delegate) { - super(delegate); - } + public TraderRegistrar(Registrar delegate) { + super(delegate); + } - @Override - protected void registerSteps() { - registerInstance(new TraderSteps()); - registerInstance(new StockExchangeSteps()); - } - - @Override - protected void registerFileMonitor() { - register(PrintStreamFileMonitor.class); - } - - @Override - protected File uploadDirectory() { - // Can be overridden to return, e.g. new File("/tmp/upload"); - return super.uploadDirectory(); - } + @Override + protected void registerSteps() { + registerInstance(new TraderSteps(new TradingService())); + registerInstance(new StockExchangeSteps()); + } + + @Override + protected void registerFileMonitor() { + register(PrintStreamFileMonitor.class); + } + + @Override + protected File uploadDirectory() { + // Can be overridden to return, e.g. new File("/tmp/upload"); + return super.uploadDirectory(); + } }
Modified: trunk/web/examples/trader-web/src/main/java/org/jbehave/web/examples/trader/scenarios/TraderSteps.java (1558 => 1559)
--- trunk/web/examples/trader-web/src/main/java/org/jbehave/web/examples/trader/scenarios/TraderSteps.java 2010-02-07 18:31:49 UTC (rev 1558) +++ trunk/web/examples/trader-web/src/main/java/org/jbehave/web/examples/trader/scenarios/TraderSteps.java 2010-02-07 18:34:04 UTC (rev 1559) @@ -12,10 +12,15 @@ private Stock stock; private Trader trader; + private TradingService service; + public TraderSteps(TradingService service) { + this.service = service; + } + @Given("a threshold of $threshold") public void aThreshold(double threshold) { - stock = new Stock(threshold); + stock = service.newStock(threshold); } @When("the stock is traded at $price")
Added: trunk/web/examples/trader-web/src/main/java/org/jbehave/web/examples/trader/scenarios/TradingService.java (0 => 1559)
--- trunk/web/examples/trader-web/src/main/java/org/jbehave/web/examples/trader/scenarios/TradingService.java (rev 0) +++ trunk/web/examples/trader-web/src/main/java/org/jbehave/web/examples/trader/scenarios/TradingService.java 2010-02-07 18:34:04 UTC (rev 1559) @@ -0,0 +1,8 @@ +package org.jbehave.web.examples.trader.scenarios; + +public class TradingService { + + public Stock newStock(double threshold) { + return new Stock(threshold); + } +}
Modified: trunk/web/examples/trader-web/src/main/webapp/WEB-INF/web.xml (1558 => 1559)
--- trunk/web/examples/trader-web/src/main/webapp/WEB-INF/web.xml 2010-02-07 18:31:49 UTC (rev 1558) +++ trunk/web/examples/trader-web/src/main/webapp/WEB-INF/web.xml 2010-02-07 18:34:04 UTC (rev 1559) @@ -8,7 +8,8 @@ <!-- Waffle Registrar and custom components --> <context-param> <param-name>org.codehaus.waffle.registrar.Registrar</param-name> - <param-value>org.jbehave.web.examples.trader.runner.TraderRegistrar</param-value> + <!-- Use org.jbehave.web.examples.trader.runner.TraderRegistrar for non-container registrar--> + <param-value>org.jbehave.web.examples.trader.runner.PicoTraderRegistrar</param-value> </context-param> <context-param> <param-name>register:DateValueConverter</param-name>
Modified: trunk/web/pom.xml (1558 => 1559)
--- trunk/web/pom.xml 2010-02-07 18:31:49 UTC (rev 1558) +++ trunk/web/pom.xml 2010-02-07 18:34:04 UTC (rev 1559) @@ -15,6 +15,7 @@ </modules> <properties> + <jbehave.version>2.5-SNAPSHOT</jbehave.version> <jbehave.webapp.name>jbehave-web-runner</jbehave.webapp.name> </properties> @@ -22,7 +23,7 @@ <dependency> <groupId>org.jbehave</groupId> <artifactId>jbehave-core</artifactId> - <version>2.4.1</version> + <version>${jbehave.version}</version> </dependency> <dependency> <groupId>org.jmock</groupId>
To unsubscribe from this list please visit:
