Author: markt Date: Thu Feb 17 20:38:49 2011 New Revision: 1071774 URL: http://svn.apache.org/viewvc?rev=1071774&view=rev Log: Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=50802 Ensure that ServletContext.getResourcePaths() includes static resources packaged in JAR files in its output.
Modified: tomcat/trunk/java/org/apache/naming/resources/BaseDirContext.java tomcat/trunk/java/org/apache/naming/resources/FileDirContext.java tomcat/trunk/java/org/apache/naming/resources/VirtualDirContext.java tomcat/trunk/java/org/apache/naming/resources/WARDirContext.java tomcat/trunk/webapps/docs/changelog.xml Modified: tomcat/trunk/java/org/apache/naming/resources/BaseDirContext.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/naming/resources/BaseDirContext.java?rev=1071774&r1=1071773&r2=1071774&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/naming/resources/BaseDirContext.java (original) +++ tomcat/trunk/java/org/apache/naming/resources/BaseDirContext.java Thu Feb 17 20:38:49 2011 @@ -47,6 +47,8 @@ import javax.naming.directory.SearchCont import javax.naming.directory.SearchResult; import org.apache.naming.NameParserImpl; +import org.apache.naming.NamingContextBindingsEnumeration; +import org.apache.naming.NamingEntry; import org.apache.naming.StringManager; /** @@ -703,25 +705,28 @@ public abstract class BaseDirContext imp } // Next do a standard lookup - NamingEnumeration<Binding> bindings = doListBindings(name); + List<NamingEntry> bindings = doListBindings(name); - if (bindings != null) - return bindings; - // Check the alternate locations + List<NamingEntry> altBindings = null; + for (DirContext altDirContext : altDirContexts) { - if (altDirContext instanceof BaseDirContext) - bindings = ((BaseDirContext) altDirContext).doListBindings( + if (altDirContext instanceof BaseDirContext) { + altBindings = ((BaseDirContext) altDirContext).doListBindings( "/META-INF/resources" + name); - else { - try { - bindings = altDirContext.listBindings(name); - } catch (NamingException ne) { - // Ignore + } + if (altBindings != null) { + if (bindings == null) { + bindings = altBindings; + } else { + bindings.addAll(altBindings); } } - if (bindings != null) - return bindings; + } + + if (bindings != null) { + return new NamingContextBindingsEnumeration(bindings.iterator(), + this); } // Really not found @@ -1590,7 +1595,7 @@ public abstract class BaseDirContext imp protected abstract Object doLookup(String name); - protected abstract NamingEnumeration<Binding> doListBindings(String name) + protected abstract List<NamingEntry> doListBindings(String name) throws NamingException; protected abstract String doGetRealPath(String name); Modified: tomcat/trunk/java/org/apache/naming/resources/FileDirContext.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/naming/resources/FileDirContext.java?rev=1071774&r1=1071773&r2=1071774&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/naming/resources/FileDirContext.java (original) +++ tomcat/trunk/java/org/apache/naming/resources/FileDirContext.java Thu Feb 17 20:38:49 2011 @@ -27,8 +27,8 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.Hashtable; +import java.util.List; -import javax.naming.Binding; import javax.naming.NameAlreadyBoundException; import javax.naming.NameClassPair; import javax.naming.NameNotFoundException; @@ -42,7 +42,6 @@ import javax.naming.directory.SearchCont import javax.naming.directory.SearchResult; import org.apache.catalina.util.RequestUtil; -import org.apache.naming.NamingContextBindingsEnumeration; import org.apache.naming.NamingContextEnumeration; import org.apache.naming.NamingEntry; @@ -318,7 +317,7 @@ public class FileDirContext extends Base * @exception NamingException if a naming exception is encountered */ @Override - protected NamingEnumeration<Binding> doListBindings(String name) + protected List<NamingEntry> doListBindings(String name) throws NamingException { File file = file(name); @@ -326,8 +325,7 @@ public class FileDirContext extends Base if (file == null) return null; - return new NamingContextBindingsEnumeration(list(file).iterator(), - this); + return list(file); } @@ -848,9 +846,9 @@ public class FileDirContext extends Base * @param file Collection * @return Vector containing NamingEntry objects */ - protected ArrayList<NamingEntry> list(File file) { + protected List<NamingEntry> list(File file) { - ArrayList<NamingEntry> entries = new ArrayList<NamingEntry>(); + List<NamingEntry> entries = new ArrayList<NamingEntry>(); if (!file.isDirectory()) return entries; String[] names = file.list(); Modified: tomcat/trunk/java/org/apache/naming/resources/VirtualDirContext.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/naming/resources/VirtualDirContext.java?rev=1071774&r1=1071773&r2=1071774&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/naming/resources/VirtualDirContext.java (original) +++ tomcat/trunk/java/org/apache/naming/resources/VirtualDirContext.java Thu Feb 17 20:38:49 2011 @@ -147,8 +147,8 @@ public class VirtualDirContext extends F } @Override - protected ArrayList<NamingEntry> list(File file) { - ArrayList<NamingEntry> entries = super.list(file); + protected List<NamingEntry> list(File file) { + List<NamingEntry> entries = super.list(file); // adds virtual tlds for WEB-INF listing if ("WEB-INF".equals(file.getName())) { Modified: tomcat/trunk/java/org/apache/naming/resources/WARDirContext.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/naming/resources/WARDirContext.java?rev=1071774&r1=1071773&r2=1071774&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/naming/resources/WARDirContext.java (original) +++ tomcat/trunk/java/org/apache/naming/resources/WARDirContext.java Thu Feb 17 20:38:49 2011 @@ -26,11 +26,11 @@ import java.util.Arrays; import java.util.Date; import java.util.Enumeration; import java.util.Hashtable; +import java.util.List; import java.util.zip.ZipEntry; import java.util.zip.ZipException; import java.util.zip.ZipFile; -import javax.naming.Binding; import javax.naming.CompositeName; import javax.naming.InvalidNameException; import javax.naming.Name; @@ -45,7 +45,6 @@ import javax.naming.directory.Modificati import javax.naming.directory.SearchControls; import javax.naming.directory.SearchResult; -import org.apache.naming.NamingContextBindingsEnumeration; import org.apache.naming.NamingContextEnumeration; import org.apache.naming.NamingEntry; @@ -331,20 +330,19 @@ public class WARDirContext extends BaseD * @exception NamingException if a naming exception is encountered */ @Override - protected NamingEnumeration<Binding> doListBindings(String strName) + protected List<NamingEntry> doListBindings(String strName) throws NamingException { Name name = getEscapedJndiName(strName); if (name.isEmpty()) - return new NamingContextBindingsEnumeration(list(entries).iterator(), - this); + return list(entries); + Entry entry = treeLookup(name); if (entry == null) return null; - return new NamingContextBindingsEnumeration(list(entry).iterator(), - this); + return list(entry); } Modified: tomcat/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1071774&r1=1071773&r2=1071774&view=diff ============================================================================== --- tomcat/trunk/webapps/docs/changelog.xml (original) +++ tomcat/trunk/webapps/docs/changelog.xml Thu Feb 17 20:38:49 2011 @@ -97,6 +97,11 @@ that the requestInitialized and requestDestroyed events are only fired once per request at the correct times. (markt) </fix> + <fix> + <bug>50802</bug>: Ensure that + <code>ServletContext.getResourcePaths()</code> includes static resources + packaged in JAR files in its output. (markt) + </fix> </changelog> </subsection> <subsection name="Coyote"> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org