From commits-return-3753-apmail-jackrabbit-commits-archive=jackrabbit.apache.org@jackrabbit.apache.org Tue Mar 06 11:58:53 2007 Return-Path: Delivered-To: apmail-jackrabbit-commits-archive@www.apache.org Received: (qmail 80089 invoked from network); 6 Mar 2007 11:58:52 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 6 Mar 2007 11:58:52 -0000 Received: (qmail 13410 invoked by uid 500); 6 Mar 2007 11:59:01 -0000 Delivered-To: apmail-jackrabbit-commits-archive@jackrabbit.apache.org Received: (qmail 13377 invoked by uid 500); 6 Mar 2007 11:59:01 -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 13360 invoked by uid 99); 6 Mar 2007 11:59:01 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 06 Mar 2007 03:59:01 -0800 X-ASF-Spam-Status: No, hits=-99.5 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 06 Mar 2007 03:58:51 -0800 Received: by eris.apache.org (Postfix, from userid 65534) id 7BC2A1A9838; Tue, 6 Mar 2007 03:58:31 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r515089 - /jackrabbit/trunk/contrib/spi/spi2jcr/src/main/java/org/apache/jackrabbit/spi2jcr/RepositoryServiceImpl.java Date: Tue, 06 Mar 2007 11:58:30 -0000 To: commits@jackrabbit.apache.org From: angela@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20070306115831.7BC2A1A9838@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: angela Date: Tue Mar 6 03:58:27 2007 New Revision: 515089 URL: http://svn.apache.org/viewvc?view=rev&rev=515089 Log: implement resolveMergeConflict Modified: jackrabbit/trunk/contrib/spi/spi2jcr/src/main/java/org/apache/jackrabbit/spi2jcr/RepositoryServiceImpl.java Modified: jackrabbit/trunk/contrib/spi/spi2jcr/src/main/java/org/apache/jackrabbit/spi2jcr/RepositoryServiceImpl.java URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/spi2jcr/src/main/java/org/apache/jackrabbit/spi2jcr/RepositoryServiceImpl.java?view=diff&rev=515089&r1=515088&r2=515089 ============================================================================== --- jackrabbit/trunk/contrib/spi/spi2jcr/src/main/java/org/apache/jackrabbit/spi2jcr/RepositoryServiceImpl.java (original) +++ jackrabbit/trunk/contrib/spi/spi2jcr/src/main/java/org/apache/jackrabbit/spi2jcr/RepositoryServiceImpl.java Tue Mar 6 03:58:27 2007 @@ -622,14 +622,51 @@ } /** - * TODO: implement + * {@inheritDoc} */ - public void resolveMergeConflict(SessionInfo sessionInfo, - NodeId nodeId, - NodeId[] mergeFailedIds, - NodeId[] predecessorIds) + public void resolveMergeConflict(final SessionInfo sessionInfo, + final NodeId nodeId, + final NodeId[] mergeFailedIds, + final NodeId[] predecessorIds) throws VersionException, InvalidItemStateException, UnsupportedRepositoryOperationException, RepositoryException { - throw new UnsupportedRepositoryOperationException("not yet implemented"); + final SessionInfoImpl sInfo = getSessionInfoImpl(sessionInfo); + executeWithLocalEvents(new Callable() { + public Object run() throws RepositoryException { + Node node = getNode(nodeId, sInfo); + Version version = null; + boolean cancel; + try { + List l = Arrays.asList(mergeFailedIds); + Property mergeFailed = node.getProperty(NameFormat.format(QName.JCR_MERGEFAILED, sInfo.getNamespaceResolver())); + Value[] values = mergeFailed.getValues(); + for (int i = 0; i < values.length; i++) { + String uuid = values[i].getString(); + if (!l.contains(idFactory.createNodeId(uuid))) { + version = (Version) sInfo.getSession().getNodeByUUID(uuid); + break; + } + } + + l = new ArrayList(predecessorIds.length); + l.addAll(Arrays.asList(predecessorIds)); + Property predecessors = node.getProperty(NameFormat.format(QName.JCR_PREDECESSORS, sInfo.getNamespaceResolver())); + values = predecessors.getValues(); + for (int i = 0; i < values.length; i++) { + NodeId vId = idFactory.createNodeId(values[i].getString()); + l.remove(vId); + } + cancel = l.isEmpty(); + } catch (NoPrefixDeclaredException e) { + throw new RepositoryException (e); + } + if (cancel) { + node.cancelMerge(version); + } else { + node.doneMerge(version); + } + return null; + } + }, sInfo); } /**