javax.naming
Class CompoundName

java.lang.Object
  extended by javax.naming.CompoundName
All Implemented Interfaces:
Serializable, Cloneable, Comparable<Object>, Name

public class CompoundName
extends Object
implements Name, Cloneable, Serializable

Represents hierarchical names from the single namespace. For instance, the path /home/audriusa/classpath/file.txt is the compound name, using the filesystem namespace.

Since:
1.3
See Also:
Serialized Form

Field Summary
protected  Properties mySyntax
           
 
Constructor Summary
protected CompoundName(Enumeration<String> comps, Properties syntax)
           
  CompoundName(String n, Properties syntax)
           
 
Method Summary
 Name add(int posn, String comp)
          Inserts the given String component to this Name at the given index.
 Name add(String comp)
          Adds the given String component to the end of this Name.
 Name addAll(int posn, Name n)
          Inserts all the components of the given Name to this Name at the given index.
 Name addAll(Name suffix)
          Adds all the components of the given Name to the end of this Name.
 Object clone()
          This method may be called to create a new copy of the Object.
 int compareTo(Object obj)
          Compares the given object to this Name.
 boolean endsWith(Name n)
          Returns true if this Name ends with the components of the given Name, false otherwise.
 boolean equals(Object obj)
          Determine whether this Object is semantically equal to another Object.
 String get(int posn)
          Gets the component at the given index.
 Enumeration<String> getAll()
          Returns a non-null (but possibly empty) Enumeration of the components of the Name as Strings.
 Name getPrefix(int posn)
          Returns the components till the given index as a Name.
 Name getSuffix(int posn)
          Returns the components from the given index till the end as a Name.
 int hashCode()
          Get a value that represents this Object, as uniquely as possible within the confines of an int.
 boolean isEmpty()
          Returns true if the number of components of this Name is zero, false otherwise.
 Object remove(int posn)
          Removes the component at the given index from this Name.
 int size()
          Returns the number of components of this Name.
 boolean startsWith(Name n)
          Returns true if this Name starts with the components of the given Name, false otherwise.
 String toString()
          Convert this Object to a human-readable String.
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

mySyntax

protected transient Properties mySyntax
Constructor Detail

CompoundName

protected CompoundName(Enumeration<String> comps,
                       Properties syntax)

CompoundName

public CompoundName(String n,
                    Properties syntax)
             throws InvalidNameException
Throws:
InvalidNameException
Method Detail

add

public Name add(int posn,
                String comp)
         throws InvalidNameException
Description copied from interface: Name
Inserts the given String component to this Name at the given index. The method modifies the current Name and then returns it.

Specified by:
add in interface Name
Throws:
InvalidNameException - if the given String is not a valid component for this Name.

add

public Name add(String comp)
         throws InvalidNameException
Description copied from interface: Name
Adds the given String component to the end of this Name. The method modifies the current Name and then returns it.

Specified by:
add in interface Name
Throws:
InvalidNameException - if the given String is not a valid component for this Name.

addAll

public Name addAll(int posn,
                   Name n)
            throws InvalidNameException
Description copied from interface: Name
Inserts all the components of the given Name to this Name at the given index. Components after this index (if any) are shifted up. The method modifies the current Name and then returns it.

Specified by:
addAll in interface Name
Throws:
InvalidNameException - if any of the given components is not a valid component for this Name.

addAll

public Name addAll(Name suffix)
            throws InvalidNameException
Description copied from interface: Name
Adds all the components of the given Name to the end of this Name. The method modifies the current Name and then returns it.

Specified by:
addAll in interface Name
Throws:
InvalidNameException - if any of the given components is not a valid component for this Name.

clone

public Object clone()
Description copied from class: Object
This method may be called to create a new copy of the Object. The typical behavior is as follows:

However, these are not strict requirements, and may be violated if necessary. Of the three requirements, the last is the most commonly violated, particularly if the subclass does not override Object.equals(Object).

If the Object you call clone() on does not implement Cloneable (which is a placeholder interface), then a CloneNotSupportedException is thrown. Notice that Object does not implement Cloneable; this method exists as a convenience for subclasses that do.

Object's implementation of clone allocates space for the new Object using the correct class, without calling any constructors, and then fills in all of the new field values with the old field values. Thus, it is a shallow copy. However, subclasses are permitted to make a deep copy.

All array types implement Cloneable, and override this method as follows (it should never fail):

 public Object clone()
 {
   try
     {
       super.clone();
     }
   catch (CloneNotSupportedException e)
     {
       throw new InternalError(e.getMessage());
     }
 }
 

