Author: rmannibucau
Date: Thu May 10 22:54:31 2012
New Revision: 1336937

URL: http://svn.apache.org/viewvc?rev=1336937&view=rev
Log:
TOMEE-189 using contextroot to match the webapp webbeansconext

Modified:
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/WebContext.java
    
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/WebContext.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/WebContext.java?rev=1336937&r1=1336936&r2=1336937&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/WebContext.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/WebContext.java
 Thu May 10 22:54:31 2012
@@ -40,6 +40,7 @@ public class WebContext {
     private final AppContext appContext;
     private Map<String,Object> bindings;
     private WebBeansContext webbeansContext;
+    private String contextRoot;
 
     public Context getInitialContext() {
         if (initialContext != null) return initialContext;
@@ -184,4 +185,12 @@ public class WebContext {
     public WebBeansContext getWebbeansContext() {
         return webbeansContext;
     }
+
+    public void setContextRoot(String contextRoot) {
+        this.contextRoot = contextRoot;
+    }
+
+    public String getContextRoot() {
+        return contextRoot;
+    }
 }

Modified: 
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java?rev=1336937&r1=1336936&r2=1336937&view=diff
==============================================================================
--- 
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
 (original)
+++ 
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
 Thu May 10 22:54:31 2012
@@ -704,6 +704,7 @@ public class TomcatWebAppBuilder impleme
                 final WebContext webContext = new WebContext(appContext);
                 webContext.setClassLoader(classLoader);
                 webContext.setId(webAppInfo.moduleId);
+                webContext.setContextRoot(webAppInfo.contextRoot);
                 webContext.setBindings(bindings);
                 webContext.getInjections().addAll(injections);
                 appContext.getWebContexts().add(webContext);
@@ -907,17 +908,39 @@ public class TomcatWebAppBuilder impleme
         if (webBeansContext == null) return null;
 
         for (WebContext web : appContext.getWebContexts()) {
-            final String name = web.getId();
-            final String stdName = contextInfo.standardContext.getName();
-            if (stdName.equals(name) || stdName.equals("/" + name) || ("/" + 
name).equals(stdName + ".war")) {
+            final String stdName = 
removeFirstSlashAndWar(contextInfo.standardContext.getName());
+            if (stdName == null) {
+                continue;
+            }
+
+            final String name = removeFirstSlashAndWar(web.getContextRoot());
+            if (stdName.equals(name)) {
                 webBeansContext = web.getWebbeansContext();
                 break;
             }
         }
 
+        if (webBeansContext == null) webBeansContext = 
appContext.getWebBeansContext();
+
         return new WebBeansListener(webBeansContext);
     }
 
+    private static String removeFirstSlashAndWar(String name) {
+        if (name == null || "/".equals(name) || name.isEmpty()) {
+            return "";
+        }
+
+        String out = name;
+        if (out.startsWith("/")) {
+            out = out.substring(1);
+        }
+        if (out.endsWith(".war")) {
+            return out.substring(0, Math.max(out.length() - 4, 0));
+        }
+
+        return out;
+    }
+
 
     private static boolean isIgnored(final StandardContext standardContext) {
         // useful to disable web applications deployment


Reply via email to