Class DefaultNameSpace

Object
DefaultNameSpace
All Implemented Interfaces:
Serializable, Name­Space

public class DefaultNameSpace extends Object implements NameSpace, Serializable
A domain in which names given by character strings are defined. This implementation does not support localization in order to avoid ambiguity when testing two namespaces for equality.

Default­Name­Space can be instantiated by any of the following methods:

Immutability and thread safety

This class is immutable and thus inherently thread-safe if the Name­Space and Char­Sequence arguments given to the constructor are also immutable. Subclasses shall make sure that any overridden methods remain safe to call from multiple threads and do not change any public Name­Space state.
Since:
0.3
See Also:
  • Field Details

    • DEFAULT_SEPARATOR

      public static final char DEFAULT_SEPARATOR
      The default separator, which is ':'. The separator is inserted between the namespace and any generic name in that namespace.
      See Also:
  • Constructor Details

    • DefaultNameSpace

      protected DefaultNameSpace(DefaultNameSpace parent, CharSequence name, String headSeparator, String separator)
      Creates a new namespace with the given separator.
      Parameters:
      parent - the parent namespace, or null if none.
      name - the name of the new namespace, usually as a String or an International­String.
      head­Separator - the separator to insert between the namespace and the head of any name in that namespace.
      separator - the separator to insert between the parsed names of any name in that namespace.
  • Method Details

    • getSeparator

      public static String getSeparator(NameSpace ns, boolean head)
      Returns the separator between name components in the given namespace. If the given namespace is an instance of Default­Name­Space, then this method returns the head­Separator or separator argument given to the constructor. Otherwise this method returns the default separator.
      API note: this method is static because the get­Separator(…) method is not part of GeoAPI interfaces. A static method makes easier to use without (if (x instanceof Default­Name­Space) checks.
      Parameters:
      ns - the namespace for which to get the separator. May be null.
      head - true for the separator between namespace and head, or false for the separator between parsed names.
      Returns:
      separator between name components.
      Since:
      1.3
    • isGlobal

      public boolean isGlobal()
      Indicates whether this namespace is a "top level" namespace. Global, or top-level namespaces are not contained within another namespace. The global namespace has no parent.
      Specified by:
      is­Global in interface Name­Space
      Returns:
      true if this namespace is the global namespace.
    • name

      public GenericName name()
      Represents the identifier of this namespace. Namespace identifiers shall be fully-qualified names where the following condition holds:
      assert name.scope().isGlobal() == true;
      
      Specified by:
      name in interface Name­Space
      Returns:
      the identifier of this namespace.
    • toString

      public String toString()
      Returns a JCR-like lexical form representation of this namespace. Following the Java Content Repository (JCR) convention, this method returns the string representation of name() between curly brackets.

      Example

      If the name of this namespace is “org​.apache​.sis”, then this method returns “{org​.apache​.sis}”.

      Usage

      With this convention, it would be possible to create an expanded form of a generic name (except for escaping of illegal characters) with a simple concatenation as in the following code example:
      GenericName name = ...;                // A name
      println("Expanded form = " + name.scope() + name);
      
      However, the convention followed by this Default­Name­Space implementation is not specified in the Name­Space contract. This implementation follows the JCR convention for debugging convenience, but applications needing better guarantees should use Names​.to­Expanded­String(Generic­Name) instead.
      Overrides:
      to­String in class Object
      Returns:
      a JCR-like lexical form of this namespace.
      See Also:
    • equals

      public boolean equals(Object object)
      Returns true if this namespace is equal to the given object.
      Overrides:
      equals in class Object
      Parameters:
      object - the object to compare with this namespace.
      Returns:
      true if the given object is equal to this namespace.
    • hashCode

      public int hashCode()
      Returns a hash code value for this namespace.
      Overrides:
      hash­Code in class Object