You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by re...@apache.org on 2001/01/25 06:45:41 UTC

cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets DefaultServlet.java WebdavServlet.java

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",