Class BijectiveNsMap

java.lang.Object
com.ctc.wstx.util.BijectiveNsMap

public final class BijectiveNsMap extends Object
Helper class that implements "bijective map" (Map that allows use of values as keys and vice versa, bidirectional access), and is specifically used for storing namespace binding information. One thing worth noting is that Strings stored are NOT assumed to have been unified (interned) -- if they were, different implementation would be more optimal.

Currently only used by stream writers, but could be more generally useful too.

  • Field Details

    • DEFAULT_ARRAY_SIZE

      static final int DEFAULT_ARRAY_SIZE
      Let's plan for having up to 14 explicit namespace declarations (2 defaults, for 'xml' and 'xmlns', are pre-populated)
      See Also:
    • MAX_LOOP_FOR_NEW_PREFIX

      private static final int MAX_LOOP_FOR_NEW_PREFIX
      As a simple protection against infinite loops, use an arbitrary but bound limit for iterators
      See Also:
    • mScopeStart

      final int mScopeStart
    • mNsStrings

      String[] mNsStrings
      Array that contains { prefix, ns-uri } pairs, up to (but not including) index mScopeEnd.
    • mScopeEnd

      int mScopeEnd
  • Constructor Details

    • BijectiveNsMap

      private BijectiveNsMap(int scopeStart, String[] strs)
  • Method Details

    • createEmpty

      public static BijectiveNsMap createEmpty()
    • createChild

      public BijectiveNsMap createChild()
    • findUriByPrefix

      public String findUriByPrefix(String prefix)
    • findPrefixByUri

      public String findPrefixByUri(String uri)
    • getPrefixesBoundToUri

      public List<String> getPrefixesBoundToUri(String uri, List<String> l)
    • size

      public int size()
    • localSize

      public int localSize()
    • addMapping

      public String addMapping(String prefix, String uri)
      Method to add a new prefix-to-URI mapping for the current scope. Note that it should NOT be used for the default namespace declaration
      Parameters:
      prefix - Prefix to bind
      uri - URI to bind to the prefix
      Returns:
      If the prefix was already bound, the URI it was bound to: null if it's a new binding for the current scope.
    • addGeneratedMapping

      public String addGeneratedMapping(String prefixBase, NamespaceContext ctxt, String uri, int[] seqArr)
      Method used to add a dynamic binding, and return the prefix used to bind the specified namespace URI.
    • toString

      public String toString()
      Overrides:
      toString in class Object