Return-Path: Delivered-To: apmail-incubator-jackrabbit-commits-archive@www.apache.org Received: (qmail 91621 invoked from network); 16 Jul 2005 16:07:37 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 16 Jul 2005 16:07:37 -0000 Received: (qmail 30908 invoked by uid 500); 16 Jul 2005 16:07:36 -0000 Mailing-List: contact jackrabbit-commits-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: jackrabbit-dev@incubator.apache.org Delivered-To: mailing list jackrabbit-commits@incubator.apache.org Received: (qmail 30895 invoked by uid 500); 16 Jul 2005 16:07:36 -0000 Delivered-To: apmail-incubator-jackrabbit-cvs@incubator.apache.org Received: (qmail 30891 invoked by uid 99); 16 Jul 2005 16:07:36 -0000 X-ASF-Spam-Status: No, hits=-9.8 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [209.237.227.194] (HELO minotaur.apache.org) (209.237.227.194) by apache.org (qpsmtpd/0.29) with SMTP; Sat, 16 Jul 2005 09:07:25 -0700 Received: (qmail 91601 invoked by uid 65534); 16 Jul 2005 16:07:23 -0000 Message-ID: <20050716160723.91600.qmail@minotaur.apache.org> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r219336 - /incubator/jackrabbit/trunk/core/src/java/org/apache/jackrabbit/core/version/VersionManagerImpl.java Date: Sat, 16 Jul 2005 16:07:23 -0000 To: jackrabbit-cvs@incubator.apache.org From: tripod@apache.org X-Mailer: svnmailer-1.0.2 X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Author: tripod Date: Sat Jul 16 09:07:18 2005 New Revision: 219336 URL: http://svn.apache.org/viewcvs?rev=219336&view=rev Log: [#JCR-168] Observation events are not triggered for intermediate nodes in version storage Modified: incubator/jackrabbit/trunk/core/src/java/org/apache/jackrabbit/core/version/VersionManagerImpl.java Modified: incubator/jackrabbit/trunk/core/src/java/org/apache/jackrabbit/core/version/VersionManagerImpl.java URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/core/src/java/org/apache/jackrabbit/core/version/VersionManagerImpl.java?rev=219336&r1=219335&r2=219336&view=diff ============================================================================== --- incubator/jackrabbit/trunk/core/src/java/org/apache/jackrabbit/core/version/VersionManagerImpl.java (original) +++ incubator/jackrabbit/trunk/core/src/java/org/apache/jackrabbit/core/version/VersionManagerImpl.java Sat Jul 16 09:07:18 2005 @@ -197,7 +197,14 @@ // generate observation events List events = new ArrayList(); - recursiveAdd(events, (NodeImpl) vh.getParent(), vh); + NodeImpl parent = (NodeImpl) vh.getParent(); + generateAddedEvents(events, parent, vh, true); + // in case the history was created 'deep' also add events for its ancestors + while (!parent.internalGetUUID().equals(historyRoot.getUUID())) { + NodeImpl child = parent; + parent = (NodeImpl) parent.getParent(); + generateAddedEvents(events, parent, child, false); + } obsMgr.dispatch(events, (SessionImpl) session); return vh; @@ -420,7 +427,7 @@ // generate observation events List events = new ArrayList(); - recursiveAdd(events, (NodeImpl) v.getParent(), v); + generateAddedEvents(events, (NodeImpl) v.getParent(), v, true); obsMgr.dispatch(events, session); return v; @@ -526,7 +533,7 @@ SessionImpl session = (SessionImpl) history.getSession(); VersionImpl version = (VersionImpl) ((VersionHistoryImpl) history).getNode(name); List events = new ArrayList(); - recursiveRemove(events, (NodeImpl) history, version); + generateRemovedEvents(events, (NodeImpl) history, version, true); InternalVersionHistoryImpl vh = (InternalVersionHistoryImpl) ((VersionHistoryImpl) history).getInternalVersionHistory(); @@ -633,7 +640,8 @@ * @param node * @throws RepositoryException */ - private void recursiveAdd(List events, NodeImpl parent, NodeImpl node) + private void generateAddedEvents(List events, NodeImpl parent, NodeImpl node, + boolean recursive) throws RepositoryException { events.add(EventState.childNodeAdded( @@ -656,10 +664,12 @@ node.getSession() )); } - NodeIterator niter = node.getNodes(); - while (niter.hasNext()) { - NodeImpl n = (NodeImpl) niter.nextNode(); - recursiveAdd(events, node, n); + if (recursive) { + NodeIterator niter = node.getNodes(); + while (niter.hasNext()) { + NodeImpl n = (NodeImpl) niter.nextNode(); + generateAddedEvents(events, node, n, true); + } } } @@ -671,7 +681,8 @@ * @param node * @throws RepositoryException */ - private void recursiveRemove(List events, NodeImpl parent, NodeImpl node) + private void generateRemovedEvents(List events, NodeImpl parent, + NodeImpl node, boolean recursive) throws RepositoryException { events.add(EventState.childNodeRemoved( @@ -682,10 +693,12 @@ (NodeTypeImpl) parent.getPrimaryNodeType(), node.getSession() )); - NodeIterator niter = node.getNodes(); - while (niter.hasNext()) { - NodeImpl n = (NodeImpl) niter.nextNode(); - recursiveRemove(events, node, n); + if (recursive) { + NodeIterator niter = node.getNodes(); + while (niter.hasNext()) { + NodeImpl n = (NodeImpl) niter.nextNode(); + generateRemovedEvents(events, node, n, true); + } } }