Title: [759] trunk/plugins/maven: JBEHAVE-95: Added StoryCodeGeneratorMojo to run generate-story-code goal.

Diff

Modified: trunk/core/src/java/org/jbehave/core/story/StoryLoader.java (758 => 759)

--- trunk/core/src/java/org/jbehave/core/story/StoryLoader.java	2007-07-12 09:55:04 UTC (rev 758)
+++ trunk/core/src/java/org/jbehave/core/story/StoryLoader.java	2007-07-12 13:25:36 UTC (rev 759)
@@ -26,8 +26,12 @@
         this.storyParser = storyParser;
     }
 
+    public StoryDetails loadStoryDetails(String storyPath, String storyPackage) throws MalformedURLException {
+        return storyParser.parseStory(getReader(storyPath, classLoader));
+    }
+    
     public Story loadStory(String storyPath, String storyPackage) throws MalformedURLException {
-        StoryDetails storyDetails = storyParser.parseStory(getReader(storyPath, classLoader));
+        StoryDetails storyDetails = loadStoryDetails(storyPath, storyPackage);
         return new StoryBuilder(storyDetails, storyPackage, classLoader).story();
     }
 

Modified: trunk/plugins/maven/pom.xml (758 => 759)

--- trunk/plugins/maven/pom.xml	2007-07-12 09:55:04 UTC (rev 758)
+++ trunk/plugins/maven/pom.xml	2007-07-12 13:25:36 UTC (rev 759)
@@ -21,11 +21,16 @@
       <artifactId>maven-plugin-api</artifactId>
       <version>2.0</version>
     </dependency>
-    <dependency><!-- Only used for DirectoryScanner -->
+    <dependency>
       <groupId>ant</groupId>
       <artifactId>ant</artifactId>
       <version>1.6.5</version>
     </dependency>
+    <dependency>
+      <groupId>velocity</groupId>
+      <artifactId>velocity-dep</artifactId>
+      <version>1.4</version>
+    </dependency>
   </dependencies>
 
 </project>

Modified: trunk/plugins/maven/src/it/pom.xml (758 => 759)

--- trunk/plugins/maven/src/it/pom.xml	2007-07-12 09:55:04 UTC (rev 758)
+++ trunk/plugins/maven/src/it/pom.xml	2007-07-12 13:25:36 UTC (rev 759)
@@ -16,6 +16,7 @@
         <module>test4</module>
         <module>test5</module>
         <module>test6</module>        
+        <module>test7</module>        
 	</modules>
 
 </project>

Deleted: trunk/plugins/maven/src/it/src/main/java/org/jbehave/it/stories/another.story (758 => 759)

--- trunk/plugins/maven/src/it/src/main/java/org/jbehave/it/stories/another.story	2007-07-12 09:55:04 UTC (rev 758)
+++ trunk/plugins/maven/src/it/src/main/java/org/jbehave/it/stories/another.story	2007-07-12 13:25:36 UTC (rev 759)
@@ -1,5 +0,0 @@
-Title: User runs integration test
-Scenario: User runs test successfully
-Given a test to be run
-When user runs test
-Then a test is run successfully

Added: trunk/plugins/maven/src/it/src/main/java/org/jbehave/it/stories/events/UserExecutesCommand.java (0 => 759)

--- trunk/plugins/maven/src/it/src/main/java/org/jbehave/it/stories/events/UserExecutesCommand.java	                        (rev 0)
+++ trunk/plugins/maven/src/it/src/main/java/org/jbehave/it/stories/events/UserExecutesCommand.java	2007-07-12 13:25:36 UTC (rev 759)
@@ -0,0 +1,12 @@
+package org.jbehave.it.stories.events;
+
+import org.jbehave.core.minimock.story.domain.EventUsingMiniMock;
+import org.jbehave.core.story.domain.World;
+
+public class UserExecutesCommand extends EventUsingMiniMock {
+
+    public void occurIn(World world) {
+		// TODO     
+    }
+
+}

