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 2019/09/02 13:56:04 UTC

svn commit: r1866280 - in /jackrabbit/trunk: jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/ jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/version/report/ jackrabbit-webdav/src/main/java/org/apache/jackrabbi...

Author: reschke
Date: Mon Sep  2 13:56:03 2019
New Revision: 1866280

URL: http://svn.apache.org/viewvc?rev=1866280&view=rev
Log:
JCR-4458: When JcrRemotingServlet deployed on non-root context, AclResource Webdav request fails (patch by woon_san)

Added:
    jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/WebdavRequestContext.java   (with props)
    jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/server/WebdavRequestContextHolder.java   (with props)
    jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/server/WebdavRequestContextImpl.java   (with props)
    jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/version/report/AbstractReport.java   (with props)
Modified:
    jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/AbstractResource.java
    jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/VersionControlledItemCollection.java
    jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/WorkspaceResourceImpl.java
    jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/version/report/AbstractJcrReport.java
    jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/version/report/JcrPrivilegeReport.java
    jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/version/report/LocateCorrespondingNodeReport.java
    jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/package-info.java
    jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/security/report/AbstractSecurityReport.java
    jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/security/report/AclPrincipalReport.java
    jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/security/report/SearchablePropertyReport.java
    jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/security/report/package-info.java
    jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/server/AbstractWebdavServlet.java
    jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/server/package-info.java
    jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/version/report/CompareBaselineReport.java
    jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/version/report/ExpandPropertyReport.java
    jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/version/report/LatestActivityVersionReport.java
    jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/version/report/LocateByHistoryReport.java
    jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/version/report/VersionTreeReport.java
    jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/version/report/package-info.java

Modified: jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/AbstractResource.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/AbstractResource.java?rev=1866280&r1=1866279&r2=1866280&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/AbstractResource.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/AbstractResource.java Mon Sep  2 13:56:03 2019
@@ -26,6 +26,8 @@ import org.apache.jackrabbit.webdav.DavS
 import org.apache.jackrabbit.webdav.DavSession;
 import org.apache.jackrabbit.webdav.MultiStatus;
 import org.apache.jackrabbit.webdav.MultiStatusResponse;
+import org.apache.jackrabbit.webdav.WebdavRequest;
+import org.apache.jackrabbit.webdav.WebdavRequestContext;
 import org.apache.jackrabbit.webdav.DavCompliance;
 import org.apache.jackrabbit.webdav.jcr.property.JcrDavPropertyNameSet;
 import org.apache.jackrabbit.webdav.util.HttpDateFormat;
@@ -53,6 +55,7 @@ import org.apache.jackrabbit.webdav.prop
 import org.apache.jackrabbit.webdav.search.QueryGrammerSet;
 import org.apache.jackrabbit.webdav.search.SearchInfo;
 import org.apache.jackrabbit.webdav.search.SearchResource;
+import org.apache.jackrabbit.webdav.server.WebdavRequestContextHolder;
 import org.apache.jackrabbit.webdav.transaction.TransactionConstants;
 import org.apache.jackrabbit.webdav.transaction.TransactionInfo;
 import org.apache.jackrabbit.webdav.transaction.TransactionResource;
@@ -759,6 +762,33 @@ abstract class AbstractResource implemen
         return HttpDateFormat.creationDateFormat().format(new Date(0));
     }
 
