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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]