Author: dain
Date: Sat Sep 15 15:27:13 2007
New Revision: 575993

URL: http://svn.apache.org/viewvc?rev=575993&view=rev
Log:
Process annotations and env.properties for web apps

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

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java?rev=575993&r1=575992&r2=575993&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
 Sat Sep 15 15:27:13 2007
@@ -63,6 +63,10 @@
 import org.apache.openejb.jee.SecurityRoleRef;
 import org.apache.openejb.jee.TimerConsumer;
 import org.apache.openejb.jee.SessionType;
+import org.apache.openejb.jee.WebApp;
+import org.apache.openejb.jee.Servlet;
+import org.apache.openejb.jee.Filter;
+import org.apache.openejb.jee.Listener;
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.Logger;
 import org.apache.xbean.finder.ClassFinder;
@@ -123,6 +127,7 @@
 import java.util.TreeSet;
 import java.util.Properties;
 import java.util.HashMap;
+import java.util.HashSet;
 
 /**
  * @version $Rev$ $Date$
@@ -178,6 +183,12 @@
             for (ClientModule clientModule : appModule.getClientModules()) {
                 deploy(clientModule);
             }
+            for (ResourceModule resourceModule : 
appModule.getResourceModules()) {
+                deploy(resourceModule);
+            }
+            for (WebModule webModule : appModule.getWebModules()) {
+                deploy(webModule);
+            }
             return appModule;
         }
 
@@ -185,6 +196,14 @@
             return clientModule;
         }
 
+        public ResourceModule deploy(ResourceModule resourceModule) throws 
OpenEJBException {
+            return resourceModule;
+        }
+
+        public WebModule deploy(WebModule webModule) throws OpenEJBException {
+            return webModule;
+        }
+
         public EjbModule deploy(EjbModule ejbModule) throws OpenEJBException {
             if (ejbModule.getEjbJar() != null && 
ejbModule.getEjbJar().isMetadataComplete()) return ejbModule;
 
@@ -313,6 +332,12 @@
             for (ClientModule clientModule : appModule.getClientModules()) {
                 deploy(clientModule);
             }
+            for (ResourceModule resourceModule : 
appModule.getResourceModules()) {
+                deploy(resourceModule);
+            }
+            for (WebModule webModule : appModule.getWebModules()) {
+                deploy(webModule);
+            }
             return appModule;
         }
 
@@ -333,6 +358,57 @@
             return clientModule;
         }
 
+        public ResourceModule deploy(ResourceModule resourceModule) throws 
OpenEJBException {
+            // resource modules currently don't have any annotations
+            return resourceModule;
+        }
+
+        public WebModule deploy(WebModule webModule) throws OpenEJBException {
+            WebApp webApp = webModule.getWebApp();
+            if (webApp != null && webApp.isMetadataComplete()) return 
webModule;
+
+            Set<Class<?>> classes = new HashSet<Class<?>>();
+            for (Servlet servlet : webApp.getServlet()) {
+                String servletClass = servlet.getServletClass();
+                if (servletClass != null) {
+                    try {
+                        Class clazz = 
webModule.getClassLoader().loadClass(servletClass);
+                        classes.add(clazz);
+                    } catch (ClassNotFoundException e) {
+                        throw new OpenEJBException("Unable to load servlet 
class: " + servletClass, e);
+                    }
+                }
+            }
+            for (Filter filter : webApp.getFilter()) {
+                String filterClass = filter.getFilterClass();
+                if (filterClass != null) {
+                    try {
+                        Class clazz = 
webModule.getClassLoader().loadClass(filterClass);
+                        classes.add(clazz);
+                    } catch (ClassNotFoundException e) {
+                        throw new OpenEJBException("Unable to load servlet 
filter class: " + filterClass, e);
+                    }
+                }
+            }
+            for (Listener listener : webApp.getListener()) {
+                String listenerClass = listener.getListenerClass();
+                if (listenerClass != null) {
+                    try {
+                        Class clazz = 
webModule.getClassLoader().loadClass(listenerClass);
+                        classes.add(clazz);
+                    } catch (ClassNotFoundException e) {
+                        throw new OpenEJBException("Unable to load servlet 
listener class: " + listenerClass, e);
+                    }
+                }
+            }
+            ClassFinder inheritedClassFinder = 
createInheritedClassFinder(classes.toArray(new Class<?>[0]));
+
+            // Currently we only process the JNDI annotations for web 
applications
+            buildAnnotatedRefs(webApp, inheritedClassFinder);
+
+            return webModule;
+        }
+
         public EjbModule deploy(EjbModule ejbModule) throws OpenEJBException {
             if (ejbModule.getEjbJar() != null && 
ejbModule.getEjbJar().isMetadataComplete()) return ejbModule;
 
@@ -780,12 +856,14 @@
             return ejbModule;
         }
 
-        private ClassFinder createInheritedClassFinder(Class<?> clazz) {
+        private ClassFinder createInheritedClassFinder(Class<?>... classes) {
             List<Class> parents = new ArrayList<Class>();
-            parents.add(clazz);
-            Class parent = clazz;
-            while ((parent = parent.getSuperclass()) != null) {
-                parents.add(parent);
+            for (Class<?> clazz : classes) {
+                parents.add(clazz);
+                Class parent = clazz;
+                while ((parent = parent.getSuperclass()) != null) {
+                    parents.add(parent);
+                }
             }
 
             return new ClassFinder(parents);

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppModule.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppModule.java?rev=575993&r1=575992&r2=575993&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppModule.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AppModule.java
 Sat Sep 15 15:27:13 2007
@@ -63,6 +63,12 @@
         for (ClientModule module : clientModules) {
             if (module.getValidation().hasWarnings()) return true;
         }
+        for (ResourceModule module : resourceModules) {
+            if (module.getValidation().hasWarnings()) return true;
+        }
+        for (WebModule module : webModules) {
+            if (module.getValidation().hasWarnings()) return true;
+        }
         return false;
     }
 
@@ -74,6 +80,12 @@
         for (ClientModule module : clientModules) {
             if (module.getValidation().hasFailures()) return true;
         }
+        for (ResourceModule module : resourceModules) {
+            if (module.getValidation().hasFailures()) return true;
+        }
+        for (WebModule module : webModules) {
+            if (module.getValidation().hasFailures()) return true;
+        }
         return false;
     }
 
@@ -83,6 +95,12 @@
             if (module.getValidation().hasErrors()) return true;
         }
         for (ClientModule module : clientModules) {
+            if (module.getValidation().hasErrors()) return true;
+        }
+        for (ResourceModule module : resourceModules) {
+            if (module.getValidation().hasErrors()) return true;
+        }
+        for (WebModule module : webModules) {
             if (module.getValidation().hasErrors()) return true;
         }
         return false;

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EnvEntriesPropertiesDeployer.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EnvEntriesPropertiesDeployer.java?rev=575993&r1=575992&r2=575993&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EnvEntriesPropertiesDeployer.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EnvEntriesPropertiesDeployer.java
 Sat Sep 15 15:27:13 2007
@@ -52,6 +52,16 @@
             }
         }
 
+        // WebModule META-INF/env-entries.properties
+        for (WebModule webModule : appModule.getWebModules()) {
+            for (Map.Entry<String, String> entry : 
getEnvEntries(webModule).entrySet()) {
+                EnvEntry envEntry = new EnvEntry(entry.getKey(), 
"java.lang.String", entry.getValue());
+                apply(webModule.getWebApp(), envEntry, "WebApp");
+            }
+        }
+
+        // Resource Adapters do not have an ENC
+
         // EjbJar META-INF/env-entries.properties
         for (EjbModule module : appModule.getEjbModules()) {
             for (Map.Entry<String, String> entry : 
getEnvEntries(module).entrySet()) {
@@ -100,9 +110,10 @@
         entries.add(newEntry);
     }
 
+    @SuppressWarnings({"unchecked"})
     private Map<String, String> getEnvEntries(DeploymentModule module) {
         URL propsUrl = (URL) module.getAltDDs().get("env-entries.properties");
-        if (propsUrl == null) return Collections.EMPTY_MAP;
+        if (propsUrl == null) return Collections.emptyMap();
         try {
 
             InputStream in = propsUrl.openStream();
@@ -112,7 +123,7 @@
             return new HashMap(envEntriesProps);
         } catch (IOException e) {
             log.error("envprops.notLoaded", e, module.getModuleId(), 
propsUrl.toExternalForm());
-            return Collections.EMPTY_MAP;
+            return Collections.emptyMap();
         }
     }
 }


Reply via email to