Return-Path: Delivered-To: apmail-directory-commits-archive@www.apache.org Received: (qmail 17067 invoked from network); 7 Aug 2008 05:43:36 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 7 Aug 2008 05:43:36 -0000 Received: (qmail 96680 invoked by uid 500); 7 Aug 2008 05:43:36 -0000 Delivered-To: apmail-directory-commits-archive@directory.apache.org Received: (qmail 96644 invoked by uid 500); 7 Aug 2008 05:43:35 -0000 Mailing-List: contact commits-help@directory.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@directory.apache.org Delivered-To: mailing list commits@directory.apache.org Received: (qmail 96635 invoked by uid 99); 7 Aug 2008 05:43:35 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 06 Aug 2008 22:43:35 -0700 X-ASF-Spam-Status: No, hits=-2000.0 required=10.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; Thu, 07 Aug 2008 05:42:48 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id D7DD623889A0; Wed, 6 Aug 2008 22:43:15 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r683513 - in /directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core: event/EventInterceptor.java interceptor/context/MoveAndRenameOperationContext.java interceptor/context/RenameOperationContext.java Date: Thu, 07 Aug 2008 05:43:15 -0000 To: commits@directory.apache.org From: akarasulu@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20080807054315.D7DD623889A0@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: akarasulu Date: Wed Aug 6 22:43:14 2008 New Revision: 683513 URL: http://svn.apache.org/viewvc?rev=683513&view=rev Log: added cached newDn which is computed when needed and reused in rename based ops; added altered entry in event interceptor to rename based opContexts to be used in change notifications Modified: directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/event/EventInterceptor.java directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/interceptor/context/MoveAndRenameOperationContext.java directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/interceptor/context/RenameOperationContext.java Modified: directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/event/EventInterceptor.java URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/event/EventInterceptor.java?rev=683513&r1=683512&r2=683513&view=diff ============================================================================== --- directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/event/EventInterceptor.java (original) +++ directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/event/EventInterceptor.java Wed Aug 6 22:43:14 2008 @@ -220,6 +220,8 @@ return; } + opContext.setAlteredEntry( opContext.lookup( opContext.getNewDn(), ByPassConstants.LOOKUP_BYPASS ) ); + for ( final RegistrationEntry registration : selecting ) { if ( EventType.isRename( registration.getCriteria().getEventMask() ) ) @@ -241,6 +243,8 @@ return; } + opContext.setAlteredEntry( opContext.lookup( opContext.getNewDn(), ByPassConstants.LOOKUP_BYPASS ) ); + for ( final RegistrationEntry registration : selecting ) { if ( EventType.isMoveAndRename( registration.getCriteria().getEventMask() ) ) Modified: directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/interceptor/context/MoveAndRenameOperationContext.java URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/interceptor/context/MoveAndRenameOperationContext.java?rev=683513&r1=683512&r2=683513&view=diff ============================================================================== --- directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/interceptor/context/MoveAndRenameOperationContext.java (original) +++ directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/interceptor/context/MoveAndRenameOperationContext.java Wed Aug 6 22:43:14 2008 @@ -38,6 +38,8 @@ /** The parent DN */ private LdapDN parent; + /** Cached calculated new DN after move and rename */ + private LdapDN newDn; /** * Creates a new instance of MoveAndRenameOperationContext. @@ -95,6 +97,26 @@ this.parent = parent; } + + /** + * Gets cached copy of already computed new name or creates it if not + * + * @return the normalized new name after move and rename + * @throws Exception if the name cannot be normalized + */ + public LdapDN getNewDn() throws Exception + { + if ( newDn == null ) + { + newDn = new LdapDN( getParent().getUpName() ); + newDn.add( getNewRdn().getUpName() ); + newDn.normalize( session.getDirectoryService() + .getRegistries().getAttributeTypeRegistry().getNormalizerMapping() ); + } + + return newDn; + } + /** * @see Object#toString() Modified: directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/interceptor/context/RenameOperationContext.java URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/interceptor/context/RenameOperationContext.java?rev=683513&r1=683512&r2=683513&view=diff ============================================================================== --- directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/interceptor/context/RenameOperationContext.java (original) +++ directory/apacheds/branches/bigbang/core/src/main/java/org/apache/directory/server/core/interceptor/context/RenameOperationContext.java Wed Aug 6 22:43:14 2008 @@ -39,9 +39,12 @@ */ public class RenameOperationContext extends AbstractChangeOperationContext { - /** The new DN */ + /** The new RDN */ private Rdn newRdn; + /** Cached copy of the new DN */ + private LdapDN newDn; + /** The flag to remove the old DN Attribute */ private boolean delOldDn; @@ -108,6 +111,24 @@ /** + * @return The new DN either computed if null or already computed + */ + public LdapDN getNewDn() throws Exception + { + if ( newDn == null ) + { + newDn = new LdapDN( getDn().getUpName() ); + newDn.remove( newDn.size() - 1 ); + newDn.add( newRdn.getUpName() ); + newDn.normalize( session.getDirectoryService().getRegistries() + .getAttributeTypeRegistry().getNormalizerMapping() ); + } + + return newDn; + } + + + /** * @return The new RDN */ public Rdn getNewRdn() @@ -147,6 +168,12 @@ } + public void setAlteredEntry( ClonedServerEntry alteredEntry ) + { + this.alteredEntry = alteredEntry; + } + + /** * @see Object#toString() */