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 12:12:20 UTC
svn commit: r1291195 - in /openejb/trunk/maven-plugins: dd-maven-plugin/
dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/
dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/
tomee-maven-plugin/src/main/java/org/apa...
Author: rmannibucau
Date: Mon Feb 20 11:12:19 2012
New Revision: 1291195
URL: http://svn.apache.org/viewvc?rev=1291195&view=rev
Log:
making merger plugin working (step 1 ;))
Added:
openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/EjbJarMerger.java
- copied, changed from r1291046, openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/EjbjarxmlMerger.java
openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/EnvEntriesMerger.java
- copied, changed from r1291046, openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/EnventriespropertiesMerger.java
openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/OpenEJBJarMerger.java
- copied, changed from r1291046, openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/OpenejbjarxmlMerger.java
openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/ValidationMerger.java
- copied, changed from r1291046, openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/ValidationxmlMerger.java
Removed:
openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/EjbjarxmlMerger.java
openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/EnventriespropertiesMerger.java
openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/OpenejbjarxmlMerger.java
openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/ValidationxmlMerger.java
Modified:
openejb/trunk/maven-plugins/dd-maven-plugin/pom.xml
openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/MergeDDForWebappMojo.java
openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/Merger.java
openejb/trunk/maven-plugins/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/UnDeployMojo.java
Modified: openejb/trunk/maven-plugins/dd-maven-plugin/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/maven-plugins/dd-maven-plugin/pom.xml?rev=1291195&r1=1291194&r2=1291195&view=diff
==============================================================================
--- openejb/trunk/maven-plugins/dd-maven-plugin/pom.xml (original)
+++ openejb/trunk/maven-plugins/dd-maven-plugin/pom.xml Mon Feb 20 11:12:19 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/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/MergeDDForWebappMojo.java
URL: http://svn.apache.org/viewvc/openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/MergeDDForWebappMojo.java?rev=1291195&r1=1291194&r2=1291195&view=diff
==============================================================================
--- openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/MergeDDForWebappMojo.java (original)
+++ openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/MergeDDForWebappMojo.java Mon Feb 20 11:12:19 2012
@@ -7,13 +7,16 @@ import org.apache.maven.plugin.MojoFailu
import org.apache.maven.plugin.logging.Log;
import org.apache.maven.project.MavenProject;
import org.apache.openejb.config.NewLoaderLogic;
+import org.apache.openejb.maven.util.MavenLogStreamFactory;
+import org.apache.xbean.finder.AbstractFinder;
+import org.apache.xbean.finder.ClassFinder;
import org.apache.xbean.finder.ResourceFinder;
-import org.codehaus.plexus.interpolation.util.StringUtils;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
+import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
@@ -41,7 +44,14 @@ public class MergeDDForWebappMojo extend
private MavenProject project;
/**
- * @parameter expression="${project.build.outputDirectory}/${project.build.finalName}/WEB-INF"
+ * @parameter expression="${project.build.sourceDirectory}/main/webapp/WEB-INF"
+ * @required
+ * @readonly
+ */
+ private File webInfSrc;
+
+ /**
+ * @parameter expression="${project.build.directory}/${project.build.finalName}/WEB-INF"
* @required
* @readonly
*/
@@ -59,21 +69,34 @@ public class MergeDDForWebappMojo extend
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
+ System.setProperty("openejb.log.factory", "org.apache.openejb.maven.util.MavenLogStreamFactory");
+ MavenLogStreamFactory.setLogger(getLog());
+
initIncludeExclude();
- final Map<String, Merger<?>> mergers = initMerger();
+ final Map<String, Merger<?>> mergers;
+ try {
+ mergers = initMerger();
+ } catch (Exception e) {
+ getLog().error("can't find mergers", e);
+ return;
+ }
getLog().info("looking for descriptors...");
final List<Artifact> artifacts = getDependencies();
final ResourceFinder webInfFinder;
try {
- webInfFinder = new ResourceFinder(webInf.toURI().toURL());
+ webInfFinder = new ResourceFinder(webInfSrc.toURI().toURL());
} catch (MalformedURLException e) {
throw new MojoFailureException("can't create a finder for webinf", e);
}
final Map<Artifact, ResourceFinder> finders = finders(artifacts);
for (String dd : MANAGED_DD) {
+ if (!mergers.containsKey(dd)) {
+ getLog().warn("ignoring " + dd + " because no merger found");
+ }
+
int ddCount = 0;
Object reference;
final Merger<Object> merger = (Merger<Object>) mergers.get(dd);
@@ -101,25 +124,38 @@ public class MergeDDForWebappMojo extend
}
}
- // todo: dump it in web-inf...
if (ddCount > 0) {
- getLog().info(dd = " => ");
- getLog().info(reference.toString());
+ if (!webInf.exists() && !webInf.mkdirs()) {
+ getLog().error("can't create " + webInf.getPath());
+ }
+ final File dump = new File(webInf, dd);
+ try {
+ merger.dump(dump, reference);
+ getLog().info(dd + " merged on " + dump.getPath());
+ } catch (Exception e) {
+ getLog().error("can't save " + dd + " in " + dump.getPath());
+ }
+ } else {
+ getLog().debug("no " + dd + " found, this descriptor will be ignored");
}
}
}
- private Map<String, Merger<?>> initMerger() {
+ private Map<String, Merger<?>> initMerger() throws Exception {
final Map<String, Merger<?>> mergers = new HashMap<String, Merger<?>>();
- for (String dd : MANAGED_DD) {
- final String name = "org.apache.openejb.maven.plugin.dd.merger." + StringUtils.capitalizeFirstLetter(dd).replace(".", "").replace("-", "") + "Merger";
+ final ClassLoader cl = new URLClassLoader(new URL[] { getClass().getProtectionDomain().getCodeSource().getLocation() }, ClassLoader.getSystemClassLoader());
+ final AbstractFinder finder = new ClassFinder(cl, true).link();
+ final List<Class> foundMergers = finder.findSubclasses((Class) cl.loadClass(Merger.class.getName()));
+
+ for (Class<? extends Merger> m : foundMergers) {
try {
- mergers.put(dd,
- (Merger<?>) Thread.currentThread().getContextClassLoader()
- .loadClass(name)
- .getConstructor(Log.class).newInstance(getLog()));
+ // reload the class with the current classloader to avoid to miss some dependencies
+ // excluded to scan faster
+ final Merger<?> instance = (Merger<?>) Thread.currentThread().getContextClassLoader().loadClass(m.getName())
+ .getConstructor(Log.class).newInstance(getLog());
+ mergers.put(instance.descriptorName(), instance);
} catch (Exception e) {
- e.printStackTrace(); // TODO
+ getLog().warn("can't instantiate " + m.getName() + ", does it provide a constructor with a maven logger?");
}
}
return mergers;
Modified: openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/Merger.java
URL: http://svn.apache.org/viewvc/openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/Merger.java?rev=1291195&r1=1291194&r2=1291195&view=diff
==============================================================================
--- openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/Merger.java (original)
+++ openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/Merger.java Mon Feb 20 11:12:19 2012
@@ -1,9 +1,20 @@
package org.apache.openejb.maven.plugin.dd;
+import org.apache.maven.plugin.logging.Log;
+
+import java.io.File;
import java.net.URL;
-public interface Merger<T> {
- T merge(T reference, T toMerge);
- T createEmpty();
- T read(URL url);
+public abstract class Merger<T> {
+ protected final Log log;
+
+ public Merger(final Log logger) {
+ log = logger;
+ }
+
+ public abstract T merge(T reference, T toMerge);
+ public abstract T createEmpty();
+ public abstract T read(URL url);
+ public abstract String descriptorName();
+ public abstract void dump(File dump, T object) throws Exception ;
}
Copied: openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/EjbJarMerger.java (from r1291046, openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/EjbjarxmlMerger.java)
URL: http://svn.apache.org/viewvc/openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/EjbJarMerger.java?p2=openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/EjbJarMerger.java&p1=openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/EjbjarxmlMerger.java&r1=1291046&r2=1291195&rev=1291195&view=diff
==============================================================================
--- openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/EjbjarxmlMerger.java (original)
+++ openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/EjbJarMerger.java Mon Feb 20 11:12:19 2012
@@ -1,21 +1,22 @@
package org.apache.openejb.maven.plugin.dd.merger;
import org.apache.maven.plugin.logging.Log;
-import org.apache.openejb.config.sys.JaxbOpenejb;
import org.apache.openejb.jee.AssemblyDescriptor;
import org.apache.openejb.jee.EjbJar;
import org.apache.openejb.jee.EnterpriseBean;
import org.apache.openejb.jee.Interceptor;
+import org.apache.openejb.jee.JaxbJavaee;
import org.apache.openejb.maven.plugin.dd.Merger;
import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
import java.net.URL;
-public class EjbjarxmlMerger implements Merger<EjbJar> {
- private final Log log;
-
- public EjbjarxmlMerger(final Log logger) {
- log = logger;
+public class EjbJarMerger extends Merger<EjbJar> {
+ public EjbJarMerger(final Log logger) {
+ super(logger);
}
@Override
@@ -54,9 +55,24 @@ public class EjbjarxmlMerger implements
@Override
public EjbJar read(URL url) {
try {
- return JaxbOpenejb.unmarshal(EjbJar.class, new BufferedInputStream(url.openStream()));
+ return (EjbJar) JaxbJavaee.unmarshal(EjbJar.class, new BufferedInputStream(url.openStream()), false);
} catch (Exception e) {
return createEmpty();
}
}
+
+ @Override
+ public String descriptorName() {
+ return "ejb-jar.xml";
+ }
+
+ @Override
+ public void dump(final File dump, final EjbJar ejbJar) throws Exception {
+ final BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(dump));
+ try {
+ JaxbJavaee.marshal(EjbJar.class, ejbJar, stream);
+ } finally {
+ stream.close();
+ }
+ }
}
Copied: openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/EnvEntriesMerger.java (from r1291046, openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/EnventriespropertiesMerger.java)
URL: http://svn.apache.org/viewvc/openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/EnvEntriesMerger.java?p2=openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/EnvEntriesMerger.java&p1=openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/EnventriespropertiesMerger.java&r1=1291046&r2=1291195&rev=1291195&view=diff
==============================================================================
--- openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/EnventriespropertiesMerger.java (original)
+++ openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/EnvEntriesMerger.java Mon Feb 20 11:12:19 2012
@@ -4,15 +4,16 @@ import org.apache.maven.plugin.logging.L
import org.apache.openejb.maven.plugin.dd.Merger;
import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.FileWriter;
import java.io.IOException;
+import java.io.Writer;
import java.net.URL;
import java.util.Properties;
-public class EnventriespropertiesMerger implements Merger<Properties> {
- private final Log log;
-
- public EnventriespropertiesMerger(final Log logger) {
- log = logger;
+public class EnvEntriesMerger extends Merger<Properties> {
+ public EnvEntriesMerger(final Log logger) {
+ super(logger);
}
@Override
@@ -42,4 +43,19 @@ public class EnventriespropertiesMerger
}
return read;
}
+
+ @Override
+ public String descriptorName() {
+ return "env-entries.properties";
+ }
+
+ @Override
+ public void dump(final File dump, final Properties object) throws Exception {
+ final Writer writer = new FileWriter(dump);
+ try {
+ object.store(writer, "merged env-entries.properties");
+ } finally {
+ writer.close();
+ }
+ }
}
Copied: openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/OpenEJBJarMerger.java (from r1291046, openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/OpenejbjarxmlMerger.java)
URL: http://svn.apache.org/viewvc/openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/OpenEJBJarMerger.java?p2=openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/OpenEJBJarMerger.java&p1=openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/OpenejbjarxmlMerger.java&r1=1291046&r2=1291195&rev=1291195&view=diff
==============================================================================
--- openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/OpenejbjarxmlMerger.java (original)
+++ openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/OpenEJBJarMerger.java Mon Feb 20 11:12:19 2012
@@ -7,18 +7,19 @@ import org.apache.openejb.jee.oejb3.Open
import org.apache.openejb.maven.plugin.dd.Merger;
import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
import java.net.URL;
-public class OpenejbjarxmlMerger implements Merger<OpenejbJar> {
- private final Log log;
-
- public OpenejbjarxmlMerger(final Log logger) {
- log = logger;
+public class OpenEJBJarMerger extends Merger<OpenejbJar> {
+ public OpenEJBJarMerger(final Log logger) {
+ super(logger);
}
@Override
public OpenejbJar merge(OpenejbJar reference, OpenejbJar toMerge) {
- new EnventriespropertiesMerger(log).merge(reference.getProperties(), toMerge.getProperties());
+ new EnvEntriesMerger(log).merge(reference.getProperties(), toMerge.getProperties());
for (EjbDeployment deployment : toMerge.getEjbDeployment()) {
if (reference.getDeploymentsByEjbName().containsKey(deployment.getEjbName())) {
@@ -44,4 +45,19 @@ public class OpenejbjarxmlMerger impleme
return createEmpty();
}
}
+
+ @Override
+ public String descriptorName() {
+ return "openejb-jar.xml";
+ }
+
+ @Override
+ public void dump(File dump, OpenejbJar object) throws Exception {
+ final BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(dump));
+ try {
+ JaxbOpenejbJar3.marshal(OpenejbJar.class, object, stream);
+ } finally {
+ stream.close();
+ }
+ }
}
Copied: openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/ValidationMerger.java (from r1291046, openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/ValidationxmlMerger.java)
URL: http://svn.apache.org/viewvc/openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/ValidationMerger.java?p2=openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/ValidationMerger.java&p1=openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/ValidationxmlMerger.java&r1=1291046&r2=1291195&rev=1291195&view=diff
==============================================================================
--- openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/ValidationxmlMerger.java (original)
+++ openejb/trunk/maven-plugins/dd-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/dd/merger/ValidationMerger.java Mon Feb 20 11:12:19 2012
@@ -8,13 +8,14 @@ import org.apache.openejb.maven.plugin.d
import javax.xml.bind.JAXBElement;
import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
import java.net.URL;
-public class ValidationxmlMerger implements Merger<ValidationConfigType> {
- private final Log log;
-
- public ValidationxmlMerger(final Log logger) {
- log = logger;
+public class ValidationMerger extends Merger<ValidationConfigType> {
+ public ValidationMerger(final Log logger) {
+ super(logger);
}
@Override
@@ -47,4 +48,19 @@ public class ValidationxmlMerger impleme
return createEmpty();
}
}
+
+ @Override
+ public String descriptorName() {
+ return "validation.xml";
+ }
+
+ @Override
+ public void dump(File dump, ValidationConfigType object) throws Exception {
+ final BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(dump));
+ try {
+ JaxbOpenejb.marshal(ValidationConfigType.class, object, stream);
+ } finally {
+ stream.close();
+ }
+ }
}
Modified: openejb/trunk/maven-plugins/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/UnDeployMojo.java
URL: http://svn.apache.org/viewvc/openejb/trunk/maven-plugins/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/UnDeployMojo.java?rev=1291195&r1=1291194&r2=1291195&view=diff
==============================================================================
--- openejb/trunk/maven-plugins/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/UnDeployMojo.java (original)
+++ openejb/trunk/maven-plugins/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/UnDeployMojo.java Mon Feb 20 11:12:19 2012
@@ -22,10 +22,6 @@ import org.apache.maven.plugin.MojoFailu
import org.apache.openejb.OpenEJBException;
import org.apache.openejb.assembler.Deployer;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
-
/**
* @goal undeploy
*/