+    /**
+     * Normalize the resource {@code href}. For example, remove contextPath prefix if found.
+     * @param href resource href
+     * @return normalized resource {@code href}
+     */
+    protected String normalizeResourceHref(final String href) {
+        if (href == null) {
+            return href;
+        }
+
+        final WebdavRequestContext requestContext = WebdavRequestContextHolder.getContext();
+        final WebdavRequest request = (requestContext != null) ? requestContext.getRequest() : null;
+
+        if (request == null) {
+            log.error("WebdavRequest is unavailable in the current execution context.");
+            return href;
+        }
+
+        final String contextPath = request.getContextPath();
+
+        if (!contextPath.isEmpty() && href.startsWith(contextPath)) {
+            return href.substring(contextPath.length());
+        }
+
+        return href;
+    }
+
     //--------------------------------------------------------------------------
     /**
      * Register the specified event listener with the observation manager present

Modified: jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/VersionControlledItemCollection.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/VersionControlledItemCollection.java?rev=1866280&r1=1866279&r2=1866280&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/VersionControlledItemCollection.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/VersionControlledItemCollection.java Mon Sep  2 13:56:03 2019
@@ -400,7 +400,8 @@ public class VersionControlledItemCollec
                     throw new DavException(DavServletResponse.SC_BAD_REQUEST, "Invalid update request body missing version href or containing multiple version hrefs.");
                 }
 
-                String versionPath = getLocatorFromHref(hrefs[0]).getRepositoryPath();
+                final String href = normalizeResourceHref(hrefs[0]);
+                String versionPath = getLocatorFromHref(href).getRepositoryPath();
                 String versionName = getItemName(versionPath);
 
                 String relPath = DomUtil.getChildText(udElem, XML_RELPATH, NAMESPACE);
@@ -423,7 +424,7 @@ public class VersionControlledItemCollec
                 node.restoreByLabel(labels[0], removeExisting);
 
             } else if (updateInfo.getWorkspaceHref() != null) {
-                String href = obtainAbsolutePathFromUri(updateInfo.getWorkspaceHref());
+                String href = normalizeResourceHref(obtainAbsolutePathFromUri(updateInfo.getWorkspaceHref()));
                 String workspaceName = getLocatorFromHref(href).getWorkspaceName();
                 node.update(workspaceName);
             } else {
@@ -469,7 +470,8 @@ public class VersionControlledItemCollec
             // resources that got modified by this merge operation -> omitted.
             
             // todo: RFC allows multiple href elements inside the DAV:source element
-            String workspaceName = getLocatorFromHref(mergeInfo.getSourceHrefs()[0]).getWorkspaceName();
+            final String href = normalizeResourceHref(mergeInfo.getSourceHrefs()[0]);
+            String workspaceName = getLocatorFromHref(href).getWorkspaceName();
 
             String depth = DomUtil.getChildTextTrim(mergeInfo.getMergeElement(), DavConstants.XML_DEPTH, DavConstants.NAMESPACE);
             boolean isShallow = "0".equals(depth);

Modified: jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/WorkspaceResourceImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/WorkspaceResourceImpl.java?rev=1866280&r1=1866279&r2=1866280&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/WorkspaceResourceImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/WorkspaceResourceImpl.java Mon Sep  2 13:56:03 2019
@@ -537,7 +537,8 @@ public class WorkspaceResourceImpl exten
             // perform the update/restore according to the update info
             Version[] versions = new Version[hrefs.length];
             for (int i = 0; i < hrefs.length; i++) {
-                DavResourceLocator vLoc = getLocator().getFactory().createResourceLocator(getLocator().getPrefix(), hrefs[i]);
+                final String href = normalizeResourceHref(hrefs[i]);
+                DavResourceLocator vLoc = getLocator().getFactory().createResourceLocator(getLocator().getPrefix(), href);
                 String versionPath = vLoc.getRepositoryPath();
                 Item item = getRepositorySession().getItem(versionPath);
                 if (item instanceof Version) {

Modified: jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/version/report/AbstractJcrReport.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/version/report/AbstractJcrReport.java?rev=1866280&r1=1866279&r2=1866280&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/version/report/AbstractJcrReport.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/version/report/AbstractJcrReport.java Mon Sep  2 13:56:03 2019
@@ -16,21 +16,22 @@
  */
 package org.apache.jackrabbit.webdav.jcr.version.report;
 
