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 2014/10/14 19:32:29 UTC

svn commit: r1631827 - in /tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/testing: ApplicationComposers.java Classes.java

Author: rmannibucau
Date: Tue Oct 14 17:32:29 2014
New Revision: 1631827

URL: http://svn.apache.org/r1631827
Log:
TOMEE-1411 create a finder from inner classes with app composer

Modified:
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/testing/ApplicationComposers.java
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/testing/Classes.java

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/testing/ApplicationComposers.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/testing/ApplicationComposers.java?rev=1631827&r1=1631826&r2=1631827&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/testing/ApplicationComposers.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/testing/ApplicationComposers.java Tue Oct 14 17:32:29 2014
@@ -100,6 +100,7 @@ import java.lang.annotation.Annotation;
 import java.lang.reflect.Field;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.ArrayList;
@@ -107,6 +108,7 @@ import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
@@ -467,8 +469,10 @@ public final class ApplicationComposers 
                 Class<?>[] cdiAlternatives = null;
                 Class<?>[] cdiDecorators = null;
                 boolean cdi = false;
+                boolean innerClassesAsBean = false;
                 if (classesAnnotation != null) {
                     classes = classesAnnotation.value();
+                    innerClassesAsBean = classesAnnotation.innerClassesAsBean();
                     cdiInterceptors = classesAnnotation.cdiInterceptors();
                     cdiDecorators = classesAnnotation.cdiDecorators();
                     cdiAlternatives = classesAnnotation.cdiAlternatives();
@@ -510,6 +514,25 @@ public final class ApplicationComposers 
                             classes = newClasses.toArray(new Class<?>[newClasses.size()]);
                         }
                     }
+                    if (innerClassesAsBean) {
+                        final Collection<Class<?>> inners = new LinkedList<Class<?>>();
+                        for (final Class<?> clazz : testClass.getClasses()) {
+                            final int modifiers = clazz.getModifiers();
+                            try {
+                                if (Modifier.isPublic(modifiers) && Modifier.isStatic(modifiers) && clazz.getConstructor() != null) {
+                                    inners.add(clazz);
+                                }
+                            } catch (final NoSuchMethodException nsme) {
+                                // no-op, skip it
+                            }
+                        }
+
+                        if (!inners.isEmpty()) {
+                            final Collection<Class<?>> newClasses = new ArrayList<Class<?>>(asList(classes));
+                            newClasses.addAll(inners);
+                            classes = newClasses.toArray(new Class<?>[newClasses.size()]);
+                        }
+                    }
 
                     final IAnnotationFinder finder = finderFromClasses(webModule, classes, findFiles(jarsAnnotation));
                     webModule.setFinder(finder);

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/testing/Classes.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/testing/Classes.java?rev=1631827&r1=1631826&r2=1631827&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/testing/Classes.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/testing/Classes.java Tue Oct 14 17:32:29 2014
@@ -34,4 +34,7 @@ public @interface Classes {
     Class<?>[] cdiAlternatives() default {};
 
     boolean cdi() default false;
+
+    // only for WebApp ATM
+    boolean innerClassesAsBean() default false;
 }