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.3.0, implemented by the Trust@HsH
  * research group at the Hochschule Hannover.
  * %%
  * Copyright (C) 2010 - 2015 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 de.hshannover.f4.trust.ifmapj.metadata;
 
 
 
 
Factory for Metadata wrapper instances.
 
 public class MetadataWrapper {
 
 	private static final XPathFactory XPATH_FACTORY = XPathFactory.newInstance();
 
 	private static final TransformerFactory TRANSFORMER_FACTORY =
 			TransformerFactory.newInstance();

Default namespace context which uses the prefixes 'meta' and 'ifmap' as specified in TNC IF-MAP Binding for SOAP version 2.2.
 
 	public static final NamespaceContext DEFAULT_NAMESPACE_CONTEXT = new NamespaceContext() {
 
 		public Iterator getPrefixes(String namespaceURI) {
 			return Arrays.asList(
 						.iterator();
 		}
 
 		public String getPrefix(String namespaceURI) {
 			if (namespaceURI.equals(.)) {
 			} else if (namespaceURI.equals(.)) {
else {
				return null;
			}
		}
		public String getNamespaceURI(String prefix) {
else if (prefix.equals(.)) {
else {
			}
		}
	};

Create a Metadata instance for the given document.

Parameters:
document a metadata document
Returns:
the wrapped metadata
	public static Metadata metadata(Document document) {
		try {
			Transformer printFormatTransformer = .newTransformer();
			printFormatTransformer.setOutputProperty(."yes");
			printFormatTransformer.setOutputProperty(."xml");
			printFormatTransformer.setOutputProperty(."yes");
			printFormatTransformer.setOutputProperty(."UTF-8");
			printFormatTransformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount""2");
			equalsTransformer.setOutputProperty(."no");
			equalsTransformer.setOutputProperty(."xml");
			return new MetadataWrapperImpl(
					document,
					xPath,
					printFormatTransformer,
					equalsTransformer);
			throw new RuntimeException(e);
		}
	}


Wrapper implementation which uses javax.xml.xpath.XPath to extract values from org.w3c.dom.Document instances.
	private static class MetadataWrapperImpl implements Metadata {
		// TODO add lazy initialized attributes for publisherId, publishTimestamp, ...
		final XPath mXpath;
Create a wrapper instance for the given document.

Parameters:
document the document to wrap
xpath the XPATH instance for this wrapper
printFormatTransformer the transformer to use for pretty printing
namespaceContext the namespace context for XPath operations
equalsTransformer the transformer to use for canonical serialization
				Document document,
				XPath xpath,
				Transformer printFormatTransformer,
				NamespaceContext namespaceContext,
				Transformer equalsTransformer) {
			 = document;
			 = xpath;
			 = printFormatTransformer;
			.setNamespaceContext(namespaceContext);
			 = equalsTransformer;
		}
		/*
		 * Evaluate the given XPATH expression on the given document. Return
		 * the result as a string or null if an error occurred.
		 */
		private String getValueFromExpression(String expressionDocument doc) {
			try {
catch (XPathExpressionException e) {
				IfmapJLog.error("could not evaluate '" + expression + "' on '" +  + "'");
				return null;
			}
		}
		public String getPublisherId() {
			return getValueFromExpression("/*/@ifmap-publisher-id");
		}
			return getValueFromExpression("/*/@ifmap-timestamp");
		}
		public double getPublishTimestampFraction() {
			String fractionString = getValueFromExpression(
					"/*/@ifmap-timestamp-fraction");
			try {
				return Double.parseDouble(fractionString);
catch (NumberFormatException e) {
				return 0.0;
			}
		}
		public String getTypename() {
			return getValueFromExpression("name(/*)");
		}
		public String getLocalname() {
			return getValueFromExpression("local-name(/*)");
		}
		public String getCardinality() {
			return getValueFromExpression("/*/@ifmap-cardinality");
		}
		public boolean isSingleValue() {
			return getCardinality().equals("singleValue");
		}
		public boolean isMultiValue() {
			return getCardinality().equals("multiValue");
		}
		public String getValueForXpathExpression(String xPathExpression) {
			return getValueFromExpression(xPathExpression);
		}
				String defaultValue) {
			String result = getValueForXpathExpression(xPathExpression);
			if (result == null) {
				return defaultValue;
else {
				return result;
			}
		}
			StringWriter writer = new StringWriter();
			try {
						new DOMSource(), new StreamResult(writer));
catch (TransformerException e) {
				throw new RuntimeException(e);
			}
			return writer.toString();
		}
		public void setNamespaceContext(NamespaceContext context) {
		}
		private String toCanonicalXml() {
			try {
				XMLReader reader = XMLReaderFactory.createXMLReader();
				ByteArrayOutputStream byteArrayOutput = new ByteArrayOutputStream();
				Result result = new StreamResult(byteArrayOutput);
				.transform(domSourceresult);
				ByteArrayInputStream byteArrayInput = new ByteArrayInputStream(byteArrayOutput.toByteArray());
				InputSource input = new InputSource(byteArrayInput);
				CanonicalXML canonicalXml = new CanonicalXML();
				return canonicalXml.toCanonicalXml2(readerinputtrue);
catch (Exception e) {
				throw new RuntimeException(e);
			}
		}
		public int hashCode() {
			final int prime = 31;
			int result = 1;
			result = prime * result
			return result;
		}
		public boolean equals(Object obj) {
			if (this == obj)
				return true;
			if (obj == null)
				return false;
			if (getClass() != obj.getClass())
				return false;
		}
	}
New to GrepCode? Check out our FAQ X