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 11:04:07 UTC
svn commit: r1291681 - in /openejb/trunk/maven-plugins: ./
spi-helper-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/spi/
xbean-xml/ xbean-xml/src/main/java/org/apache/openejb/xbean/xml/
xbean-xml/src/test/java/org/ xbean-xml/src/test/java/...
Author: rmannibucau
Date: Tue Feb 21 10:04:06 2012
New Revision: 1291681
URL: http://svn.apache.org/viewvc?rev=1291681&view=rev
Log:
adding XMLAnnotationFinderHelper and a test
Added:
openejb/trunk/maven-plugins/xbean-xml/src/main/java/org/apache/openejb/xbean/xml/XMLAnnotationFinderHelper.java
openejb/trunk/maven-plugins/xbean-xml/src/test/java/org/
openejb/trunk/maven-plugins/xbean-xml/src/test/java/org/apache/
openejb/trunk/maven-plugins/xbean-xml/src/test/java/org/apache/openejb/
openejb/trunk/maven-plugins/xbean-xml/src/test/java/org/apache/openejb/xbean/
openejb/trunk/maven-plugins/xbean-xml/src/test/java/org/apache/openejb/xbean/xml/
openejb/trunk/maven-plugins/xbean-xml/src/test/java/org/apache/openejb/xbean/xml/XmlAnnotationFinderHelperTest.java
openejb/trunk/maven-plugins/xbean-xml/src/test/java/org/apache/openejb/xbean/xml/bean/
openejb/trunk/maven-plugins/xbean-xml/src/test/java/org/apache/openejb/xbean/xml/bean/MyAnnotation.java
openejb/trunk/maven-plugins/xbean-xml/src/test/java/org/apache/openejb/xbean/xml/bean/MyBean1.java
openejb/trunk/maven-plugins/xbean-xml/src/test/java/org/apache/openejb/xbean/xml/bean/MyBean2.java
openejb/trunk/maven-plugins/xbean-xml/src/test/java/org/apache/openejb/xbean/xml/bean/MyBean3.java
openejb/trunk/maven-plugins/xbean-xml/src/test/resources/
openejb/trunk/maven-plugins/xbean-xml/src/test/resources/test-scan.xml
Modified:
openejb/trunk/maven-plugins/pom.xml
openejb/trunk/maven-plugins/spi-helper-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/spi/SpiMojo.java
openejb/trunk/maven-plugins/xbean-xml/pom.xml
Modified: openejb/trunk/maven-plugins/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/maven-plugins/pom.xml?rev=1291681&r1=1291680&r2=1291681&view=diff
==============================================================================
--- openejb/trunk/maven-plugins/pom.xml (original)
+++ openejb/trunk/maven-plugins/pom.xml Tue Feb 21 10:04:06 2012
@@ -79,6 +79,11 @@
<artifactId>xbean-finder-shaded</artifactId>
<version>3.10-SNAPSHOT</version>
</dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.10</version>
+ </dependency>
</dependencies>
</dependencyManagement>
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=1291681&r1=1291680&r2=1291681&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 10:04:06 2012
@@ -36,16 +36,54 @@ public class SpiMojo extends AbstractMoj
static {
final Profile jee6 = new Profile(
- Arrays.asList( // annotations
+ Arrays.asList( // annotations, TODO: possibly remove some redundant annotations
+ "javax.annotation.ManagedBean",
+ "javax.annotation.PostConstruct",
+ "javax.annotation.PreDestroy",
+ "javax.annotation.Resource",
+ "javax.annotation.Resources",
+ "javax.annotation.security.DenyAll",
+ "javax.annotation.security.PermitAll",
+ "javax.annotation.security.RolesAllowed",
+ "javax.annotation.sql.DataSourceDefinition",
+ "javax.ejb.AfterBegin",
+ "javax.ejb.AfterCompletion",
+ "javax.ejb.ApplicationException",
+ "javax.ejb.Asynchronous",
+ "javax.ejb.BeforeCompletion",
+ "javax.ejb.ConcurrencyManagement",
+ "javax.ejb.DependsOn",
+ "javax.ejb.EJB",
+ "javax.ejb.EJBs",
+ "javax.ejb.Init",
+ "javax.ejb.LocalBean",
+ "javax.ejb.LocalHome",
+ "javax.ejb.MessageDriven",
+ "javax.ejb.PostActivate",
+ "javax.ejb.PrePassivate",
+ "javax.ejb.RemoteHome",
+ "javax.ejb.Remove",
+ "javax.ejb.Schedule",
+ "javax.ejb.Schedules",
"javax.ejb.Singleton",
"javax.ejb.Stateful",
"javax.ejb.Stateless",
+ "javax.ejb.Timeout",
"javax.enterprise.inject.Specializes",
- "javax.annotation.ManagedBean",
- "javax.ejb.MessageDriven",
-
- "org.apache.openejb.api.LocalClient",
- "org.apache.openejb.api.RemoteClient"
+ "javax.interceptor.AroundInvoke",
+ "javax.interceptor.AroundTimeout",
+ "javax.interceptor.ExcludeClassInterceptors",
+ "javax.interceptor.ExcludeDefaultInterceptors",
+ "javax.interceptor.Interceptors",
+ "javax.jws.WebService",
+ "javax.persistence.PersistenceContext",
+ "javax.persistence.PersistenceContexts",
+ "javax.persistence.PersistenceUnit",
+ "javax.persistence.PersistenceUnits",
+ "javax.ws.rs.Path",
+ "javax.xml.ws.WebServiceProvider",
+ "javax.xml.ws.WebServiceRef",
+ "javax.xml.ws.WebServiceRefs"
),
Arrays.asList( // subclasses
"javax.ws.rs.core.Application"
Modified: openejb/trunk/maven-plugins/xbean-xml/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/maven-plugins/xbean-xml/pom.xml?rev=1291681&r1=1291680&r2=1291681&view=diff
==============================================================================
--- openejb/trunk/maven-plugins/xbean-xml/pom.xml (original)
+++ openejb/trunk/maven-plugins/xbean-xml/pom.xml Tue Feb 21 10:04:06 2012
@@ -17,5 +17,9 @@
<groupId>org.apache.xbean</groupId>
<artifactId>xbean-finder-shaded</artifactId>
</dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
</dependencies>
</project>
Added: openejb/trunk/maven-plugins/xbean-xml/src/main/java/org/apache/openejb/xbean/xml/XMLAnnotationFinderHelper.java
URL: http://svn.apache.org/viewvc/openejb/trunk/maven-plugins/xbean-xml/src/main/java/org/apache/openejb/xbean/xml/XMLAnnotationFinderHelper.java?rev=1291681&view=auto
==============================================================================
--- openejb/trunk/maven-plugins/xbean-xml/src/main/java/org/apache/openejb/xbean/xml/XMLAnnotationFinderHelper.java (added)
+++ openejb/trunk/maven-plugins/xbean-xml/src/main/java/org/apache/openejb/xbean/xml/XMLAnnotationFinderHelper.java Tue Feb 21 10:04:06 2012
@@ -0,0 +1,49 @@
+package org.apache.openejb.xbean.xml;
+
+import org.apache.xbean.finder.AnnotationFinder;
+import org.apache.xbean.finder.IAnnotationFinder;
+import org.apache.xbean.finder.archive.Archive;
+import org.apache.xbean.finder.archive.ClassesArchive;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import java.io.BufferedInputStream;
+import java.io.InputStream;
+
+public final class XMLAnnotationFinderHelper {
+ private static final JAXBContext JAXB_CONTEXT;
+ static {
+ try {
+ JAXB_CONTEXT = JAXBContext.newInstance(Scan.class);
+ } catch (JAXBException e) {
+ throw new RuntimeException(e); // TODO: handle it with a custom exception
+ }
+ }
+
+ private XMLAnnotationFinderHelper() {
+ // no-op
+ }
+
+ public static IAnnotationFinder finderFromXml(final InputStream is, final ClassLoader loader) throws JAXBException {
+ final Scan scan = (Scan) JAXB_CONTEXT.createUnmarshaller().unmarshal(new BufferedInputStream(is));
+
+ Class<?>[] classes = new Class<?>[scan.getClassname().size()];
+ int i = 0;
+ for (String clazz : scan.getClassname()) {
+ try {
+ classes[i++] = loader.loadClass(clazz);
+ } catch (ClassNotFoundException e) {
+ // ignored
+ }
+ }
+
+ if (i != classes.length) { // shouldn't occur
+ final Class<?>[] updatedClasses = new Class<?>[i];
+ System.arraycopy(classes, 0, updatedClasses, 0, i);
+ classes = updatedClasses;
+ }
+
+ final Archive archive = new ClassesArchive(classes);
+ return new AnnotationFinder(archive).link();
+ }
+}
Added: openejb/trunk/maven-plugins/xbean-xml/src/test/java/org/apache/openejb/xbean/xml/XmlAnnotationFinderHelperTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/maven-plugins/xbean-xml/src/test/java/org/apache/openejb/xbean/xml/XmlAnnotationFinderHelperTest.java?rev=1291681&view=auto
==============================================================================
--- openejb/trunk/maven-plugins/xbean-xml/src/test/java/org/apache/openejb/xbean/xml/XmlAnnotationFinderHelperTest.java (added)
+++ openejb/trunk/maven-plugins/xbean-xml/src/test/java/org/apache/openejb/xbean/xml/XmlAnnotationFinderHelperTest.java Tue Feb 21 10:04:06 2012
@@ -0,0 +1,51 @@
+package org.apache.openejb.xbean.xml;
+
+import org.apache.openejb.xbean.xml.bean.MyAnnotation;
+import org.apache.openejb.xbean.xml.bean.MyBean1;
+import org.apache.openejb.xbean.xml.bean.MyBean2;
+import org.apache.openejb.xbean.xml.bean.MyBean3;
+import org.apache.xbean.finder.IAnnotationFinder;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import javax.xml.bind.JAXBException;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.List;
+
+import static org.junit.Assert.assertEquals;
+
+public class XmlAnnotationFinderHelperTest {
+ private static IAnnotationFinder finder;
+
+ @BeforeClass
+ public static void initFinder() throws JAXBException {
+ final ClassLoader loader = Thread.currentThread().getContextClassLoader();
+ finder = XMLAnnotationFinderHelper.finderFromXml(loader.getResourceAsStream("test-scan.xml"), loader);
+ }
+
+ @Test
+ public void findClass() {
+ final List<Class<?>> myClassAnnotated = finder.findAnnotatedClasses(MyAnnotation.class);
+ assertEquals(1, myClassAnnotated.size());
+ assertEquals(MyBean1.class, myClassAnnotated.iterator().next());
+ }
+
+ @Test
+ public void findMethod() {
+ final List<Method> myMethodAnnotated = finder.findAnnotatedMethods(MyAnnotation.class);
+ assertEquals(1, myMethodAnnotated.size());
+ final Method method = myMethodAnnotated.iterator().next();
+ assertEquals(MyBean2.class, method.getDeclaringClass());
+ assertEquals("aMethod", method.getName());
+ }
+
+ @Test
+ public void findField() {
+ final List<Field> myFieldAnnotated = finder.findAnnotatedFields(MyAnnotation.class);
+ assertEquals(1, myFieldAnnotated.size());
+ final Field field = myFieldAnnotated.iterator().next();
+ assertEquals(MyBean3.class, field.getDeclaringClass());
+ assertEquals("aField", field.getName());
+ }
+}
Added: openejb/trunk/maven-plugins/xbean-xml/src/test/java/org/apache/openejb/xbean/xml/bean/MyAnnotation.java
URL: http://svn.apache.org/viewvc/openejb/trunk/maven-plugins/xbean-xml/src/test/java/org/apache/openejb/xbean/xml/bean/MyAnnotation.java?rev=1291681&view=auto
==============================================================================
--- openejb/trunk/maven-plugins/xbean-xml/src/test/java/org/apache/openejb/xbean/xml/bean/MyAnnotation.java (added)
+++ openejb/trunk/maven-plugins/xbean-xml/src/test/java/org/apache/openejb/xbean/xml/bean/MyAnnotation.java Tue Feb 21 10:04:06 2012
@@ -0,0 +1,11 @@
+package org.apache.openejb.xbean.xml.bean;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD})
+public @interface MyAnnotation {
+}
Added: openejb/trunk/maven-plugins/xbean-xml/src/test/java/org/apache/openejb/xbean/xml/bean/MyBean1.java
URL: http://svn.apache.org/viewvc/openejb/trunk/maven-plugins/xbean-xml/src/test/java/org/apache/openejb/xbean/xml/bean/MyBean1.java?rev=1291681&view=auto
==============================================================================
--- openejb/trunk/maven-plugins/xbean-xml/src/test/java/org/apache/openejb/xbean/xml/bean/MyBean1.java (added)
+++ openejb/trunk/maven-plugins/xbean-xml/src/test/java/org/apache/openejb/xbean/xml/bean/MyBean1.java Tue Feb 21 10:04:06 2012
@@ -0,0 +1,5 @@
+package org.apache.openejb.xbean.xml.bean;
+
+@MyAnnotation
+public class MyBean1 {
+}
Added: openejb/trunk/maven-plugins/xbean-xml/src/test/java/org/apache/openejb/xbean/xml/bean/MyBean2.java
URL: http://svn.apache.org/viewvc/openejb/trunk/maven-plugins/xbean-xml/src/test/java/org/apache/openejb/xbean/xml/bean/MyBean2.java?rev=1291681&view=auto
==============================================================================
--- openejb/trunk/maven-plugins/xbean-xml/src/test/java/org/apache/openejb/xbean/xml/bean/MyBean2.java (added)
+++ openejb/trunk/maven-plugins/xbean-xml/src/test/java/org/apache/openejb/xbean/xml/bean/MyBean2.java Tue Feb 21 10:04:06 2012
@@ -0,0 +1,6 @@
+package org.apache.openejb.xbean.xml.bean;
+
+public class MyBean2 {
+ @MyAnnotation
+ public void aMethod() {}
+}
Added: openejb/trunk/maven-plugins/xbean-xml/src/test/java/org/apache/openejb/xbean/xml/bean/MyBean3.java
URL: http://svn.apache.org/viewvc/openejb/trunk/maven-plugins/xbean-xml/src/test/java/org/apache/openejb/xbean/xml/bean/MyBean3.java?rev=1291681&view=auto
==============================================================================
--- openejb/trunk/maven-plugins/xbean-xml/src/test/java/org/apache/openejb/xbean/xml/bean/MyBean3.java (added)
+++ openejb/trunk/maven-plugins/xbean-xml/src/test/java/org/apache/openejb/xbean/xml/bean/MyBean3.java Tue Feb 21 10:04:06 2012
@@ -0,0 +1,6 @@
+package org.apache.openejb.xbean.xml.bean;
+
+public class MyBean3 {
+ @MyAnnotation
+ private int aField;
+}
Added: openejb/trunk/maven-plugins/xbean-xml/src/test/resources/test-scan.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/maven-plugins/xbean-xml/src/test/resources/test-scan.xml?rev=1291681&view=auto
==============================================================================
--- openejb/trunk/maven-plugins/xbean-xml/src/test/resources/test-scan.xml (added)
+++ openejb/trunk/maven-plugins/xbean-xml/src/test/resources/test-scan.xml Tue Feb 21 10:04:06 2012
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<scan>
+ <classes>
+ <class>org.apache.openejb.xbean.xml.bean.MyBean1</class>
+ <class>org.apache.openejb.xbean.xml.bean.MyBean2</class>
+ <class>org.apache.openejb.xbean.xml.bean.MyBean3</class>
+ </classes>
+ <packages/>
+</scan>
\ No newline at end of file