activemq-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From chir...@apache.org
Subject svn commit: r419352 - in /incubator/activemq/trunk/maven-gram-plugin: ./ src/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/activemq/ src/main/java/org/apache/activemq/maven/
Date Wed, 05 Jul 2006 21:56:56 GMT
Author: chirino
Date: Wed Jul  5 14:56:55 2006
New Revision: 419352

URL: http://svn.apache.org/viewvc?rev=419352&view=rev
Log:
To get the openwire generation scripts to work under maven2, I first needed to create a gram
plugin.  This module should eventually move the the groovy project since
it would be better maintained there.


Added:
    incubator/activemq/trunk/maven-gram-plugin/
    incubator/activemq/trunk/maven-gram-plugin/pom.xml
    incubator/activemq/trunk/maven-gram-plugin/src/
    incubator/activemq/trunk/maven-gram-plugin/src/main/
    incubator/activemq/trunk/maven-gram-plugin/src/main/java/
    incubator/activemq/trunk/maven-gram-plugin/src/main/java/org/
    incubator/activemq/trunk/maven-gram-plugin/src/main/java/org/apache/
    incubator/activemq/trunk/maven-gram-plugin/src/main/java/org/apache/activemq/
    incubator/activemq/trunk/maven-gram-plugin/src/main/java/org/apache/activemq/maven/
    incubator/activemq/trunk/maven-gram-plugin/src/main/java/org/apache/activemq/maven/GramMojo.java

Added: incubator/activemq/trunk/maven-gram-plugin/pom.xml
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/maven-gram-plugin/pom.xml?rev=419352&view=auto
==============================================================================
--- incubator/activemq/trunk/maven-gram-plugin/pom.xml (added)
+++ incubator/activemq/trunk/maven-gram-plugin/pom.xml Wed Jul  5 14:56:55 2006
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+    Copyright 2005-2006 The Apache Software Foundation
+   
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+   
+    http://www.apache.org/licenses/LICENSE-2.0
+   
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<project
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xmlns="http://maven.apache.org/POM/4.0.0">
+  
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>incubator-activemq</groupId>
+    <artifactId>activemq-parent</artifactId>
+    <version>4.1-SNAPSHOT</version>
+    <relativePath>../pom.xml</relativePath>
+  </parent>
+
+  <artifactId>maven-gram-plugin</artifactId>
+  <packaging>maven-plugin</packaging>
+  <name>Gram Plugin</name>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-project</artifactId>
+      <version>2.0</version>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-archiver</artifactId>
+      <version>1.0-alpha-5</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-archiver</artifactId>
+      <version>2.0</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-plugin-api</artifactId>
+      <version>2.0</version>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-utils</artifactId>
+      <version>1.1</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-artifact</artifactId>
+      <version>2.0</version>
+    </dependency>
+    
+    <dependency>
+      <groupId>groovy</groupId>
+      <artifactId>groovy-all</artifactId>
+      <version>1.0-jsr-03</version>
+    </dependency>
+    <dependency>
+      <groupId>annogen</groupId>
+      <artifactId>annogen</artifactId>
+      <version>0.1.0</version>
+    </dependency>
+    
+  </dependencies>
+  
+  <profiles>
+    <profile>
+      <id>default-tools.jar</id>
+      <activation>
+        <property>
+          <name>java.vendor</name>
+          <value>Sun Microsystems Inc.</value>
+        </property>
+      </activation>
+      <dependencies>
+        <dependency>
+          <groupId>com.sun</groupId>
+          <artifactId>tools</artifactId>
+          <version>1.4.2</version>
+          <scope>system</scope>
+          <systemPath>${java.home}/../lib/tools.jar</systemPath>
+        </dependency>
+      </dependencies>
+    </profile>
+  </profiles>
+ 
+</project>

