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 2011/10/11 16:32:57 UTC

svn commit: r1181810 - in /openejb/trunk/openejb: assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/ assembly/tomee/tomee-webservices/src/main/java/org/apache/tomee/webservices/ server/openejb-rest/src/main/java/org/apache/openejb/s...

Author: rmannibucau
Date: Tue Oct 11 14:32:57 2011
New Revision: 1181810

URL: http://svn.apache.org/viewvc?rev=1181810&view=rev
Log:
OPENEJB-1699 OPENEJB-1700 adding AppInfo to WebDeploymentListener since ejb can be needed in afterApplicationCreated() and are not stored in webappnfo

Modified:
    openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
    openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/WebDeploymentListener.java
    openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/WebDeploymentListeners.java
    openejb/trunk/openejb/assembly/tomee/tomee-webservices/src/main/java/org/apache/tomee/webservices/TomeeJaxRsService.java
    openejb/trunk/openejb/assembly/tomee/tomee-webservices/src/main/java/org/apache/tomee/webservices/TomeeJaxWsService.java
    openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java

Modified: openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java?rev=1181810&r1=1181809&r2=1181810&view=diff
==============================================================================
--- openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java (original)
+++ openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java Tue Oct 11 14:32:57 2011
@@ -597,7 +597,7 @@ public class TomcatWebAppBuilder impleme
         WebDeploymentListeners listeners = SystemInstance.get().getComponent(WebDeploymentListeners.class);
         if (listeners != null) {
             for (WebAppInfo webApp : contextInfo.appInfo.webApps) {
-                listeners.afterApplicationCreated(webApp);
+                listeners.afterApplicationCreated(contextInfo.appInfo, webApp);
             }
         }
 

Modified: openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/WebDeploymentListener.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/WebDeploymentListener.java?rev=1181810&r1=1181809&r2=1181810&view=diff
==============================================================================
--- openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/WebDeploymentListener.java (original)
+++ openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/WebDeploymentListener.java Tue Oct 11 14:32:57 2011
@@ -16,6 +16,7 @@
  */
 package org.apache.tomee.catalina;
 
+import org.apache.openejb.assembler.classic.AppInfo;
 import org.apache.openejb.assembler.classic.WebAppInfo;
 
 /**
@@ -23,6 +24,6 @@ import org.apache.openejb.assembler.clas
  */
 public interface WebDeploymentListener {
 
-    public void afterApplicationCreated(final WebAppInfo webApp);
+    public void afterApplicationCreated(final AppInfo appInfo,final WebAppInfo webApp);
 
 }

Modified: openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/WebDeploymentListeners.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/WebDeploymentListeners.java?rev=1181810&r1=1181809&r2=1181810&view=diff
==============================================================================
--- openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/WebDeploymentListeners.java (original)
+++ openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/WebDeploymentListeners.java Tue Oct 11 14:32:57 2011
@@ -16,6 +16,7 @@
  */
 package org.apache.tomee.catalina;
 
+import org.apache.openejb.assembler.classic.AppInfo;
 import org.apache.openejb.assembler.classic.WebAppInfo;
 
 import java.util.ArrayList;
@@ -32,9 +33,9 @@ public class WebDeploymentListeners impl
     }
 
     @Override
-    public void afterApplicationCreated(WebAppInfo webApp) {
+    public void afterApplicationCreated(AppInfo appInfo, WebAppInfo webApp) {
         for (WebDeploymentListener listener : listeners) {
-            listener.afterApplicationCreated(webApp);
+            listener.afterApplicationCreated(appInfo, webApp);
         }
     }
 

Modified: openejb/trunk/openejb/assembly/tomee/tomee-webservices/src/main/java/org/apache/tomee/webservices/TomeeJaxRsService.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/assembly/tomee/tomee-webservices/src/main/java/org/apache/tomee/webservices/TomeeJaxRsService.java?rev=1181810&r1=1181809&r2=1181810&view=diff
==============================================================================
--- openejb/trunk/openejb/assembly/tomee/tomee-webservices/src/main/java/org/apache/tomee/webservices/TomeeJaxRsService.java (original)
+++ openejb/trunk/openejb/assembly/tomee/tomee-webservices/src/main/java/org/apache/tomee/webservices/TomeeJaxRsService.java Tue Oct 11 14:32:57 2011
@@ -16,6 +16,7 @@
  */
 package org.apache.tomee.webservices;
 
+import org.apache.openejb.assembler.classic.AppInfo;
 import org.apache.openejb.assembler.classic.WebAppInfo;
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.server.rest.RESTService;
@@ -45,13 +46,13 @@ public class TomeeJaxRsService implement
     }
 
     @Override
