Index: jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/lock/JcrActiveLock.java =================================================================== --- jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/lock/JcrActiveLock.java (revision 1913142) +++ jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/lock/JcrActiveLock.java (working copy) @@ -51,20 +51,6 @@ } /** - * Return true if the given lock token equals the token holding that lock. - * - * @param lockToken - * @return true if the given lock token equals this locks token. - * @see org.apache.jackrabbit.webdav.lock.ActiveLock#isLockedByToken(String) - */ - public boolean isLockedByToken(String lockToken) { - if (lockToken != null && lockToken.equals(getToken())) { - return true; - } - return false; - } - - /** * @see ActiveLock#isExpired() */ public boolean isExpired() { Index: jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/simple/DavResourceImpl.java =================================================================== --- jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/simple/DavResourceImpl.java (revision 1913142) +++ jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/simple/DavResourceImpl.java (working copy) @@ -958,7 +958,7 @@ return false; } else { for (String sLockToken : session.getLockTokens()) { - if (sLockToken.equals(lock.getToken())) { + if (lock.isLockedByToken(sLockToken)) { return false; } } Index: jackrabbit-jcr-server/src/test/java/org/apache/jackrabbit/webdav/server/RFC4918IfHeaderTest.java =================================================================== --- jackrabbit-jcr-server/src/test/java/org/apache/jackrabbit/webdav/server/RFC4918IfHeaderTest.java (revision 1913142) +++ jackrabbit-jcr-server/src/test/java/org/apache/jackrabbit/webdav/server/RFC4918IfHeaderTest.java (working copy) @@ -97,6 +97,21 @@ assertEquals("status: " + status, 412, status); requestBase.releaseConnection(); + boolean upperCasefailed, lowerCaseFailed; + requestBase = new HttpPut(testuri); + ((HttpPut)requestBase).setEntity(new StringEntity("2")); + requestBase.setHeader("If", "(<" + locktoken.toUpperCase() + ">)"); + status = this.client.execute(requestBase, this.context).getStatusLine().getStatusCode(); + upperCasefailed = (status == 412); + requestBase.releaseConnection(); + requestBase = new HttpPut(testuri); + ((HttpPut)requestBase).setEntity(new StringEntity("2")); + requestBase.setHeader("If", "(<" + locktoken.toLowerCase() + ">)"); + status = this.client.execute(requestBase, this.context).getStatusLine().getStatusCode(); + lowerCaseFailed = (status == 412); + requestBase.releaseConnection(); + assertTrue(upperCasefailed || lowerCaseFailed); + // try to overwrite using correct lock token, using No-Tag-list format requestBase = new HttpPut(testuri); ((HttpPut)requestBase).setEntity(new StringEntity("2")); Index: jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/lock/AbstractActiveLock.java =================================================================== --- jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/lock/AbstractActiveLock.java (revision 1913142) +++ jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/lock/AbstractActiveLock.java (working copy) @@ -42,6 +42,10 @@ this.lockroot = lockroot; } + public boolean isLockedByToken(String lockToken) { + return (lockToken != null) && lockToken.equals(getToken()); + } + /** * Returns the default Xml representation of the 'activelock' element * as defined by RFC 4918. Index: jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/lock/DefaultActiveLock.java =================================================================== --- jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/lock/DefaultActiveLock.java (revision 1913142) +++ jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/lock/DefaultActiveLock.java (working copy) @@ -61,13 +61,6 @@ } /** - * @see ActiveLock#isLockedByToken(String) - */ - public boolean isLockedByToken(String lockToken) { - return (token != null) && token.equals(lockToken); - } - - /** * @see ActiveLock#isExpired() */ public boolean isExpired() { Index: jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/lock/LockDiscovery.java =================================================================== --- jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/lock/LockDiscovery.java (revision 1913142) +++ jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/lock/LockDiscovery.java (working copy) @@ -136,7 +136,7 @@ * Note, that all set-methods as well as {@link #isExpired()} are not * implemented. */ - private static class ALockImpl implements ActiveLock { + private static class ALockImpl extends AbstractActiveLock { private final Element alElement; @@ -147,15 +147,6 @@ this.alElement = alElement; } - public boolean isLockedByToken(String lockToken) { - String lt = getToken(); - if (lt == null) { - return false; - } else { - return lt.equals(lockToken); - } - } - public boolean isExpired() { throw new UnsupportedOperationException("Not implemented"); } Index: jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/lock/package-info.java =================================================================== --- jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/lock/package-info.java (revision 1913142) +++ jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/lock/package-info.java (working copy) @@ -14,5 +14,5 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -@org.osgi.annotation.versioning.Version("1.0.1") +@org.osgi.annotation.versioning.Version("1.1.0") package org.apache.jackrabbit.webdav.lock;