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 2007/08/18 07:32:57 UTC
svn commit: r567238 -
/directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/operational/OperationalAttributeService.java
Author: akarasulu
Date: Fri Aug 17 22:32:56 2007
New Revision: 567238
URL: http://svn.apache.org/viewvc?view=rev&rev=567238
Log:
Fix for DIRSERVER-840: Double modification on a modify ?
Modified:
directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/operational/OperationalAttributeService.java
Modified: directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/operational/OperationalAttributeService.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/operational/OperationalAttributeService.java?view=diff&rev=567238&r1=567237&r2=567238
==============================================================================
--- directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/operational/OperationalAttributeService.java (original)
+++ directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/operational/OperationalAttributeService.java Fri Aug 17 22:32:56 2007
@@ -20,6 +20,8 @@
package org.apache.directory.server.core.operational;
+import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
@@ -171,27 +173,34 @@
public void modify( NextInterceptor nextInterceptor, OperationContext opContext )
throws NamingException
{
- nextInterceptor.modify( opContext );
-
- if ( opContext.getDn().getNormName().equals( subschemaSubentryDn.getNormName() ) )
- {
- return;
- }
+ // -------------------------------------------------------------------
+ // Add the operational attributes for the modifier first
+ // -------------------------------------------------------------------
+
+ ModifyOperationContext context = ( ModifyOperationContext ) opContext;
+ List<ModificationItemImpl> modItemList =
+ new ArrayList<ModificationItemImpl>( context.getModItems().length + 2 );
+ Collections.addAll( modItemList, context.getModItems() );
- // add operational attributes after call in case the operation fails
- Attributes attributes = new AttributesImpl( true );
Attribute attribute = new AttributeImpl( SchemaConstants.MODIFIERS_NAME_AT );
attribute.add( getPrincipal().getName() );
- attributes.put( attribute );
-
+ modItemList.add( new ModificationItemImpl( DirContext.REPLACE_ATTRIBUTE, attribute ) );
+
attribute = new AttributeImpl( SchemaConstants.MODIFY_TIMESTAMP_AT );
attribute.add( DateUtils.getGeneralizedTime() );
- attributes.put( attribute );
-
- ModificationItemImpl[] items = ModifyOperationContext.createModItems( attributes, DirContext.REPLACE_ATTRIBUTE );
+ modItemList.add( new ModificationItemImpl( DirContext.REPLACE_ATTRIBUTE, attribute ) );
+
+ // -------------------------------------------------------------------
+ // Make the modify() call happen
+ // -------------------------------------------------------------------
+
+ nextInterceptor.modify( opContext );
- ModifyOperationContext newModify = new ModifyOperationContext( opContext.getDn(), items );
- nexus.modify( newModify );
+ // Don't know why this was here! TODO Remove if no errors result
+// if ( opContext.getDn().getNormName().equals( subschemaSubentryDn.getNormName() ) )
+// {
+// return;
+// }
}