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/05/10 21:28:17 UTC
svn commit: r942865 -
/directory/apacheds/trunk/xdbm-base/src/main/java/org/apache/directory/server/xdbm/ParentIdAndRdn.java
Author: elecharny
Date: Mon May 10 19:28:17 2010
New Revision: 942865
URL: http://svn.apache.org/viewvc?rev=942865&view=rev
Log:
o Added some javadoc
o Added the toString() method
o Refactored the hashCode(), compareTo() and equals() methods
o The writeExternal and readExternal now call the same methods from RDN, instead of depending on the base java readObject()
Modified:
directory/apacheds/trunk/xdbm-base/src/main/java/org/apache/directory/server/xdbm/ParentIdAndRdn.java
Modified: directory/apacheds/trunk/xdbm-base/src/main/java/org/apache/directory/server/xdbm/ParentIdAndRdn.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/xdbm-base/src/main/java/org/apache/directory/server/xdbm/ParentIdAndRdn.java?rev=942865&r1=942864&r2=942865&view=diff
==============================================================================
--- directory/apacheds/trunk/xdbm-base/src/main/java/org/apache/directory/server/xdbm/ParentIdAndRdn.java (original)
+++ directory/apacheds/trunk/xdbm-base/src/main/java/org/apache/directory/server/xdbm/ParentIdAndRdn.java Mon May 10 19:28:17 2010
@@ -32,14 +32,18 @@ import org.apache.directory.shared.ldap.
/**
* A wrapper for the tuple of parentId and RDN, used for the RDN index.
+ *
+ * If the refered entry is a ContextEntry, we may have more than one RDN stored
*
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
* @version $Rev: 917312 $
*/
public class ParentIdAndRdn<ID extends Comparable<ID>> implements Externalizable, Comparable<ParentIdAndRdn<ID>>
{
-
+ /** The entry ID */
protected ID parentId;
+
+ /** The list of RDN for this instance */
protected RDN[] rdns;
@@ -124,11 +128,11 @@ public class ParentIdAndRdn<ID extends C
@Override
public int hashCode()
{
- final int prime = 31;
- int result = 1;
- result = prime * result + ( ( parentId == null ) ? 0 : parentId.hashCode() );
- result = prime * result + Arrays.hashCode( rdns );
- return result;
+ int h = 37;
+ h = h*17 + ( ( parentId == null ) ? 0 : parentId.hashCode() );
+ h = h*17 + Arrays.hashCode( rdns );
+
+ return h;
}
@@ -136,6 +140,12 @@ public class ParentIdAndRdn<ID extends C
@SuppressWarnings("unchecked")
public boolean equals( Object obj )
{
+ // Shortcut
+ if ( this == obj )
+ {
+ return true;
+ }
+
if ( !( obj instanceof ParentIdAndRdn<?> ) )
{
return false;
@@ -145,9 +155,13 @@ public class ParentIdAndRdn<ID extends C
}
- public int compareTo( ParentIdAndRdn<ID> o )
+ /**
+ * {@inheritDoc}
+ */
+ public int compareTo( ParentIdAndRdn<ID> that )
{
- int val = this.rdns.length - o.rdns.length;
+ int val = this.rdns.length - that.rdns.length;
+
if ( val != 0 )
{
return val;
@@ -155,14 +169,16 @@ public class ParentIdAndRdn<ID extends C
for ( int i = 0; i < this.rdns.length; i++ )
{
- val = this.rdns[i].compareTo( o.rdns[i] );
+ val = this.rdns[i].compareTo( that.rdns[i] );
+
if ( val != 0 )
{
return val;
}
}
- val = this.getParentId().compareTo( o.getParentId() );
+ val = this.getParentId().compareTo( that.getParentId() );
+
return val;
}
@@ -171,9 +187,10 @@ public class ParentIdAndRdn<ID extends C
{
out.writeObject( parentId );
out.writeInt( rdns.length );
+
for ( RDN rdn : rdns )
{
- out.writeObject( rdn );
+ rdn.writeExternal( out );
}
}
@@ -184,9 +201,44 @@ public class ParentIdAndRdn<ID extends C
parentId = ( ID ) in.readObject();
int size = in.readInt();
rdns = new RDN[size];
+
for ( int i = 0; i < size; i++ )
{
- rdns[i] = ( RDN ) in.readObject();
+ RDN rdn = new RDN();
+ rdn.readExternal( in );
+ rdns[i] = rdn;
+ }
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public String toString()
+ {
+ StringBuilder sb = new StringBuilder();
+
+ sb.append( "ParentIdAndRdn<" );
+ sb.append( parentId ).append( "[" );
+
+ boolean isFirst = true;
+
+ for ( RDN rdn : rdns )
+ {
+ if ( isFirst )
+ {
+ isFirst = false;
+ }
+ else
+ {
+ sb.append( "," );
+ }
+
+ sb.append( rdn );
}
+
+ sb.append( "]" );
+
+ return sb.toString();
}
}