Class DefaultNameFactory

java.lang.Object
org.apache.sis.util.iso.AbstractFactory
org.apache.sis.util.iso.DefaultNameFactory
All Implemented Interfaces:
org.opengis.util.Factory, org.opengis.util.NameFactory

public class DefaultNameFactory extends AbstractFactory implements org.opengis.util.NameFactory
A factory for creating AbstractName objects. This factory provides the following methods for creating name instances: The following methods for creating miscellaneous name-related objects: And the following methods for performing some analysis:

Thread safety

The same DefaultNameFactory instance can be safely used by many threads without synchronization on the part of the caller. Subclasses should make sure that any overridden methods remain safe to call from multiple threads.
Since:
0.3
Version:
1.3
See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    (package private) static final String
    The key or the separator after the first name.
    private final WeakHashSet<org.opengis.util.GenericName>
    Weak references to the name created by this factory.
    (package private) static final String
    The key for name separator.
    private TypeNames
    Helper class for mapping Class to TypeName, created when first needed.
  • Constructor Summary

    Constructors
    Constructor
    Description
    Creates a new factory.
  • Method Summary

    Modifier and Type
    Method
    Description
    org.opengis.util.GenericName
    createGenericName(org.opengis.util.NameSpace scope, CharSequence... parsedNames)
    Creates a local or scoped name from an array of parsed names.
    org.opengis.util.InternationalString
    Creates an international string from a set of strings in different locales.
    org.opengis.util.LocalName
    createLocalName(org.opengis.util.NameSpace scope, CharSequence name)
    Creates a local name from the given character sequence.
    org.opengis.util.MemberName
    createMemberName(org.opengis.util.NameSpace scope, CharSequence name, org.opengis.util.TypeName attributeType)
    Creates a member name from the given character sequence and attribute type.
    org.opengis.util.NameSpace
    createNameSpace(org.opengis.util.GenericName name, Map<String,?> properties)
    Returns a namespace having the given name.
    org.opengis.util.TypeName
    createTypeName(org.opengis.util.NameSpace scope, CharSequence name)
    Creates a type name from the given character sequence and automatically inferred Java type.
    org.opengis.util.TypeName
    createTypeName(org.opengis.util.NameSpace scope, CharSequence name, Type javaType)
    Creates a type name from the given character sequence and explicit Java type.
    private static String
    getString(Map<String,?> properties, String key)
    Returns the value for the given key in the given properties map, or null if none.
    org.opengis.util.GenericName
    parseGenericName(org.opengis.util.NameSpace scope, CharSequence name)
    Constructs a generic name from a qualified name.
    private org.opengis.util.GenericName
    Creates a generic name from the given value.
    org.opengis.util.GenericName[]
    Converts the given value to an array of generic names.
    org.opengis.util.TypeName
    toTypeName(Class<?> valueClass)
    Suggests a type name for the given class.

    Methods inherited from class org.apache.sis.util.iso.AbstractFactory

    getVendor

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • SEPARATOR_KEY

      static final String SEPARATOR_KEY
      The key for name separator.
      See Also:
    • HEAD_SEPARATOR_KEY

      static final String HEAD_SEPARATOR_KEY
      The key or the separator after the first name.
      See Also:
    • pool

      private final WeakHashSet<org.opengis.util.GenericName> pool
      Weak references to the name created by this factory.
    • typeNames

      private transient volatile TypeNames typeNames
      Helper class for mapping Class to TypeName, created when first needed.
  • Constructor Details

    • DefaultNameFactory

      public DefaultNameFactory()
      Creates a new factory.
  • Method Details

    • createInternationalString

      public org.opengis.util.InternationalString createInternationalString(Map<Locale,String> strings)
      Creates an international string from a set of strings in different locales.
      Specified by:
      createInternationalString in interface org.opengis.util.NameFactory
      Parameters:
      strings - string value for each locale key.
      Returns:
      the international string.
      See Also:
    • getString

      private static String getString(Map<String,?> properties, String key)
      Returns the value for the given key in the given properties map, or null if none.
    • createNameSpace

      public org.opengis.util.NameSpace createNameSpace(org.opengis.util.GenericName name, Map<String,?> properties)
      Returns a namespace having the given name. Despite the "create" name, this method tries to return an existing instance when possible. The namespace is characterized by the given name, and optionally by the following properties:
      Recognized properties
      Property name Purpose
      "separator" The separator to insert between parsed names in that namespace.
      "separator.head" The separator to insert between the namespace and the head.
      If omitted, then the default is the same value than "separator".
      Examples:
      • For URN namespace, separator = ":" is typically sufficient.
      • For HTTP namespace, separator.head = "://" and separator = ".".
      Specified by:
      createNameSpace in interface org.opengis.util.NameFactory
      Parameters:
      name - the name of the namespace to be returned. This argument can be created using createGenericName(null, namespace).
      properties - an optional map of properties to be assigned to the namespace, or null if none.
      Returns:
      a namespace having the given name and separator.
      See Also:
    • createTypeName

      public org.opengis.util.TypeName createTypeName(org.opengis.util.NameSpace scope, CharSequence name) throws UnknownNameException
      Creates a type name from the given character sequence and automatically inferred Java type. The default implementation returns a new or an existing DefaultTypeName instance. See DefaultTypeName javadoc for the list of recognized type names.
      Specified by:
      createTypeName in interface org.opengis.util.NameFactory
      Parameters:
      scope - the scope of the type name create, or null for a global namespace.
      name - the type name as a string or an international string.
      Returns:
      the type name for the given scope and character sequence.
      Throws:
      UnknownNameException - if a mapping from the name to a Java class was expected to exist (because the specified scope is "OGC" or "class") but the associated Java class cannot be found.
      See Also:
    • createTypeName

      public org.opengis.util.TypeName createTypeName(org.opengis.util.NameSpace scope, CharSequence name, Type javaType)
      Creates a type name from the given character sequence and explicit Java type. The default implementation returns a new or an existing DefaultTypeName instance.
      Parameters:
      scope - the scope of the type name to create, or null for a global namespace.
      name - the type name as a string or an international string.
      javaType - the Java type represented by the name, or null if none.
      Returns:
      the type name for the given scope, character sequence and Java type.
      Since:
      1.3
      See Also:
    • createMemberName

      public org.opengis.util.MemberName createMemberName(org.opengis.util.NameSpace scope, CharSequence name, org.opengis.util.TypeName attributeType)
      Creates a member name from the given character sequence and attribute type. The default implementation returns a new or an existing DefaultMemberName instance.
      Parameters:
      scope - the scope of the member name to create, or null for a global namespace.
      name - the member name as a string or an international string.
      attributeType - the type of the data associated with the member.
      Returns:
      the member name for the given character sequence.
      See Also:
    • createLocalName

      public org.opengis.util.LocalName createLocalName(org.opengis.util.NameSpace scope, CharSequence name)
      Creates a local name from the given character sequence. The default implementation returns a new or an existing DefaultLocalName instance.
      Specified by:
      createLocalName in interface org.opengis.util.NameFactory
      Parameters:
      scope - the scope of the local name to create, or null for a global namespace.
      name - the local name as a string or an international string.
      Returns:
      the local name for the given character sequence.
      See Also:
    • createGenericName

      public org.opengis.util.GenericName createGenericName(org.opengis.util.NameSpace scope, CharSequence... parsedNames)
      Creates a local or scoped name from an array of parsed names. The default implementation returns an instance of DefaultLocalName if the length of the parsedNames array is 1, or an instance of DefaultScopedName if the length of the array is 2 or more.
      Specified by:
      createGenericName in interface org.opengis.util.NameFactory
      Parameters:
      scope - the scope of the generic name to create, or null for a global namespace.
      parsedNames - the local names as an array of String or InternationalString instances. This array shall contain at least one element.
      Returns:
      the generic name for the given parsed names.
      See Also:
    • parseGenericName

      public org.opengis.util.GenericName parseGenericName(org.opengis.util.NameSpace scope, CharSequence name)
      Constructs a generic name from a qualified name. This method splits the given name around a separator inferred from the given scope, or the ':' separator if the given scope is null.
      Specified by:
      parseGenericName in interface org.opengis.util.NameFactory
      Parameters:
      scope - the scope of the generic name to create, or null for a global namespace.
      name - the qualified name, as a sequence of names separated by a scope-dependent separator.
      Returns:
      a name parsed from the given string.
      See Also:
    • toGenericNames

      public org.opengis.util.GenericName[] toGenericNames(Object value) throws ClassCastException
      Converts the given value to an array of generic names. If the given value is an instance of GenericName, String or any other type enumerated below, then it is converted and returned in an array of length 1. If the given value is an array or a collection, then an array of same length is returned where each element has been converted.

      Allowed types or element types are:

      • GenericName, to be casted and returned as-is.
      • CharSequence (usually a String or an InternationalString), to be parsed as a generic name using the ':' separator.
      • Identifier, its code to be parsed as a generic name using the ':' separator.
      If value is an array or a collection containing null elements, then the corresponding element in the returned array will also be null.
      Parameters:
      value - the object to cast into an array of generic names, or null.
      Returns:
      the generic names, or null if the given value was null. Note that it may be the value reference itself casted to GenericName[].
      Throws:
      ClassCastException - if value cannot be casted.
      Since:
      0.5
    • toGenericName

      private org.opengis.util.GenericName toGenericName(Object value)
      Creates a generic name from the given value. The value may be an instance of GenericName, Identifier, CharSequence or Class. If the given object is not recognized, then this method returns null.
      Parameters:
      value - the object to convert.
      Returns:
      the converted object, or null if value is not convertible.
    • toTypeName

      public org.opengis.util.TypeName toTypeName(Class<?> valueClass)
      Suggests a type name for the given class. Apache SIS provides a mapping between Class and TypeName objects as documented in the DefaultTypeName javadoc. The given valueClass can be fetched back by DefaultTypeName.toJavaType().
      Parameters:
      valueClass - the Java class for which to get a type name, or null.
      Returns:
      a suggested type name, or null if the given class was null.
      Since:
      0.5
      See Also: