make code compilable
diff --git a/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/AbstractWebdavMethod.java b/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/AbstractWebdavMethod.java
index e5a02e2..1fea3ab 100644
--- a/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/AbstractWebdavMethod.java
+++ b/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/AbstractWebdavMethod.java
@@ -6,6 +6,7 @@
 import java.net.http.HttpRequest;
 import java.net.http.HttpRequest.Builder;
 import java.net.http.HttpResponse;
+import java.net.http.HttpResponse.BodySubscriber;
 import java.net.http.HttpResponse.BodySubscribers;
 import java.net.http.HttpResponse.ResponseInfo;
 import java.util.Optional;
@@ -38,24 +39,15 @@
      * @throws MultiStatusDavResponseException in case of a multi status response
      * @throws DavResponseException in case of a non-success status code
      */
-    protected HttpResponse.BodyHandler<Void> newMultiStatusAwareBodyHandler() {
-        return newMultiStatusAwareBodyHandler(responseInfo -> {});
-    }
-
-    /**
-     * Parses the response in case of non-success status code and throws an exception.
-     * Also potentially parses multi status response bodies and wraps them in a {@link MultiStatusDavResponseException}.
-     * @throws MultiStatusDavResponseException in case of a multi status response
-     * @throws DavResponseException in case of a non-success status code
-     */
-    protected HttpResponse.BodyHandler<T> newMultiStatusAwareBodyHandler(Function<ResponseInfo, T> responseInfoConsumer) {
+    // TODO: pass subscriber (no access to response headers)?
+    protected HttpResponse.BodyHandler<T> newMultiStatusAwareBodyHandler() {
         return (responseInfo) -> {
             if (succeeded(responseInfo.statusCode())) {
-                T response = responseInfoConsumer.apply(null);
-                return BodySubscribers.replacing(response);
+                // TODO: method specific evaluation of both headers and body
+                return (BodySubscriber<T>) BodySubscribers.discarding();
             } else if (responseInfo.statusCode() == DavServletResponse.SC_MULTI_STATUS) {
                 // TODO: evaluate multi status response body also for successful status codes?
-                return BodySubscribers.ofByteArrayConsumer(AbstractWebdavMethod::evaluateMultiStatusResponseBody);
+                return (BodySubscriber<T>) BodySubscribers.ofByteArrayConsumer(AbstractWebdavMethod::evaluateMultiStatusResponseBody);
             } else {
                 throw new DavResponseException(responseInfo.statusCode(), "Unexpected status code: "); 
             }
diff --git a/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/DavBodyHandlers.java b/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/DavBodyHandlers.java
index 1792346..6bb3fe7 100644
--- a/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/DavBodyHandlers.java
+++ b/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/DavBodyHandlers.java
@@ -19,53 +19,38 @@
 import org.apache.jackrabbit.webdav.DavConstants;
 import org.apache.jackrabbit.webdav.DavException;
 import org.apache.jackrabbit.webdav.MultiStatus;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.w3c.dom.Element;
 
 /**
  * Factory methods for HTTP response body handlers. Body handlers are used to process the body of an HTTP response.
+ * @see {@link BodyHandler}
  */
 public class DavBodyHandlers {
-    
-    
-    /**
-     * Returns a {@code BodyHandler<Path>} that returns a
-     * {@link BodySubscriber BodySubscriber}{@code <Path>} obtained from
-     * {@link BodySubscribers#ofFile(Path, OpenOption...)
-     * BodySubscribers.ofFile(Path,OpenOption...)}.
-     *
-     * <p> When the {@code HttpResponse} object is returned, the body has
-     * been completely written to the file, and {@link #body()} returns a
-     * reference to its {@link Path}.
-     *
-     * <p> Security manager permission checks are performed in this factory
-     * method, when the {@code BodyHandler} is created. Care must be taken
-     * that the {@code BodyHandler} is not shared with untrusted code.
-     *
-     * @param file the file to store the body in
-     * @param openOptions any options to use when opening/creating the file
-     * @return a response body handler
-     * @throws IllegalArgumentException if an invalid set of open options
-     *          are specified
-     * @throws SecurityException If a security manager has been installed
-     *          and it denies {@link SecurityManager#checkWrite(String)
-     *          write access} to the file.
-     */
+
+    private static final Logger LOG = LoggerFactory.getLogger(DavBodyHandlers.class);
+
+    private DavBodyHandlers() {
+        // prevent instantiation
+    }
+
     public static BodyHandler<String> ofLockToken() {
         return (responseInfo) -> BodySubscribers.replacing(getLockToken(responseInfo.headers()));
     }
 
-
+    // TODO: exception handling
     static String getLockToken(HttpHeaders headers) {
         List<String> ltHeader = headers.allValues(DavConstants.HEADER_LOCK_TOKEN);
-        if (ltHeader == null || ltHeader.length == 0) {
+        if (ltHeader.isEmpty()) {
             return null;
-        } else if (ltHeader.length != 1) {
-            LOG.debug("Multiple 'Lock-Token' header fields in response for " + getURI() + ": " + Arrays.asList(ltHeader));
+        } else if (ltHeader.size() != 1) {
+            LOG.debug("Multiple 'Lock-Token' header fields in response {}", ltHeader);
             return null;
         } else {
-            String v = ltHeader[0].getValue().trim();
+            String v = ltHeader.get(0).trim();
             if (!v.startsWith("<") || !v.endsWith(">")) {
-                LOG.debug("Invalid 'Lock-Token' header field in response for " + getURI() + ": " + Arrays.asList(ltHeader));
+                LOG.debug("Invalid 'Lock-Token' header field in response: {}", v);
                 return null;
             } else {
                 return v.substring(1, v.length() - 1);
diff --git a/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/LockMethod.java b/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/LockMethod.java
index c5033ef..31d9cc4 100644
--- a/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/LockMethod.java
+++ b/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/LockMethod.java
@@ -8,6 +8,7 @@
 import java.net.http.HttpResponse.BodyHandler;
 import java.net.http.HttpResponse.ResponseInfo;
 import java.util.Arrays;
+import java.util.Collection;
 import java.util.List;
 
 import org.apache.http.Header;
@@ -34,56 +35,32 @@
     private static final Logger LOG = LoggerFactory.getLogger(LockMethod.class);
 
     private final LockInfo info;
-    private final boolean isRefresh;
     
-    LockMethod(LockInfo info) {
+    public LockMethod(LockInfo info) {
         this.info = info;
-        this.isRefresh = false;
     }
 
-    // TODO: separate into two classes
+    // TODO: separate refresh info other class, builder?
+    /*
     LockMethod(long timeout, Collection<LockInfo> lockTokens) {
         TimeoutHeader th = new TimeoutHeader(timeout);
         super.setHeader(th.getHeaderName(), th.getHeaderValue());
         IfHeader ifh = new IfHeader(lockTokens);
         super.setHeader(ifh.getHeaderName(), ifh.getHeaderValue());
         isRefresh = true;
-    }
+    }*/
     
     @Override
     public Builder newRequestBuilder(URI uri) throws IOException {
         Builder builder = super.newRequestBuilder(uri);
-        if (isRefresh) {
-            builder.method(DavMethods.METHOD_LOCK, HttpRequest.BodyPublishers.noBody());
-            TimeoutHeader th = new TimeoutHeader(timeout);
-            builder.setHeader(th.getHeaderName(), th.getHeaderValue());
-            IfHeader ifh = new IfHeader(lockTokens);
-            builder.setHeader(ifh.getHeaderName(), ifh.getHeaderValue());
-        } else {
-            builder.method(DavMethods.METHOD_LOCK, DavBodyPublishers.ofXmlSerializable(info));
-        }
+        builder.method(DavMethods.METHOD_LOCK, DavBodyPublishers.ofXmlSerializable(info));
         return builder;
     }
 
     @Override
     public BodyHandler<String> newBodyResponseHandler() {
-        return newMultiStatusAwareBodyHandler(this::getLockToken);
-    }
-
-    private String getLockToken(HttpHeaders headers) {
-        List<String> ltHeader = headers.allValues(DavConstants.HEADER_LOCK_TOKEN);
-        if (ltHeader.size() != 1) {
-            LOG.debug("Multiple 'Lock-Token' header fields in response for " + response. + ": " + Arrays.asList(ltHeader));
-            return null;
-        } else {
-            String v = ltHeader.get(0).trim();
-            if (!v.startsWith("<") || !v.endsWith(">")) {
-                LOG.debug("Invalid 'Lock-Token' header field in response for " + getURI() + ": " + Arrays.asList(ltHeader));
-                return null;
-            } else {
-                return v.substring(1, v.length() - 1);
-            }
-        }
+        // TODO: support multi-status response with lock token in case of failure
+        return DavBodyHandlers.ofLockToken();
     }
 
     @Override
diff --git a/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/methods/HttpLock.java b/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/methods/HttpLock.java
index 97a31f2..171776d 100644
--- a/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/methods/HttpLock.java
+++ b/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/methods/HttpLock.java
@@ -40,7 +40,7 @@
  */
 public class HttpLock extends BaseDavRequest {
 
-    
+    private static final Logger LOG = LoggerFactory.getLogger(HttpLock.class);
 
     private final boolean isRefresh;
 
diff --git a/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/package-info.java b/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/package-info.java
index 5fa0937..ca5f176 100644
--- a/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/package-info.java
+++ b/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/package-info.java
@@ -16,7 +16,7 @@
  */
 
 /**
- * Provides classes for use with the Java HttpClient, supporting WebDAV
+ * Provides classes for use with the Java {@link HttpClient}, supporting WebDAV
  * request methods.
  * <p>
  * The classes in this package are used to create and execute WebDAV requests like this
diff --git a/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/package-info.java b/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/package-info.java
index c31af12..d5257e0 100644
--- a/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/package-info.java
+++ b/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/package-info.java
@@ -14,5 +14,5 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-@org.osgi.annotation.versioning.Version("1.4.0")
+@org.osgi.annotation.versioning.Version("1.5.0")
 package org.apache.jackrabbit.webdav;
diff --git a/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/xml/package-info.java b/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/xml/package-info.java
index 70c12ea..8c3aa78 100644
--- a/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/xml/package-info.java
+++ b/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/xml/package-info.java
@@ -14,5 +14,5 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-@org.osgi.annotation.versioning.Version("1.2.0")
+@org.osgi.annotation.versioning.Version("1.3.0")
 package org.apache.jackrabbit.webdav.xml;