Specified by:
clone in interface Name
Overrides:
clone in class Object
Returns:
a copy of the Object
See Also:
Cloneable

compareTo

public int compareTo(Object obj)
Description copied from interface: Name
Compares the given object to this Name. Returns a negative value if the given Object is smaller then this Name, a positive value if the Object is bigger, and zero if the are equal. If the Object is not of a class that can be compared to the class of this Name then a ClassCastException is thrown. Note that it is not guaranteed that Names implemented in different classes can be compared. The definition of smaller, bigger and equal is up to the actual implementing class.

Specified by:
compareTo in interface Comparable<Object>
Specified by:
compareTo in interface Name
Parameters:
obj - the object to be compared
Returns:
an integer describing the comparison

endsWith

public boolean endsWith(Name n)
Description copied from interface: Name
Returns true if this Name ends with the components of the given Name, false otherwise.

Specified by:
endsWith in interface Name

equals

public boolean equals(Object obj)
Description copied from class: Object
Determine whether this Object is semantically equal to another Object.

There are some fairly strict requirements on this method which subclasses must follow:

This is typically overridden to throw a ClassCastException if the argument is not comparable to the class performing the comparison, but that is not a requirement. It is legal for a.equals(b) to be true even though a.getClass() != b.getClass(). Also, it is typical to never cause a NullPointerException.

In general, the Collections API (java.util) use the equals method rather than the == operator to compare objects. However, IdentityHashMap is an exception to this rule, for its own good reasons.

The default implementation returns this == o.

Overrides:
equals in class Object
Parameters:
obj - the Object to compare to
Returns:
whether this Object is semantically equal to another
See Also:
Object.hashCode()

get

public String get(int posn)
Description copied from interface: Name
Gets the component at the given index.

Specified by:
get in interface Name

getAll

public Enumeration<String> getAll()
Description copied from interface: Name
Returns a non-null (but possibly empty) Enumeration of the components of the Name as Strings.

Specified by:
getAll in interface Name

getPrefix

public Name getPrefix(int posn)
Description copied from interface: Name
Returns the components till the given index as a Name. The returned Name can be modified without changing the original.

Specified by:
getPrefix in interface Name
Parameters:
posn - the ending position, exclusive

getSuffix

public Name getSuffix(int posn)
Description copied from interface: Name
Returns the components from the given index till the end as a Name. The returned Name can be modified without changing the original.

Specified by:
getSuffix in interface Name
Parameters:
posn - the starting position, inclusive. If it is equal to the size of the name, the empty name is returned.

hashCode

public int hashCode()
Description copied from class: Object
Get a value that represents this Object, as uniquely as possible within the confines of an int.

There are some requirements on this method which subclasses must follow:

Notice that since hashCode is used in Hashtable and other hashing classes, a poor implementation will degrade the performance of hashing (so don't blindly implement it as returning a constant!). Also, if calculating the hash is time-consuming, a class may consider caching the results.

The default implementation returns System.identityHashCode(this)

Overrides:
hashCode in class Object
Returns:
the hash code for this Object
See Also:
Object.equals(Object), System.identityHashCode(Object)

isEmpty

public boolean isEmpty()
Description copied from interface: Name
Returns true if the number of components of this Name is zero, false otherwise.

Specified by:
isEmpty in interface Name

remove

public Object remove(int posn)
              throws InvalidNameException
Description copied from interface: Name
Removes the component at the given index from this Name. The method modifies the current Name and then returns it.

Specified by:
remove in interface Name
Throws:
InvalidNameException - if the given String is not a valid component for this Name.

size

public int size()
Description copied from interface: Name
Returns the number of components of this Name. The returned number can be zero.

Specified by:
size in interface Name

startsWith

public boolean startsWith(Name n)
Description copied from interface: Name
Returns true if this Name starts with the components of the given Name, false otherwise.

Specified by:
startsWith in interface Name

toString

public String toString()
Description copied from class: Object
Convert this Object to a human-readable String. There are no limits placed on how long this String should be or what it should contain. We suggest you make it as intuitive as possible to be able to place it into System.out.println() and such.

It is typical, but not required, to ensure that this method never completes abruptly with a RuntimeException.

This method will be called when performing string concatenation with this object. If the result is null, string concatenation will instead use "null".

The default implementation returns getClass().getName() + "@" + Integer.toHexString(hashCode()).

Overrides:
toString in class Object
Returns:
the String representing this Object, which may be null
See Also:
Object.getClass(), Object.hashCode(), Class.getName(), Integer.toHexString(int)