Return-Path: X-Original-To: apmail-jackrabbit-commits-archive@www.apache.org Delivered-To: apmail-jackrabbit-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 22143106F8 for ; Mon, 22 Apr 2013 15:15:09 +0000 (UTC) Received: (qmail 77091 invoked by uid 500); 22 Apr 2013 15:15:09 -0000 Delivered-To: apmail-jackrabbit-commits-archive@jackrabbit.apache.org Received: (qmail 77053 invoked by uid 500); 22 Apr 2013 15:15:08 -0000 Mailing-List: contact commits-help@jackrabbit.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@jackrabbit.apache.org Delivered-To: mailing list commits@jackrabbit.apache.org Received: (qmail 77042 invoked by uid 99); 22 Apr 2013 15:15:08 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 22 Apr 2013 15:15:08 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 22 Apr 2013 15:15:06 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id E0455238889B; Mon, 22 Apr 2013 15:14:44 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1470573 - /jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/RepositoryServiceImpl.java Date: Mon, 22 Apr 2013 15:14:44 -0000 To: commits@jackrabbit.apache.org From: reschke@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20130422151444.E0455238889B@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: reschke Date: Mon Apr 22 15:14:33 2013 New Revision: 1470573 URL: http://svn.apache.org/r1470573 Log: JCR-3578: use absolute paths in DeltaV request bodies, and resolve hrefs in responses properly Modified: jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/RepositoryServiceImpl.java Modified: jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/RepositoryServiceImpl.java URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/RepositoryServiceImpl.java?rev=1470573&r1=1470572&r2=1470573&view=diff ============================================================================== --- jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/RepositoryServiceImpl.java (original) +++ jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/RepositoryServiceImpl.java Mon Apr 22 15:14:33 2013 @@ -1786,8 +1786,9 @@ public class RepositoryServiceImpl imple private void update(String uri, Path relPath, String[] updateSource, int updateType, boolean removeExisting, SessionInfo sessionInfo) throws RepositoryException { try { UpdateInfo uInfo; + String tmpUpdateSource[] = obtainAbsolutePathsFromUris(updateSource); if (removeExisting || relPath != null) { - Element uElem = UpdateInfo.createUpdateElement(updateSource, updateType, DomUtil.createDocument()); + Element uElem = UpdateInfo.createUpdateElement(tmpUpdateSource, updateType, DomUtil.createDocument()); if (removeExisting) { DomUtil.addChildElement(uElem, JcrRemotingConstants.XML_REMOVEEXISTING, ItemResourceConstants.NAMESPACE); } @@ -1797,10 +1798,6 @@ public class RepositoryServiceImpl imple uInfo = new UpdateInfo(uElem); } else { - String tmpUpdateSource[] = new String[updateSource.length]; - for (int i = 0; i < updateSource.length; i++) { - tmpUpdateSource[i] = obtainAbsolutePathFromUri(updateSource[i]); - } uInfo = new UpdateInfo(tmpUpdateSource, updateType, new DavPropertyNameSet()); } @@ -1828,20 +1825,21 @@ public class RepositoryServiceImpl imple public Iterator merge(SessionInfo sessionInfo, NodeId nodeId, String srcWorkspaceName, boolean bestEffort, boolean isShallow) throws NoSuchWorkspaceException, AccessDeniedException, MergeException, LockException, InvalidItemStateException, RepositoryException { try { Document doc = DomUtil.createDocument(); - String wspHref = uriResolver.getWorkspaceUri(srcWorkspaceName); - Element mElem = MergeInfo.createMergeElement(new String[] {wspHref}, !bestEffort, false, doc); + String wspHref = obtainAbsolutePathFromUri(uriResolver.getWorkspaceUri(srcWorkspaceName)); + Element mElem = MergeInfo.createMergeElement(new String[] { wspHref }, !bestEffort, false, doc); if (isShallow) { mElem.appendChild(DomUtil.depthToXml(false, doc)); } MergeInfo mInfo = new MergeInfo(mElem); - MergeMethod method = new MergeMethod(getItemUri(nodeId, sessionInfo), mInfo); + String uri = getItemUri(nodeId, sessionInfo); + MergeMethod method = new MergeMethod(uri, mInfo); execute(method, sessionInfo); MultiStatusResponse[] resps = method.getResponseBodyAsMultiStatus().getResponses(); List failedIds = new ArrayList(resps.length); for (MultiStatusResponse resp : resps) { - String href = resp.getHref(); + String href = resolve(uri, resp.getHref()); failedIds.add(uriResolver.getNodeId(href, sessionInfo)); } return failedIds.iterator(); @@ -2834,7 +2832,20 @@ public class RepositoryServiceImpl imple return uri; } } - + + private static String[] obtainAbsolutePathsFromUris(String[] uris) { + if (uris == null) { + return null; + } else { + String result[] = new String[uris.length]; + + for (int i = 0; i < result.length; i++) { + result[i] = obtainAbsolutePathFromUri(uris[i]); + } + return result; + } + } + /** * The XML elements and attributes used in serialization */