+import javax.jcr.Session;
+
 import org.apache.jackrabbit.webdav.DavConstants;
 import org.apache.jackrabbit.webdav.DavException;
 import org.apache.jackrabbit.webdav.DavResource;
 import org.apache.jackrabbit.webdav.DavServletResponse;
 import org.apache.jackrabbit.webdav.DavSession;
 import org.apache.jackrabbit.webdav.jcr.JcrDavSession;
+import org.apache.jackrabbit.webdav.version.report.AbstractReport;
 import org.apache.jackrabbit.webdav.version.report.Report;
 import org.apache.jackrabbit.webdav.version.report.ReportInfo;
 
-import javax.jcr.Session;
-
 /**
  * <code>AbstractJcrReport</code>...
  */
-public abstract class AbstractJcrReport implements Report {
+public abstract class AbstractJcrReport extends AbstractReport {
 
     private Session session;
     private ReportInfo reportInfo;
@@ -80,4 +81,4 @@ public abstract class AbstractJcrReport
     ReportInfo getReportInfo() {
         return reportInfo;
     }
-}
\ No newline at end of file
+}

Modified: jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/version/report/JcrPrivilegeReport.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/version/report/JcrPrivilegeReport.java?rev=1866280&r1=1866279&r2=1866280&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/version/report/JcrPrivilegeReport.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/version/report/JcrPrivilegeReport.java Mon Sep  2 13:56:03 2019
@@ -107,7 +107,7 @@ public class JcrPrivilegeReport extends
         // immediately build the final multistatus element
         Element hrefElem = info.getContentElement(DavConstants.XML_HREF, DavConstants.NAMESPACE);
         String href = DomUtil.getTextTrim(hrefElem);
-        href = obtainAbsolutePathFromUri(href); // TODO: we should check whether the authority component matches
+        href = normalizeResourceHref(obtainAbsolutePathFromUri(href)); // TODO: we should check whether the authority component matches
         DavResourceLocator resourceLoc = resource.getLocator();
         DavResourceLocator loc = resourceLoc.getFactory().createResourceLocator(resourceLoc.getPrefix(), href);
         // immediately build the final multistatus element
@@ -159,4 +159,4 @@ public class JcrPrivilegeReport extends
             return uri;
         }
     }
-}
\ No newline at end of file
+}

Modified: jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/version/report/LocateCorrespondingNodeReport.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/version/report/LocateCorrespondingNodeReport.java?rev=1866280&r1=1866279&r2=1866280&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/version/report/LocateCorrespondingNodeReport.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/version/report/LocateCorrespondingNodeReport.java Mon Sep  2 13:56:03 2019
@@ -102,7 +102,7 @@ public class LocateCorrespondingNodeRepo
         super.init(resource, info);
         // specific for this report: a workspace href must be provided
         Element workspace = info.getContentElement(DeltaVConstants.WORKSPACE.getName(), DeltaVConstants.WORKSPACE.getNamespace());
-        String workspaceHref = DomUtil.getChildTextTrim(workspace, DavConstants.XML_HREF, DavConstants.NAMESPACE);
+        String workspaceHref = normalizeResourceHref(DomUtil.getChildTextTrim(workspace, DavConstants.XML_HREF, DavConstants.NAMESPACE));
         if (workspaceHref == null || "".equals(workspaceHref)) {
             throw new DavException(DavServletResponse.SC_BAD_REQUEST, "Request body must define the href of a source workspace");
         }

Added: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/WebdavRequestContext.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/WebdavRequestContext.java?rev=1866280&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/WebdavRequestContext.java (added)
+++ jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/WebdavRequestContext.java Mon Sep  2 13:56:03 2019
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.webdav;
+
+/**
+ * Interface providing the minimum WebDAV request information associated with the current thread of execution.
+ */
+public interface WebdavRequestContext {
+
+    /**
+     * Return the current {@link WebdavRequest} instance associated with the current thread of execution.
+     * @return the current {@link WebdavRequest} instance associated with the current thread of execution
+     */
+    public WebdavRequest getRequest();
+
+}

