You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by dj...@apache.org on 2011/07/08 08:22:16 UTC

svn commit: r1144167 - /openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java

Author: djencks
Date: Fri Jul  8 06:22:16 2011
New Revision: 1144167

URL: http://svn.apache.org/viewvc?rev=1144167&view=rev
Log:
GERONIMO-6043 Not being able to load a class means it's not a managed bean, not deployment failure

Modified:
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java?rev=1144167&r1=1144166&r2=1144167&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java Fri Jul  8 06:22:16 2011
@@ -83,50 +83,60 @@ public class CdiScanner implements Scann
             if (beans == null) continue;
 
             for (String className : beans.interceptors) {
-                Class<?> clazz = load(className, "interceptor", classLoader);
+                Class<?> clazz = load(className, classLoader);
 
-                // TODO: Move check to validation phase
-                if (AnnotationUtil.hasAnnotation(clazz.getDeclaredAnnotations(), Interceptor.class) && !annotationManager.hasInterceptorBindingMetaAnnotation(
-                    clazz.getDeclaredAnnotations())) {
-                    throw new WebBeansConfigurationException("Interceptor class : " + clazz.getName() + " must have at least one @InterceptorBindingType");
-                }
+                if (clazz != null) {
+// TODO: Move check to validation phase
+                    if (AnnotationUtil.hasAnnotation(clazz.getDeclaredAnnotations(), Interceptor.class) && !annotationManager.hasInterceptorBindingMetaAnnotation(
+                        clazz.getDeclaredAnnotations())) {
+                        throw new WebBeansConfigurationException("Interceptor class : " + clazz.getName() + " must have at least one @InterceptorBindingType");
+                    }
+
+                    if (interceptorsManager.isInterceptorEnabled(clazz)) {
+                        throw new WebBeansConfigurationException("Interceptor class : " + clazz.getName() + " is already defined");
+                    }
 
-                if (interceptorsManager.isInterceptorEnabled(clazz)) {
-                    throw new WebBeansConfigurationException("Interceptor class : " + clazz.getName() + " is already defined");
+                    interceptorsManager.addNewInterceptor(clazz);
+                    classes.add(clazz);
                 }
-
-                interceptorsManager.addNewInterceptor(clazz);
-                classes.add(clazz);
             }
 
             for (String className : beans.decorators) {
-                Class<?> clazz = load(className, "decorator", classLoader);
+                Class<?> clazz = load(className, classLoader);
 
-                if (decoratorsManager.isDecoratorEnabled(clazz)) {
-                    throw new WebBeansConfigurationException("Decorator class : " + clazz.getName() + " is already defined");
-                }
+                if (clazz != null) {
+                    if (decoratorsManager.isDecoratorEnabled(clazz)) {
+                        throw new WebBeansConfigurationException("Decorator class : " + clazz.getName() + " is already defined");
+                    }
 
-                decoratorsManager.addNewDecorator(clazz);
-                classes.add(clazz);
+                    decoratorsManager.addNewDecorator(clazz);
+                    classes.add(clazz);
+                }
             }
 
 
             for (String className : beans.alternativeStereotypes) {
-                Class<?> clazz = load(className, "alternative-stereotype", classLoader);
-                alternativesManager.addStereoTypeAlternative(clazz, null, null);
-                classes.add(clazz);
+                Class<?> clazz = load(className, classLoader);
+                if (clazz != null) {
+                    alternativesManager.addStereoTypeAlternative(clazz, null, null);
+                    classes.add(clazz);
+                }
             }
 
             for (String className : beans.alternativeClasses) {
-                Class<?> clazz = load(className, "alternative-class", classLoader);
-                alternativesManager.addClazzAlternative(clazz, null, null);
-                classes.add(clazz);
+                Class<?> clazz = load(className, classLoader);
+                if (clazz != null) {
+                    alternativesManager.addClazzAlternative(clazz, null, null);
+                    classes.add(clazz);
+                }
             }
 
             for (String className : beans.managedClasses) {
                 if (ejbClasses.contains(className)) continue;
-                final Class clazz = load(className, "managed", classLoader);
-                classes.add(clazz);
+                final Class clazz = load(className, classLoader);
+                if (clazz != null) {
+                    classes.add(clazz);
+                }
             }
         }
 
@@ -140,12 +150,19 @@ public class CdiScanner implements Scann
         return null;
     }
 
-    private Class load(String className, String type, ClassLoader classLoader) {
-//        System.out.println("cdi.load = " + className);
+    /**
+     *
+     * @param className  name of class to load
+     * @param classLoader classloader to (try to) load it from
+     * @return the loaded class if possible, or null if loading fails.
+     */
+    private Class load(String className, ClassLoader classLoader) {
         try {
             return classLoader.loadClass(className);
         } catch (ClassNotFoundException e) {
-            throw new RuntimeException("Unable to load class: "+className, e);
+            return null;
+        } catch (NoClassDefFoundError e) {
+            return null;
         }
     }