You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2012/02/20 09:50:57 UTC

svn commit: r1291152 - in /openejb/trunk/maven-plugins: ./ info-maven-plugin/ info-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/info/ info-maven-plugin/src/test/ maven-util/ maven-util/src/ maven-util/src/main/ maven-util/src/main/java/ m...

Author: rmannibucau
Date: Mon Feb 20 08:50:56 2012
New Revision: 1291152

URL: http://svn.apache.org/viewvc?rev=1291152&view=rev
Log:
enhancing openejb-embedded-maven-plugin to manage properties and to simply work

Added:
    openejb/trunk/maven-plugins/maven-util/
    openejb/trunk/maven-plugins/maven-util/pom.xml
    openejb/trunk/maven-plugins/maven-util/src/
    openejb/trunk/maven-plugins/maven-util/src/main/
    openejb/trunk/maven-plugins/maven-util/src/main/java/
    openejb/trunk/maven-plugins/maven-util/src/main/java/org/
    openejb/trunk/maven-plugins/maven-util/src/main/java/org/apache/
    openejb/trunk/maven-plugins/maven-util/src/main/java/org/apache/openejb/
    openejb/trunk/maven-plugins/maven-util/src/main/java/org/apache/openejb/maven/
    openejb/trunk/maven-plugins/maven-util/src/main/java/org/apache/openejb/maven/util/
    openejb/trunk/maven-plugins/maven-util/src/main/java/org/apache/openejb/maven/util/MavenLogStreamFactory.java
    openejb/trunk/maven-plugins/maven-util/src/test/
    openejb/trunk/maven-plugins/maven-util/src/test/java/
Removed:
    openejb/trunk/maven-plugins/info-maven-plugin/src/test/
    openejb/trunk/maven-plugins/openejb-embedded-maven-plugin/src/test/
Modified:
    openejb/trunk/maven-plugins/info-maven-plugin/pom.xml
    openejb/trunk/maven-plugins/info-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/info/InfoMojo.java
    openejb/trunk/maven-plugins/openejb-embedded-maven-plugin/pom.xml
    openejb/trunk/maven-plugins/openejb-embedded-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/embedded/OpenEJBEmbeddedMojo.java
    openejb/trunk/maven-plugins/pom.xml
    openejb/trunk/maven-plugins/tomee-maven-plugin/pom.xml

Modified: openejb/trunk/maven-plugins/info-maven-plugin/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/maven-plugins/info-maven-plugin/pom.xml?rev=1291152&r1=1291151&r2=1291152&view=diff
==============================================================================
--- openejb/trunk/maven-plugins/info-maven-plugin/pom.xml (original)
+++ openejb/trunk/maven-plugins/info-maven-plugin/pom.xml Mon Feb 20 08:50:56 2012
@@ -23,17 +23,14 @@
       <artifactId>maven-project</artifactId>
     </dependency>
     <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>maven-artifact</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.sonatype.aether</groupId>
-      <artifactId>aether-api</artifactId>
-    </dependency>
-    <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
     </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>maven-util</artifactId>
+      <version>${project.version}</version>
+    </dependency>
   </dependencies>
 
   <properties>

Modified: openejb/trunk/maven-plugins/info-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/info/InfoMojo.java
URL: http://svn.apache.org/viewvc/openejb/trunk/maven-plugins/info-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/info/InfoMojo.java?rev=1291152&r1=1291151&r2=1291152&view=diff
==============================================================================
--- openejb/trunk/maven-plugins/info-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/info/InfoMojo.java (original)
+++ openejb/trunk/maven-plugins/info-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/info/InfoMojo.java Mon Feb 20 08:50:56 2012
@@ -3,7 +3,6 @@ package org.apache.openejb.maven.plugin.
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
-import org.apache.maven.plugin.logging.Log;
 import org.apache.openejb.OpenEJB;
 import org.apache.openejb.OpenEJBException;
 import org.apache.openejb.assembler.classic.AppInfo;
@@ -11,9 +10,7 @@ import org.apache.openejb.config.AppModu
 import org.apache.openejb.config.ConfigurationFactory;
 import org.apache.openejb.config.PreconfiguredFactory;
 import org.apache.openejb.loader.IO;
