This is an automated email from the ASF dual-hosted git repository.

remm pushed a commit to branch 9.0.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/9.0.x by this push:
     new d647caa6d8 Harmonize
d647caa6d8 is described below

commit d647caa6d8759bc4125fede02e55049a1685fd2b
Author: remm <r...@apache.org>
AuthorDate: Mon Oct 14 11:11:50 2024 +0200

    Harmonize
    
    Avoid getting the relative path multiple times.
    Reuse the isLocked code more.
    Remove lock check from doDelete since deleteResource does it.
---
 .../apache/catalina/servlets/WebdavServlet.java    | 71 ++++++++++------------
 1 file changed, 32 insertions(+), 39 deletions(-)

diff --git a/java/org/apache/catalina/servlets/WebdavServlet.java 
b/java/org/apache/catalina/servlets/WebdavServlet.java
index 2ddbd66ed8..3dee2ef4c3 100644
--- a/java/org/apache/catalina/servlets/WebdavServlet.java
+++ b/java/org/apache/catalina/servlets/WebdavServlet.java
@@ -683,7 +683,7 @@ public class WebdavServlet extends DefaultServlet 
implements PeriodicEventListen
             return;
         }
 
-        if (isLocked(req)) {
+        if (isLocked(null, req)) {
             resp.sendError(WebdavStatus.SC_LOCKED);
             return;
         }
@@ -719,7 +719,7 @@ public class WebdavServlet extends DefaultServlet 
implements PeriodicEventListen
             return;
         }
 
-        if (isLocked(req)) {
+        if (isLocked(path, req)) {
             resp.sendError(WebdavStatus.SC_LOCKED);
             return;
         }
@@ -758,24 +758,22 @@ public class WebdavServlet extends DefaultServlet 
implements PeriodicEventListen
             return;
         }
 
-        if (isLocked(req)) {
-            resp.sendError(WebdavStatus.SC_LOCKED);
-            return;
-        }
+        String path = getRelativePath(req);
 
-        deleteResource(req, resp);
+        deleteResource(path, req, resp);
     }
 
 
     @Override
     protected void doPut(HttpServletRequest req, HttpServletResponse resp) 
throws ServletException, IOException {
 
-        if (isLocked(req)) {
+        String path = getRelativePath(req);
+
+        if (isLocked(path, req)) {
             resp.sendError(WebdavStatus.SC_LOCKED);
             return;
         }
 
-        String path = getRelativePath(req);
         WebResource resource = resources.getResource(path);
         if (resource.isDirectory()) {
             sendNotAllowed(req, resp);
@@ -804,7 +802,9 @@ public class WebdavServlet extends DefaultServlet 
implements PeriodicEventListen
             return;
         }
 
-        copyResource(req, resp);
+        String path = getRelativePath(req);
+
+        copyResource(path, req, resp);
     }
 
 
@@ -823,14 +823,14 @@ public class WebdavServlet extends DefaultServlet 
implements PeriodicEventListen
             return;
         }
 
-        if (isLocked(req)) {
+        String path = getRelativePath(req);
+
+        if (isLocked(path, req)) {
             resp.sendError(WebdavStatus.SC_LOCKED);
             return;
         }
 
-        String path = getRelativePath(req);
-
-        if (copyResource(req, resp)) {
+        if (copyResource(path, req, resp)) {
             deleteResource(path, req, resp, false);
         }
     }
@@ -852,7 +852,9 @@ public class WebdavServlet extends DefaultServlet 
implements PeriodicEventListen
             return;
         }
 
-        if (isLocked(req)) {
+        String path = getRelativePath(req);
+
+        if (isLocked(path, req)) {
             resp.sendError(WebdavStatus.SC_LOCKED);
             return;
         }
@@ -1041,8 +1043,6 @@ public class WebdavServlet extends DefaultServlet 
implements PeriodicEventListen
             }
         }
 
-        String path = getRelativePath(req);
-
         lock.path = path;
 
         WebResource resource = resources.getResource(path);
@@ -1256,13 +1256,13 @@ public class WebdavServlet extends DefaultServlet 
implements PeriodicEventListen
             return;
         }
 