Copied: trunk/plugins/maven/src/it/src/main/java/org/jbehave/it/stories/generated.story (from rev 752, trunk/plugins/maven/src/it/src/main/java/org/jbehave/it/stories/another.story) (0 => 759)

--- trunk/plugins/maven/src/it/src/main/java/org/jbehave/it/stories/generated.story	                        (rev 0)
+++ trunk/plugins/maven/src/it/src/main/java/org/jbehave/it/stories/generated.story	2007-07-12 13:25:36 UTC (rev 759)
@@ -0,0 +1,5 @@
+Title: User wants to do something
+Scenario: User is able to do it
+Given something to be done
+When user executes command
+Then command is executed successfully

Added: trunk/plugins/maven/src/it/src/main/java/org/jbehave/it/stories/givens/SomethingToBeDone.java (0 => 759)

--- trunk/plugins/maven/src/it/src/main/java/org/jbehave/it/stories/givens/SomethingToBeDone.java	                        (rev 0)
+++ trunk/plugins/maven/src/it/src/main/java/org/jbehave/it/stories/givens/SomethingToBeDone.java	2007-07-12 13:25:36 UTC (rev 759)
@@ -0,0 +1,12 @@
+package org.jbehave.it.stories.givens;
+
+import org.jbehave.core.minimock.story.domain.GivenUsingMiniMock;
+import org.jbehave.core.story.domain.World;
+
+public class SomethingToBeDone extends GivenUsingMiniMock {
+
+    public void setUp(World world) {
+    	// TODO
+    }
+
+}

Added: trunk/plugins/maven/src/it/src/main/java/org/jbehave/it/stories/outcomes/CommandIsExecutedSuccessfully.java (0 => 759)

--- trunk/plugins/maven/src/it/src/main/java/org/jbehave/it/stories/outcomes/CommandIsExecutedSuccessfully.java	                        (rev 0)
+++ trunk/plugins/maven/src/it/src/main/java/org/jbehave/it/stories/outcomes/CommandIsExecutedSuccessfully.java	2007-07-12 13:25:36 UTC (rev 759)
@@ -0,0 +1,12 @@
+package org.jbehave.it.stories.outcomes;
+
+import org.jbehave.core.minimock.story.domain.OutcomeUsingMiniMock;
+import org.jbehave.core.story.domain.World;
+
+public class CommandIsExecutedSuccessfully extends OutcomeUsingMiniMock {
+
+    public void verify(World world) {
+    	// TODO
+    }
+
+}

Property changes: trunk/plugins/maven/src/it/test7

Name: svn:ignore
   + target

Added: trunk/plugins/maven/src/it/test7/pom.xml (0 => 759)