-import org.apache.openejb.util.LogCategory;
-import org.apache.openejb.util.LogStream;
-import org.apache.openejb.util.LogStreamFactory;
+import org.apache.openejb.maven.util.MavenLogStreamFactory;
 
 import java.io.File;
 import java.io.FileWriter;
@@ -43,7 +40,7 @@ public class InfoMojo extends AbstractMo
         final String path = module.getPath();
         getLog().info("creating module for " + path);
 
-        System.setProperty("openejb.log.factory", MavenLogStreamFactory.class.getName());
+        System.setProperty("openejb.log.factory", "org.apache.openejb.maven.util.MavenLogStreamFactory");
         MavenLogStreamFactory.setLogger(getLog());
 
         final ConfigurationFactory configurationFactory = new ConfigurationFactory();
@@ -84,100 +81,4 @@ public class InfoMojo extends AbstractMo
     private AppInfo replaceContainers(AppInfo appInfo) {
         return appInfo;
     }
-
-    public static class MavenLogStreamFactory implements LogStreamFactory {
-        private static Log logger;
-
-        @Override
-        public LogStream createLogStream(LogCategory logCategory) {
-            return new MavenLogStream(logger);
-        }
-
-        public static void setLogger(Log logger) {
-            MavenLogStreamFactory.logger = logger;
-        }
-
-        private static class MavenLogStream implements LogStream {
-            private final Log log;
-
-            public MavenLogStream(Log logger) {
-                log = logger;
-            }
-
-            @Override
-            public boolean isFatalEnabled() {
-                return log.isErrorEnabled();
-            }
-
-            @Override
-            public void fatal(String message) {
-                log.error(message);
-            }
-
-            @Override
-            public void fatal(String message, Throwable t) {
-                log.error(message, t);
-            }
-
-            @Override
-            public boolean isErrorEnabled() {
-                return log.isErrorEnabled();
-            }
-
-            @Override
-            public void error(String message) {
-                log.error(message);
-            }
-
-            @Override
-            public void error(String message, Throwable t) {
-                log.error(message, t);
-            }
-
-            @Override
-            public boolean isWarnEnabled() {
-                return log.isWarnEnabled();
-            }
-
-            @Override
-            public void warn(String message) {
-                log.warn(message);
-            }
-
-            @Override
-            public void warn(String message, Throwable t) {
-                log.warn(message, t);
-            }
-
-            @Override
-            public boolean isInfoEnabled() {
-                return log.isInfoEnabled();
-            }
-
-            @Override
-            public void info(String message) {
-                log.info(message);
-            }
-
-            @Override
-            public void info(String message, Throwable t) {
-                log.info(message, t);
-            }
-
-            @Override
-            public boolean isDebugEnabled() {
-                return log.isDebugEnabled();
-            }
-
-            @Override
-            public void debug(String message) {
-                log.debug(message);
-            }
-
-            @Override
-            public void debug(String message, Throwable t) {
-                log.debug(message, t);
-            }
-        }
-    }
 }

Added: openejb/trunk/maven-plugins/maven-util/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/maven-plugins/maven-util/pom.xml?rev=1291152&view=auto
==============================================================================
--- openejb/trunk/maven-plugins/maven-util/pom.xml (added)
+++ openejb/trunk/maven-plugins/maven-util/pom.xml Mon Feb 20 08:50:56 2012
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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/xsd/maven-4.0.0.xsd">
+  <parent>
+    <artifactId>maven-plugins-parent</artifactId>
+    <groupId>org.apache.openejb</groupId>
+    <version>0.0.1-SNAPSHOT</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+
+  <artifactId>maven-util</artifactId>
+  <name>OpenEJB Maven Plugins :: Util</name>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-plugin-api</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.openejb</groupId>
+      <artifactId>openejb-core</artifactId>
+    </dependency>
+  </dependencies>
+</project>

