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

Reply via email to