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

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


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

commit 2363c3fa649d9b6e569946679d575184d3b07b30
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 dcf7aee188..bead3cdc38 100644
--- a/java/org/apache/catalina/servlets/WebdavServlet.java
+++ b/java/org/apache/catalina/servlets/WebdavServlet.java
@@ -684,7 +684,7 @@ public class WebdavServlet extends DefaultServlet 
implements PeriodicEventListen
             return;
         }
 
-        if (isLocked(req)) {
+        if (isLocked(null, req)) {
             resp.sendError(WebdavStatus.SC_LOCKED);
             return;
         }
@@ -720,7 +720,7 @@ public class WebdavServlet extends DefaultServlet 
implements PeriodicEventListen
             return;
         }
 
-        if (isLocked(req)) {
+        if (isLocked(path, req)) {
             resp.sendError(WebdavStatus.SC_LOCKED);
             return;
         }
@@ -759,24 +759,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);
@@ -805,7 +803,9 @@ public class WebdavServlet extends DefaultServlet 
implements PeriodicEventListen
             return;
         }
 
-        copyResource(req, resp);
+        String path = getRelativePath(req);
+
+        copyResource(path, req, resp);
     }
 
 
@@ -824,14 +824,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);
         }
     }
@@ -853,7 +853,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;
         }
@@ -1042,8 +1044,6 @@ public class WebdavServlet extends DefaultServlet 
implements PeriodicEventListen
             }
         }
 
-        String path = getRelativePath(req);
-
         lock.path = path;
 
         WebResource resource = resources.getResource(path);
@@ -1257,13 +1257,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 = "";
@@ -1322,14 +1322,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) {
@@ -1404,6 +1407,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
      *
@@ -1411,10 +1415,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);
@@ -1653,6 +1656,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
      *
@@ -1660,8 +1664,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);
     }
 
@@ -1681,17 +1684,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;
         }
@@ -1766,11 +1759,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);
 
@@ -1781,7 +1774,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