Added: openejb/trunk/maven-plugins/maven-util/src/main/java/org/apache/openejb/maven/util/MavenLogStreamFactory.java
URL: http://svn.apache.org/viewvc/openejb/trunk/maven-plugins/maven-util/src/main/java/org/apache/openejb/maven/util/MavenLogStreamFactory.java?rev=1291152&view=auto
==============================================================================
--- openejb/trunk/maven-plugins/maven-util/src/main/java/org/apache/openejb/maven/util/MavenLogStreamFactory.java (added)
+++ openejb/trunk/maven-plugins/maven-util/src/main/java/org/apache/openejb/maven/util/MavenLogStreamFactory.java Mon Feb 20 08:50:56 2012
@@ -0,0 +1,102 @@
+package org.apache.openejb.maven.util;
+
+import org.apache.maven.plugin.logging.Log;
+import org.apache.openejb.util.LogCategory;
+import org.apache.openejb.util.LogStream;
+import org.apache.openejb.util.LogStreamFactory;
+
+public class MavenLogStreamFactory implements LogStreamFactory {
+    private static Log logger;
+
+    @Override
+    public LogStream createLogStream(final LogCategory logCategory) {
+        return new MavenLogStream(logger);
+    }
+
+    public static void setLogger(Log logger) {
+        MavenLogStreamFactory.logger = logger;
+    }
+
+    private static class MavenLogStream implements LogStream {
+        private final Log log;
+
+        public MavenLogStream(Log logger) {
+            log = logger;
+        }
+
+        @Override
+        public boolean isFatalEnabled() {
+            return log.isErrorEnabled();
+        }
+
+        @Override
+        public void fatal(String message) {
+            log.error(message);
+        }
+
+        @Override
+        public void fatal(String message, Throwable t) {
+            log.error(message, t);
+        }
+
+        @Override
+        public boolean isErrorEnabled() {
+            return log.isErrorEnabled();
+        }
+
+        @Override
+        public void error(String message) {
+            log.error(message);
+        }
+
+        @Override
+        public void error(String message, Throwable t) {
+            log.error(message, t);
+        }
+
+        @Override
+        public boolean isWarnEnabled() {
+            return log.isWarnEnabled();
+        }
+
+        @Override
+        public void warn(String message) {
+            log.warn(message);
+        }
+
+        @Override
+        public void warn(String message, Throwable t) {
+            log.warn(message, t);
+        }
+
+        @Override
+        public boolean isInfoEnabled() {
+            return log.isInfoEnabled();
+        }
+
+        @Override
+        public void info(String message) {
+            log.info(message);
+        }
+
+        @Override
+        public void info(String message, Throwable t) {
+            log.info(message, t);
+        }
+
+        @Override
+        public boolean isDebugEnabled() {
+            return log.isDebugEnabled();
+        }
+
+        @Override
+        public void debug(String message) {
+            log.debug(message);
+        }
+
+        @Override
+        public void debug(String message, Throwable t) {
+            log.debug(message, t);
+        }
+    }
+}

Modified: openejb/trunk/maven-plugins/openejb-embedded-maven-plugin/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/maven-plugins/openejb-embedded-maven-plugin/pom.xml?rev=1291152&r1=1291151&r2=1291152&view=diff
==============================================================================
--- openejb/trunk/maven-plugins/openejb-embedded-maven-plugin/pom.xml (original)
+++ openejb/trunk/maven-plugins/openejb-embedded-maven-plugin/pom.xml Mon Feb 20 08:50:56 2012
@@ -26,6 +26,11 @@
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
     </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>maven-util</artifactId>
+      <version>${project.version}</version>
+    </dependency>
   </dependencies>
 
   <properties>

Modified: openejb/trunk/maven-plugins/openejb-embedded-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/embedded/OpenEJBEmbeddedMojo.java
URL: http://svn.apache.org/viewvc/openejb/trunk/maven-plugins/openejb-embedded-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/embedded/OpenEJBEmbeddedMojo.java?rev=1291152&r1=1291151&r2=1291152&view=diff
==============================================================================
--- openejb/trunk/maven-plugins/openejb-embedded-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/embedded/OpenEJBEmbeddedMojo.java (original)
+++ openejb/trunk/maven-plugins/openejb-embedded-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/embedded/OpenEJBEmbeddedMojo.java Mon Feb 20 08:50:56 2012
@@ -1,12 +1,22 @@
 package org.apache.openejb.maven.plugin.embedded;
 
+import org.apache.maven.artifact.Artifact;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.project.MavenProject;
+import org.apache.openejb.maven.util.MavenLogStreamFactory;
 
 import javax.ejb.embeddable.EJBContainer;
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.CountDownLatch;
 
 /**
@@ -38,24 +48,71 @@ public class OpenEJBEmbeddedMojo extends
      */
     private boolean await;
 