Propchange: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/WebdavRequestContext.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/package-info.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/package-info.java?rev=1866280&r1=1866279&r2=1866280&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/package-info.java (original)
+++ jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/package-info.java Mon Sep  2 13:56:03 2019
@@ -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;

Modified: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/security/report/AbstractSecurityReport.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/security/report/AbstractSecurityReport.java?rev=1866280&r1=1866279&r2=1866280&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/security/report/AbstractSecurityReport.java (original)
+++ jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/security/report/AbstractSecurityReport.java Mon Sep  2 13:56:03 2019
@@ -22,6 +22,7 @@ import org.apache.jackrabbit.webdav.DavR
 import org.apache.jackrabbit.webdav.DavServletResponse;
 import org.apache.jackrabbit.webdav.MultiStatus;
 import org.apache.jackrabbit.webdav.MultiStatusResponse;
+import org.apache.jackrabbit.webdav.version.report.AbstractReport;
 import org.apache.jackrabbit.webdav.version.report.Report;
 import org.apache.jackrabbit.webdav.version.report.ReportInfo;
 import org.w3c.dom.Document;
@@ -31,7 +32,7 @@ import org.w3c.dom.Element;
  * <code>AbstractSecurityReport</code> covers basic validation and utilities
  * common to the majority of the reports defined within RFC 3744.
  */
-public abstract class AbstractSecurityReport implements Report {
+public abstract class AbstractSecurityReport extends AbstractReport {
 
     protected MultiStatusResponse[] responses;
 

Modified: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/security/report/AclPrincipalReport.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/security/report/AclPrincipalReport.java?rev=1866280&r1=1866279&r2=1866280&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/security/report/AclPrincipalReport.java (original)
+++ jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/security/report/AclPrincipalReport.java Mon Sep  2 13:56:03 2019
@@ -81,7 +81,7 @@ public class AclPrincipalReport extends
         Map<String, MultiStatusResponse> respMap = new HashMap<String, MultiStatusResponse>();
         List<AclProperty.Ace> list = (List<AclProperty.Ace>) ((AclProperty)acl).getValue();
         for (AclProperty.Ace ace : list) {
-            String href = ace.getPrincipal().getHref();
+            String href = normalizeResourceHref(ace.getPrincipal().getHref());
             if (href == null || respMap.containsKey(href)) {
                 // ignore non-href principals and principals that have been listed before
                 continue;
@@ -93,4 +93,4 @@ public class AclPrincipalReport extends
         }
         this.responses = respMap.values().toArray(new MultiStatusResponse[respMap.size()]);
     }
-}
\ No newline at end of file
+}

Modified: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/security/report/SearchablePropertyReport.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/security/report/SearchablePropertyReport.java?rev=1866280&r1=1866279&r2=1866280&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/security/report/SearchablePropertyReport.java (original)
+++ jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/security/report/SearchablePropertyReport.java Mon Sep  2 13:56:03 2019
@@ -16,6 +16,9 @@
  */
 package org.apache.jackrabbit.webdav.security.report;
 
+import java.util.HashSet;
+import java.util.Set;
+
 import org.apache.jackrabbit.webdav.DavConstants;
 import org.apache.jackrabbit.webdav.DavException;
 import org.apache.jackrabbit.webdav.DavResource;
@@ -23,6 +26,7 @@ import org.apache.jackrabbit.webdav.DavS
 import org.apache.jackrabbit.webdav.property.DavPropertyName;
 import org.apache.jackrabbit.webdav.property.DavPropertyNameSet;
 import org.apache.jackrabbit.webdav.security.SecurityConstants;
+import org.apache.jackrabbit.webdav.version.report.AbstractReport;
 import org.apache.jackrabbit.webdav.version.report.Report;
 import org.apache.jackrabbit.webdav.version.report.ReportInfo;
 import org.apache.jackrabbit.webdav.version.report.ReportType;
