remm        01/01/24 21:45:41

  Modified:    catalina/src/share/org/apache/catalina/servlets
                        DefaultServlet.java WebdavServlet.java
  Log:
  - Update PROPFIND to use streaming (as the response could get very big).
  - Fix a bug where href elements could include incorrect paths containing "//".
  - Avoid putting the '&' character in the XML response.
  
  Revision  Changes    Path
  1.21      +13 -4     
jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java
  
  Index: DefaultServlet.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- DefaultServlet.java       2001/01/23 04:47:57     1.20
  +++ DefaultServlet.java       2001/01/25 05:45:40     1.21
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java,v
 1.20 2001/01/23 04:47:57 remm Exp $
  - * $Revision: 1.20 $
  - * $Date: 2001/01/23 04:47:57 $
  + * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java,v
 1.21 2001/01/25 05:45:40 remm Exp $
  + * $Revision: 1.21 $
  + * $Date: 2001/01/25 05:45:40 $
    *
    * ====================================================================
    *
  @@ -119,7 +119,7 @@
    *
    * @author Craig R. McClanahan
    * @author Remy Maucherat
  - * @version $Revision: 1.20 $ $Date: 2001/01/23 04:47:57 $
  + * @version $Revision: 1.21 $ $Date: 2001/01/25 05:45:40 $
    */
   
   public class DefaultServlet
  @@ -911,6 +911,15 @@
            if (index < 0)
                break;
            normalized = normalized.substring(0, index) + "%20"
  +             + normalized.substring(index + 1);
  +     }
  +        
  +     // Replace "&" with "%26"
  +        while (true) {
  +         int index = normalized.indexOf("&");
  +         if (index < 0)
  +             break;
  +         normalized = normalized.substring(0, index) + "%26"
                + normalized.substring(index + 1);
        }
           
  
  
  
  1.11      +23 -13    
jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/WebdavServlet.java
  
  Index: WebdavServlet.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/WebdavServlet.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- WebdavServlet.java        2001/01/23 04:47:57     1.10
  +++ WebdavServlet.java        2001/01/25 05:45:40     1.11
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/WebdavServlet.java,v
 1.10 2001/01/23 04:47:57 remm Exp $
  - * $Revision: 1.10 $
  - * $Date: 2001/01/23 04:47:57 $
  + * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/WebdavServlet.java,v
 1.11 2001/01/25 05:45:40 remm Exp $
  + * $Revision: 1.11 $
  + * $Date: 2001/01/25 05:45:40 $
    *
    * ====================================================================
    *
  @@ -124,7 +124,7 @@
    * are handled by the DefaultServlet.
    *
    * @author Remy Maucherat
  - * @version $Revision: 1.10 $ $Date: 2001/01/23 04:47:57 $
  + * @version $Revision: 1.11 $ $Date: 2001/01/25 05:45:40 $
    */
   
   public class WebdavServlet
  @@ -507,7 +507,7 @@
           resp.setStatus(WebdavStatus.SC_MULTI_STATUS);
   
           // Create multistatus object
  -        XMLWriter generatedXML = new XMLWriter();
  +        XMLWriter generatedXML = new XMLWriter(resp.getWriter());
           generatedXML.writeXMLHeader();
           
           generatedXML.writeElement(null, "multistatus" 
  @@ -543,7 +543,7 @@
                               NameClassPair ncPair = 
                                   (NameClassPair) enum.nextElement();
                               String newPath = currentPath;
  -                            if (!newPath.equals("/"))
  +                            if (!(newPath.endsWith("/")))
                                   newPath += "/";
                               newPath += ncPair.getName();
                               stackBelow.push(newPath);
  @@ -581,15 +581,21 @@
                       stackBelow = new Stack();
                   }
                   
  +                generatedXML.sendData();
  +                
               }
           }
   
           generatedXML.writeElement(null, "multistatus", 
                                     XMLWriter.CLOSING);
           
  +        generatedXML.sendData();
  +        
  +        /*
           Writer writer = resp.getWriter();
           writer.write(generatedXML.toString());
           writer.flush();
  +        */
           
       }
   
  @@ -1906,8 +1912,9 @@
               generatedXML.writeProperty
                   (null, "creationdate", 
                    getISOCreationDate(resourceInfo.creationDate));
  -            generatedXML.writeProperty(null, "displayname", 
  -                                       resourceInfo.path.replace('/', '_'));
  +            generatedXML.writeProperty
  +                (null, "displayname", 
  +                 resourceInfo.path.replace('/', '_').replace('&', '_'));
               generatedXML.writeProperty(null, "getcontentlanguage", 
                                          Locale.getDefault().toString());
               if (!resourceInfo.collection) {
  @@ -2006,7 +2013,8 @@
                   } else if (property.equals("displayname")) {
                       generatedXML.writeProperty
                           (null, "displayname", 
  -                         resourceInfo.path.replace('/', '_'));
  +                         resourceInfo.path.replace('/', '_')
  +                         .replace('&', '_'));
                   } else if (property.equals("getcontentlanguage")) {
                       if (resourceInfo.collection) {
                           propertiesNotFound.addElement(property);
  @@ -2171,8 +2179,9 @@
               generatedXML.writeProperty
                   (null, "creationdate", 
                    getISOCreationDate(lock.creationDate.getTime()));
  -            generatedXML.writeProperty(null, "displayname", 
  -                                       path.replace('/', '_'));
  +            generatedXML.writeProperty
  +                (null, "displayname", 
  +                 path.replace('/', '_').replace('&', '_'));
               generatedXML.writeProperty(null, "getcontentlanguage", 
                                          Locale.getDefault().toString());
               generatedXML.writeProperty(null, "getlastmodified", 
  @@ -2259,8 +2268,9 @@
                           (null, "creationdate", 
                            getISOCreationDate(lock.creationDate.getTime()));
                   } else if (property.equals("displayname")) {
  -                    generatedXML.writeProperty(null, "displayname", 
  -                                               path.replace('/', '_'));
  +                    generatedXML.writeProperty
  +                        (null, "displayname", 
  +                         path.replace('/', '_').replace('&', '_'));
                   } else if (property.equals("getcontentlanguage")) {
                       generatedXML.writeProperty
                           (null, "getcontentlanguage", 
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]

Reply via email to