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 2010/08/08 07:42:46 UTC

svn commit: r983346 - /openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java

Author: djencks
Date: Sun Aug  8 05:42:45 2010
New Revision: 983346

URL: http://svn.apache.org/viewvc?rev=983346&view=rev
Log:
Add a flag, preferEjb, to determine if annotated ejbs are searched for before a web.xml file

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

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java?rev=983346&r1=983345&r2=983346&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java Sun Aug  8 05:42:45 2010
@@ -79,14 +79,16 @@ import org.xml.sax.SAXException;
 public class DeploymentLoader {
     public static final Logger logger = Logger.getInstance(LogCategory.OPENEJB_STARTUP_CONFIG, "org.apache.openejb.util.resources");
     private static final String OPENEJB_ALTDD_PREFIX = "openejb.altdd.prefix";
-    private String ddDir;
+    private final String ddDir;
+    private final boolean preferEjb;
 
     public DeploymentLoader() {
-        this("META-INF/");
+        this("META-INF/", false);
     }
 
-    public DeploymentLoader(String ddDir) {
+    public DeploymentLoader(String ddDir, boolean preferEjb) {
         this.ddDir = ddDir;
+        this.preferEjb = preferEjb;
     }
 
     public AppModule load(File jarFile) throws OpenEJBException {
@@ -1170,6 +1172,10 @@ public class DeploymentLoader {
         if (descriptors.containsKey("ejb-jar.xml")) {
             return EjbModule.class;
         }
+        if (preferEjb) {
+            Class<? extends DeploymentModule> cls = checkAnnotations(baseUrl, classLoader, scanPotentialEjbModules, scanPotentialClientModules);
+            if (cls != null) return cls;
+        }
 
         if (descriptors.containsKey("application-client.xml")) {
             return ClientModule.class;
@@ -1195,6 +1201,20 @@ public class DeploymentLoader {
             }
         }
 
+        if (!preferEjb) {
+            Class<? extends DeploymentModule> cls = checkAnnotations(baseUrl, classLoader, scanPotentialEjbModules, scanPotentialClientModules);
+            if (cls != null) return cls;
+        }
+
+        if (descriptors.containsKey("persistence.xml")) {
+            return PersistenceModule.class;
+        }
+
+        throw new UnknownModuleTypeException("Unknown module type: url=" + baseUrl.toExternalForm());
+    }
+
+    private Class<? extends DeploymentModule> checkAnnotations(URL baseUrl, ClassLoader classLoader, final boolean scanPotentialEjbModules, final boolean scanPotentialClientModules) {
+        Class<? extends DeploymentModule> cls = null;
         if (scanPotentialEjbModules || scanPotentialClientModules) {
             AnnotationFinder classFinder = new AnnotationFinder(classLoader, baseUrl);
 
@@ -1217,20 +1237,15 @@ public class DeploymentLoader {
             };
 
             if (classFinder.find(filter)) {
-                return EjbModule.class;
+                cls = EjbModule.class;
             }
 
             if (otherTypes.size() > 0){
                 // We may want some ordering/sorting if we add more type scanning
-                return otherTypes.iterator().next();
+                cls =otherTypes.iterator().next();
             }
         }
-
-        if (descriptors.containsKey("persistence.xml")) {
-            return PersistenceModule.class;
-        }
-
-        throw new UnknownModuleTypeException("Unknown module type: url=" + baseUrl.toExternalForm());
+        return cls;
     }
 
     private static File unpack(File jarFile) throws OpenEJBException {