Return-Path: Delivered-To: apmail-jackrabbit-commits-archive@www.apache.org Received: (qmail 41480 invoked from network); 10 Apr 2006 17:53:56 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 10 Apr 2006 17:53:56 -0000 Received: (qmail 2406 invoked by uid 500); 10 Apr 2006 17:53:56 -0000 Delivered-To: apmail-jackrabbit-commits-archive@jackrabbit.apache.org Received: (qmail 2317 invoked by uid 500); 10 Apr 2006 17:53:55 -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 2306 invoked by uid 99); 10 Apr 2006 17:53:55 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 10 Apr 2006 10:53:55 -0700 X-ASF-Spam-Status: No, hits=-9.4 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; Mon, 10 Apr 2006 10:53:54 -0700 Received: (qmail 41381 invoked by uid 65534); 10 Apr 2006 17:53:33 -0000 Message-ID: <20060410175333.41378.qmail@minotaur.apache.org> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r393000 - /jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/NodeStateEx.java Date: Mon, 10 Apr 2006 17:53:30 -0000 To: commits@jackrabbit.apache.org From: tripod@apache.org X-Mailer: svnmailer-1.0.7 X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Author: tripod Date: Mon Apr 10 10:53:26 2006 New Revision: 393000 URL: http://svn.apache.org/viewcvs?rev=393000&view=rev Log: [JCR-374] Missing 'node removed' event when removing a version Modified: jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/NodeStateEx.java Modified: jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/NodeStateEx.java URL: http://svn.apache.org/viewcvs/jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/NodeStateEx.java?rev=393000&r1=392999&r2=393000&view=diff ============================================================================== --- jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/NodeStateEx.java (original) +++ jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/version/NodeStateEx.java Mon Apr 10 10:53:26 2006 @@ -294,8 +294,6 @@ } } - - /** * checks if the given child node exists. * @@ -331,8 +329,7 @@ if (entry == null) { return false; } else { - ItemState state = stateMgr.getItemState(entry.getId()); - stateMgr.destroy(state); + removeNode(entry.getId()); nodeState.removeChildNodeEntry(name, index); nodeState.setStatus(ItemState.STATUS_EXISTING_MODIFIED); return true; @@ -340,6 +337,37 @@ } catch (ItemStateException e) { throw new RepositoryException(e); } + } + + /** + * removes recursively the node with the given id + * + * @param id + * @throws ItemStateException + */ + private void removeNode(NodeId id) throws ItemStateException { + NodeState state = (NodeState) stateMgr.getItemState(id); + + // remove properties + Iterator iter = state.getPropertyNames().iterator(); + while (iter.hasNext()) { + QName name = (QName) iter.next(); + PropertyId propId = new PropertyId(id, name); + PropertyState propState = (PropertyState) stateMgr.getItemState(propId); + stateMgr.destroy(propState); + } + state.removeAllPropertyNames(); + + // remove child nodes + iter = state.getChildNodeEntries().iterator(); + while (iter.hasNext()) { + NodeState.ChildNodeEntry entry = (NodeState.ChildNodeEntry) iter.next(); + removeNode(entry.getId()); + } + state.removeAllChildNodeEntries(); + + // destroy the state itself + stateMgr.destroy(state); } /**