Package org.apache.sis.util.iso

## Class DefaultNameSpace

- Object
- - DefaultNameSpace

- All Implemented Interfaces:
    `Serializable`, `NameSpace`

      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.

  `DefaultNameSpace` can be instantiated by any of the following methods:

  - `DefaultNameFactory​.createNameSpace(GenericName, Map)`
  Immutability and thread safety
  This class is immutable and thus inherently thread-safe if the `NameSpace` and `CharSequence` 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 `NameSpace` state.
  Since:
    0.3
  See Also:
    `DefaultScopedName`, `DefaultLocalName`, `DefaultTypeName`, `DefaultMemberName`, `DefaultNameFactory`, Serialized Form

  Defined in the `sis-metadata` module

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static char` | `DEFAULT_SEPARATOR` | The default separator, which is `':'`.

  - ### Constructor Summary

    Constructors
    Modifier | Constructor | Description
    --- | --- | ---
    `protected` | `DefaultNameSpace​(DefaultNameSpace parent, CharSequence name, String headSeparator, String separator)` | Creates a new namespace with the given separator.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `boolean` | `equals​(Object object)` | Returns `true` if this namespace is equal to the given object.
    `int` | `hashCode()` | Returns a hash code value for this namespace.
    `boolean` | `isGlobal()` | Indicates whether this namespace is a "top level" namespace.
    `GenericName` | `name()` | Represents the identifier of this namespace.
    `String` | `toString()` | Returns a JCR-like lexical form representation of this namespace.

    - ### Methods inherited from class Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### 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:
        Constant Field Values

  - ### Constructor Detail

    - #### 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 `InternationalString`.
        `headSeparator` - 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 Detail

    - #### 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:
        `isGlobal` in interface `NameSpace`
      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 `NameSpace`
      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 `DefaultNameSpace` implementation is not specified in the `NameSpace` contract. This implementation follows the JCR convention for debugging convenience, but applications needing better guarantees should use `Names​.toExpandedString(GenericName)` instead.
      Overrides:
        `toString` in class `Object`
      Returns:
        a JCR-like lexical form of this namespace.
      See Also:
        `Names​.toExpandedString(GenericName)`

    - #### 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:
        `hashCode` in class `Object`