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 2012/09/30 21:32:28 UTC

svn commit: r1392096 - /openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBContextConfig.java

Author: rmannibucau
Date: Sun Sep 30 19:32:27 2012
New Revision: 1392096

URL: http://svn.apache.org/viewvc?rev=1392096&view=rev
Log:
handling tomcat jndi url protocol

Modified:
    openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBContextConfig.java

Modified: openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBContextConfig.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBContextConfig.java?rev=1392096&r1=1392095&r2=1392096&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBContextConfig.java (original)
+++ openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBContextConfig.java Sun Sep 30 19:32:27 2012
@@ -157,14 +157,39 @@ public class OpenEJBContextConfig extend
 
     @Override
     protected void processAnnotationsUrl(URL currentUrl, WebXml fragment, boolean handlesTypeOnly) {
-        final File currentUrlAsFile = URLs.toFile(currentUrl);
-
         final WebAppInfo webAppInfo = info.get();
         if (webAppInfo == null) {
             super.processAnnotationsUrl(currentUrl, fragment, handlesTypeOnly);
             return;
         }
 
+        File currentUrlAsFile;
+        try {
+            currentUrlAsFile = URLs.toFile(currentUrl);
+        } catch (IllegalArgumentException iae) {
+            if ("jndi".equals(currentUrl.getProtocol())) {
+                String path = webAppInfo.path;
+                if (path.endsWith("/")) {
+                    path = path.substring(0, path.length() - 1);
+                }
+
+                final String file = currentUrl.getFile();
+                final String webAppDir = new File(path).getName();
+                final int idx = file.indexOf(webAppDir);
+                if (idx > 0) {
+                    String pathUnderWebapp = path + file.substring(idx + webAppDir.length());
+                    if (!pathUnderWebapp.startsWith("/")) {
+                        pathUnderWebapp = '/' + pathUnderWebapp;
+                    }
+                    currentUrlAsFile = new File(path + pathUnderWebapp);
+                } else {
+                    throw new IllegalArgumentException("can't find path under current webapp deployment [" + webAppInfo.contextRoot + "]");
+                }
+            } else {
+                throw iae;
+            }
+        }
+
         internalProcessAnnotations(currentUrlAsFile, webAppInfo, fragment, handlesTypeOnly);
     }