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);
}