Title: [1559] trunk/web: Updated trader-web example to use Pico-enabled Steps composition

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:

http://xircles.codehaus.org/manage_email

Reply via email to