-    public void afterApplicationCreated(WebAppInfo webApp) {
+    public void afterApplicationCreated(AppInfo appInfo, WebAppInfo webApp) {
         // required for Pojo Web Services because when Assembler creates the application
         // the CoreContainerSystem does not contain the WebContext
         // see also the start method getContainerSystem().addWebDeployment(webContext);
         RESTService component = SystemInstance.get().getComponent(RESTService.class);
         if (component == null) return;
-        component.afterApplicationCreated(webApp);
+        component.afterApplicationCreated(appInfo, webApp);
     }
 
 }

Modified: openejb/trunk/openejb/assembly/tomee/tomee-webservices/src/main/java/org/apache/tomee/webservices/TomeeJaxWsService.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/assembly/tomee/tomee-webservices/src/main/java/org/apache/tomee/webservices/TomeeJaxWsService.java?rev=1181810&r1=1181809&r2=1181810&view=diff
==============================================================================
--- openejb/trunk/openejb/assembly/tomee/tomee-webservices/src/main/java/org/apache/tomee/webservices/TomeeJaxWsService.java (original)
+++ openejb/trunk/openejb/assembly/tomee/tomee-webservices/src/main/java/org/apache/tomee/webservices/TomeeJaxWsService.java Tue Oct 11 14:32:57 2011
@@ -16,6 +16,7 @@
  */
 package org.apache.tomee.webservices;
 
+import org.apache.openejb.assembler.classic.AppInfo;
 import org.apache.openejb.assembler.classic.WebAppInfo;
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.server.webservices.WsRegistry;
@@ -46,7 +47,7 @@ public class TomeeJaxWsService implement
     }
 
     @Override
