Author: slaurent
Date: Wed Aug 31 20:35:22 2011
New Revision: 1163802

URL: http://svn.apache.org/viewvc?rev=1163802&view=rev
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=51741
bug 51741: Eclipse WTP "Serve modules without publishing" broken with tc7, 
needs patch in tomcat

Modified:
    tomcat/tc7.0.x/trunk/java/org/apache/catalina/loader/WebappClassLoader.java
    tomcat/trunk/java/org/apache/catalina/loader/WebappClassLoader.java

Modified: 
tomcat/tc7.0.x/trunk/java/org/apache/catalina/loader/WebappClassLoader.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/loader/WebappClassLoader.java?rev=1163802&r1=1163801&r2=1163802&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/catalina/loader/WebappClassLoader.java 
(original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/loader/WebappClassLoader.java 
Wed Aug 31 20:35:22 2011
@@ -2898,11 +2898,22 @@ public class WebappClassLoader
 
                 // Note : Not getting an exception here means the resource was
                 // found
-                entry = findResourceInternal(files[i], path);
 
                 ResourceAttributes attributes =
                     (ResourceAttributes) resources.getAttributes(fullPath);
                 contentLength = (int) attributes.getContentLength();
+                String canonicalPath = attributes.getCanonicalPath();
+                if (canonicalPath != null) {
+                    // we create the ResourceEntry based on the information 
returned
+                    // by the DirContext rather than just using the path to the
+                    // repository. This allows to have smart DirContext 
implementations 
+                    // that "virtualize" the docbase (e.g. Eclipse WTP)
+                    entry = findResourceInternal(new File(canonicalPath), "");
+                } else {
+                    // probably a resource not in the filesystem (e.g. in a
+                    // packaged war)
+                    entry = findResourceInternal(files[i], path);
+                }
                 entry.lastModified = attributes.getLastModified();
 
                 if (resource != null) {

Modified: tomcat/trunk/java/org/apache/catalina/loader/WebappClassLoader.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/loader/WebappClassLoader.java?rev=1163802&r1=1163801&r2=1163802&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/loader/WebappClassLoader.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/loader/WebappClassLoader.java Wed Aug 
31 20:35:22 2011
@@ -2898,11 +2898,22 @@ public class WebappClassLoader
 
                 // Note : Not getting an exception here means the resource was
                 // found
-                entry = findResourceInternal(files[i], path);
 
                 ResourceAttributes attributes =
                     (ResourceAttributes) resources.getAttributes(fullPath);
                 contentLength = (int) attributes.getContentLength();
+                String canonicalPath = attributes.getCanonicalPath();
+                if (canonicalPath != null) {
+                    // we create the ResourceEntry based on the information 
returned
+                    // by the DirContext rather than just using the path to the
+                    // repository. This allows to have smart DirContext 
implementations 
+                    // that "virtualize" the docbase (e.g. Eclipse WTP)
+                    entry = findResourceInternal(new File(canonicalPath), "");
+                } else {
+                    // probably a resource not in the filesystem (e.g. in a
+                    // packaged war)
+                    entry = findResourceInternal(files[i], path);
+                }
                 entry.lastModified = attributes.getLastModified();
 
                 if (resource != null) {



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to