package org.eclipse.core.runtime; | |
/* | |
* (c) Copyright IBM Corp. 2000, 2001. | |
* All Rights Reserved. | |
*/ | |
import org.eclipse.core.internal.runtime.Assert; | |
/** | |
* Qualified names are two-part names: qualifier and local name. | |
* The qualifier must be in URI form (see RFC2396). | |
* Note however that the qualifier may be <code>null</code> if | |
* the default name space is being used. The empty string is not | |
* a valid local name. | |
* <p> | |
* This class is not intended to be subclassed by clients. | |
* </p> | |
*/ | |
public final class QualifiedName { | |
/** Qualifier part (potentially <code>null</code>). */ | |
/*package*/ String qualifier = null; | |
/** Local name part. */ | |
/*package*/ String localName = null; | |
/** | |
* Creates and returns a new qualified name with the given qualifier | |
* and local name. The local name must not be the empty string. | |
* The qualifier may be <code>null</code>. | |
* <p> | |
* Clients may instantiate. | |
* </p> | |
* @param qualifier the qualifier string, or <code>null</code> | |
* @param localName the local name string | |
*/ | |
public QualifiedName(String qualifier, String localName) { | |
Assert.isLegal(localName != null && localName.length() != 0); | |
this.qualifier = qualifier; | |
this.localName = localName; | |
} | |
/** | |
* Returns whether this qualified name is equivalent to the given object. | |
* <p> | |
* Qualified names are equal if and only if they have the same | |
* qualified parts and local parts. | |
* Qualified names are not equal to objects other than qualified names. | |
* </p> | |
* | |
* @param obj the object to compare to | |
* @return <code>true</code> if these are equivalent qualified | |
* names, and <code>false</code> otherwise | |
*/ | |
public boolean equals(Object obj) { | |
if (obj == this) { | |
return true; | |
} | |
if (!(obj instanceof QualifiedName)) { | |
return false; | |
} | |
QualifiedName qName = (QualifiedName) obj; | |
/* There may or may not be a quailfier */ | |
if (qualifier == null && qName.getQualifier() != null) { | |
return false; | |
} | |
if (qualifier != null && !qualifier.equals(qName.getQualifier())) { | |
return false; | |
} | |
return localName.equals(qName.getLocalName()); | |
} | |
/** | |
* Returns the local part of this name. | |
* | |
* @return the local name string | |
*/ | |
public String getLocalName() { | |
return localName; | |
} | |
/** | |
* Returns the qualifier part for this qualifed name, or <code>null</code> | |
* if none. | |
* | |
* @return the qualifier string, or <code>null</code> | |
*/ | |
public String getQualifier() { | |
return qualifier; | |
} | |
/* (Intentionally omitted from javadoc) | |
* Implements the method <code>Object.hashCode</code>. | |
* | |
* Returns the hash code for this qualified name. | |
*/ | |
public int hashCode() { | |
return (qualifier == null ? 0 : qualifier.hashCode()) + localName.hashCode(); | |
} | |
/** | |
* Converts this qualified name into a string, suitable for | |
* debug purposes only. | |
*/ | |
public String toString() { | |
return "QualifiedName(" + (getQualifier() == null ? "null" : getQualifier()) + "," + getLocalName() + ")"; | |
} | |
} |