net.sf.saxon.om

## Class FingerprintedQName

- java.lang.Object
- - net.sf.saxon.om.StructuredQName
  - - net.sf.saxon.om.FingerprintedQName

- All Implemented Interfaces:
    IdentityComparable, NodeName

      public class FingerprintedQName
      extends StructuredQName
      implements NodeName

  A QName triple (prefix, URI, local) with the additional ability to hold an integer fingerprint. The integer fingerprint provides a fast way of checking equality. A FingerprintedQName makes sense only in the context of a known NamePool, and instances must be compared only if they relate to the same NamePool. The fingerprint is optional, and is used only if present.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `FingerprintedQName(String prefix, String uri, String localName)`
    `FingerprintedQName(String prefix, String uri, String localName, int nameCode)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `allocateNameCode(NamePool pool)` Allocate a nameCode from the NamePool (if none has already been allocated).
    `boolean` | `equals(Object other)` Compare two StructuredQName values for equality.
    `static FingerprintedQName` | `fromClarkName(String expandedName)` Make a structuredQName from a Clark name
    `int` | `getFingerprint()` Get the fingerprint of this name if known.
    `int` | `getNameCode()` Get the nameCode of this name if known.
    `boolean` | `hasFingerprint()` Ask whether this node name representation has a known namecode and fingerprint
    `boolean` | `isIdentical(IdentityComparable other)` Determine whether two IdentityComparable objects are identical.
    `void` | `setNameCode(int nameCode)` Set the nameCode for this QName.

    - ### Methods inherited from class net.sf.saxon.om.StructuredQName

      `computeHashCode, fromEQName, fromLexicalQName, getClarkName, getDisplayName, getEQName, getLocalPart, getNamespaceBinding, getPrefix, getStructuredQName, getURI, hashCode, isInNamespace, isInSameNamespace, toJaxpQName, toString`

    - ### Methods inherited from class java.lang.Object

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

    - ### Methods inherited from interface net.sf.saxon.om.NodeName

      `getDisplayName, getLocalPart, getNamespaceBinding, getPrefix, getStructuredQName, getURI, isInNamespace, isInSameNamespace`

- - ### Constructor Detail

    - #### FingerprintedQName

          public FingerprintedQName(String prefix,
                            String uri,
                            String localName)

    - #### FingerprintedQName

          public FingerprintedQName(String prefix,
                            String uri,
                            String localName,
                            int nameCode)

  - ### Method Detail

    - #### fromClarkName

          public static FingerprintedQName fromClarkName(String expandedName)

      Make a structuredQName from a Clark name
      Parameters:
        `expandedName` - the name in Clark notation "{uri}local" if in a namespace, or "local" otherwise. The format "{}local" is also accepted for a name in no namespace.
      Returns:
        the constructed StructuredQName
      Throws:
        `IllegalArgumentException` - if the Clark name is malformed

    - #### hasFingerprint

          public boolean hasFingerprint()

      Ask whether this node name representation has a known namecode and fingerprint
      Specified by:
        `hasFingerprint` in interface `NodeName`
      Overrides:
        `hasFingerprint` in class `StructuredQName`
      Returns:
        true if the methods getFingerprint() and getNameCode() will return a result other than -1

    - #### getFingerprint

          public int getFingerprint()

      Get the fingerprint of this name if known. This method should not to any work to allocate a fingerprint if none is already available
      Specified by:
        `getFingerprint` in interface `NodeName`
      Overrides:
        `getFingerprint` in class `StructuredQName`
      Returns:
        the fingerprint if known; otherwise -1

    - #### getNameCode

          public int getNameCode()

      Get the nameCode of this name if known. This method should not to any work to allocate a nameCode if none is already available
      Specified by:
        `getNameCode` in interface `NodeName`
      Overrides:
        `getNameCode` in class `StructuredQName`
      Returns:
        the fingerprint if known; otherwise -1

    - #### setNameCode

          public void setNameCode(int nameCode)

      Set the nameCode for this QName. Note that this modifies the FingerprintedQName object and makes it unusable with a different NamePool.
      Parameters:
        `nameCode` - the nameCode associated with this QName by the NamePool

    - #### allocateNameCode

          public int allocateNameCode(NamePool pool)

      Allocate a nameCode from the NamePool (if none has already been allocated). Note that this modifies the FingerprintedQName object and makes it unusable with a different NamePool.
      Specified by:
        `allocateNameCode` in interface `NodeName`
      Parameters:
        `pool` - the namePool
      Returns:
        the allocated name code (or the existing namecode if there already was one)

    - #### equals

          public boolean equals(Object other)

      Description copied from class: `StructuredQName`
      Compare two StructuredQName values for equality. This compares the URI and local name parts, excluding any prefix
      Overrides:
        `equals` in class `StructuredQName`

    - #### isIdentical

          public boolean isIdentical(IdentityComparable other)

      Description copied from interface: `IdentityComparable`
      Determine whether two IdentityComparable objects are identical. This is a stronger test than equality (even schema-equality); for example two dateTime values are not identical unless they are in the same timezone.
      Specified by:
        `isIdentical` in interface `IdentityComparable`
      Returns:
        true if the two values are indentical, false otherwise

Copyright (c) 2004-2013 Saxonica Limited. All rights reserved.