You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2010/07/30 22:59:43 UTC
svn commit: r980961 - in /directory/apacheds/trunk:
protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/
server-integ/src/test/java/org/apache/directory/server/operations/extended/
xdbm-partition/src/main/java/org/apache/directory/ser...
Author: elecharny
Date: Fri Jul 30 20:59:42 2010
New Revision: 980961
URL: http://svn.apache.org/viewvc?rev=980961&view=rev
Log:
o Merged the modifications made by Kiran in the dnFactoryExperient branch.
o DN is now immutable.
o We have a DN cache too.
Modified:
directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/SearchHandler.java
directory/apacheds/trunk/server-integ/src/test/java/org/apache/directory/server/operations/extended/DITUtilitiesSP.java
directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/AbstractStore.java
directory/apacheds/trunk/xdbm-partition/src/test/java/org/apache/directory/server/xdbm/impl/avl/AvlStoreTest.java
Modified: directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/SearchHandler.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/SearchHandler.java?rev=980961&r1=980960&r2=980961&view=diff
==============================================================================
--- directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/SearchHandler.java (original)
+++ directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/handlers/SearchHandler.java Fri Jul 30 20:59:42 2010
@@ -1416,10 +1416,11 @@ public class SearchHandler extends LdapR
DN reqUnnormalizedDn = new DN( req.getBase().getName() );
for ( int jj = 0; jj < diff; jj++ )
{
- extra.add( reqUnnormalizedDn.get( referralAncestor.getDn().size() + jj ) );
+ extra = extra.add( reqUnnormalizedDn.get( referralAncestor.getDn().size() + jj ) );
}
- ldapUrl.getDn().addAll( extra );
+ urlDn = urlDn.addAll( extra );
+ ldapUrl.setDn( urlDn );
ldapUrl.setForceScopeRendering( true );
ldapUrl.setAttributes( req.getAttributes() );
ldapUrl.setScope( req.getScope().getScope() );
@@ -1503,10 +1504,10 @@ public class SearchHandler extends LdapR
DN reqUnnormalizedDn = new DN( reqTargetDn.getName() );
for ( int jj = 0; jj < diff; jj++ )
{
- extra.add( reqUnnormalizedDn.get( referralAncestor.getDn().size() + jj ) );
+ extra = extra.add( reqUnnormalizedDn.get( referralAncestor.getDn().size() + jj ) );
}
- urlDn.addAll( extra );
+ urlDn = urlDn.addAll( extra );
StringBuilder buf = new StringBuilder();
buf.append( ldapUrl.getScheme() );
@@ -1604,11 +1605,11 @@ public class SearchHandler extends LdapR
{
Entry entry;
Entry farthestReferralAncestor = null;
- DN dn = ( DN ) target.clone();
+ DN dn = target;
try
{
- dn.remove( dn.size() - 1 );
+ dn = dn.remove( dn.size() - 1 );
}
catch ( LdapInvalidDnException e2 )
{
@@ -1630,7 +1631,7 @@ public class SearchHandler extends LdapR
farthestReferralAncestor = entry;
}
- dn.remove( dn.size() - 1 );
+ dn = dn.remove( dn.size() - 1 );
}
catch ( LdapException e )
{
@@ -1639,7 +1640,7 @@ public class SearchHandler extends LdapR
// update the DN as we strip last component
try
{
- dn.remove( dn.size() - 1 );
+ dn = dn.remove( dn.size() - 1 );
}
catch ( LdapInvalidDnException e1 )
{
Modified: directory/apacheds/trunk/server-integ/src/test/java/org/apache/directory/server/operations/extended/DITUtilitiesSP.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/server-integ/src/test/java/org/apache/directory/server/operations/extended/DITUtilitiesSP.java?rev=980961&r1=980960&r2=980961&view=diff
==============================================================================
--- directory/apacheds/trunk/server-integ/src/test/java/org/apache/directory/server/operations/extended/DITUtilitiesSP.java (original)
+++ directory/apacheds/trunk/server-integ/src/test/java/org/apache/directory/server/operations/extended/DITUtilitiesSP.java Fri Jul 30 20:59:42 2010
@@ -56,7 +56,7 @@ public class DITUtilitiesSP
{
ClonedServerEntry result = results.get();
DN childRdn = result.getDn();
- childRdn.remove( 0 );
+ childRdn = childRdn.remove( 0 );
deleteSubtree( session, childRdn );
}
Modified: directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/AbstractStore.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/AbstractStore.java?rev=980961&r1=980960&r2=980961&view=diff
==============================================================================
--- directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/AbstractStore.java (original)
+++ directory/apacheds/trunk/xdbm-partition/src/main/java/org/apache/directory/server/xdbm/AbstractStore.java Fri Jul 30 20:59:42 2010
@@ -53,6 +53,7 @@ import org.apache.directory.shared.ldap.
import org.apache.directory.shared.ldap.schema.AttributeType;
import org.apache.directory.shared.ldap.schema.MatchingRule;
import org.apache.directory.shared.ldap.schema.SchemaManager;
+import org.apache.directory.shared.ldap.util.StringTools;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -1290,7 +1291,7 @@ public abstract class AbstractStore<E, I
throw nse;
}
- DN newDn = ((DN)newSuperiorDn.clone()).add( newRdn );
+ DN newDn = newSuperiorDn.add( newRdn );
// Now check that the new entry does not exist
ID newId = getEntryId( newDn );
@@ -1427,10 +1428,12 @@ public abstract class AbstractStore<E, I
*/
protected DN buildEntryDn( ID id ) throws Exception
{
- DN dn = new DN();
-
ID parentId = id;
+ List<RDN> rdnList = new ArrayList<RDN>();
+ String upName = "";
+ String normName = "";
+
do
{
ParentIdAndRdn<ID> cur = rdnIdx.reverseLookup( parentId );
@@ -1438,13 +1441,26 @@ public abstract class AbstractStore<E, I
for ( RDN rdn : rdns )
{
- dn.addNormalizedInOrder( rdn );
+ if ( rdnList.isEmpty() )
+ {
+ normName = rdn.getNormName();
+ upName = rdn.getName();
+ }
+ else
+ {
+ normName = normName + "," + rdn.getNormName();
+ upName = upName + "," + rdn.getName();
+ }
+
+ rdnList.add( rdn );
}
parentId = cur.getParentId();
}
while ( !parentId.equals( getRootId() ) );
+ DN dn = new DN( upName, normName, StringTools.getBytesUtf8( normName ), rdnList );
+
return dn;
}
@@ -1819,13 +1835,13 @@ public abstract class AbstractStore<E, I
* index. If the target is not a sibling of the alias then we add the
* index entry maping the parent's id to the aliased target id.
*/
- ancestorDn = ( DN ) aliasDn.clone();
- ancestorDn.remove( aliasDn.size() - 1 );
+ ancestorDn = aliasDn;
+ ancestorDn = ancestorDn.remove( aliasDn.size() - 1 );
ancestorId = getEntryId( ancestorDn );
// check if alias parent and aliased entry are the same
- DN normalizedAliasTargetParentDn = ( DN ) normalizedAliasTargetDn.clone();
- normalizedAliasTargetParentDn.remove( normalizedAliasTargetDn.size() - 1 );
+ DN normalizedAliasTargetParentDn = normalizedAliasTargetDn;
+ normalizedAliasTargetParentDn = normalizedAliasTargetParentDn.remove( normalizedAliasTargetDn.size() - 1 );
if ( !aliasDn.isChildOf( normalizedAliasTargetParentDn ) )
{
@@ -1849,7 +1865,7 @@ public abstract class AbstractStore<E, I
subAliasIdx.add( ancestorId, targetId );
}
- ancestorDn.remove( ancestorDn.size() - 1 );
+ ancestorDn = ancestorDn.remove( ancestorDn.size() - 1 );
ancestorId = getEntryId( ancestorDn );
}
}
@@ -1878,8 +1894,8 @@ public abstract class AbstractStore<E, I
DN aliasDN = getEntryDn( aliasId );
- DN ancestorDn = ( DN ) aliasDN.clone();
- ancestorDn.remove( aliasDN.size() - 1 );
+ DN ancestorDn = aliasDN;
+ ancestorDn = ancestorDn.remove( aliasDN.size() - 1 );
ID ancestorId = getEntryId( ancestorDn );
/*
Modified: directory/apacheds/trunk/xdbm-partition/src/test/java/org/apache/directory/server/xdbm/impl/avl/AvlStoreTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/xdbm-partition/src/test/java/org/apache/directory/server/xdbm/impl/avl/AvlStoreTest.java?rev=980961&r1=980960&r2=980961&view=diff
==============================================================================
--- directory/apacheds/trunk/xdbm-partition/src/test/java/org/apache/directory/server/xdbm/impl/avl/AvlStoreTest.java (original)
+++ directory/apacheds/trunk/xdbm-partition/src/test/java/org/apache/directory/server/xdbm/impl/avl/AvlStoreTest.java Fri Jul 30 20:59:42 2010
@@ -503,7 +503,7 @@ public class AvlStoreTest
DN newParentDn = new DN( "ou=Board of Directors,o=Good Times Co.", schemaManager );
- DN newDn = ((DN)newParentDn.clone()).add( martinDn.getRdn() );
+ DN newDn = newParentDn.add( martinDn.getRdn() );
store.move( martinDn, newParentDn, newDn, new ClonedServerEntry( entry ) );
cursor = idx.forwardCursor( 3L );
@@ -530,7 +530,7 @@ public class AvlStoreTest
entry.add( "entryUUID", UUID.randomUUID().toString() );
store.add( entry );
- newDn = ((DN)newParentDn.clone()).add( marketingDn.getRdn() );
+ newDn = newParentDn.add( marketingDn.getRdn() );
store.move( marketingDn, newParentDn, newDn, new ClonedServerEntry( entry ) );
cursor = idx.forwardCursor( 3L );
@@ -685,7 +685,7 @@ public class AvlStoreTest
assertEquals( 3, store.getSubAliasIndex().count() );
- DN newDn = ((DN)parentDn.clone()).add( childDn.getRdn() );
+ DN newDn = parentDn.add( childDn.getRdn() );
store.move( childDn, parentDn, newDn, childEntry );
assertEquals( 4, store.getSubAliasIndex().count() );