@@ -32,9 +36,6 @@ import org.apache.jackrabbit.webdav.xml.
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
-import java.util.HashSet;
-import java.util.Set;
-
 /**
  * <code>SearchablePropertyReport</code> identifies those properties that may be
  * searched using the {@link PrincipalSearchReport DAV:principal-property-search REPORT}.
@@ -57,7 +58,7 @@ import java.util.Set;
  * Note that a DAV:principal-search-property XML element is required for each
  * property that may be searched with the DAV:principal-property-search REPORT.
  */
-public class SearchablePropertyReport implements Report {
+public class SearchablePropertyReport extends AbstractReport {
 
     /**
      * The report name

Modified: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/security/report/package-info.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/security/report/package-info.java?rev=1866280&r1=1866279&r2=1866280&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/security/report/package-info.java (original)
+++ jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/security/report/package-info.java Mon Sep  2 13:56:03 2019
@@ -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.0")
+@org.osgi.annotation.versioning.Version("1.1.0")
 package org.apache.jackrabbit.webdav.security.report;

Modified: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/server/AbstractWebdavServlet.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/server/AbstractWebdavServlet.java?rev=1866280&r1=1866279&r2=1866280&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/server/AbstractWebdavServlet.java (original)
+++ jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/server/AbstractWebdavServlet.java Mon Sep  2 13:56:03 2019
@@ -273,7 +273,10 @@ abstract public class AbstractWebdavServ
         int methodCode = DavMethods.getMethodCode(request.getMethod());
         boolean noCache = DavMethods.isDeltaVMethod(webdavRequest) && !(DavMethods.DAV_VERSION_CONTROL == methodCode || DavMethods.DAV_REPORT == methodCode);
         WebdavResponse webdavResponse = new WebdavResponseImpl(response, noCache);
+
         try {
+            WebdavRequestContextHolder.setContext(new WebdavRequestContextImpl(webdavRequest));
+
             // make sure there is a authenticated user
             if (!getDavSessionProvider().attachSession(webdavRequest)) {
                 return;
@@ -313,6 +316,7 @@ abstract public class AbstractWebdavServ
                 webdavResponse.sendError(e);
             }
         } finally {
+            WebdavRequestContextHolder.clearContext();
             getDavSessionProvider().releaseSession(webdavRequest);
         }
     }

Added: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/server/WebdavRequestContextHolder.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/server/WebdavRequestContextHolder.java?rev=1866280&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/server/WebdavRequestContextHolder.java (added)
+++ jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/server/WebdavRequestContextHolder.java Mon Sep  2 13:56:03 2019
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.webdav.server;
+
+import org.apache.jackrabbit.webdav.WebdavRequestContext;
+
+/**
+ * Associates a {@link WebdavRequestContext} with the current execution thread.
+ */
+public final class WebdavRequestContextHolder {
+
+    private static ThreadLocal<WebdavRequestContext> tlWebdavRequestContext = new ThreadLocal<>();
+
+    private WebdavRequestContextHolder() {
+    }
+
+    /**
+     * Return the {@link WebdavRequestContext} with the current execution thread.
+     * @return the {@link WebdavRequestContext} with the current execution thread
+     */
+    public static WebdavRequestContext getContext() {
+        return tlWebdavRequestContext.get();
+    }
+
+    static void setContext(WebdavRequestContext context) {
+        tlWebdavRequestContext.set(context);
+    }
+
+    static void clearContext() {
+        tlWebdavRequestContext.remove();
+    }
+}

Propchange: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/server/WebdavRequestContextHolder.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/server/WebdavRequestContextImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/server/WebdavRequestContextImpl.java?rev=1866280&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/server/WebdavRequestContextImpl.java (added)
+++ jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/server/WebdavRequestContextImpl.java Mon Sep  2 13:56:03 2019
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.webdav.server;
+
+import org.apache.jackrabbit.webdav.WebdavRequest;
+import org.apache.jackrabbit.webdav.WebdavRequestContext;
+
+class WebdavRequestContextImpl implements WebdavRequestContext {
+
+    private final WebdavRequest request;
+
+    WebdavRequestContextImpl(final WebdavRequest request) {
+        this.request = request;
+    }
+
+    @Override
+    public WebdavRequest getRequest() {
+        return request;
+    }
+
+}

Propchange: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/server/WebdavRequestContextImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/server/package-info.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/server/package-info.java?rev=1866280&r1=1866279&r2=1866280&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/server/package-info.java (original)
+++ jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/server/package-info.java Mon Sep  2 13:56:03 2019
@@ -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.0")
+@org.osgi.annotation.versioning.Version("1.1.0")
 package org.apache.jackrabbit.webdav.server;

Added: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/version/report/AbstractReport.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/version/report/AbstractReport.java?rev=1866280&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/version/report/AbstractReport.java (added)
+++ jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/version/report/AbstractReport.java Mon Sep  2 13:56:03 2019
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.webdav.version.report;
+
+import org.apache.jackrabbit.webdav.WebdavRequest;
+import org.apache.jackrabbit.webdav.WebdavRequestContext;
+import org.apache.jackrabbit.webdav.server.WebdavRequestContextHolder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Abstract <code>Report</code>.
+ */
+public abstract class AbstractReport implements Report {
+
+    private static Logger log = LoggerFactory.getLogger(AbstractReport.class);
+
+    /**
+     * Normalize the resource {@code href}. For example, remove contextPath prefix if found.
+     * @param href resource href
+     * @return normalized resource {@code href}
+     */
+    protected String normalizeResourceHref(final String href) {
+        if (href == null) {
+            return href;
+        }
+
+        final WebdavRequestContext requestContext = WebdavRequestContextHolder.getContext();
+        final WebdavRequest request = (requestContext != null) ? requestContext.getRequest() : null;
+
+        if (request == null) {
+            log.error("WebdavRequest is unavailable in the current execution context.");
+            return href;
+        }
+
+        final String contextPath = request.getContextPath();
+
+        if (!contextPath.isEmpty() && href.startsWith(contextPath)) {
+            return href.substring(contextPath.length());
+        }
+
+        return href;
+    }
+
+}
\ No newline at end of file

Propchange: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/version/report/AbstractReport.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/version/report/CompareBaselineReport.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/version/report/CompareBaselineReport.java?rev=1866280&r1=1866279&r2=1866280&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/version/report/CompareBaselineReport.java (original)
+++ jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/version/report/CompareBaselineReport.java Mon Sep  2 13:56:03 2019
@@ -16,30 +16,30 @@
  */
 package org.apache.jackrabbit.webdav.version.report;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.apache.jackrabbit.webdav.DavResource;
-import org.apache.jackrabbit.webdav.DavException;
+import java.util.ArrayList;
+import java.util.List;
+
 import org.apache.jackrabbit.webdav.DavConstants;
-import org.apache.jackrabbit.webdav.DavServletResponse;
-import org.apache.jackrabbit.webdav.DavResourceLocator;
+import org.apache.jackrabbit.webdav.DavException;
+import org.apache.jackrabbit.webdav.DavResource;
 import org.apache.jackrabbit.webdav.DavResourceIterator;
+import org.apache.jackrabbit.webdav.DavResourceLocator;
+import org.apache.jackrabbit.webdav.DavServletResponse;
 import org.apache.jackrabbit.webdav.property.HrefProperty;
-import org.apache.jackrabbit.webdav.xml.DomUtil;
-import org.apache.jackrabbit.webdav.version.DeltaVConstants;
 import org.apache.jackrabbit.webdav.version.BaselineResource;
-import org.apache.jackrabbit.webdav.version.VersionResource;
+import org.apache.jackrabbit.webdav.version.DeltaVConstants;
 import org.apache.jackrabbit.webdav.version.VersionControlledResource;
-import org.w3c.dom.Element;
+import org.apache.jackrabbit.webdav.version.VersionResource;
+import org.apache.jackrabbit.webdav.xml.DomUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.w3c.dom.Document;
-
-import java.util.List;
-import java.util.ArrayList;
+import org.w3c.dom.Element;
 
 /**
  * <code>CompareBaselineReport</code>...
  */
-public class CompareBaselineReport implements Report {
+public class CompareBaselineReport extends AbstractReport {
 
     private static Logger log = LoggerFactory.getLogger(CompareBaselineReport.class);
 
@@ -95,7 +95,7 @@ public class CompareBaselineReport imple
 
         // make sure the DAV:href element inside the request body points to
         // an baseline resource (precondition for this report).
-        String compareHref = DomUtil.getText(info.getContentElement(DavConstants.XML_HREF, DavConstants.NAMESPACE));
+        String compareHref = normalizeResourceHref(DomUtil.getText(info.getContentElement(DavConstants.XML_HREF, DavConstants.NAMESPACE)));
         DavResourceLocator locator = resource.getLocator();
         DavResourceLocator compareLocator = locator.getFactory().createResourceLocator(locator.getPrefix(), compareHref);
 

Modified: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/version/report/ExpandPropertyReport.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/version/report/ExpandPropertyReport.java?rev=1866280&r1=1866279&r2=1866280&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/version/report/ExpandPropertyReport.java (original)
+++ jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/version/report/ExpandPropertyReport.java Mon Sep  2 13:56:03 2019
@@ -16,6 +16,10 @@
  */
 package org.apache.jackrabbit.webdav.version.report;
 
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
 import org.apache.jackrabbit.webdav.DavException;
 import org.apache.jackrabbit.webdav.DavResource;
 import org.apache.jackrabbit.webdav.DavResourceIterator;
@@ -36,10 +40,6 @@ import org.slf4j.LoggerFactory;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
 /**
  * <code>ExpandPropertyReport</code> encapsulates the DAV:expand-property report,
  * that provides a mechanism for retrieving in one request the properties from
@@ -61,7 +61,7 @@ import java.util.List;
  * @see DeltaVConstants#XML_EXPAND_PROPERTY
  * @see DeltaVConstants#XML_PROPERTY
  */
-public class ExpandPropertyReport implements Report, DeltaVConstants {
+public class ExpandPropertyReport extends AbstractReport implements DeltaVConstants {
 
     private static Logger log = LoggerFactory.getLogger(ExpandPropertyReport.class);
 

Modified: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/version/report/LatestActivityVersionReport.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/version/report/LatestActivityVersionReport.java?rev=1866280&r1=1866279&r2=1866280&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/version/report/LatestActivityVersionReport.java (original)
+++ jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/version/report/LatestActivityVersionReport.java Mon Sep  2 13:56:03 2019
@@ -16,30 +16,30 @@
  */
 package org.apache.jackrabbit.webdav.version.report;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.apache.jackrabbit.webdav.DavResource;
-import org.apache.jackrabbit.webdav.DavException;
-import org.apache.jackrabbit.webdav.DavServletResponse;
+import java.util.List;
+
 import org.apache.jackrabbit.webdav.DavConstants;
+import org.apache.jackrabbit.webdav.DavException;
+import org.apache.jackrabbit.webdav.DavResource;
 import org.apache.jackrabbit.webdav.DavResourceLocator;
+import org.apache.jackrabbit.webdav.DavServletResponse;
 import org.apache.jackrabbit.webdav.property.HrefProperty;
-import org.apache.jackrabbit.webdav.xml.DomUtil;
-import org.apache.jackrabbit.webdav.version.VersionHistoryResource;
 import org.apache.jackrabbit.webdav.version.ActivityResource;
 import org.apache.jackrabbit.webdav.version.DeltaVConstants;
+import org.apache.jackrabbit.webdav.version.VersionHistoryResource;
 import org.apache.jackrabbit.webdav.version.VersionResource;
-import org.w3c.dom.Element;
+import org.apache.jackrabbit.webdav.xml.DomUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.w3c.dom.Document;
-
-import java.util.List;
+import org.w3c.dom.Element;
 
 /**
  * <code>LatestActivityVersionReport</code> is applied to a version history to
  * identify the latest version that is selected from that version history by a
  * given activity.
  */
-public class LatestActivityVersionReport implements Report {
+public class LatestActivityVersionReport extends AbstractReport {
 
     private static Logger log = LoggerFactory.getLogger(LatestActivityVersionReport.class);
 
@@ -91,7 +91,7 @@ public class LatestActivityVersionReport
 
         // make sure the DAV:href element inside the request body points to
         // an activity resource (precondition for this report).
-        String activityHref = DomUtil.getText(info.getContentElement(DavConstants.XML_HREF, DavConstants.NAMESPACE));
+        String activityHref = normalizeResourceHref(DomUtil.getText(info.getContentElement(DavConstants.XML_HREF, DavConstants.NAMESPACE)));
         DavResourceLocator vhLocator = resource.getLocator();
         DavResourceLocator activityLocator = vhLocator.getFactory().createResourceLocator(vhLocator.getPrefix(), activityHref);
 

Modified: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/version/report/LocateByHistoryReport.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/version/report/LocateByHistoryReport.java?rev=1866280&r1=1866279&r2=1866280&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/version/report/LocateByHistoryReport.java (original)
+++ jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/version/report/LocateByHistoryReport.java Mon Sep  2 13:56:03 2019
@@ -16,6 +16,9 @@
  */
 package org.apache.jackrabbit.webdav.version.report;
 
+import java.util.HashSet;
+import java.util.Set;
+
 import org.apache.jackrabbit.webdav.DavConstants;
 import org.apache.jackrabbit.webdav.DavException;
 import org.apache.jackrabbit.webdav.DavResource;
@@ -33,9 +36,6 @@ import org.slf4j.LoggerFactory;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
-import java.util.HashSet;
-import java.util.Set;
-
 /**
  * <code>LocateByHistoryReport</code> encapsulates the DAV:locate-by-hisotry
  * report, that may be used to locate a version-controlled resource for that
@@ -48,7 +48,7 @@ import java.util.Set;
  * &lt;!ELEMENT version-history-set (href+)&gt;
  * </pre>
  */
-public class LocateByHistoryReport implements Report, DeltaVConstants {
+public class LocateByHistoryReport extends AbstractReport implements DeltaVConstants {
 
     private static Logger log = LoggerFactory.getLogger(LocateByHistoryReport.class);
 

Modified: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/version/report/VersionTreeReport.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/version/report/VersionTreeReport.java?rev=1866280&r1=1866279&r2=1866280&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/version/report/VersionTreeReport.java (original)
+++ jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/version/report/VersionTreeReport.java Mon Sep  2 13:56:03 2019
@@ -36,7 +36,7 @@ import org.w3c.dom.Element;
  * history of a version. The DAV:version-tree report must be supported by all
  * version resources and all version-controlled resources.
  */
-public class VersionTreeReport implements Report, DeltaVConstants {
+public class VersionTreeReport extends AbstractReport implements DeltaVConstants {
 
     private static Logger log = LoggerFactory.getLogger(VersionTreeReport.class);
 

Modified: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/version/report/package-info.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/version/report/package-info.java?rev=1866280&r1=1866279&r2=1866280&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/version/report/package-info.java (original)
+++ jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/version/report/package-info.java Mon Sep  2 13:56:03 2019
@@ -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.0")
+@org.osgi.annotation.versioning.Version("1.1.0")
 package org.apache.jackrabbit.webdav.version.report;