-    public void afterApplicationCreated(WebAppInfo webApp) {
+    public void afterApplicationCreated(AppInfo appInfo, WebAppInfo webApp) {
         // required for Pojo Web Services because when Assembler creates the application
         // the CoreContainerSystem does not contain the WebContext
         // see also the start method getContainerSystem().addWebDeployment(webContext);

Modified: openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java?rev=1181810&r1=1181809&r2=1181810&view=diff
==============================================================================
--- openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java (original)
+++ openejb/trunk/openejb/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java Tue Oct 11 14:32:57 2011
@@ -74,7 +74,9 @@ public abstract class RESTService implem
     private List<String> services = new ArrayList<String>();
     private String virtualHost;
 
-    public void afterApplicationCreated(final WebAppInfo webApp, Map<String, EJBRestServiceInfo> restEjbs) {
+    public void afterApplicationCreated(final AppInfo appInfo, final WebAppInfo webApp) {
+        final Map<String, EJBRestServiceInfo> restEjbs = getRestEjbs(appInfo);
+
         final WebContext webContext = containerSystem.getWebContext(webApp.moduleId);
         if (webContext == null) {
             return;
@@ -168,65 +170,58 @@ public abstract class RESTService implem
                 LOGGER.info("REST application deployed: " + app);
             }
         }
-    }
-
-    private static class EJBRestServiceInfo {
-        public String path;
-        public BeanContext context;
-
-        public EJBRestServiceInfo(String path, BeanContext context) {
-            if (context == null) {
-                throw new OpenEJBRestRuntimeException("can't find context");
-            }
 
-            this.path = path;
-            this.context = context;
-        }
+        restEjbs.clear();
     }
 
     @Override public void afterApplicationCreated(final AppInfo appInfo) {
         if (deployedApplications.add(appInfo)) {
-            Map<String, BeanContext> beanContexts = new HashMap<String, BeanContext>();
-            for (EjbJarInfo ejbJar : appInfo.ejbJars) {
-                for (EnterpriseBeanInfo bean : ejbJar.enterpriseBeans) {
-                    if (bean.restService) {
-                        BeanContext beanContext = containerSystem.getBeanContext(bean.ejbDeploymentId);
-                        if (beanContext == null) {
-                            continue;
-                        }
-
-                        beanContexts.put(bean.ejbClass, beanContext);
-                    }
+            if (appInfo.standaloneModule) {
+                Map<String, EJBRestServiceInfo> restEjbs = getRestEjbs(appInfo);
+                for (Map.Entry<String, EJBRestServiceInfo> ejb : restEjbs.entrySet()) {
+                    deployEJB(ejb.getValue().path, ejb.getValue().context);
                 }
-            }
-
-            Map<String, EJBRestServiceInfo> restEjbs = new HashMap<String, EJBRestServiceInfo>();
-            for (WebAppInfo webApp : appInfo.webApps) {
-                for (String ejb : webApp.ejbRestServices) {
-                    restEjbs.put(ejb, new EJBRestServiceInfo(webApp.contextRoot, beanContexts.get(ejb)));
+                restEjbs.clear();
+            } else {
+                for (final WebAppInfo webApp : appInfo.webApps) {
+                    afterApplicationCreated(appInfo, webApp);
                 }
             }
-            for (Map.Entry<String, BeanContext> ejbs : beanContexts.entrySet()) {
-                final String clazz = ejbs.getKey();
-                if (!restEjbs.containsKey(clazz)) {
-                    // null is important, it means there is no webroot path in standalone
-                    restEjbs.put(clazz, new EJBRestServiceInfo(null, beanContexts.get(clazz)));
+        }
+    }
+
+    protected Map<String,EJBRestServiceInfo> getRestEjbs(AppInfo appInfo) {
+        Map<String, BeanContext> beanContexts = new HashMap<String, BeanContext>();
+        for (EjbJarInfo ejbJar : appInfo.ejbJars) {
+            for (EnterpriseBeanInfo bean : ejbJar.enterpriseBeans) {
+                if (bean.restService) {
+                    BeanContext beanContext = containerSystem.getBeanContext(bean.ejbDeploymentId);
+                    if (beanContext == null) {
+                        continue;
+                    }
+
+                    beanContexts.put(bean.ejbClass, beanContext);
                 }
             }
-            beanContexts.clear();
+        }
 
-            for (final WebAppInfo webApp : appInfo.webApps) {
-                afterApplicationCreated(webApp, restEjbs);
+        Map<String, EJBRestServiceInfo> restEjbs = new HashMap<String, EJBRestServiceInfo>();
+        for (WebAppInfo webApp : appInfo.webApps) {
+            for (String ejb : webApp.ejbRestServices) {
+                restEjbs.put(ejb, new EJBRestServiceInfo(webApp.contextRoot, beanContexts.get(ejb)));
             }
-
-            if (appInfo.standaloneModule) { // other it is already managed
-                for (Map.Entry<String, EJBRestServiceInfo> ejb : restEjbs.entrySet()) {
-                    deployEJB(ejb.getValue().path, ejb.getValue().context);
-                }
+        }
+        for (Map.Entry<String, BeanContext> ejbs : beanContexts.entrySet()) {
+            final String clazz = ejbs.getKey();
+            if (!restEjbs.containsKey(clazz)) {
+                // null is important, it means there is no webroot path in standalone
+                restEjbs.put(clazz, new EJBRestServiceInfo(null, beanContexts.get(clazz)));
             }
-            restEjbs.clear();
         }
-    }   
+        beanContexts.clear();
+
+        return restEjbs;
+    }
 
     private void deploySingleton(String contextRoot, Object o, Application appInstance, ClassLoader classLoader) {
         final String nopath = getAddress(contextRoot, o.getClass()) + "/.*";
@@ -378,4 +373,18 @@ public abstract class RESTService implem
     public void setVirtualHost(String virtualHost) {
         this.virtualHost = virtualHost;
     }
+
+    public static class EJBRestServiceInfo {
+        public String path;
+        public BeanContext context;
+
+        public EJBRestServiceInfo(String path, BeanContext context) {
+            if (context == null) {
+                throw new OpenEJBRestRuntimeException("can't find context");
+            }
+
+            this.path = path;
+            this.context = context;
+        }
+    }
 }