Author: markt Date: Mon Nov 9 20:43:47 2009 New Revision: 834220 URL: http://svn.apache.org/viewvc?rev=834220&view=rev Log: The assumption that contexts will always be file system based or that resources will always be extracted to the work does not hold true, particularly for custom DirContext implementations. Don't make the assumption and clean-up up the redundant field that is no longer required.
Modified: tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java tomcat/trunk/java/org/apache/catalina/core/StandardContext.java tomcat/trunk/java/org/apache/catalina/ha/context/ReplicatedContext.java tomcat/trunk/java/org/apache/catalina/startup/DefaultJarScanner.java Modified: tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java?rev=834220&r1=834219&r2=834220&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java (original) +++ tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java Mon Nov 9 20:43:47 2009 @@ -19,7 +19,6 @@ package org.apache.catalina.core; -import java.io.File; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; @@ -90,10 +89,9 @@ * * @param context The associated Context instance */ - public ApplicationContext(String basePath, StandardContext context) { + public ApplicationContext(StandardContext context) { super(); this.context = context; - this.basePath = basePath; // Populate session tracking modes populateSessionTrackingModes(); @@ -158,12 +156,6 @@ /** - * Base path. - */ - private String basePath = null; - - - /** * Thread local data used during request dispatch. */ private ThreadLocal<DispatchData> dispatchData = @@ -492,37 +484,21 @@ throw new MalformedURLException(sm.getString("applicationContext.requestDispatcher.iae", path)); - path = RequestUtil.normalize(path); - if (path == null) + String normPath = RequestUtil.normalize(path); + if (normPath == null) return (null); - String libPath = "/WEB-INF/lib/"; - if ((path.startsWith(libPath)) && (path.endsWith(".jar"))) { - File jarFile = null; - if (context.isFilesystemBased()) { - jarFile = new File(basePath, path); - } else { - jarFile = new File(context.getWorkPath(), path); - } - if (jarFile.exists()) { - return jarFile.toURI().toURL(); - } else { - return null; - } - } else { - - DirContext resources = context.getResources(); - if (resources != null) { - String fullPath = context.getName() + path; - String hostName = context.getParent().getName(); - try { - resources.lookup(path); - return new URL - ("jndi", "", 0, getJNDIUri(hostName, fullPath), - new DirContextURLStreamHandler(resources)); - } catch (Exception e) { - // Ignore - } + DirContext resources = context.getResources(); + if (resources != null) { + String fullPath = context.getName() + normPath; + String hostName = context.getParent().getName(); + try { + resources.lookup(path); + return new URL + ("jndi", "", 0, getJNDIUri(hostName, fullPath), + new DirContextURLStreamHandler(resources)); + } catch (Exception e) { + // Ignore } } Modified: tomcat/trunk/java/org/apache/catalina/core/StandardContext.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/StandardContext.java?rev=834220&r1=834219&r2=834220&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/core/StandardContext.java (original) +++ tomcat/trunk/java/org/apache/catalina/core/StandardContext.java Mon Nov 9 20:43:47 2009 @@ -1758,7 +1758,7 @@ public ServletContext getServletContext() { if (context == null) { - context = new ApplicationContext(getBasePath(), this); + context = new ApplicationContext(this); if (altDDName != null) context.setAttribute(Globals.ALT_DD_ATTR,altDDName); } Modified: tomcat/trunk/java/org/apache/catalina/ha/context/ReplicatedContext.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ha/context/ReplicatedContext.java?rev=834220&r1=834219&r2=834220&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/ha/context/ReplicatedContext.java (original) +++ tomcat/trunk/java/org/apache/catalina/ha/context/ReplicatedContext.java Mon Nov 9 20:43:47 2009 @@ -54,7 +54,7 @@ super.addLifecycleListener(this); try { CatalinaCluster catclust = (CatalinaCluster)this.getCluster(); - if (this.context == null) this.context = new ReplApplContext(this.getBasePath(), this); + if (this.context == null) this.context = new ReplApplContext(this); if ( catclust != null ) { ReplicatedMap map = new ReplicatedMap(this,catclust.getChannel(),DEFAULT_REPL_TIMEOUT, getName(),getClassLoaders()); @@ -116,7 +116,7 @@ @Override public ServletContext getServletContext() { if (context == null) { - context = new ReplApplContext(getBasePath(), this); + context = new ReplApplContext(this); if (getAltDDName() != null) context.setAttribute(Globals.ALT_DD_ATTR,getAltDDName()); } @@ -130,8 +130,8 @@ protected ConcurrentHashMap<String, Object> tomcatAttributes = new ConcurrentHashMap<String, Object>(); - public ReplApplContext(String basePath, ReplicatedContext context) { - super(basePath,context); + public ReplApplContext(ReplicatedContext context) { + super(context); } protected ReplicatedContext getParent() { Modified: tomcat/trunk/java/org/apache/catalina/startup/DefaultJarScanner.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/DefaultJarScanner.java?rev=834220&r1=834219&r2=834220&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/startup/DefaultJarScanner.java (original) +++ tomcat/trunk/java/org/apache/catalina/startup/DefaultJarScanner.java Mon Nov 9 20:43:47 2009 @@ -163,7 +163,7 @@ callback.scan((JarURLConnection) conn); } else { String urlStr = url.toString(); - if (urlStr.startsWith("file:")) { + if (urlStr.startsWith("file:") || urlStr.startsWith("jndi:")) { if (urlStr.endsWith(JAR_EXT)) { URL jarURL = new URL("jar:" + urlStr + "!/"); callback.scan((JarURLConnection) jarURL.openConnection()); --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org