Added: incubator/activemq/trunk/maven-gram-plugin/src/main/java/org/apache/activemq/maven/GramMojo.java
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/maven-gram-plugin/src/main/java/org/apache/activemq/maven/GramMojo.java?rev=419352&view=auto
==============================================================================
--- incubator/activemq/trunk/maven-gram-plugin/src/main/java/org/apache/activemq/maven/GramMojo.java
(added)
+++ incubator/activemq/trunk/maven-gram-plugin/src/main/java/org/apache/activemq/maven/GramMojo.java
Wed Jul  5 14:56:55 2006
@@ -0,0 +1,145 @@
+/**
+ *
+ * Copyright 2005-2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.maven;
+
+import groovy.lang.GroovyShell;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.codehaus.groovy.control.CompilationFailedException;
+import org.codehaus.jam.JamService;
+import org.codehaus.jam.JamServiceFactory;
+import org.codehaus.jam.JamServiceParams;
+import org.codehaus.plexus.archiver.manager.ArchiverManager;
+
+/**
+ * Greates a Mojo for Gram.
+ * 
+ * This module is largly based on the Gram class here:
+ * http://cvs.groovy.codehaus.org/browse/groovy/groovy/modules/gram/src/main/org/codehaus/gram/Gram.java?r=1.4
+ * 
+ * We need to get this moved over the groovy project eventually.. Putting in ActiveMQ for
now so we can keep going.
+ * 
+ * @goal gram
+ * @description Runs the Gram code generator
+ */
+public class GramMojo extends AbstractMojo 
+{
+    /**
+     * Source directories of the project.
+     *
+     * @parameter expression="${project.compileSourceRoots}"
+     * @required
+     * @readonly
+     */
+    private List sourceDirs;
+
+
+    /**
+     * @parameter
+     * @required
+     */
+    String scripts = "";
+    
+    /**
+     * @parameter
+     */
+    Map groovyProperties = Collections.EMPTY_MAP;
+    
+    /**
+     * To look up Archiver/UnArchiver implementations
+     *
+     * @parameter expression="${component.org.codehaus.plexus.archiver.manager.ArchiverManager}"
+     * @required
+     */
+    protected ArchiverManager archiverManager;
+    
+    public void execute() throws MojoExecutionException 
+    {
+
+        try {
+        	
+            System.out.println("Parsing source files in: " + sourceDirs);
+
+            JamServiceFactory jamServiceFactory = JamServiceFactory.getInstance();
+            JamServiceParams params = jamServiceFactory.createServiceParams();
+            
+            File[] dirs = new File[sourceDirs.size()];
+            {
+	            int i=0;
+	            for (Iterator iter = sourceDirs.iterator(); iter.hasNext();) {
+					dirs[i++] = new File((String) iter.next());
+				}
+            }
+            
+            params.includeSourcePattern(dirs, "**/*.java");
+            JamService jam = jamServiceFactory.createService(params);
+
+            String[] scriptsArray = scripts.split(":");
+            for (int i = 1; i < scriptsArray.length; i++) {
+                String script = scriptsArray[i].trim();
+                if(script.length() > 0 ) {
+	                getLog().info("Evaluating Groovy script: " + script);
+	                execute(jam, script);
+                }
+            }
+        }
+        catch (Exception e) {
+        	getLog().error("Caught: " + e, e);
+        }
+    }
+    
+    public void execute(JamService jam, String script) throws CompilationFailedException,
IOException {
+        File file = new File(script);
+        if (file.isFile()) {
+            GroovyShell shell = createShell(jam);
+            shell.evaluate(file);
+        }
+        else {
+            // lets try load the script on the classpath
+            InputStream in = getClass().getClassLoader().getResourceAsStream(script);
+            if (in == null) {
+                in = Thread.currentThread().getContextClassLoader().getResourceAsStream(script);
+                if (in == null) {
+                    throw new IOException("No script called: " + script + " could be found
on the classpath or the file system");
+                }
+            }
+            GroovyShell shell = createShell(jam);
+            shell.evaluate(in, script);
+        }
+    }
+
+    protected GroovyShell createShell(JamService jam) {
+        GroovyShell answer = new GroovyShell();
+        for (Iterator iter = groovyProperties.entrySet().iterator(); iter.hasNext();) {
+			Map.Entry entry = (Map.Entry) iter.next();
+	        answer.setProperty((String) entry.getKey(), entry.getValue());
+		}
+        answer.setProperty("jam", jam);
+        answer.setProperty("classes", jam.getAllClasses());
+        return answer;
+    }
+    
+}



Mime
View raw message