You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by re...@apache.org on 2020/06/16 14:45:53 UTC
svn commit: r1878891 - in /jackrabbit/trunk/jackrabbit-jcr-server/src:
main/java/org/apache/jackrabbit/webdav/simple/SimpleWebdavServlet.java
test/java/org/apache/jackrabbit/webdav/server/ConditionalsTest.java
Author: reschke
Date: Tue Jun 16 14:45:53 2020
New Revision: 1878891
URL: http://svn.apache.org/viewvc?rev=1878891&view=rev
Log:
JCR-4587: jackrabbit-webdav: include if-unmodified-since in precondition check
Modified:
jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/simple/SimpleWebdavServlet.java
jackrabbit/trunk/jackrabbit-jcr-server/src/test/java/org/apache/jackrabbit/webdav/server/ConditionalsTest.java
Modified: jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/simple/SimpleWebdavServlet.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/simple/SimpleWebdavServlet.java?rev=1878891&r1=1878890&r2=1878891&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/simple/SimpleWebdavServlet.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/simple/SimpleWebdavServlet.java Tue Jun 16 14:45:53 2020
@@ -194,6 +194,21 @@ public abstract class SimpleWebdavServle
@Override
protected boolean isPreconditionValid(WebdavRequest request,
DavResource resource) {
+
+
+ long ifUnmodifiedSince = UNDEFINED_TIME;
+ try {
+ ifUnmodifiedSince = request.getDateHeader("if-unmodified-since");
+ } catch (IllegalArgumentException ex) {
+ log.trace("illegal value for if-unmodified-since ignored: " + request.getHeader("if-unmodified-since"));
+ }
+
+ if (ifUnmodifiedSince > UNDEFINED_TIME && resource.exists()) {
+ if (resource.getModificationTime() / 1000 > ifUnmodifiedSince / 1000) {
+ return false;
+ }
+ }
+
return !resource.exists() || request.matchesIfHeader(resource);
}
Modified: jackrabbit/trunk/jackrabbit-jcr-server/src/test/java/org/apache/jackrabbit/webdav/server/ConditionalsTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-server/src/test/java/org/apache/jackrabbit/webdav/server/ConditionalsTest.java?rev=1878891&r1=1878890&r2=1878891&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-server/src/test/java/org/apache/jackrabbit/webdav/server/ConditionalsTest.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-server/src/test/java/org/apache/jackrabbit/webdav/server/ConditionalsTest.java Tue Jun 16 14:45:53 2020
@@ -126,15 +126,15 @@ public class ConditionalsTest extends We
assertEquals(204, status);
}
- // // conditional PUT once more should fail
- // {
- // HttpPut put = new HttpPut(testUri);
- // put.setHeader("If-Unmodified-Since", lm.getValue());
- // put.setEntity(new StringEntity("lazydog"));
- // HttpResponse response = this.client.execute(put, this.context);
- // int status = response.getStatusLine().getStatusCode();
- // assertEquals(412, status);
- // }
+ // conditional PUT once more should fail
+ {
+ HttpPut put = new HttpPut(testUri);
+ put.setHeader("If-Unmodified-Since", lm.getValue());
+ put.setEntity(new StringEntity("lazydog"));
+ HttpResponse response = this.client.execute(put, this.context);
+ int status = response.getStatusLine().getStatusCode();
+ assertEquals(412, status);
+ }
} finally {
delete(testUri);
}