Author: dblevins
Date: Wed Apr 20 14:50:17 2011
New Revision: 1095427

URL: http://svn.apache.org/viewvc?rev=1095427&view=rev
Log:
Do not add non-valid classes as managed beans

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

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java?rev=1095427&r1=1095426&r2=1095427&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java
 Wed Apr 20 14:50:17 2011
@@ -16,6 +16,7 @@
  */
 package org.apache.openejb;
 
+import bsh.Modifiers;
 import org.apache.openejb.assembler.classic.AppInfo;
 import org.apache.openejb.assembler.classic.Assembler;
 import org.apache.openejb.config.AppModule;
@@ -54,6 +55,7 @@ import javax.naming.Name;
 import javax.naming.NameNotFoundException;
 import javax.naming.NamingException;
 import java.io.File;
+import java.lang.reflect.Modifier;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.net.URLClassLoader;
@@ -217,6 +219,8 @@ public class OpenEjbContainer extends EJ
 
                 for (String caller : callers) {
 
+                    if (!isValid(caller)) continue;
+                    
                     final ManagedBean bean = ejbJar.addEnterpriseBean(new 
ManagedBean(caller, caller));
 
                     // set it to bean so it can get UserTransaction injection
@@ -282,6 +286,22 @@ public class OpenEjbContainer extends EJ
             }
         }
 
+        private boolean isValid(String caller) {
+            try {
+                final ClassLoader loader = 
Thread.currentThread().getContextClassLoader();
+
+                final Class<?> clazz = loader.loadClass(caller);
+
+                if (clazz.isEnum()) return false;
+                if (clazz.isInterface()) return false;
+                if (Modifier.isAbstract(clazz.getModifiers())) return false;
+
+                return true;
+            } catch (ClassNotFoundException e) {
+                return false;
+            }
+        }
+
         private AppModule load(Map<?, ?> map, ConfigurationFactory 
configurationFactory) throws MalformedURLException, OpenEJBException {
             final List<File> moduleLocations;
 


Reply via email to