--- trunk/plugins/maven/src/it/test7/pom.xml	                        (rev 0)
+++ trunk/plugins/maven/src/it/test7/pom.xml	2007-07-12 13:25:36 UTC (rev 759)
@@ -0,0 +1,54 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<groupId>org.jbehave</groupId>
+	<artifactId>jbehave-maven-plugin-it-test7</artifactId>
+	<version>1.1-SNAPSHOT</version>
+	<packaging>jar</packaging>
+	<name>jBehave Maven Plugin Integration Test 7</name>
+
+	<dependencies>
+		<dependency>
+			<groupId>${pom.groupId}</groupId>
+			<artifactId>jbehave</artifactId>
+			<version>${pom.version}</version>
+		</dependency>
+	</dependencies>
+	
+	<build>
+		<sourceDirectory>${basedir}/../src/main/java</sourceDirectory>
+        <resources>
+            <resource>
+                <directory>${basedir}/../src/main/java</directory>
+                <includes>
+                    <include>**/*.story</include>
+                </includes>
+            </resource>
+        </resources>        
+		<plugins>
+			<plugin>
+				<groupId>org.jbehave</groupId>
+				<artifactId>jbehave-maven-plugin</artifactId>
+				<executions>				
+					<execution>
+						<id>generate-code</id>
+						<phase>integration-test</phase>
+						<configuration>
+							<storyDirectory>org/jbehave/it/stories</storyDirectory>
+                            <storyIncludes>
+                              <storyInclude>generated.story</storyInclude>
+                            </storyIncludes>
+                            <storyPackage>org.jbehave.it.stories</storyPackage>                            
+						</configuration>		
+						<goals>
+							<goal>generate-story-code</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>				
+		</plugins>
+	</build>
+
+</project>

Modified: trunk/plugins/maven/src/main/java/org/jbehave/mojo/AbstractStoryMojo.java (758 => 759)

--- trunk/plugins/maven/src/main/java/org/jbehave/mojo/AbstractStoryMojo.java	2007-07-12 09:55:04 UTC (rev 758)
+++ trunk/plugins/maven/src/main/java/org/jbehave/mojo/AbstractStoryMojo.java	2007-07-12 13:25:36 UTC (rev 759)
@@ -118,7 +118,7 @@
     }
     
     private List listStoryPaths() {        
-        scanner.setBasedir( new File( getStorySourceDirectory(), storyDirectory ) );
+        scanner.setBasedir( getStorySourceDirectory() );
         getLog().debug( "Listing story paths from directory " + storyDirectory );
         if ( storyIncludes != null )
         {
@@ -142,12 +142,16 @@
         return storyPaths;
     }
 
-    private String getStorySourceDirectory() {
+    private String getRootSourceDirectory() {
         if ( isTestScope() ){
             return testSourceDirectory;
         } 
         return sourceDirectory;
     }
+    
+    protected File getStorySourceDirectory() {
+       return new File( getRootSourceDirectory(), storyDirectory );
+    }
 
     public static class InvalidClassNameException extends RuntimeException {
         public InvalidClassNameException(String message, Throwable cause) {

Added: trunk/plugins/maven/src/main/java/org/jbehave/mojo/StoryCodeGeneratorMojo.java (0 => 759)

--- trunk/plugins/maven/src/main/java/org/jbehave/mojo/StoryCodeGeneratorMojo.java	                        (rev 0)
+++ trunk/plugins/maven/src/main/java/org/jbehave/mojo/StoryCodeGeneratorMojo.java	2007-07-12 13:25:36 UTC (rev 759)
@@ -0,0 +1,52 @@
+package org.jbehave.mojo;
+
+import java.net.MalformedURLException;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+import org.jbehave.core.story.StoryLoader;
+import org.jbehave.core.story.codegen.CodeGenerator;
+import org.jbehave.core.story.codegen.domain.StoryDetails;
+import org.jbehave.core.story.codegen.velocity.VelocityCodeGenerator;
+
+/**
+ * Mojo to generatore code for stories
+ * 
+ * @author Mauro Talevi
+ * @goal generate-story-code
+ */
+public class StoryCodeGeneratorMojo extends AbstractStoryMojo {
+      
+    /** The code generator */
+    private CodeGenerator generator;
+    
+    public void execute() throws MojoExecutionException, MojoFailureException {
+        generator = createCodeGenerator();
+        String storyPackage = getStoryPackage();
+        List storyPaths = getStoryPaths();
+        try {
+            for ( Iterator i = storyPaths.iterator(); i.hasNext(); ){
+                String storyPath = (String)i.next();
+                generateStoryCode(storyPackage, storyPath);
+            }
+        } catch (Exception e) {
+            throw new MojoExecutionException("Failed to generate code for stories "+storyPaths+" with package "+storyPackage, e);
+        }
+    }
+
+    //TODO  To make code generator configurable the story source directory and package need to 
+    //      added to the StoryDetails parsed from the story representation
+    private CodeGenerator createCodeGenerator() {
+        return new VelocityCodeGenerator(getStorySourceDirectory().getPath(), getStoryPackage());
+    }
+
+    private void generateStoryCode(String storyPackage, String storyPath) throws MalformedURLException {
+        getLog().info("Generate code for story "+ storyPath+" using package "+storyPackage);
+        StoryLoader loader = getStoryLoader();
+        StoryDetails storyDetails = loader.loadStoryDetails(storyPath, storyPackage);
+        generator.generateStory(storyDetails);
+    }
+  
+}


To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Reply via email to