+    /**
+     * @parameter
+     */
+    private Map<String, String> properties;
+
+    /**
+     * @parameter expression="${project}"
+     * @required
+     * @readonly
+     */
+    private MavenProject project;
+
     @Override
     public void execute() throws MojoExecutionException, MojoFailureException {
-        final EJBContainer container = EJBContainer.createEJBContainer(map());
-        if (await) {
-            final CountDownLatch latch = new CountDownLatch(1);
-            Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
-                @Override
-                public void run() {
-                    latch.countDown();
+        MavenLogStreamFactory.setLogger(getLog());
+        final ClassLoader oldCl = Thread.currentThread().getContextClassLoader();
+        Thread.currentThread().setContextClassLoader(createClassLoader(oldCl));
+
+        EJBContainer container = null;
+        try {
+            container = EJBContainer.createEJBContainer(map());
+            if (await) {
+                final CountDownLatch latch = new CountDownLatch(1);
+                Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
+                    @Override
+                    public void run() {
+                        latch.countDown();
+                    }
+                }));
+                try {
+                    latch.await();
+                } catch (InterruptedException e) {
+                    // ignored
                 }
-            }));
+            }
+        } finally {
+            if (container != null) {
+                container.close();
+            }
+            Thread.currentThread().setContextClassLoader(oldCl);
+        }
+    }
+
+    private ClassLoader createClassLoader(final ClassLoader parent) {
+        final List<URL> urls = new ArrayList<URL>();
+        for (Artifact artifact : (Set<Artifact>) project.getArtifacts()) {
             try {
-                latch.await();
-            } catch (InterruptedException e) {
-                // ignored
+                urls.add(artifact.getFile().toURI().toURL());
+            } catch (MalformedURLException e) {
+                getLog().warn("can't use artifact " + artifact.toString());
             }
         }
-        container.close();
+        for (String str : modules.split(",")) {
+            final File file = new File(str);
+            if (file.exists()) {
+                try {
+                    urls.add(file.toURI().toURL());
+                } catch (MalformedURLException e) {
+                    getLog().warn("can't use path " + str);
+                }
+            } else {
+                getLog().warn("can't find " + str);
+            }
+        }
+        return new URLClassLoader(urls.toArray(new URL[urls.size()]), parent);
     }
 
     private Map<?, ?> map() {
@@ -63,6 +120,10 @@ public class OpenEJBEmbeddedMojo extends
         map.put(EJBContainer.APP_NAME, id);
         map.put(EJBContainer.PROVIDER, provider);
         map.put(EJBContainer.MODULES, modules.split(","));
+        map.put("openejb.log.factory", "org.apache.openejb.maven.util.MavenLogStreamFactory");
+        if (properties != null) {
+            map.putAll(properties);
+        }
         return map;
     }
 }

Modified: openejb/trunk/maven-plugins/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/maven-plugins/pom.xml?rev=1291152&r1=1291151&r2=1291152&view=diff
==============================================================================
--- openejb/trunk/maven-plugins/pom.xml (original)
+++ openejb/trunk/maven-plugins/pom.xml Mon Feb 20 08:50:56 2012
@@ -38,6 +38,7 @@
     <module>info-maven-plugin</module>
     <module>dd-maven-plugin</module>
     <module>openejb-embedded-maven-plugin</module>
+    <module>maven-util</module>
   </modules>
 
   <dependencyManagement>

Modified: openejb/trunk/maven-plugins/tomee-maven-plugin/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/maven-plugins/tomee-maven-plugin/pom.xml?rev=1291152&r1=1291151&r2=1291152&view=diff
==============================================================================
--- openejb/trunk/maven-plugins/tomee-maven-plugin/pom.xml (original)
+++ openejb/trunk/maven-plugins/tomee-maven-plugin/pom.xml Mon Feb 20 08:50:56 2012
@@ -41,14 +41,6 @@
       <artifactId>maven-project</artifactId>
     </dependency>
     <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>maven-artifact</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.sonatype.aether</groupId>
-      <artifactId>aether-api</artifactId>
-    </dependency>
-    <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
     </dependency>