FileDocCategorySizeDatePackage
InternalBindingKey.javaAPI DocJava SE 5 API2258Fri Aug 26 14:54:26 BST 2005com.sun.corba.se.impl.naming.cosnaming

InternalBindingKey

public class InternalBindingKey extends Object
Class InternalBindingKey implements the necessary wrapper code around the org.omg.CosNaming::NameComponent class to implement the proper equals() method and the hashCode() method for use in a hash table. It computes the hashCode once and stores it, and also precomputes the lengths of the id and kind strings for faster comparison.

Fields Summary
public org.omg.CosNaming.NameComponent
name
private int
idLen
private int
kindLen
private int
hashVal
Constructors Summary
public InternalBindingKey()

public InternalBindingKey(org.omg.CosNaming.NameComponent n)

        idLen = 0;
        kindLen = 0;
	setup(n);
    
Methods Summary
public booleanequals(java.lang.Object o)

	if (o == null)
	    return false;
	if (o instanceof InternalBindingKey) {
	    InternalBindingKey that = (InternalBindingKey)o;
	    // Both lengths must match
	    if (this.idLen != that.idLen || this.kindLen != that.kindLen) {
		return false;
	    }
	    // If id is set is must be equal
	    if (this.idLen > 0 && this.name.id.equals(that.name.id) == false) {
		return false;
	    }
	    // If kind is set it must be equal
	    if (this.kindLen > 0 && this.name.kind.equals(that.name.kind) == false) {
		return false;
	    }
	    // Must be the same
	    return true;
	} else {
	    return false;
	}
    
public inthashCode()

	return this.hashVal;
    
protected voidsetup(org.omg.CosNaming.NameComponent n)

	this.name = n;
	// Precompute lengths and values since they will not change
        if( this.name.id != null ) {
	    idLen = this.name.id.length();
        }
        if( this.name.kind != null ) {
	    kindLen = this.name.kind.length();
        }
	hashVal = 0;
	if (idLen > 0)
	    hashVal += this.name.id.hashCode();
	if (kindLen > 0)
	    hashVal += this.name.kind.hashCode();