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/11/11 05:48:18 UTC
svn commit: r593845 - in /directory/shared/branches/bigbang/ldap/src:
main/java/org/apache/directory/shared/ldap/ldif/LdifUtils.java
test/java/org/apache/directory/shared/ldap/ldif/LdifUtilsTest.java
Author: akarasulu
Date: Sat Nov 10 20:48:17 2007
New Revision: 593845
URL: http://svn.apache.org/viewvc?rev=593845&view=rev
Log:
changes to reverse LDIF generation ...
o removed the use of request objects in various reverseXXX methods
o fixed tests to accomodate the changes
o fixed what looked like a bug with hardcoding of deleteOldRdn property
in LdifUtils.reverseModifyDN()
Modified:
directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/ldif/LdifUtils.java
directory/shared/branches/bigbang/ldap/src/test/java/org/apache/directory/shared/ldap/ldif/LdifUtilsTest.java
Modified: directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/ldif/LdifUtils.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/ldif/LdifUtils.java?rev=593845&r1=593844&r2=593845&view=diff
==============================================================================
--- directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/ldif/LdifUtils.java (original)
+++ directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/ldif/LdifUtils.java Sat Nov 10 20:48:17 2007
@@ -19,9 +19,12 @@
*/
package org.apache.directory.shared.ldap.ldif;
-import java.io.UnsupportedEncodingException;
-import java.util.ArrayList;
-import java.util.List;
+import org.apache.directory.shared.ldap.message.AttributeImpl;
+import org.apache.directory.shared.ldap.message.ModificationItemImpl;
+import org.apache.directory.shared.ldap.name.LdapDN;
+import org.apache.directory.shared.ldap.name.Rdn;
+import org.apache.directory.shared.ldap.util.Base64;
+import org.apache.directory.shared.ldap.util.StringTools;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
@@ -29,15 +32,9 @@
import javax.naming.directory.Attributes;
import javax.naming.directory.DirContext;
import javax.naming.directory.ModificationItem;
-
-import org.apache.directory.shared.ldap.message.AddRequest;
-import org.apache.directory.shared.ldap.message.AttributeImpl;
-import org.apache.directory.shared.ldap.message.ModificationItemImpl;
-import org.apache.directory.shared.ldap.message.ModifyDnRequest;
-import org.apache.directory.shared.ldap.message.ModifyRequest;
-import org.apache.directory.shared.ldap.name.LdapDN;
-import org.apache.directory.shared.ldap.util.Base64;
-import org.apache.directory.shared.ldap.util.StringTools;
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+import java.util.List;
/**
@@ -136,7 +133,6 @@
/**
* Convert an Attributes as LDIF
* @param attrs the Attributes to convert
- * @param length the expectend line length
* @return the corresponding LDIF code as a String
* @throws NamingException If a naming exception is encountered.
*/
@@ -457,16 +453,15 @@
* Compute a reverse LDIF of an AddRequest. It's simply a delete request
* of the added entry
*
- * @param addRequest The added entry
- * @return A reverse LDIF
+ * @param dn the dn of the added entry
+ * @return a reverse LDIF
* @throws NamingException If something went wrong
*/
- public static Entry reverseAdd( AddRequest addRequest) throws NamingException
+ public static Entry reverseAdd( LdapDN dn ) throws NamingException
{
Entry entry = new Entry();
entry.setChangeType( ChangeType.Delete );
- entry.setDn( addRequest.getEntry().getUpName() );
-
+ entry.setDn( dn.getUpName() );
return entry;
}
@@ -505,36 +500,37 @@
* - a new superior, no deleteOldRdn
* - a new superior, deleteOldRdn set to true
*
- * @param modifyDn The modifyRequest
+ * @param newSuperiorDn the new superior dn if this is a move, otherwise null
+ * @param modifiedDn the dn of the entry being modified
+ * @param newRdn the new rdn to use
+ * @param deleteOldRdn true if deleting old rdn, false if leaving it
* @return A reverse LDIF
* @throws NamingException If something went wrong
*/
- public static Entry reverseModifyDN( ModifyDnRequest modifyDn ) throws NamingException
+ public static Entry reverseModifyDN( LdapDN newSuperiorDn, LdapDN modifiedDn, Rdn newRdn, boolean deleteOldRdn )
+ throws NamingException
{
Entry entry = new Entry();
-
LdapDN newDN = null;
-
- if ( modifyDn.getNewSuperior() != null )
+
+ if ( newSuperiorDn != null )
{
- newDN = modifyDn.getNewSuperior();
- String newSuperior = ( (LdapDN)modifyDn.getName().getPrefix( modifyDn.getName().size() - 1 ) ).getUpName();
+ newDN = newSuperiorDn;
+ String newSuperior = ( ( LdapDN ) modifiedDn.getPrefix( modifiedDn.size() - 1 ) ).getUpName();
String trimmedSuperior = StringTools.trim( newSuperior );
entry.setNewSuperior( trimmedSuperior );
}
else
{
- newDN = (LdapDN)modifyDn.getName().getPrefix( modifyDn.getName().size() - 1 );
+ newDN = ( LdapDN ) modifiedDn.getPrefix( modifiedDn.size() - 1 );
}
- newDN.add( modifyDn.getNewRdn() );
+ newDN.add( newRdn );
entry.setDn( newDN.getUpName() );
entry.setChangeType( ChangeType.ModDn );
- entry.setDeleteOldRdn( true );
-
-
- entry.setNewRdn( modifyDn.getName().getRdn().getUpName() );
+ entry.setDeleteOldRdn( deleteOldRdn );
+ entry.setNewRdn( modifiedDn.getRdn().getUpName() );
return entry;
}
@@ -552,24 +548,26 @@
* the initials modifications {A, B, C}, the reversed modifications will
* be ordered like {C, B, A}), we will change the modifications order.
*
- * @param modifyRequest The modify request
+ * @param dn the dn of the modified entry
+ * @param forwardModifications the modification items for the forward change
* @param modifiedEntry The modified entry. Necessary for the destructive modifications
* @return A reversed LDIF
* @throws NamingException If something went wrong
*/
- public static Entry reverseModify( ModifyRequest modifyRequest, Attributes modifiedEntry ) throws NamingException
+ public static Entry reverseModify( LdapDN dn, List<ModificationItemImpl> forwardModifications,
+ Attributes modifiedEntry ) throws NamingException
{
Entry entry = new Entry();
entry.setChangeType( ChangeType.Modify );
- entry.setDn( modifyRequest.getName().getUpName() );
+ entry.setDn( dn.getUpName() );
// As the reversed modifications should be pushed in reversed order,
// we create a list to temporarily store the modifications.
List<ModificationItemImpl> reverseModifications = new ArrayList<ModificationItemImpl>();
// Loop through all the modifications
- for ( ModificationItem modification:modifyRequest.getModificationItems() )
+ for ( ModificationItem modification : forwardModifications )
{
switch ( modification.getModificationOp() )
{
Modified: directory/shared/branches/bigbang/ldap/src/test/java/org/apache/directory/shared/ldap/ldif/LdifUtilsTest.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/bigbang/ldap/src/test/java/org/apache/directory/shared/ldap/ldif/LdifUtilsTest.java?rev=593845&r1=593844&r2=593845&view=diff
==============================================================================
--- directory/shared/branches/bigbang/ldap/src/test/java/org/apache/directory/shared/ldap/ldif/LdifUtilsTest.java (original)
+++ directory/shared/branches/bigbang/ldap/src/test/java/org/apache/directory/shared/ldap/ldif/LdifUtilsTest.java Sat Nov 10 20:48:17 2007
@@ -19,35 +19,16 @@
*/
package org.apache.directory.shared.ldap.ldif;
-import java.util.List;
-
-import javax.naming.NamingException;
-import javax.naming.directory.Attribute;
-import javax.naming.directory.Attributes;
-import javax.naming.directory.BasicAttribute;
-import javax.naming.directory.BasicAttributes;
-import javax.naming.directory.DirContext;
-import javax.naming.directory.ModificationItem;
-
-import org.apache.directory.shared.ldap.message.AddRequest;
-import org.apache.directory.shared.ldap.message.AddRequestImpl;
-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.directory.shared.ldap.message.ModifyDnRequest;
-import org.apache.directory.shared.ldap.message.ModifyDnRequestImpl;
-import org.apache.directory.shared.ldap.message.ModifyRequest;
-import org.apache.directory.shared.ldap.message.ModifyRequestImpl;
+import org.apache.directory.shared.ldap.message.*;
import org.apache.directory.shared.ldap.name.LdapDN;
import org.apache.directory.shared.ldap.name.Rdn;
+import static org.junit.Assert.*;
import org.junit.Test;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
+import javax.naming.NamingException;
+import javax.naming.directory.*;
+import java.util.Collections;
+import java.util.List;
/**
@@ -379,16 +360,8 @@
@Test
public void testReverseAdd() throws NamingException
{
- AddRequest addRequest = new AddRequestImpl( 1 );
-
LdapDN dn = new LdapDN( "dc=apache, dc=com" );
-
- addRequest.setEntry( dn );
-
- Attributes attributes = new AttributesImpl( "dc", "apache" );
- addRequest.setAttributes( attributes );
-
- Entry reversed = LdifUtils.reverseAdd( addRequest );
+ Entry reversed = LdifUtils.reverseAdd( dn );
assertNotNull( reversed );
assertEquals( dn.getUpName(), reversed.getDn() );
@@ -405,17 +378,8 @@
@Test
public void testReverseAddBase64DN() throws NamingException
{
- AddRequest addRequest = new AddRequestImpl( 1 );
-
LdapDN dn = new LdapDN( "dc=Emmanuel L\u00c9charny" );
-
- addRequest.setEntry( dn );
-
- Attributes attributes = new AttributesImpl( "dc", "test" );
- addRequest.setAttributes( attributes );
-
- Entry reversed = LdifUtils.reverseAdd( addRequest );
-
+ Entry reversed = LdifUtils.reverseAdd( dn );
assertNotNull( reversed );
assertEquals( dn.getUpName(), reversed.getDn() );
assertEquals( ChangeType.Delete, reversed.getChangeType() );
@@ -462,15 +426,8 @@
public void testReverseModifyDNNoDeleteOldRdnNoSuperior() throws NamingException
{
LdapDN dnModified = new LdapDN( "cn=joe, dc=example, dc=com" );
-
- ModifyDnRequest modifyDn = new ModifyDnRequestImpl( 1 );
-
LdapDN dn = new LdapDN( "cn=test, dc=example, dc=com" );
-
- modifyDn.setName( dn );
- modifyDn.setNewRdn( new Rdn( "cn=joe" ) );
-
- Entry reversed = LdifUtils.reverseModifyDN( modifyDn );
+ Entry reversed = LdifUtils.reverseModifyDN( null, dn, new Rdn( "cn=joe" ), true );
assertNotNull( reversed );
assertEquals( dnModified.getUpName(), reversed.getDn() );
@@ -489,16 +446,9 @@
public void testReverseModifyDNDeleteOldRdnNoSuperior() throws NamingException
{
LdapDN dnModified = new LdapDN( "cn=joe, dc=example, dc=com" );
-
- ModifyDnRequest modifyDn = new ModifyDnRequestImpl( 1 );
-
LdapDN dn = new LdapDN( "cn=test, dc=example, dc=com" );
- modifyDn.setName( dn );
- modifyDn.setNewRdn( new Rdn( "cn=joe" ) );
- modifyDn.setDeleteOldRdn( true );
-
- Entry reversed = LdifUtils.reverseModifyDN( modifyDn );
+ Entry reversed = LdifUtils.reverseModifyDN( null, dn, new Rdn( "cn=joe" ), true );
assertNotNull( reversed );
assertEquals( dnModified.getUpName(), reversed.getDn() );
@@ -517,17 +467,9 @@
public void testReverseModifyDNNoDeleteOldRdnSuperior() throws NamingException
{
LdapDN dnModified = new LdapDN( "cn=joe,ou=system" );
-
- ModifyDnRequest modifyDn = new ModifyDnRequestImpl( 1 );
-
LdapDN dn = new LdapDN( "cn=test, dc=example, dc=com" );
- modifyDn.setName( dn );
- modifyDn.setNewRdn( new Rdn( "cn=joe" ) );
- modifyDn.setNewSuperior( new LdapDN( "ou=system" ) );
- modifyDn.setDeleteOldRdn( false );
-
- Entry reversed = LdifUtils.reverseModifyDN( modifyDn );
+ Entry reversed = LdifUtils.reverseModifyDN( new LdapDN( "ou=system" ), dn, new Rdn( "cn=joe" ), true );
assertNotNull( reversed );
assertEquals( dnModified.getUpName(), reversed.getDn() );
@@ -547,17 +489,9 @@
public void testReverseModifyDNDeleteOldRdnSuperior() throws NamingException
{
LdapDN dnModified = new LdapDN( "cn=joe,ou=system" );
-
- ModifyDnRequest modifyDn = new ModifyDnRequestImpl( 1 );
-
LdapDN dn = new LdapDN( "cn=test, dc=example, dc=com" );
- modifyDn.setName( dn );
- modifyDn.setNewRdn( new Rdn( "cn=joe" ) );
- modifyDn.setNewSuperior( new LdapDN( "ou=system" ) );
- modifyDn.setDeleteOldRdn( true );
-
- Entry reversed = LdifUtils.reverseModifyDN( modifyDn );
+ Entry reversed = LdifUtils.reverseModifyDN( new LdapDN( "ou=system" ), dn, new Rdn( "cn=joe" ), true );
assertNotNull( reversed );
assertEquals( dnModified.getUpName(), reversed.getDn() );
@@ -584,17 +518,13 @@
ou.add( "acme corp" );
modifiedEntry.put( ou );
- ModifyRequest modify = new ModifyRequestImpl( 1 );
-
LdapDN dn = new LdapDN( "cn=test, ou=system" );
- ModificationItem mod = new ModificationItemImpl(
+ ModificationItemImpl mod = new ModificationItemImpl(
DirContext.ADD_ATTRIBUTE,
new AttributeImpl( "ou", "BigCompany inc." ) );
- modify.setName( dn );
- modify.addModification( mod );
-
- Entry reversed = LdifUtils.reverseModify( modify, modifiedEntry );
+ Entry reversed = LdifUtils.reverseModify( dn,
+ Collections.<ModificationItemImpl>singletonList( mod ), modifiedEntry );
assertNotNull( reversed );
assertEquals( dn.getUpName(), reversed.getDn() );
@@ -625,17 +555,13 @@
{
Attributes modifiedEntry = buildEntry();
- ModifyRequest modify = new ModifyRequestImpl( 1 );
-
LdapDN dn = new LdapDN( "cn=test, ou=system" );
- ModificationItem mod = new ModificationItemImpl(
+ ModificationItemImpl mod = new ModificationItemImpl(
DirContext.ADD_ATTRIBUTE,
new AttributeImpl( "ou", "BigCompany inc." ) );
- modify.setName( dn );
- modify.addModification( mod );
-
- Entry reversed = LdifUtils.reverseModify( modify, modifiedEntry );
+ Entry reversed = LdifUtils.reverseModify( dn,
+ Collections.<ModificationItemImpl>singletonList( mod ), modifiedEntry );
assertNotNull( reversed );
assertEquals( dn.getUpName(), reversed.getDn() );
@@ -666,17 +592,13 @@
{
Attributes modifiedEntry = buildEntry();
- ModifyRequest modify = new ModifyRequestImpl( 1 );
-
LdapDN dn = new LdapDN( "cn=test, ou=system" );
- ModificationItem mod = new ModificationItemImpl(
+ ModificationItemImpl mod = new ModificationItemImpl(
DirContext.ADD_ATTRIBUTE,
new AttributeImpl( "cn", "test" ) );
- modify.setName( dn );
- modify.addModification( mod );
-
- Entry reversed = LdifUtils.reverseModify( modify, modifiedEntry );
+ Entry reversed = LdifUtils.reverseModify( dn,
+ Collections.<ModificationItemImpl>singletonList( mod ), modifiedEntry );
assertNull( reversed );
}
@@ -695,19 +617,14 @@
ou.add( "acme corp" );
modifiedEntry.put( ou );
- ModifyRequest modify = new ModifyRequestImpl( 1 );
-
LdapDN dn = new LdapDN( "cn=test, ou=system" );
- ModificationItem mod = new ModificationItemImpl(
+ ModificationItemImpl mod = new ModificationItemImpl(
DirContext.REMOVE_ATTRIBUTE,
new AttributeImpl( "ou", "acme corp" ) );
- modify.setName( dn );
- modify.addModification( mod );
-
- Entry reversed = LdifUtils.reverseModify( modify, modifiedEntry );
-
+ Entry reversed = LdifUtils.reverseModify( dn,
+ Collections.<ModificationItemImpl>singletonList( mod ), modifiedEntry );
assertNotNull( reversed );
assertEquals( dn.getUpName(), reversed.getDn() );
@@ -745,18 +662,15 @@
ou.add( "acme corp" );
modifiedEntry.put( ou );
- ModifyRequest modify = new ModifyRequestImpl( 1 );
-
LdapDN dn = new LdapDN( "cn=test, ou=system" );
- ModificationItem mod = new ModificationItemImpl(
+ ModificationItemImpl mod = new ModificationItemImpl(
DirContext.REMOVE_ATTRIBUTE,
new AttributeImpl( "ou" ) );
- modify.setName( dn );
- modify.addModification( mod );
-
- Entry reversed = LdifUtils.reverseModify( modify, modifiedEntry );
+ Entry reversed = LdifUtils.reverseModify( dn,
+ Collections.<ModificationItemImpl>singletonList( mod ), modifiedEntry );
+
assertNotNull( reversed );
assertEquals( dn.getUpName(), reversed.getDn() );
@@ -794,17 +708,14 @@
ou.add( "acme corp" );
modifiedEntry.put( ou );
- ModifyRequest modify = new ModifyRequestImpl( 1 );
-
LdapDN dn = new LdapDN( "cn=test, ou=system" );
- ModificationItem mod = new ModificationItemImpl(
+ ModificationItemImpl mod = new ModificationItemImpl(
DirContext.REMOVE_ATTRIBUTE, ou );
- modify.setName( dn );
- modify.addModification( mod );
-
- Entry reversed = LdifUtils.reverseModify( modify, modifiedEntry );
+ Entry reversed = LdifUtils.reverseModify( dn,
+ Collections.<ModificationItemImpl>singletonList( mod ), modifiedEntry );
+
assertNotNull( reversed );
assertEquals( dn.getUpName(), reversed.getDn() );
@@ -844,19 +755,16 @@
LdapDN dn = new LdapDN( "cn=test, ou=system" );
- ModifyRequest modify = new ModifyRequestImpl( 1 );
-
Attribute ouModified = new AttributeImpl( "ou" );
ouModified.add( "directory" );
ouModified.add( "BigCompany inc." );
- ModificationItem mod = new ModificationItemImpl(
+ ModificationItemImpl mod = new ModificationItemImpl(
DirContext.REPLACE_ATTRIBUTE, ouModified );
- modify.setName( dn );
- modify.addModification( mod );
-
- Entry reversed = LdifUtils.reverseModify( modify, modifiedEntry );
+ Entry reversed = LdifUtils.reverseModify( dn,
+ Collections.<ModificationItemImpl>singletonList( mod ), modifiedEntry );
+
assertNotNull( reversed );
@@ -888,8 +796,6 @@
{
Attributes modifiedEntry = buildEntry();
- ModifyRequest modify = new ModifyRequestImpl( 1 );
-
LdapDN dn = new LdapDN( "cn=test, ou=system" );
Attribute newOu = new AttributeImpl( "ou" );
@@ -897,13 +803,11 @@
newOu.add( "acme corp" );
- ModificationItem mod = new ModificationItemImpl(
+ ModificationItemImpl mod = new ModificationItemImpl(
DirContext.REPLACE_ATTRIBUTE, newOu );
- modify.setName( dn );
- modify.addModification( mod );
-
- Entry reversed = LdifUtils.reverseModify( modify, modifiedEntry );
+ Entry reversed = LdifUtils.reverseModify( dn,
+ Collections.<ModificationItemImpl>singletonList( mod ), modifiedEntry );
assertNotNull( reversed );
assertEquals( dn.getUpName(), reversed.getDn() );
@@ -941,17 +845,13 @@
ou.add( "acme corp" );
modifiedEntry.put( ou );
- ModifyRequest modify = new ModifyRequestImpl( 1 );
-
LdapDN dn = new LdapDN( "cn=test, ou=system" );
- ModificationItem mod = new ModificationItemImpl(
+ ModificationItemImpl mod = new ModificationItemImpl(
DirContext.REPLACE_ATTRIBUTE, new AttributeImpl( "ou" ) );
- modify.setName( dn );
- modify.addModification( mod );
-
- Entry reversed = LdifUtils.reverseModify( modify, modifiedEntry );
+ Entry reversed = LdifUtils.reverseModify( dn,
+ Collections.<ModificationItemImpl>singletonList( mod ), modifiedEntry );
assertNotNull( reversed );
assertEquals( dn.getUpName(), reversed.getDn() );