-        if (isLocked(req)) {
+        String path = getRelativePath(req);
+
+        if (isLocked(path, req)) {
             resp.sendError(WebdavStatus.SC_LOCKED);
             return;
         }
 
-        String path = getRelativePath(req);
-
         String lockTokenHeader = req.getHeader("Lock-Token");
         if (lockTokenHeader == null) {
             lockTokenHeader = "";
@@ -1321,14 +1321,17 @@ public class WebdavServlet extends DefaultServlet 
implements PeriodicEventListen
      * Check to see if a resource is currently write locked. The method will 
look at the "If" header to make sure the
      * client has give the appropriate lock tokens.
      *
+     * @param path The relative path
      * @param req Servlet request
      *
      * @return <code>true</code> if the resource is locked (and no appropriate 
lock token has been found for at least
      *             one of the non-shared locks which are present on the 
resource).
      */
-    private boolean isLocked(HttpServletRequest req) {
+    private boolean isLocked(String path, HttpServletRequest req) {
 
-        String path = getRelativePath(req);
+        if (path == null) {
+            path = getRelativePath(req);
+        }
 
         String ifHeader = req.getHeader("If");
         if (ifHeader == null) {
@@ -1403,6 +1406,7 @@ public class WebdavServlet extends DefaultServlet 
implements PeriodicEventListen
     /**
      * Copy a resource.
      *
+     * @param path  Path of the resource to copy
      * @param req  Servlet request
      * @param resp Servlet response
      *
@@ -1410,10 +1414,9 @@ public class WebdavServlet extends DefaultServlet 
implements PeriodicEventListen
      *
      * @throws IOException If an IO error occurs
      */
-    private boolean copyResource(HttpServletRequest req, HttpServletResponse 
resp) throws IOException {
+    private boolean copyResource(String path, HttpServletRequest req, 
HttpServletResponse resp) throws IOException {
 
         // Check the source exists
-        String path = getRelativePath(req);
         WebResource source = resources.getResource(path);
         if (!source.exists()) {
             resp.sendError(WebdavStatus.SC_NOT_FOUND);
@@ -1652,6 +1655,7 @@ public class WebdavServlet extends DefaultServlet 
implements PeriodicEventListen
     /**
      * Delete a resource.
      *
+     * @param path      Path of the resource which is to be deleted
      * @param req  Servlet request
      * @param resp Servlet response
      *
@@ -1659,8 +1663,7 @@ public class WebdavServlet extends DefaultServlet 
implements PeriodicEventListen
      *
      * @throws IOException If an IO error occurs
      */
-    private boolean deleteResource(HttpServletRequest req, HttpServletResponse 
resp) throws IOException {
-        String path = getRelativePath(req);
+    private boolean deleteResource(String path, HttpServletRequest req, 
HttpServletResponse resp) throws IOException {
         return deleteResource(path, req, resp, true);
     }
 
@@ -1680,17 +1683,7 @@ public class WebdavServlet extends DefaultServlet 
implements PeriodicEventListen
     private boolean deleteResource(String path, HttpServletRequest req, 
HttpServletResponse resp, boolean setStatus)
             throws IOException {
 
-        String ifHeader = req.getHeader("If");
-        if (ifHeader == null) {
-            ifHeader = "";
-        }
-
-        String lockTokenHeader = req.getHeader("Lock-Token");
-        if (lockTokenHeader == null) {
-            lockTokenHeader = "";
-        }
-
-        if (isLocked(path, ifHeader + lockTokenHeader)) {
+        if (isLocked(path, req)) {
             resp.sendError(WebdavStatus.SC_LOCKED);
             return false;
         }
@@ -1765,11 +1758,11 @@ public class WebdavServlet extends DefaultServlet 
implements PeriodicEventListen
         if (ifHeader == null) {
             ifHeader = "";
         }
-
         String lockTokenHeader = req.getHeader("Lock-Token");
         if (lockTokenHeader == null) {
             lockTokenHeader = "";
         }
+        String lockHeader = ifHeader + lockTokenHeader;
 
         String[] entries = resources.list(path);
 
@@ -1780,7 +1773,7 @@ public class WebdavServlet extends DefaultServlet 
implements PeriodicEventListen
             }
             childName += entry;
 
-            if (isLocked(childName, ifHeader + lockTokenHeader)) {
+            if (isLocked(childName, lockHeader)) {
 
                 errorList.put(childName, 
Integer.valueOf(WebdavStatus.SC_LOCKED));
 


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to