Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package util;
  
  /*
   * #%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 1.0.0, implemented by the Trust@HsH
  * research group at the Hochschule Hannover.
  * 
  * IfmapJ is a lightweight, platform-independent, easy-to-use IF-MAP client
  * library for Java. IF-MAP is an XML based protocol for sharing data across
  * arbitrary components, specified by the Trusted Computing Group. IfmapJ is
  * maintained by the Trust@HsH group at the Hochschule Hannover. IfmapJ
  * was developed within the ESUKOM research project.
  * %%
  * Copyright (C) 2010 - 2013 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%
  */
 
 import java.util.List;
 
 
 
Some helpers to handle javax.xml and org.w3c.* stuff...

Author(s):
aw
jk
Since:
0.1.4
 
 public class DomHelpers {
 	
 	private static final DocumentBuilder sDocumentBuilder;
 	private static final TransformerFactory sTransformerFactory;
 	
 	static {
 		 = TransformerFactory.newInstance();
		 = DocumentBuilderFactory.newInstance();
	}
	public static final DocumentBuilder newDocumentBuilder() {
		try {
			IfmapJLog.error(e.getMessage());
			throw new RuntimeException(e.getMessage());
		}
	}
	public static final Element createNonNsElement(Document docString name) {
		return doc.createElementNS(nullname);
	}
	public static final void addAttribute(Element elString nameString val) {
		el.setAttributeNS(nullnameval);
	}
			Element to) {
		for (Pair<StringStringnsDecl : nsh.getNamespaceDeclarations()) {
			String name = "xmlns";
			String value;
			if (nsDecl.first.length() > 0)
				name += ":" + nsDecl.first;
			value = nsDecl.second;
			to.setAttributeNS("http://www.w3.org/2000/xmlns/"namevalue);
		}
	}
	public static final String makeRequestFQName(String name) {
		return . + ":" + name;
	}
	public static final boolean elementMatches(Element elString elname) {
		return elementMatches(elelname.);
	}
	public static final 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 final 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((Element)child);
		}
		return ret;
	}
	public static final 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((Element)nnameuri)) {
				ret = (Element)n;
				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 final Document deepCopy(Element child) {
		Element el = (ElementmdDoc.importNode(childtrue);
		mdDoc.appendChild(el);
		return mdDoc;
	}


	public static final 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 final 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();
			throw new RuntimeException("No element");
		el = (Element)n;
		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 = (Attr)nnm.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);
				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 final 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 final Document toDocument(String sCharset c)
		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