[Bedework-commit] rpiutil r220 - trunk/src/edu/rpi/sss/util/xml

svnadmin at bedework.org svnadmin at bedework.org
Thu Feb 24 15:09:42 EST 2011


Author: douglm
Date: 2011-02-24 15:09:41 -0500 (Thu, 24 Feb 2011)
New Revision: 220

Added:
   trunk/src/edu/rpi/sss/util/xml/NsContext.java
Log:
Bring 3.7 up to date with bwxml

Minor changes to reduce warnings

Added: trunk/src/edu/rpi/sss/util/xml/NsContext.java
===================================================================
--- trunk/src/edu/rpi/sss/util/xml/NsContext.java	                        (rev 0)
+++ trunk/src/edu/rpi/sss/util/xml/NsContext.java	2011-02-24 20:09:41 UTC (rev 220)
@@ -0,0 +1,141 @@
+package edu.rpi.sss.util.xml;
+
+import edu.rpi.sss.util.xml.tagdefs.XcalTags;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
+
+import javax.xml.XMLConstants;
+import javax.xml.namespace.NamespaceContext;
+import javax.xml.namespace.QName;
+
+/** Class used for diff, xpaths etc etc.
+ * @author douglm
+ *
+ */
+public class NsContext implements NamespaceContext {
+  private static Map<String, String> keyPrefix = new HashMap<String, String>();
+  private static Map<String, String> keyUri = new HashMap<String, String>();
+
+  static {
+    addToMap("D", "DAV");
+    addToMap("C", "urn:ietf:params:xml:ns:caldav");
+    addToMap("X", XcalTags.namespace);
+    addToMap("df", "urn:ietf:params:xml:ns:pidf-diff");
+    addToMap("xml", XMLConstants.XML_NS_URI);
+    addToMap("xmlns", XMLConstants.XMLNS_ATTRIBUTE_NS_URI);
+  }
+
+  private String defaultNS;
+
+  /** Constructor
+   *
+   * @param defaultNS
+   */
+  public NsContext(final String defaultNS) {
+    this.defaultNS = defaultNS;
+  }
+
+  /**
+   * @return default ns or null
+   */
+  public String getDefaultNS() {
+    return defaultNS;
+  }
+
+  public String getNamespaceURI(final String prefix) {
+    if ((prefix != null) && prefix.equals(XMLConstants.DEFAULT_NS_PREFIX)) {
+      return defaultNS;
+    }
+
+    String uri = keyPrefix.get(prefix);
+
+    if (uri == null) {
+      return XMLConstants.NULL_NS_URI;
+    }
+
+    return uri;
+  }
+
+  public Iterator<String> getPrefixes(final String val) {
+    String prefix = keyUri.get(val);
+    Set<String> pfxs = new TreeSet<String>();
+
+    if (prefix != null) {
+      pfxs.add(prefix);
+    }
+    return pfxs.iterator();
+  }
+
+  /**
+   * @return all prefixes
+   */
+  public Set<String> getPrefixes() {
+    return keyPrefix.keySet();
+  }
+
+  /** Clear all items
+   *
+   */
+  public void clear() {
+    keyPrefix.clear();
+    keyUri.clear();
+    defaultNS = null;
+  }
+
+  /** Add a namespace to the maps
+   *
+   * @param prefix
+   * @param uri
+   */
+  public void add(final String prefix, final String uri) {
+    if (prefix == null) {
+      defaultNS = uri;
+    }
+
+    addToMap(prefix, uri);
+  }
+
+  public String getPrefix(final String uri) {
+    if ((defaultNS != null) && uri.equals(defaultNS)) {
+      return XMLConstants.DEFAULT_NS_PREFIX;
+    }
+
+    return keyUri.get(uri);
+  }
+
+  /** Append the name with abbreviated namespace.
+   *
+   * @param sb
+   * @param nm
+   */
+  public void appendNsName(final StringBuilder sb,
+                           final QName nm) {
+    String uri = nm.getNamespaceURI();
+    String abbr;
+
+    if ((defaultNS != null) && uri.equals(defaultNS)) {
+      abbr = null;
+    } else {
+      abbr = keyUri.get(uri);
+      if (abbr == null) {
+        abbr = uri;
+      }
+    }
+
+    if (abbr != null) {
+      sb.append(abbr);
+      sb.append(":");
+    }
+
+    sb.append(nm.getLocalPart());
+  }
+
+  private static void addToMap(final String prefix, final String uri) {
+    keyPrefix.put(prefix, uri);
+    keyUri.put(uri, prefix);
+  }
+}



More information about the Bedework-commit mailing list