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]