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/21 10:25:17 UTC
svn commit: r1291672 - in /openejb/trunk/maven-plugins: ./
spi-helper-maven-plugin/
spi-helper-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/spi/
spi-helper-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/spi/xml/
xbean-xml/ xbe...
Author: rmannibucau
Date: Tue Feb 21 09:25:16 2012
New Revision: 1291672
URL: http://svn.apache.org/viewvc?rev=1291672&view=rev
Log:
managing profiles in spi-helper-maven-plugin and splitting xbean-xml in a separated module
Added:
openejb/trunk/maven-plugins/xbean-xml/
openejb/trunk/maven-plugins/xbean-xml/pom.xml
openejb/trunk/maven-plugins/xbean-xml/src/
openejb/trunk/maven-plugins/xbean-xml/src/main/
openejb/trunk/maven-plugins/xbean-xml/src/main/java/
openejb/trunk/maven-plugins/xbean-xml/src/main/java/org/
openejb/trunk/maven-plugins/xbean-xml/src/main/java/org/apache/
openejb/trunk/maven-plugins/xbean-xml/src/main/java/org/apache/openejb/
openejb/trunk/maven-plugins/xbean-xml/src/main/java/org/apache/openejb/xbean/
openejb/trunk/maven-plugins/xbean-xml/src/main/java/org/apache/openejb/xbean/xml/
openejb/trunk/maven-plugins/xbean-xml/src/main/java/org/apache/openejb/xbean/xml/Scan.java
openejb/trunk/maven-plugins/xbean-xml/src/test/
openejb/trunk/maven-plugins/xbean-xml/src/test/java/
Removed:
openejb/trunk/maven-plugins/spi-helper-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/spi/ExtendedAnnotationFinder.java
openejb/trunk/maven-plugins/spi-helper-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/spi/xml/
Modified:
openejb/trunk/maven-plugins/pom.xml
openejb/trunk/maven-plugins/spi-helper-maven-plugin/pom.xml
openejb/trunk/maven-plugins/spi-helper-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/spi/SpiMojo.java
Modified: openejb/trunk/maven-plugins/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/maven-plugins/pom.xml?rev=1291672&r1=1291671&r2=1291672&view=diff
==============================================================================
--- openejb/trunk/maven-plugins/pom.xml (original)
+++ openejb/trunk/maven-plugins/pom.xml Tue Feb 21 09:25:16 2012
@@ -39,6 +39,7 @@
<module>openejb-embedded-maven-plugin</module>
<module>maven-util</module>
<module>spi-helper-maven-plugin</module>
+ <module>xbean-xml</module>
</modules>
<dependencyManagement>
Modified: openejb/trunk/maven-plugins/spi-helper-maven-plugin/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/maven-plugins/spi-helper-maven-plugin/pom.xml?rev=1291672&r1=1291671&r2=1291672&view=diff
==============================================================================
--- openejb/trunk/maven-plugins/spi-helper-maven-plugin/pom.xml (original)
+++ openejb/trunk/maven-plugins/spi-helper-maven-plugin/pom.xml Tue Feb 21 09:25:16 2012
@@ -26,6 +26,16 @@
<groupId>org.apache.xbean</groupId>
<artifactId>xbean-finder-shaded</artifactId>
</dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>xbean-xml</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.openejb</groupId>
+ <artifactId>javaee-api</artifactId>
+ <version>6.0-3</version>
+ </dependency>
</dependencies>
<properties>
Modified: openejb/trunk/maven-plugins/spi-helper-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/spi/SpiMojo.java
URL: http://svn.apache.org/viewvc/openejb/trunk/maven-plugins/spi-helper-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/spi/SpiMojo.java?rev=1291672&r1=1291671&r2=1291672&view=diff
==============================================================================
--- openejb/trunk/maven-plugins/spi-helper-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/spi/SpiMojo.java (original)
+++ openejb/trunk/maven-plugins/spi-helper-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/spi/SpiMojo.java Tue Feb 21 09:25:16 2012
@@ -5,7 +5,7 @@ import org.apache.maven.plugin.AbstractM
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.project.MavenProject;
-import org.apache.openejb.maven.plugin.spi.xml.Scan;
+import org.apache.openejb.xbean.xml.Scan;
import org.apache.xbean.finder.Annotated;
import org.apache.xbean.finder.AnnotationFinder;
import org.apache.xbean.finder.archive.Archive;
@@ -21,7 +21,10 @@ import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import java.util.Set;
/**
@@ -29,6 +32,31 @@ import java.util.Set;
* @phase compile
*/
public class SpiMojo extends AbstractMojo {
+ private static final Map<String, Profile> DEFAULT_PROFILES = new HashMap<String, Profile>();
+
+ static {
+ final Profile jee6 = new Profile(
+ Arrays.asList( // annotations
+ "javax.ejb.Singleton",
+ "javax.ejb.Stateful",
+ "javax.ejb.Stateless",
+ "javax.enterprise.inject.Specializes",
+ "javax.annotation.ManagedBean",
+ "javax.ejb.MessageDriven",
+
+ "org.apache.openejb.api.LocalClient",
+ "org.apache.openejb.api.RemoteClient"
+ ),
+ Arrays.asList( // subclasses
+ "javax.ws.rs.core.Application"
+ ),
+ new ArrayList<String>( // implementations
+ // no implementations
+ )
+ );
+ DEFAULT_PROFILES.put("jee6", jee6);
+ }
+
/**
* @parameter default-value="${project.build.outputDirectory}"
* @required
@@ -58,6 +86,11 @@ public class SpiMojo extends AbstractMoj
private List<String> implementations;
/**
+ * @parameter
+ */
+ private List<String> profiles;
+
+ /**
* @parameter expression="${spi.output}" default-value="META-INF/scan.xml"
*/
private String outputFilename;
@@ -69,66 +102,98 @@ public class SpiMojo extends AbstractMoj
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
+ //
+ // create profiles to use
+ //
+ final List<Profile> profileToUse = new ArrayList<Profile>();
+ if (profiles != null) {
+ for (String profile : profiles) {
+ if (DEFAULT_PROFILES.containsKey(profile)) {
+ profileToUse.add(DEFAULT_PROFILES.get(profile));
+ } else {
+ getLog().info("can't find profile " + profile + ", available ones are " + DEFAULT_PROFILES.keySet());
+ }
+ }
+ }
+ profileToUse.add(new Profile(annotations, subclasses, implementations));
+
+ // the result
+ final Scan scan = new Scan();
+
try {
final ClassLoader loader = createClassLoader();
final Archive archive = new FileArchive(loader, module);
final AnnotationFinder finder = new AnnotationFinder(archive);
finder.link();
- final Scan scan = new Scan();
-
//
// find classes
//
- if (annotations != null) {
- for (String annotation : annotations) {
- final Class<? extends Annotation> annClazz = (Class<? extends Annotation>) load(loader, annotation);
-
- if (!useMeta) {
- for (Class<?> clazz : finder.findAnnotatedClasses(annClazz)) {
- scan.getClassname().add(clazz.getName());
- }
- } else {
- for (Annotated<Class<?>> clazz : finder.findMetaAnnotatedClasses(annClazz)) {
- scan.getClassname().add(clazz.get().getName());
+ for (Profile profile : profileToUse) {
+ if (profile.getAnnotations() != null) {
+ for (String annotation : profile.getAnnotations()) {
+ final Class<? extends Annotation> annClazz;
+ try {
+ annClazz = (Class<? extends Annotation>) load(loader, annotation);
+ } catch (MojoFailureException mfe) {
+ getLog().warn("can't find " + annotation);
+ continue;
}
- }
- if (!useMeta) {
- for (Field clazz : finder.findAnnotatedFields(annClazz)) {
- scan.getClassname().add(clazz.getDeclaringClass().getName());
- }
- } else {
- for (Annotated<Field> clazz : finder.findMetaAnnotatedFields(annClazz)) {
- scan.getClassname().add(clazz.get().getDeclaringClass().getName());
+ if (!useMeta) {
+ for (Class<?> clazz : finder.findAnnotatedClasses(annClazz)) {
+ scan.getClassname().add(clazz.getName());
+ }
+ } else {
+ for (Annotated<Class<?>> clazz : finder.findMetaAnnotatedClasses(annClazz)) {
+ scan.getClassname().add(clazz.get().getName());
+ }
}
- }
- if (!useMeta) {
- for (Method clazz : finder.findAnnotatedMethods(annClazz)) {
- scan.getClassname().add(clazz.getDeclaringClass().getName());
- }
- } else {
- for (Annotated<Method> clazz : finder.findMetaAnnotatedMethods(annClazz)) {
- scan.getClassname().add(clazz.get().getDeclaringClass().getName());
+ if (!useMeta) {
+ for (Field clazz : finder.findAnnotatedFields(annClazz)) {
+ scan.getClassname().add(clazz.getDeclaringClass().getName());
+ }
+ } else {
+ for (Annotated<Field> clazz : finder.findMetaAnnotatedFields(annClazz)) {
+ scan.getClassname().add(clazz.get().getDeclaringClass().getName());
+ }
+ }
+
+ if (!useMeta) {
+ for (Method clazz : finder.findAnnotatedMethods(annClazz)) {
+ scan.getClassname().add(clazz.getDeclaringClass().getName());
+ }
+ } else {
+ for (Annotated<Method> clazz : finder.findMetaAnnotatedMethods(annClazz)) {
+ scan.getClassname().add(clazz.get().getDeclaringClass().getName());
+ }
}
}
}
- }
- if (subclasses != null) {
- for (String subclass : subclasses) {
- for (Class<?> clazz : finder.findSubclasses(load(loader, subclass))) {
- scan.getClassname().add(clazz.getName());
+ if (profile.getSubclasses() != null) {
+ for (String subclass : profile.getSubclasses()) {
+ try {
+ for (Class<?> clazz : finder.findSubclasses(load(loader, subclass))) {
+ scan.getClassname().add(clazz.getName());
+ }
+ } catch (MojoFailureException mfe) {
+ getLog().warn("can't find " + subclass);
+ }
}
}
- }
- if (implementations != null) {
- for (String implementation : implementations) {
- for (Class<?> clazz : finder.findImplementations(load(loader, implementation))) {
- scan.getClassname().add(clazz.getName());
+ if (profile.getImplementations() != null) {
+ for (String implementation : profile.getImplementations()) {
+ try {
+ for (Class<?> clazz : finder.findImplementations(load(loader, implementation))) {
+ scan.getClassname().add(clazz.getName());
+ }
+ } catch (MojoFailureException mfe) {
+ getLog().warn("can't find " + implementation);
+ }
}
}
}
@@ -188,4 +253,28 @@ public class SpiMojo extends AbstractMoj
}
return new URLClassLoader(urls.toArray(new URL[urls.size()]), Thread.currentThread().getContextClassLoader());
}
+
+ public static final class Profile {
+ private List<String> annotations;
+ private List<String> subclasses;
+ private List<String> implementations;
+
+ public Profile(final List<String> annotations, final List<String> subclasses, final List<String> implementations) {
+ this.annotations = annotations;
+ this.subclasses = subclasses;
+ this.implementations = implementations;
+ }
+
+ public List<String> getAnnotations() {
+ return annotations;
+ }
+
+ public List<String> getSubclasses() {
+ return subclasses;
+ }
+
+ public List<String> getImplementations() {
+ return implementations;
+ }
+ }
}
Added: openejb/trunk/maven-plugins/xbean-xml/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/maven-plugins/xbean-xml/pom.xml?rev=1291672&view=auto
==============================================================================
--- openejb/trunk/maven-plugins/xbean-xml/pom.xml (added)
+++ openejb/trunk/maven-plugins/xbean-xml/pom.xml Tue Feb 21 09:25:16 2012
@@ -0,0 +1,21 @@
+<?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>xbean-xml</artifactId>
+ <name>XBean XML</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.xbean</groupId>
+ <artifactId>xbean-finder-shaded</artifactId>
+ </dependency>
+ </dependencies>
+</project>
Added: openejb/trunk/maven-plugins/xbean-xml/src/main/java/org/apache/openejb/xbean/xml/Scan.java
URL: http://svn.apache.org/viewvc/openejb/trunk/maven-plugins/xbean-xml/src/main/java/org/apache/openejb/xbean/xml/Scan.java?rev=1291672&view=auto
==============================================================================
--- openejb/trunk/maven-plugins/xbean-xml/src/main/java/org/apache/openejb/xbean/xml/Scan.java (added)
+++ openejb/trunk/maven-plugins/xbean-xml/src/main/java/org/apache/openejb/xbean/xml/Scan.java Tue Feb 21 09:25:16 2012
@@ -0,0 +1,37 @@
+package org.apache.openejb.xbean.xml;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElementWrapper;
+import javax.xml.bind.annotation.XmlRootElement;
+import java.util.HashSet;
+import java.util.Set;
+
+@XmlRootElement
+@XmlAccessorType(XmlAccessType.FIELD)
+public class Scan {
+ @XmlElementWrapper(name = "classes")
+ @XmlElement(name = "class")
+ private Set<String> classname = new HashSet<String>();
+
+ @XmlElementWrapper(name = "packages")
+ @XmlElement(name = "package")
+ private Set<String> packagename = new HashSet<String>();
+
+ public Set<String> getClassname() {
+ return classname;
+ }
+
+ public void setClassname(Set<String> classname) {
+ this.classname = classname;
+ }
+
+ public Set<String> getPackagename() {
+ return packagename;
+ }
+
+ public void setPackagename(Set<String> packagename) {
+ this.packagename = packagename;
+ }
+}