You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ma...@apache.org on 2007/07/22 18:07:04 UTC
svn commit: r558501 - in /directory/apacheds/trunk/mitosis/src:
main/java/org/apache/directory/mitosis/common/
main/java/org/apache/directory/mitosis/operation/
main/java/org/apache/directory/mitosis/service/
test/java/org/apache/directory/mitosis/serv...
Author: malderson
Date: Sun Jul 22 09:07:03 2007
New Revision: 558501
URL: http://svn.apache.org/viewvc?view=rev&rev=558501
Log:
Fix for DIRSERVER-1003 - Modifying an entry gives syntax error for 'entryDeleted' attribute.
Modified:
directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/common/Constants.java
directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/operation/OperationFactory.java
directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/ReplicationLogCleanJob.java
directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/ReplicationService.java
directory/apacheds/trunk/mitosis/src/test/java/org/apache/directory/mitosis/service/ReplicationServiceITest.java
Modified: directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/common/Constants.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/common/Constants.java?view=diff&rev=558501&r1=558500&r2=558501
==============================================================================
--- directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/common/Constants.java (original)
+++ directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/common/Constants.java Sun Jul 22 09:07:03 2007
@@ -57,7 +57,7 @@
/**
* A {@link SearchResultFilter} that filters out the entries whose
- * {@link #ENTRY_DELETED} attribute is <tt>true</tt>.
+ * {@link #ENTRY_DELETED} attribute is <tt>TRUE</tt>.
*/
public static final SearchResultFilter DELETED_ENTRIES_FILTER = new SearchResultFilter()
{
@@ -67,7 +67,7 @@
Attributes entry = result.getAttributes();
Attribute deleted = entry.get( ENTRY_DELETED );
Object value = deleted == null ? null : deleted.get();
- return ( value == null || !"true".equalsIgnoreCase( value.toString() ) );
+ return ( value == null || !"TRUE".equalsIgnoreCase( value.toString() ) );
}
};
Modified: directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/operation/OperationFactory.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/operation/OperationFactory.java?view=diff&rev=558501&r1=558500&r2=558501
==============================================================================
--- directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/operation/OperationFactory.java (original)
+++ directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/operation/OperationFactory.java Sun Jul 22 09:07:03 2007
@@ -122,7 +122,7 @@
entry.remove( Constants.ENTRY_UUID );
entry.remove( Constants.ENTRY_DELETED );
entry.put( Constants.ENTRY_UUID, uuidFactory.newInstance().toOctetString() );
- entry.put( Constants.ENTRY_DELETED, "false" );
+ entry.put( Constants.ENTRY_DELETED, "FALSE" );
// NOTE: We inlined addDefaultOperations() because ApacheDS currently
// creates an index entry only for ADD operation (and not for
@@ -136,7 +136,7 @@
/**
* Creates a new {@link Operation} that performs "delete" operation.
* The created {@link Operation} doesn't actually delete the entry.
- * Instead, it sets {@link Constants#ENTRY_DELETED} to "true".
+ * Instead, it sets {@link Constants#ENTRY_DELETED} to "TRUE".
*/
public Operation newDelete( LdapDN normalizedName )
{
@@ -145,7 +145,7 @@
// Transform into replace operation.
result.add( new ReplaceAttributeOperation( csn, normalizedName, new AttributeImpl( Constants.ENTRY_DELETED,
- "true" ) ) );
+ "TRUE" ) ) );
return addDefaultOperations( result, csn, normalizedName );
}
@@ -156,7 +156,7 @@
*
* @return a {@link CompositeOperation} that consists of one or more
* {@link AttributeOperation}s and one additional operation that
- * sets {@link Constants#ENTRY_DELETED} to "false" to resurrect the
+ * sets {@link Constants#ENTRY_DELETED} to "FALSE" to resurrect the
* entry the modified attributes belong to.
*/
public Operation newModify( OperationContext opContext )
@@ -177,7 +177,7 @@
// Resurrect the entry in case it is deleted.
result.add( new ReplaceAttributeOperation( csn, normalizedName, new AttributeImpl( Constants.ENTRY_DELETED,
- "false" ) ) );
+ "FALSE" ) ) );
return addDefaultOperations( result, csn, normalizedName );
}
@@ -267,7 +267,7 @@
// Delete the old entry
result.add( new ReplaceAttributeOperation( csn, oldEntryName, new AttributeImpl( Constants.ENTRY_DELETED,
- "true" ) ) );
+ "TRUE" ) ) );
// Get the old entry attributes and replace RDN if required
Attributes entry = sr.getAttributes();
@@ -316,7 +316,7 @@
* throwing an exception and delete the entry if so and return
* without throwing an exception.
*/
- if ( value != null && "true".equalsIgnoreCase( value.toString() ) )
+ if ( value != null && "TRUE".equalsIgnoreCase( value.toString() ) )
{
return;
}
Modified: directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/ReplicationLogCleanJob.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/ReplicationLogCleanJob.java?view=diff&rev=558501&r1=558500&r2=558501
==============================================================================
--- directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/ReplicationLogCleanJob.java (original)
+++ directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/ReplicationLogCleanJob.java Sun Jul 22 09:07:03 2007
@@ -34,7 +34,7 @@
/**
* A <a href="http://www.opensymphony.com/quartz/">OpenSymphony Quartz</a>
* {@link Job} that purges old replication logs and the old entries marked as
- * 'deleted' (i.e. {@link Constants#ENTRY_DELETED} is <tt>true</tt>). This
+ * 'deleted' (i.e. {@link Constants#ENTRY_DELETED} is <tt>TRUE</tt>). This
* {@link Job} just calls {@link ReplicationService#purgeAgedData()} to
* purge old data.
*
Modified: directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/ReplicationService.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/ReplicationService.java?view=diff&rev=558501&r1=558500&r2=558501
==============================================================================
--- directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/ReplicationService.java (original)
+++ directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/service/ReplicationService.java Sun Jul 22 09:07:03 2007
@@ -122,7 +122,7 @@
* valid. If the local <tt>entryCSN</tt> value is bigger then that of the
* incoming operation, it means conflict, and therefore an appropriate
* conflict resolution mechanism should get engaged.</li>
- * <li><tt>entryDeleted</tt> - is <tt>true</tt> if and only if the entry is
+ * <li><tt>entryDeleted</tt> - is <tt>TRUE</tt> if and only if the entry is
* deleted. The entry is not deleted immediately by a delete operation
* because <tt>entryCSN</tt> attribute should be retained for certain
* amount of time to determine whether the incoming change log, which
@@ -134,7 +134,7 @@
* by calling {@link ReplicationConfiguration#setLogMaxAge(int)}.
* Because of this attribute, <tt>lookup</tt> and <tt>search</tt>
* operations are overrided to ignore entries with <tt>entryDeleted</tt>
- * set to <tt>true</tt>.</li>
+ * set to <tt>TRUE</tt>.</li>
* </ul>
*
* @author The Apache Directory Project (dev@directory.apache.org)
@@ -277,7 +277,7 @@
/**
* Purges old replication logs and the old entries marked as 'deleted'
- * (i.e. {@link Constants#ENTRY_DELETED} is <tt>true</tt>). This method
+ * (i.e. {@link Constants#ENTRY_DELETED} is <tt>TRUE</tt>). This method
* should be called periodically to make sure the size of the DIT and
* {@link ReplicationStore} increase limitlessly.
*
@@ -302,7 +302,7 @@
try
{
filter = parser.parse( "(& (" + ENTRY_CSN_OID + "=<" + purgeCSN.toOctetString() + ") (" + ENTRY_DELETED_OID
- + "=true))" );
+ + "=TRUE))" );
}
catch ( IOException e )
{
@@ -549,6 +549,6 @@
}
Attribute deleted = entry.get( Constants.ENTRY_DELETED );
- return ( deleted != null && "true".equalsIgnoreCase( deleted.get().toString() ) );
+ return ( deleted != null && "TRUE".equalsIgnoreCase( deleted.get().toString() ) );
}
}
Modified: directory/apacheds/trunk/mitosis/src/test/java/org/apache/directory/mitosis/service/ReplicationServiceITest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/mitosis/src/test/java/org/apache/directory/mitosis/service/ReplicationServiceITest.java?view=diff&rev=558501&r1=558500&r2=558501
==============================================================================
--- directory/apacheds/trunk/mitosis/src/test/java/org/apache/directory/mitosis/service/ReplicationServiceITest.java (original)
+++ directory/apacheds/trunk/mitosis/src/test/java/org/apache/directory/mitosis/service/ReplicationServiceITest.java Sun Jul 22 09:07:03 2007
@@ -33,6 +33,8 @@
import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
+import javax.naming.directory.DirContext;
+import javax.naming.directory.ModificationItem;
import javax.naming.ldap.InitialLdapContext;
import javax.naming.ldap.LdapContext;
@@ -50,7 +52,9 @@
import org.apache.directory.server.core.configuration.ShutdownConfiguration;
import org.apache.directory.server.core.jndi.CoreContextFactory;
import org.apache.directory.shared.ldap.exception.LdapNameNotFoundException;
+import org.apache.directory.shared.ldap.message.AttributeImpl;
import org.apache.directory.shared.ldap.message.AttributesImpl;
+import org.apache.directory.shared.ldap.message.ModificationItemImpl;
import org.apache.mina.util.AvailablePortFinder;
/**
@@ -78,6 +82,7 @@
{
String dn = "cn=test,ou=system";
testOneWayBind( dn );
+ testOneWayModify( dn );
testOneWayUnbind( dn );
}
@@ -143,6 +148,25 @@
Assert.assertNotNull( ctxA.lookup( dn ) );
Assert.assertNotNull( ctxB.lookup( dn ) );
Assert.assertNotNull( ctxC.lookup( dn ) );
+ }
+
+ private void testOneWayModify( String dn ) throws Exception
+ {
+ LdapContext ctxA = getReplicaContext( "A" );
+ LdapContext ctxB = getReplicaContext( "B" );
+ LdapContext ctxC = getReplicaContext( "C" );
+
+ String newValue = "anything";
+
+ ctxA.modifyAttributes( dn, new ModificationItem[] {
+ new ModificationItemImpl( DirContext.REPLACE_ATTRIBUTE, new AttributeImpl( "ou", newValue ))} );
+
+ replicationServices.get( "A" ).replicate();
+
+ Thread.sleep( 5000 );
+
+ Assert.assertEquals( newValue, getAttributeValue( ctxB, dn, "ou" ) );
+ Assert.assertEquals( newValue, getAttributeValue( ctxC, dn, "ou" ) );
}
private void testOneWayUnbind( String dn ) throws Exception