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/08/14 15:24:09 UTC

svn commit: r1617934 - in /tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config: AnnotationDeployer.java FinderFactory.java

Author: rmannibucau
Date: Thu Aug 14 13:24:09 2014
New Revision: 1617934

URL: http://svn.apache.org/r1617934
Log:
avoid NPE

Modified:
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java?rev=1617934&r1=1617933&r2=1617934&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java Thu Aug 14 13:24:09 2014
@@ -1912,7 +1912,7 @@ public class AnnotationDeployer implemen
             validateRemoteClientRefs(classLoader, client, remoteClients);
 
             final IAnnotationFinder finder = clientModule.getFinder();
-            if (!AnnotationFinder.class.isInstance(finder)) {
+            if (!AnnotationFinder.class.isInstance(finder) && finder != null) {
                 final Class<?>[] loadedClasses = new Class<?>[finder.getAnnotatedClassNames().size()];
                 int i = 0;
                 for (final String s : finder.getAnnotatedClassNames()) {
@@ -4716,7 +4716,7 @@ public class AnnotationDeployer implemen
                     }
                 }
             }
-            classes.add(bean.getEjbClass());
+            // classes.add(bean.getEjbClass());
             final AnnotationFinder handlersFinder = finder.select(classes);
             buildAnnotatedRefs(bean, handlersFinder, ejbModule.getClassLoader());
         }
@@ -4752,9 +4752,13 @@ public class AnnotationDeployer implemen
                     }
                 }
                 handlerClasses.removeAll(processedClasses);
+                if (handlerClasses.isEmpty()) {
+                    continue;
+                }
 
                 // process handler classes
-                final AnnotationFinder handlerAnnotationFinder = finder.select(handlerClasses);
+                final AnnotationFinder handlerAnnotationFinder = finder != null ? finder.select(handlerClasses) :
+                        new FinderFactory.OpenEJBAnnotationFinder(new FinderFactory.DoLoadClassesArchive(classLoader, handlerClasses));
 
                 /*
                  * @EJB

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java?rev=1617934&r1=1617933&r2=1617934&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java Thu Aug 14 13:24:09 2014
@@ -550,4 +550,22 @@ public class FinderFactory {
             return !classInfos.isEmpty();
         }
     }
+
+    public static class DoLoadClassesArchive extends ClassesArchive {
+        public DoLoadClassesArchive(final ClassLoader loader, final Collection<String> classes) {
+            super(load(loader, classes));
+        }
+
+        private static Iterable<Class<?>> load(final ClassLoader loader, final Collection<String> classes) {
+            final Collection<Class<?>> loaded = new ArrayList<>(classes.size());
+            for (final String n : classes) {
+                try {
+                    loaded.add(loader.loadClass(n));
+                } catch (final ClassNotFoundException e) {
+                    // no-op
+                }
+            }
+            return loaded;
+        }
+    }
 }