cvs commit: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/servlets WebdavServlet.java DefaultServlet.java
remm2004/07/23 15:41:32 Modified:catalina/src/share/org/apache/catalina/servlets WebdavServlet.java DefaultServlet.java Log: - enum - enumeration (JDK 1.5 update). Revision ChangesPath 1.16 +11 -11 jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/servlets/WebdavServlet.java Index: WebdavServlet.java === RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/servlets/WebdavServlet.java,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- WebdavServlet.java13 Jul 2004 09:43:19 - 1.15 +++ WebdavServlet.java23 Jul 2004 22:41:32 - 1.16 @@ -499,10 +499,10 @@ if ((object instanceof DirContext) (depth 0)) { try { -NamingEnumeration enum = resources.list(currentPath); -while (enum.hasMoreElements()) { +NamingEnumeration enumeration = resources.list(currentPath); +while (enumeration.hasMoreElements()) { NameClassPair ncPair = -(NameClassPair) enum.nextElement(); +(NameClassPair) enumeration.nextElement(); String newPath = currentPath; if (!(newPath.endsWith(/))) newPath += /; @@ -1597,9 +1597,9 @@ } try { -NamingEnumeration enum = resources.list(source); -while (enum.hasMoreElements()) { -NameClassPair ncPair = (NameClassPair) enum.nextElement(); +NamingEnumeration enumeration = resources.list(source); +while (enumeration.hasMoreElements()) { +NameClassPair ncPair = (NameClassPair) enumeration.nextElement(); String childDest = dest; if (!childDest.equals(/)) childDest += /; @@ -1769,17 +1769,17 @@ if (lockTokenHeader == null) lockTokenHeader = ; -Enumeration enum = null; +Enumeration enumeration = null; try { -enum = resources.list(path); + enumeration = resources.list(path); } catch (NamingException e) { errorList.put(path, new Integer (WebdavStatus.SC_INTERNAL_SERVER_ERROR)); return; } -while (enum.hasMoreElements()) { -NameClassPair ncPair = (NameClassPair) enum.nextElement(); +while (enumeration.hasMoreElements()) { +NameClassPair ncPair = (NameClassPair) enumeration.nextElement(); String childName = path; if (!childName.equals(/)) childName += /; 1.26 +7 -7 jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java Index: DefaultServlet.java === RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java,v retrieving revision 1.25 retrieving revision 1.26 diff -u -r1.25 -r1.26 --- DefaultServlet.java 13 Jul 2004 15:04:37 - 1.25 +++ DefaultServlet.java 23 Jul 2004 22:41:32 - 1.26 @@ -1205,10 +1205,10 @@ // Render the directory entries within this directory DirContext directory = cacheEntry.context; -NamingEnumeration enum = resources.list(cacheEntry.name); -while (enum.hasMoreElements()) { +NamingEnumeration enumeration = resources.list(cacheEntry.name); +while (enumeration.hasMoreElements()) { -NameClassPair ncPair = (NameClassPair) enum.nextElement(); +NameClassPair ncPair = (NameClassPair) enumeration.nextElement(); String resourceName = ncPair.getName(); CacheEntry childCacheEntry = resources.lookupCache(cacheEntry.name + resourceName); @@ -1374,11 +1374,11 @@ // Render the directory entries within this directory DirContext directory = cacheEntry.context; -NamingEnumeration enum = resources.list(cacheEntry.name); +NamingEnumeration enumeration = resources.list(cacheEntry.name); boolean shade = false; -while (enum.hasMoreElements()) { +while (enumeration.hasMoreElements()) { -NameClassPair ncPair = (NameClassPair) enum.nextElement(); +NameClassPair ncPair = (NameClassPair)
cvs commit: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/servlets WebdavServlet.java DefaultServlet.java
remm2004/07/13 02:43:19 Modified:catalina/src/share/org/apache/catalina/servlets WebdavServlet.java DefaultServlet.java Log: - Simplify the code of DefaultServlet a bit, by removing ResourceInfo (which duplicates information from CacheEntry). - This is also a small performance improvement. Revision ChangesPath 1.15 +30 -82 jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/servlets/WebdavServlet.java Index: WebdavServlet.java === RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/servlets/WebdavServlet.java,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- WebdavServlet.java26 May 2004 16:03:14 - 1.14 +++ WebdavServlet.java13 Jul 2004 09:43:19 - 1.15 @@ -43,7 +43,9 @@ import org.apache.catalina.util.DOMWriter; import org.apache.catalina.util.RequestUtil; import org.apache.catalina.util.XMLWriter; +import org.apache.naming.resources.CacheEntry; import org.apache.naming.resources.Resource; +import org.apache.naming.resources.ResourceAttributes; import org.apache.tomcat.util.http.FastHttpDateFormat; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -275,10 +277,10 @@ */ protected boolean checkIfHeaders(HttpServletRequest request, HttpServletResponse response, - ResourceInfo resourceInfo) + ResourceAttributes resourceAttributes) throws IOException { -if (!super.checkIfHeaders(request, response, resourceInfo)) +if (!super.checkIfHeaders(request, response, resourceAttributes)) return false; // TODO : Checking the WebDAV If header @@ -295,14 +297,6 @@ resp.addHeader(DAV, 1,2); -// Retrieve the resources -DirContext resources = getResources(); - -if (resources == null) { -resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); -return; -} - StringBuffer methodsAllowed = determineMethodsAllowed(resources, req); @@ -319,14 +313,6 @@ throws ServletException, IOException { if (!listings) { -// Retrieve the resources -DirContext resources = getResources(); - -if (resources == null) { -resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); -return; -} - // Get allowed methods StringBuffer methodsAllowed = determineMethodsAllowed(resources, req); @@ -429,14 +415,6 @@ } -// Retrieve the resources -DirContext resources = getResources(); - -if (resources == null) { -resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); -return; -} - boolean exists = true; Object object = null; try { @@ -496,7 +474,7 @@ XMLWriter.OPENING); if (depth == 0) { -parseProperties(req, resources, generatedXML, path, type, +parseProperties(req, generatedXML, path, type, properties); } else { // The stack always contains the object of the current level @@ -509,7 +487,7 @@ while ((!stack.isEmpty()) (depth = 0)) { String currentPath = (String) stack.pop(); -parseProperties(req, resources, generatedXML, currentPath, +parseProperties(req, generatedXML, currentPath, type, properties); try { @@ -625,14 +603,6 @@ return; } -// Retrieve the resources -DirContext resources = getResources(); - -if (resources == null) { -resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); -return; -} - boolean exists = true; Object object = null; try { @@ -991,14 +961,6 @@ lock.path = path; -// Retrieve the resources -DirContext resources = getResources(); - -if (resources == null) { -resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); -return; -} - boolean exists = true; Object object = null; try { @@ -1552,14 +1514,6 @@ // Overwriting the destination -// Retrieve the
cvs commit: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/servlets WebdavServlet.java
yoavs 2004/05/26 09:03:14 Modified:catalina/src/share/org/apache/catalina/servlets WebdavServlet.java Log: Minor JavaDoc fixes (Bugzilla 28335) Revision ChangesPath 1.14 +4 -5 jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/servlets/WebdavServlet.java Index: WebdavServlet.java === RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/servlets/WebdavServlet.java,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- WebdavServlet.java27 Feb 2004 14:58:46 - 1.13 +++ WebdavServlet.java26 May 2004 16:03:14 - 1.14 @@ -714,8 +714,8 @@ /** * Process a POST request for the specified resource. * - * @param request The servlet request we are processing - * @param response The servlet response we are creating + * @param req The servlet request we are processing + * @param resp The servlet response we are creating * * @exception IOException if an input/output error occurs * @exception ServletException if a servlet-specified error occurs @@ -1934,6 +1934,7 @@ /** * Propfind helper method. * + * @param req The servlet request * @param resources Resources object associated with this context * @param generatedXML XML response to the Propfind request * @param path Path of the current resource @@ -2590,8 +2591,6 @@ /** * Constructor. - * - * @param pathname Path name of the file */ public LockInfo() { - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/servlets WebdavServlet.java
markt 2004/02/25 14:36:36 Modified:catalina/src/share/org/apache/catalina/servlets WebdavServlet.java Log: Fix bug 27190. Ensure webdav servlet returns correct status in response to MOVE request. Revision ChangesPath 1.12 +13 -12 jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/servlets/WebdavServlet.java Index: WebdavServlet.java === RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/servlets/WebdavServlet.java,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- WebdavServlet.java22 Feb 2004 22:34:16 - 1.11 +++ WebdavServlet.java25 Feb 2004 22:36:35 - 1.12 @@ -819,7 +819,7 @@ String path = getRelativePath(req); if (copyResource(req, resp)) { -deleteResource(path, req, resp); +deleteResource(path, req, resp, false); } } @@ -1618,10 +1618,8 @@ // Delete destination resource, if it exists if (exists) { -if (!deleteResource(destinationPath, req, resp)) { +if (!deleteResource(destinationPath, req, resp, true)) { return false; -} else { -resp.setStatus(WebdavStatus.SC_NO_CONTENT); } } else { resp.setStatus(WebdavStatus.SC_CREATED); @@ -1749,7 +1747,7 @@ String path = getRelativePath(req); -return deleteResource(path, req, resp); +return deleteResource(path, req, resp, true); } @@ -1760,9 +1758,11 @@ * @param path Path of the resource which is to be deleted * @param req Servlet request * @param resp Servlet response + * @param setStatus Should the response status be set on successful + * completion */ private boolean deleteResource(String path, HttpServletRequest req, - HttpServletResponse resp) + HttpServletResponse resp, boolean setStatus) throws ServletException, IOException { if ((path.toUpperCase().startsWith(/WEB-INF)) || @@ -1834,8 +1834,9 @@ } } - -resp.setStatus(WebdavStatus.SC_NO_CONTENT); +if (setStatus) { +resp.setStatus(WebdavStatus.SC_NO_CONTENT); +} return true; } - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/servlets WebdavServlet.java
markt 2004/02/22 14:34:16 Modified:catalina/src/share/org/apache/catalina/servlets WebdavServlet.java Log: Fix bug 27100. - Remove lock obsfucation functionality as it breaks a number of webdav clients and does not appear to be covered by the webdav spec. - Reported by Ryan Dewell. Revision ChangesPath 1.11 +9 -24 jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/servlets/WebdavServlet.java Index: WebdavServlet.java === RCS file: /home/cvs/jakarta-tomcat-catalina/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.java13 Feb 2004 22:19:52 - 1.10 +++ WebdavServlet.java22 Feb 2004 22:34:16 - 1.11 @@ -1298,7 +1298,7 @@ generatedXML.writeElement(null, lockdiscovery, XMLWriter.OPENING); -lock.toXML(generatedXML, true); +lock.toXML(generatedXML); generatedXML.writeElement(null, lockdiscovery, XMLWriter.CLOSING); @@ -2703,15 +2703,6 @@ * append an XML fragment to the given XML writer. */ public void toXML(XMLWriter generatedXML) { -toXML(generatedXML, false); -} - - -/** - * Get an XML representation of this lock token. This method will - * append an XML fragment to the given XML writer. - */ -public void toXML(XMLWriter generatedXML, boolean showToken) { generatedXML.writeElement(null, activelock, XMLWriter.OPENING); @@ -2741,17 +2732,11 @@ generatedXML.writeElement(null, timeout, XMLWriter.CLOSING); generatedXML.writeElement(null, locktoken, XMLWriter.OPENING); -if (showToken) { -Enumeration tokensList = tokens.elements(); -while (tokensList.hasMoreElements()) { -generatedXML.writeElement(null, href, XMLWriter.OPENING); -generatedXML.writeText(opaquelocktoken: - + tokensList.nextElement()); -generatedXML.writeElement(null, href, XMLWriter.CLOSING); -} -} else { +Enumeration tokensList = tokens.elements(); +while (tokensList.hasMoreElements()) { generatedXML.writeElement(null, href, XMLWriter.OPENING); -generatedXML.writeText(opaquelocktoken:dummytoken); +generatedXML.writeText(opaquelocktoken: + + tokensList.nextElement()); generatedXML.writeElement(null, href, XMLWriter.CLOSING); } generatedXML.writeElement(null, locktoken, XMLWriter.CLOSING); - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/servlets WebdavServlet.java
markt 2004/02/13 12:06:50 Modified:catalina/src/share/org/apache/catalina/servlets WebdavServlet.java Log: Fix bug 26906. - The destination path needs to be normalised after the protocol and host has been removed (if present). - Reported by rsudharsan Revision ChangesPath 1.9 +9 -6 jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/servlets/WebdavServlet.java Index: WebdavServlet.java === RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/servlets/WebdavServlet.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- WebdavServlet.java22 Dec 2003 12:38:02 - 1.8 +++ WebdavServlet.java13 Feb 2004 20:06:50 - 1.9 @@ -1504,8 +1504,8 @@ return false; } -destinationPath = -normalize(RequestUtil.URLDecode(destinationPath, UTF8)); +// Remove url encoding from destination +destinationPath = RequestUtil.URLDecode(destinationPath, UTF8); int protocolIndex = destinationPath.indexOf(://); if (protocolIndex = 0) { @@ -1539,6 +1539,9 @@ } } } + +// Normalise destination path (remove '.' and '..') +destinationPath = normalize(destinationPath); String contextPath = req.getContextPath(); if ((contextPath != null) - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/servlets WebdavServlet.java
markt 2004/02/13 14:19:52 Modified:catalina/src/share/org/apache/catalina/servlets WebdavServlet.java Log: Fix bug 26906. - Lock token must be returned after lock creation. - Patch provided by Pieter van Prooijen Revision ChangesPath 1.10 +8 -5 jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/servlets/WebdavServlet.java Index: WebdavServlet.java === RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/servlets/WebdavServlet.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- WebdavServlet.java13 Feb 2004 20:06:50 - 1.9 +++ WebdavServlet.java13 Feb 2004 22:19:52 - 1.10 @@ -1231,7 +1231,10 @@ lockNulls.addElement(lock.path); } - +// Add the Lock-Token header as by RFC 2518 8.10.1 +// - only do this for newly created locks +resp.addHeader(Lock-Token, opaquelocktoken: + + lockToken + ); } } - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: cvs commit: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/servlets WebdavServlet.java
Sorry, just spotted a silly error in my patch. The line methodsAllowed.append(PROPFIND, ); in determineMethodsAllowed() should have been methodsAllowed.append(, PROPFIND); Grateful if one of the committers could fix this. Again, apologies. Mark On Friday, November 14, 2003 10:16 AM, [EMAIL PROTECTED] [SMTP:[EMAIL PROTECTED] wrote: remm2003/11/14 02:16:22 Modified:catalina/src/share/org/apache/catalina/servlets WebdavServlet.java Log: - Allow header handling. - Bug 24006, submitted by Mark Thomas. Revision ChangesPath 1.6 +64 -31jakarta-tomcat- catalina/catalina/src/share/org/apache/catalina/servlets/WebdavServlet.java Index: WebdavServlet.java === RCS file: /home/cvs/jakarta-tomcat- catalina/catalina/src/share/org/apache/catalina/servlets/WebdavServlet.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- WebdavServlet.java 6 Oct 2003 08:05:46 - 1.5 +++ WebdavServlet.java 14 Nov 2003 10:16:22 - 1.6 @@ -338,11 +338,8 @@ protected void doOptions(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { -String path = getRelativePath(req); - resp.addHeader(DAV, 1,2); -String methodsAllowed = null; - + // Retrieve the resources DirContext resources = getResources(); @@ -351,28 +348,10 @@ return; } -boolean exists = true; -Object object = null; -try { -object = resources.lookup(path); -} catch (NamingException e) { -exists = false; -} - -if (!exists) { -methodsAllowed = OPTIONS, MKCOL, PUT, LOCK; -resp.addHeader(Allow, methodsAllowed); -return; -} - -methodsAllowed = OPTIONS, GET, HEAD, POST, DELETE, TRACE, -+ PROPFIND, PROPPATCH, COPY, MOVE, LOCK, UNLOCK; -if (!(object instanceof DirContext)) { -methodsAllowed += , PUT; -} - -resp.addHeader(Allow, methodsAllowed); +StringBuffer methodsAllowed = determineMethodsAllowed(resources, + req); +resp.addHeader(Allow, methodsAllowed.toString()); resp.addHeader(MS-Author-Via, DAV); } @@ -385,6 +364,19 @@ throws ServletException, IOException { if (!listings) { +// Retrieve the resources +DirContext resources = getResources(); + +if (resources == null) { +resp.sendError (HttpServletResponse.SC_INTERNAL_SERVER_ERROR); +return; +} + +// Get allowed methods +StringBuffer methodsAllowed = determineMethodsAllowed (resources, + req); + +resp.addHeader(Allow, methodsAllowed.toString()); resp.sendError(WebdavStatus.SC_METHOD_NOT_ALLOWED); return; } @@ -649,7 +641,7 @@ return; } -resp.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED); +resp.sendError(HttpServletResponse.SC_NOT_IMPLEMENTED); } @@ -697,6 +689,12 @@ // Can't create a collection if a resource already exists at the given // path if (exists) { +// Get allowed methods +StringBuffer methodsAllowed = determineMethodsAllowed (resources, + req); + +resp.addHeader(Allow, methodsAllowed.toString()); + resp.sendError(WebdavStatus.SC_METHOD_NOT_ALLOWED); return; } @@ -2566,6 +2564,42 @@ return creationDateValue.toString(); } +/** + * Determines the methods normally allowed for the resource. + * + */ +private StringBuffer determineMethodsAllowed(DirContext resources, + HttpServletRequest req) { + +StringBuffer methodsAllowed = new StringBuffer(); +boolean exists = true; +Object object = null; +try { +String path = getRelativePath(req); + +object = resources.lookup(path); +} catch (NamingException e) { +exists = false; +} + +if (!exists) { +methodsAllowed.append(OPTIONS, MKCOL, PUT, LOCK); +return methodsAllowed; +} + +
cvs commit: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/servlets WebdavServlet.java
remm2003/11/14 02:16:22 Modified:catalina/src/share/org/apache/catalina/servlets WebdavServlet.java Log: - Allow header handling. - Bug 24006, submitted by Mark Thomas. Revision ChangesPath 1.6 +64 -31 jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/servlets/WebdavServlet.java Index: WebdavServlet.java === RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/servlets/WebdavServlet.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- WebdavServlet.java6 Oct 2003 08:05:46 - 1.5 +++ WebdavServlet.java14 Nov 2003 10:16:22 - 1.6 @@ -338,11 +338,8 @@ protected void doOptions(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { -String path = getRelativePath(req); - resp.addHeader(DAV, 1,2); -String methodsAllowed = null; - + // Retrieve the resources DirContext resources = getResources(); @@ -351,28 +348,10 @@ return; } -boolean exists = true; -Object object = null; -try { -object = resources.lookup(path); -} catch (NamingException e) { -exists = false; -} - -if (!exists) { -methodsAllowed = OPTIONS, MKCOL, PUT, LOCK; -resp.addHeader(Allow, methodsAllowed); -return; -} - -methodsAllowed = OPTIONS, GET, HEAD, POST, DELETE, TRACE, -+ PROPFIND, PROPPATCH, COPY, MOVE, LOCK, UNLOCK; -if (!(object instanceof DirContext)) { -methodsAllowed += , PUT; -} - -resp.addHeader(Allow, methodsAllowed); +StringBuffer methodsAllowed = determineMethodsAllowed(resources, + req); +resp.addHeader(Allow, methodsAllowed.toString()); resp.addHeader(MS-Author-Via, DAV); } @@ -385,6 +364,19 @@ throws ServletException, IOException { if (!listings) { +// Retrieve the resources +DirContext resources = getResources(); + +if (resources == null) { +resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); +return; +} + +// Get allowed methods +StringBuffer methodsAllowed = determineMethodsAllowed(resources, + req); + +resp.addHeader(Allow, methodsAllowed.toString()); resp.sendError(WebdavStatus.SC_METHOD_NOT_ALLOWED); return; } @@ -649,7 +641,7 @@ return; } -resp.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED); +resp.sendError(HttpServletResponse.SC_NOT_IMPLEMENTED); } @@ -697,6 +689,12 @@ // Can't create a collection if a resource already exists at the given // path if (exists) { +// Get allowed methods +StringBuffer methodsAllowed = determineMethodsAllowed(resources, + req); + +resp.addHeader(Allow, methodsAllowed.toString()); + resp.sendError(WebdavStatus.SC_METHOD_NOT_ALLOWED); return; } @@ -2566,6 +2564,42 @@ return creationDateValue.toString(); } +/** + * Determines the methods normally allowed for the resource. + * + */ +private StringBuffer determineMethodsAllowed(DirContext resources, + HttpServletRequest req) { + +StringBuffer methodsAllowed = new StringBuffer(); +boolean exists = true; +Object object = null; +try { +String path = getRelativePath(req); + +object = resources.lookup(path); +} catch (NamingException e) { +exists = false; +} + +if (!exists) { +methodsAllowed.append(OPTIONS, MKCOL, PUT, LOCK); +return methodsAllowed; +} + +methodsAllowed.append(OPTIONS, GET, HEAD, POST, DELETE, TRACE, ); +methodsAllowed.append(PROPPATCH, COPY, MOVE, LOCK, UNLOCK); + +if (listings) { +methodsAllowed.append(PROPFIND, ); +} + +if (!(object instanceof DirContext)) { +methodsAllowed.append(, PUT); +} + +return methodsAllowed; +} //
cvs commit: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/servlets WebdavServlet.java
remm2003/10/06 01:05:46 Modified:catalina/src/share/org/apache/catalina/servlets WebdavServlet.java Log: - Decode and normalize destination path before doing anything else. Revision ChangesPath 1.5 +7 -7 jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/servlets/WebdavServlet.java Index: WebdavServlet.java === RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/servlets/WebdavServlet.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- WebdavServlet.java2 Sep 2003 21:22:05 - 1.4 +++ WebdavServlet.java6 Oct 2003 08:05:46 - 1.5 @@ -1488,6 +1488,9 @@ return false; } +destinationPath = +normalize(RequestUtil.URLDecode(destinationPath, UTF8)); + int protocolIndex = destinationPath.indexOf(://); if (protocolIndex = 0) { // if the Destination URL contains the protocol, we can safely @@ -1536,9 +1539,6 @@ .substring(servletPath.length()); } } - -destinationPath = -RequestUtil.URLDecode(normalize(destinationPath), UTF8); if (debug 0) System.out.println(Dest path : + destinationPath); - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/servlets WebdavServlet.java
patrickl2002/08/13 13:45:02 Modified:catalina/src/share/org/apache/catalina/connector HttpResponseBase.java catalina/src/share/org/apache/catalina/servlets WebdavServlet.java Log: Use SC_FOUND instead of SC_MOVED_TEMPORARILY in accordance with section 15.1.5 of the Servlet 2.4 specification Revision ChangesPath 1.2 +6 -6 jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/connector/HttpResponseBase.java Index: HttpResponseBase.java === RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/connector/HttpResponseBase.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- HttpResponseBase.java 18 Jul 2002 16:47:57 - 1.1 +++ HttpResponseBase.java 13 Aug 2002 20:45:02 - 1.2 @@ -419,7 +419,7 @@ return (Method Not Allowed); case SC_MOVED_PERMANENTLY: return (Moved Permanently); -case SC_MOVED_TEMPORARILY: +case SC_FOUND: return (Moved Temporarily); case SC_MULTIPLE_CHOICES: return (Multiple Choices); @@ -1138,7 +1138,7 @@ // Generate a temporary redirect to the specified location try { String absolute = toAbsolute(location); -setStatus(SC_MOVED_TEMPORARILY); +setStatus(SC_FOUND); setHeader(Location, absolute); } catch (IllegalArgumentException e) { setStatus(SC_NOT_FOUND); 1.2 +7 -7 jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/servlets/WebdavServlet.java Index: WebdavServlet.java === RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/servlets/WebdavServlet.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- WebdavServlet.java18 Jul 2002 16:47:42 - 1.1 +++ WebdavServlet.java13 Aug 2002 20:45:02 - 1.2 @@ -2815,8 +2815,8 @@ * moved to another location, but that future references should * still use the original URI to access the resource. */ -public static final int SC_MOVED_TEMPORARILY = -HttpServletResponse.SC_MOVED_TEMPORARILY; +public static final int SC_FOUND = +HttpServletResponse.SC_FOUND; /** @@ -2998,7 +2998,7 @@ addStatusCodeMap(SC_ACCEPTED, Accepted); addStatusCodeMap(SC_NO_CONTENT, No Content); addStatusCodeMap(SC_MOVED_PERMANENTLY, Moved Permanently); -addStatusCodeMap(SC_MOVED_TEMPORARILY, Moved Temporarily); +addStatusCodeMap(SC_FOUND, Moved Temporarily); addStatusCodeMap(SC_NOT_MODIFIED, Not Modified); addStatusCodeMap(SC_BAD_REQUEST, Bad Request); addStatusCodeMap(SC_UNAUTHORIZED, Unauthorized); -- To unsubscribe, e-mail: mailto:[EMAIL PROTECTED] For additional commands, e-mail: mailto:[EMAIL PROTECTED]