You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ak...@apache.org on 2008/08/07 07:43:15 UTC
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
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()
*/