Class FingerprintedQName

  • All Implemented Interfaces:
    IdentityComparable, NodeName

    public class FingerprintedQName
    extends java.lang.Object
    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 Detail

      • FingerprintedQName

        public FingerprintedQName​(java.lang.String prefix,
                                  NamespaceUri uri,
                                  java.lang.String localName)
      • FingerprintedQName

        public FingerprintedQName​(java.lang.String prefix,
                                  NamespaceUri uri,
                                  java.lang.String localName,
                                  int fingerprint)
      • FingerprintedQName

        public FingerprintedQName​(java.lang.String prefix,
                                  NamespaceUri uri,
                                  java.lang.String localName,
                                  NamePool pool)
      • FingerprintedQName

        public FingerprintedQName​(StructuredQName qName,
                                  int fingerprint)
    • Method Detail

      • fromClarkName

        public static FingerprintedQName fromClarkName​(java.lang.String expandedName)
        Make a FingerprintedQName 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 FingerprintedQName
        Throws:
        java.lang.IllegalArgumentException - if the Clark name is malformed
      • fromEQName

        public static FingerprintedQName fromEQName​(java.lang.String expandedName)
        Make a FingerprintedQName from a Clark name
        Parameters:
        expandedName - the name in EQName notation "Q{uri}local" if in a namespace, or "local" otherwise. The format "Q{}local" is also accepted for a name in no namespace.
        Returns:
        the constructed FingerprintedQName
        Throws:
        java.lang.IllegalArgumentException - if the EQName 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
        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
        Returns:
        the fingerprint if known; otherwise -1
      • obtainFingerprint

        public int obtainFingerprint​(NamePool pool)
        Get the fingerprint of this name, allocating a new code from the namepool if necessary
        Specified by:
        obtainFingerprint in interface NodeName
        Parameters:
        pool - the NamePool used to allocate the name
        Returns:
        a fingerprint for this name, newly allocated if necessary
      • getDisplayName

        public java.lang.String getDisplayName()
        Get the display name, that is the lexical QName in the form [prefix:]local-part
        Specified by:
        getDisplayName in interface NodeName
        Returns:
        the lexical QName
      • getPrefix

        public java.lang.String getPrefix()
        Get the prefix of the QName.
        Specified by:
        getPrefix in interface NodeName
        Returns:
        the prefix. Returns the empty string if the name is unprefixed.
      • getNamespaceUri

        public NamespaceUri getNamespaceUri()
        Get the namespace URI of the QName.
        Specified by:
        getNamespaceUri in interface NodeName
        Returns:
        the URI. Returns the empty string to represent the no-namespace
      • getLocalPart

        public java.lang.String getLocalPart()
        Get the local part of the QName
        Specified by:
        getLocalPart in interface NodeName
        Returns:
        the local part of the QName
      • getStructuredQName

        public StructuredQName getStructuredQName()
        Get the name in the form of a StructuredQName
        Specified by:
        getStructuredQName in interface NodeName
        Returns:
        the name in the form of a StructuredQName
      • hasURI

        public boolean hasURI​(NamespaceUri ns)
        Test whether this name is in a given namespace
        Specified by:
        hasURI in interface NodeName
        Parameters:
        ns - the namespace to be tested against
        Returns:
        true if the name is in the specified namespace
      • identityHashCode

        public int identityHashCode()
        Get a hashCode that offers the guarantee that if A.isIdentical(B), then A.identityHashCode() == B.identityHashCode()
        Specified by:
        identityHashCode in interface IdentityComparable
        Returns:
        a hashCode suitable for use when testing for identity.
      • equals

        public boolean equals​(java.lang.Object other)
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Returns a hash code value for the object.
        Overrides:
        hashCode in class java.lang.Object
      • isIdentical

        public boolean isIdentical​(IdentityComparable other)
        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
        Parameters:
        other - the value to be compared with
        Returns:
        true if the two values are identical, false otherwise
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object