Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * #%L
   * =====================================================
   *   _____                _     ____  _   _       _   _
   *  |_   _|_ __ _   _ ___| |_  / __ \| | | | ___ | | | |
   *    | | | '__| | | / __| __|/ / _` | |_| |/ __|| |_| |
   *    | | | |  | |_| \__ \ |_| | (_| |  _  |\__ \|  _  |
   *    |_| |_|   \__,_|___/\__|\ \__,_|_| |_||___/|_| |_|
   *                             \____/
  * 
  * =====================================================
  * 
  * Hochschule Hannover
  * (University of Applied Sciences and Arts, Hannover)
  * Faculty IV, Dept. of Computer Science
  * Ricklinger Stadtweg 118, 30459 Hannover, Germany
  * 
  * Email: trust@f4-i.fh-hannover.de
  * Website: http://trust.f4.hs-hannover.de/
  * 
  * This file is part of ifmapj, version 2.2.0, implemented by the Trust@HsH
  * research group at the Hochschule Hannover.
  * %%
  * Copyright (C) 2010 - 2014 Trust@HsH
  * %%
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  * 
  *      http://www.apache.org/licenses/LICENSE-2.0
  * 
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  * #L%
  */
 package util;
 
 import java.util.List;
 
 
 
Some helpers to handle javax.xml and org.w3c.* stuff...

Author(s):
aw
jk
Since:
0.1.4
 
 public final class DomHelpers {
 
 	private static final DocumentBuilder DOCUMENT_BUILDER;
 	private static final TransformerFactory TRANSFORMER_FACTORY;
 
 	static {
 		 = TransformerFactory.newInstance();
 		 = DocumentBuilderFactory.newInstance();
 	}
 
 	private DomHelpers() { }
 
	public static DocumentBuilder newDocumentBuilder() {
		try {
			IfmapJLog.error(e.getMessage());
			throw new RuntimeException(e.getMessage());
		}
	}
	public static Element createNonNsElement(Document docString name) {
		return doc.createElementNS(nullname);
	}
	public static void addAttribute(Element elString nameString val) {
		el.setAttributeNS(nullnameval);
	}
			Element to) {
		for (Pair<StringStringnsDecl : nsh.getNamespaceDeclarations()) {
			String name = "xmlns";
			String value;
			if (nsDecl.mFirst.length() > 0) {
				name += ":" + nsDecl.mFirst;
			}
			value = nsDecl.mSecond;
			to.setAttributeNS("http://www.w3.org/2000/xmlns/"namevalue);
		}
	}
	public static String makeRequestFqName(String name) {
		return . + ":" + name;
	}
	public static boolean elementMatches(Element elString elname) {
		return elementMatches(elelname.);
	}
	public static boolean elementMatches(Element eString nameString uri) {
		// i'm sorry
		return name.equals(e.getLocalName())
				&& (uri == null && e.getNamespaceURI() == null
				|| uri != null && uri.equals(e.getNamespaceURI()));
	}

Create a new list containing only the child nodes of e of type org.w3c.dom.Element.

Parameters:
e
Returns:
	public static List<ElementgetChildElements(Element e) {
		List<Elementret = new ArrayList<Element>();
		NodeList children = e.getChildNodes();
		for (int i = 0; i < children.getLength(); i++) {
			Node child = children.item(i);
			if (child.getNodeType()  == .) {
				ret.add((Elementchild);
			}
		}
		return ret;
	}
	public static Element findElementInChildren(Node nodeString name,
			String uri) {
		NodeList children = node.getChildNodes();
		Element ret = null;
		for (int i = 0; i < children.getLength(); i++) {
			Node n = children.item(i);
			// our interest is in element nodes only
			if (!(n.getNodeType() == .)) {
				continue;
			}
			if (elementMatches((Elementnnameuri)) {
				ret = (Elementn;
				break;
			}
		}
		return ret;
	}

Makes a deep-copy of an org.w3c.dom.Element instance and appends it to a new org.w3c.dom.Document instance as child.

Parameters:
child the org.w3c.dom.Element instnace to be deep-copied
Returns:
a new org.w3c.dom.Document instance with a deep-copied child appended
	public static Document deepCopy(Element child) {
		Element el = (ElementmdDoc.importNode(childtrue);
		mdDoc.appendChild(el);
		return mdDoc;
	}


	public static InputStream toInputStream(Document docthrows MarshalException {
		try {
			IfmapJLog.error("Oh oh.... [" + e.getMessage() + "]");
			throw new MarshalException(e.getMessage());
		}
		Result result = new StreamResult(baos);
		byte[] marshalled = null;
		Source source = new DOMSource(doc);
		try {
			trans.transform(sourceresult);
catch (TransformerException e) {
			IfmapJLog.error("Oh oh.... [" + e.getMessage() + "]");
			throw new MarshalException(e.getMessage());
		}
		try {
			baos.flush();
catch (IOException e) {
			IfmapJLog.error("Oh oh.... [" + e.getMessage() + "]");
			throw new MarshalException(e.getMessage());
		}
		marshalled = baos.toByteArray();
		return new ByteArrayInputStream(marshalled);
	}

Prepare an extended identifier for publish by removing namespace added by XSL transformation and encoding all relevant XML entities.

Parameters:
str
Returns:
namespace ns0 stripped and encoded XML string
Throws:
de.hshannover.f4.trust.ifmapj.exception.MarshalException
Since:
0.1.5
	public static String prepareExtendedIdentifier(Document docthrows MarshalException {
		Transformer tf = null;
		String res = null;
		try {
			IfmapJLog.error("Oh oh.... [" + e.getMessage() + "]");
			throw new MarshalException(e.getMessage());
		}
		DOMSource domSource = new DOMSource(doc.getFirstChild());
		Result result = new StreamResult(baos);
		try {
			tf.transform(domSourceresult);
catch (TransformerException e) {
			IfmapJLog.error("Oh oh.... [" + e.getMessage() + "]");
			throw new MarshalException(e.getMessage());
		}
		InputSource inputSource = new InputSource(bais);
		CanonicalXML cxml = new CanonicalXML();
		XMLReader reader = null;
		try {
			reader = XMLReaderFactory.createXMLReader();
catch (SAXException e) {
			IfmapJLog.error("Oh oh.... [" + e.getMessage() + "]");
			throw new MarshalException(e.getMessage());
		}
		try {
			res = cxml.toCanonicalXml2(readerinputSourcetrue);
catch (Exception e) {
			// hmm... toCanonicalXML throws Exception...
			IfmapJLog.error("Oh oh.... [" + e.getMessage() + "]");
			throw new MarshalException(e.getMessage());
		}
		return escapeXml(res);
	}
	private static String escapeXml(String input) {
		String ret = input;
		String []unwanted =  {"&",     "<",    ">",   "\"",    "'"};
		String []replaceBy = {"&amp;""&lt;""&gt;""&quot;""&apos;"};
		for (int i = 0; i < unwanted.lengthi++) {
			ret = ret.replace(unwanted[i], replaceBy[i]);
		}
		return ret;
	}

If the top-level element has a prefix associated with it, drop it. Go recursively down and remove all prefixes. If we come across a different prefix, throw a de.hshannover.f4.trust.ifmapj.exception.MarshalException...

	private static void fixupNamespace(Document docthrows MarshalException {
		Node n;
		String prefix;
		n = doc.getFirstChild();
		if (n.getNodeType() != .) {
			throw new RuntimeException("No element");
		}
		el = (Elementn;
		prefix = el.getPrefix();
		if (prefix != null && prefix.length() > 0) {
			el.setPrefix(null);
else {
			prefix = "";
		}
	}
	private static void dropNamespaceDecls(Element el) {
		List<AttrtoDrop = new ArrayList<Attr>();
		for (int i = 0; i < nnm.getLength(); i++) {
			Attr attr = (Attrnnm.item(i);
			if (attr.getName().startsWith("xmlns:")) {
				toDrop.add(attr);
			}
		}
		for (Attr attr : toDrop) {
		}
	}

If any child of el has prefix as prefix, remove it. drop all namespace decls on the way. If we find an element with a different prefix, go crazy.

	private static void removePrefixFromChildren(Element elString prefix)
		NodeList nl = el.getChildNodes();
		String localPrefix = null;
		for (int i = 0; i < nl.getLength(); i++) {
			Node n = nl.item(i);
			if (n.getNodeType() != .) {
				continue;
			}
			localPrefix = n.getPrefix();
			if (localPrefix != null && localPrefix.length() > 0) {
				if (!localPrefix.equals(prefix)) {
					IfmapJLog.warn("Extended Identifier: Multiple namespaces in extended identifer used."
"IfmapJ thinks this is not a wise idea. Sorry!");
					throw new MarshalException("Extended Identifier: Multiple namespaces in extended identifer used."
"IfmapJ thinks this is not a wise idea. Sorry!");
				}
				n.setPrefix(null);
			}
		}
	}

Marshal a org.w3c.dom.Document to java.io.InputStream

Parameters:
is the InputStream containing XML data
Returns:
org.w3c.dom.Document containg the XML data
Throws:
org.xml.sax.SAXException
java.io.IOException
	public static Document toDocument(InputStream isthrows MarshalException {
		try {
catch (SAXException e) {
			IfmapJLog.error(e.getMessage());
			throw new MarshalException(e.getMessage());
catch (IOException e) {
			IfmapJLog.error(e.getMessage());
			throw new MarshalException(e.getMessage());
		}
	}

Marshal a org.w3c.dom.Document from java.lang.String with XML data

Parameters:
s string containing XML data
c charset used for encoding the string
Returns:
org.w3c.dom.Document containg the XML data
Throws:
de.hshannover.f4.trust.ifmapj.exception.MarshalException
	public static Document toDocument(String sCharset cthrows MarshalException {
		byte[] bytes = c == null ? s.getBytes() : s.getBytes(c);
		return toDocument(bais);
	}

Compare two DOM documents

Parameters:
d1 First DOM document
d2 Second DOM document
Returns:
true if both are equal
Throws:
de.hshannover.f4.trust.ifmapj.exception.MarshalException
	public static boolean compare(Document d1Document d2throws MarshalException {
		return d1.isEqualNode(d2);
	}
New to GrepCode? Check out our FAQ X