summaryrefslogtreecommitdiff
path: root/recipes/xml-commons/dom4j-1.6.1
diff options
context:
space:
mode:
authorRobert Schuster <robertschuster@fsfe.org>2009-09-18 16:04:01 +0200
committerRobert Schuster <robertschuster@fsfe.org>2009-09-18 16:04:01 +0200
commit2e7c334a4f6b0882ee90c8be91f81d24e4d82496 (patch)
tree11c29c8c61eb8679015869fea7aab5e51cd8eec7 /recipes/xml-commons/dom4j-1.6.1
parent04800cfdf823ea3003eb1164c4d5dfd7e1db5679 (diff)
dom4j 1.6.1: New recipe (for Jalimo SVN).
dom4j-native 1.6.1: Dito. jaxen 1.1.1: Dito. xom 1.1: Dito. xpp2 2.1.10: Dito. xpp3 1.1.3.4.0: Dito.
Diffstat (limited to 'recipes/xml-commons/dom4j-1.6.1')
-rw-r--r--recipes/xml-commons/dom4j-1.6.1/debian.patch1628
1 files changed, 1628 insertions, 0 deletions
diff --git a/recipes/xml-commons/dom4j-1.6.1/debian.patch b/recipes/xml-commons/dom4j-1.6.1/debian.patch
new file mode 100644
index 0000000000..87fda85740
--- /dev/null
+++ b/recipes/xml-commons/dom4j-1.6.1/debian.patch
@@ -0,0 +1,1628 @@
+--- dom4j-1.6.1+dfsg.orig/src/java/org/jaxen/dom4j/DocumentNavigator.java
++++ dom4j-1.6.1+dfsg/src/java/org/jaxen/dom4j/DocumentNavigator.java
+@@ -0,0 +1,501 @@
++package org.jaxen.dom4j;
++
++/*
++ * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/dom4j/DocumentNavigator.java,v 1.33 2006/07/03 13:17:30 elharo Exp $
++ * $Revision: 1.33 $
++ * $Date: 2006/07/03 13:17:30 $
++ *
++ * ====================================================================
++ *
++ * Copyright 2000-2005 bob mcwhirter & James Strachan.
++ * All rights reserved.
++ *
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions are
++ * met:
++ *
++ * * Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ *
++ * * Redistributions in binary form must reproduce the above copyright
++ * notice, this list of conditions and the following disclaimer in the
++ * documentation and/or other materials provided with the distribution.
++ *
++ * * Neither the name of the Jaxen Project nor the names of its
++ * contributors may be used to endorse or promote products derived
++ * from this software without specific prior written permission.
++ *
++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
++ * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
++ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
++ * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
++ * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
++ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
++ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
++ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
++ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
++ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
++ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
++ *
++ * ====================================================================
++ * This software consists of voluntary contributions made by many
++ * individuals on behalf of the Jaxen Project and was originally
++ * created by bob mcwhirter <bob@werken.com> and
++ * James Strachan <jstrachan@apache.org>. For more information on the
++ * Jaxen Project, please see <http://www.jaxen.org/>.
++ *
++ * $Id: DocumentNavigator.java,v 1.33 2006/07/03 13:17:30 elharo Exp $
++*/
++
++import java.util.ArrayList;
++import java.util.HashSet;
++import java.util.Iterator;
++import java.util.List;
++
++import org.dom4j.Attribute;
++import org.dom4j.Branch;
++import org.dom4j.CDATA;
++import org.dom4j.Comment;
++import org.dom4j.Document;
++import org.dom4j.DocumentException;
++import org.dom4j.Element;
++import org.dom4j.Namespace;
++import org.dom4j.Node;
++import org.dom4j.ProcessingInstruction;
++import org.dom4j.QName;
++import org.dom4j.Text;
++import org.dom4j.io.SAXReader;
++import org.jaxen.DefaultNavigator;
++import org.jaxen.FunctionCallException;
++import org.jaxen.NamedAccessNavigator;
++import org.jaxen.Navigator;
++import org.jaxen.XPath;
++import org.jaxen.JaxenConstants;
++import org.jaxen.saxpath.SAXPathException;
++import org.jaxen.util.SingleObjectIterator;
++
++/**
++ * Interface for navigating around the DOM4J object model.
++ *
++ * <p>
++ * This class is not intended for direct usage, but is
++ * used by the Jaxen engine during evaluation.
++ * </p>
++ *
++ * @see XPath
++ *
++ * @author <a href="mailto:bob@werken.com">bob mcwhirter</a>
++ * @author Stephen Colebourne
++ */
++public class DocumentNavigator extends DefaultNavigator implements NamedAccessNavigator
++{
++
++ /**
++ *
++ */
++ private static final long serialVersionUID = 5582300797286535936L;
++ private transient SAXReader reader;
++
++ /** Singleton implementation.
++ */
++ private static class Singleton
++ {
++ /** Singleton instance.
++ */
++ private static DocumentNavigator instance = new DocumentNavigator();
++ }
++
++ /** Retrieve the singleton instance of this <code>DocumentNavigator</code>.
++ */
++ public static Navigator getInstance()
++ {
++ return Singleton.instance;
++ }
++
++ public boolean isElement(Object obj)
++ {
++ return obj instanceof Element;
++ }
++
++ public boolean isComment(Object obj)
++ {
++ return obj instanceof Comment;
++ }
++
++ public boolean isText(Object obj)
++ {
++ return ( obj instanceof Text
++ ||
++ obj instanceof CDATA );
++ }
++
++ public boolean isAttribute(Object obj)
++ {
++ return obj instanceof Attribute;
++ }
++
++ public boolean isProcessingInstruction(Object obj)
++ {
++ return obj instanceof ProcessingInstruction;
++ }
++
++ public boolean isDocument(Object obj)
++ {
++ return obj instanceof Document;
++ }
++
++ public boolean isNamespace(Object obj)
++ {
++ return obj instanceof Namespace;
++ }
++
++ public String getElementName(Object obj)
++ {
++ Element elem = (Element) obj;
++
++ return elem.getName();
++ }
++
++ public String getElementNamespaceUri(Object obj)
++ {
++ Element elem = (Element) obj;
++
++ String uri = elem.getNamespaceURI();
++ if ( uri == null)
++ return "";
++ else
++ return uri;
++ }
++
++ public String getElementQName(Object obj)
++ {
++ Element elem = (Element) obj;
++
++ return elem.getQualifiedName();
++ }
++
++ public String getAttributeName(Object obj)
++ {
++ Attribute attr = (Attribute) obj;
++
++ return attr.getName();
++ }
++
++ public String getAttributeNamespaceUri(Object obj)
++ {
++ Attribute attr = (Attribute) obj;
++
++ String uri = attr.getNamespaceURI();
++ if ( uri == null)
++ return "";
++ else
++ return uri;
++ }
++
++ public String getAttributeQName(Object obj)
++ {
++ Attribute attr = (Attribute) obj;
++
++ return attr.getQualifiedName();
++ }
++
++ public Iterator getChildAxisIterator(Object contextNode)
++ {
++ Iterator result = null;
++ if ( contextNode instanceof Branch )
++ {
++ Branch node = (Branch) contextNode;
++ result = node.nodeIterator();
++ }
++ if (result != null) {
++ return result;
++ }
++ return JaxenConstants.EMPTY_ITERATOR;
++ }
++
++ /**
++ * Retrieves an <code>Iterator</code> over the child elements that
++ * match the supplied name.
++ *
++ * @param contextNode the origin context node
++ * @param localName the local name of the children to return, always present
++ * @param namespacePrefix the prefix of the namespace of the children to return
++ * @param namespaceURI the uri of the namespace of the children to return
++ *
++ * @return an Iterator that traverses the named children, or null if none
++ */
++ public Iterator getChildAxisIterator(
++ Object contextNode, String localName, String namespacePrefix, String namespaceURI) {
++
++ if ( contextNode instanceof Element ) {
++ Element node = (Element) contextNode;
++ return node.elementIterator(QName.get(localName, namespacePrefix, namespaceURI));
++ }
++ if ( contextNode instanceof Document ) {
++ Document node = (Document) contextNode;
++ Element el = node.getRootElement();
++ if (el == null || el.getName().equals(localName) == false) {
++ return JaxenConstants.EMPTY_ITERATOR;
++ }
++ if (namespaceURI != null) {
++ if (namespaceURI.equals(el.getNamespaceURI()) == false) {
++ return JaxenConstants.EMPTY_ITERATOR;
++ }
++ }
++ return new SingleObjectIterator(el);
++ }
++
++ return JaxenConstants.EMPTY_ITERATOR;
++ }
++
++ public Iterator getParentAxisIterator(Object contextNode)
++ {
++ if ( contextNode instanceof Document )
++ {
++ return JaxenConstants.EMPTY_ITERATOR;
++ }
++
++ Node node = (Node) contextNode;
++
++ Object parent = node.getParent();
++
++ if ( parent == null )
++ {
++ parent = node.getDocument();
++ }
++
++ return new SingleObjectIterator( parent );
++ }
++
++ public Iterator getAttributeAxisIterator(Object contextNode)
++ {
++ if ( ! ( contextNode instanceof Element ) )
++ {
++ return JaxenConstants.EMPTY_ITERATOR;
++ }
++
++ Element elem = (Element) contextNode;
++
++ return elem.attributeIterator();
++ }
++
++ /**
++ * Retrieves an <code>Iterator</code> over the attribute elements that
++ * match the supplied name.
++ *
++ * @param contextNode the origin context node
++ * @param localName the local name of the attributes to return, always present
++ * @param namespacePrefix the prefix of the namespace of the attributes to return
++ * @param namespaceURI the URI of the namespace of the attributes to return
++ * @return an Iterator that traverses the named attributes, not null
++ */
++ public Iterator getAttributeAxisIterator(
++ Object contextNode, String localName, String namespacePrefix, String namespaceURI) {
++
++ if ( contextNode instanceof Element ) {
++ Element node = (Element) contextNode;
++ Attribute attr = node.attribute(QName.get(localName, namespacePrefix, namespaceURI));
++ if (attr == null) {
++ return JaxenConstants.EMPTY_ITERATOR;
++ }
++ return new SingleObjectIterator(attr);
++ }
++ return JaxenConstants.EMPTY_ITERATOR;
++ }
++
++ public Iterator getNamespaceAxisIterator(Object contextNode)
++ {
++ if ( ! ( contextNode instanceof Element ) )
++ {
++ return JaxenConstants.EMPTY_ITERATOR;
++ }
++
++ Element element = (Element) contextNode;
++ List nsList = new ArrayList();
++ HashSet prefixes = new HashSet();
++ for ( Element context = element; context != null; context = context.getParent() ) {
++ List declaredNS = new ArrayList(context.declaredNamespaces());
++ declaredNS.add(context.getNamespace());
++
++ for ( Iterator iter = context.attributes().iterator(); iter.hasNext(); )
++ {
++ Attribute attr = (Attribute) iter.next();
++ declaredNS.add(attr.getNamespace());
++ }
++
++ for ( Iterator iter = declaredNS.iterator(); iter.hasNext(); )
++ {
++ Namespace namespace = (Namespace) iter.next();
++ if (namespace != Namespace.NO_NAMESPACE)
++ {
++ String prefix = namespace.getPrefix();
++ if ( ! prefixes.contains( prefix ) ) {
++ prefixes.add( prefix );
++ nsList.add( namespace.asXPathResult( element ) );
++ }
++ }
++ }
++ }
++ nsList.add( Namespace.XML_NAMESPACE.asXPathResult( element ) );
++ return nsList.iterator();
++ }
++
++ public Object getDocumentNode(Object contextNode)
++ {
++ if ( contextNode instanceof Document )
++ {
++ return contextNode;
++ }
++ else if ( contextNode instanceof Node )
++ {
++ Node node = (Node) contextNode;
++ return node.getDocument();
++ }
++ return null;
++ }
++
++ /** Returns a parsed form of the given XPath string, which will be suitable
++ * for queries on DOM4J documents.
++ */
++ public XPath parseXPath (String xpath) throws SAXPathException
++ {
++ return new Dom4jXPath(xpath);
++ }
++
++ public Object getParentNode(Object contextNode)
++ {
++ if ( contextNode instanceof Node )
++ {
++ Node node = (Node) contextNode;
++ Object answer = node.getParent();
++ if ( answer == null )
++ {
++ answer = node.getDocument();
++ if (answer == contextNode) {
++ return null;
++ }
++ }
++ return answer;
++ }
++ return null;
++ }
++
++ public String getTextStringValue(Object obj)
++ {
++ return getNodeStringValue( (Node) obj );
++ }
++
++ public String getElementStringValue(Object obj)
++ {
++ return getNodeStringValue( (Node) obj );
++ }
++
++ public String getAttributeStringValue(Object obj)
++ {
++ return getNodeStringValue( (Node) obj );
++ }
++
++ private String getNodeStringValue(Node node)
++ {
++ return node.getStringValue();
++ }
++
++ public String getNamespaceStringValue(Object obj)
++ {
++ Namespace ns = (Namespace) obj;
++
++ return ns.getURI();
++ }
++
++ public String getNamespacePrefix(Object obj)
++ {
++ Namespace ns = (Namespace) obj;
++
++ return ns.getPrefix();
++ }
++
++ public String getCommentStringValue(Object obj)
++ {
++ Comment cmt = (Comment) obj;
++
++ return cmt.getText();
++ }
++
++ public String translateNamespacePrefixToUri(String prefix, Object context)
++ {
++ Element element = null;
++ if ( context instanceof Element )
++ {
++ element = (Element) context;
++ }
++ else if ( context instanceof Node )
++ {
++ Node node = (Node) context;
++ element = node.getParent();
++ }
++ if ( element != null )
++ {
++ Namespace namespace = element.getNamespaceForPrefix( prefix );
++
++ if ( namespace != null )
++ {
++ return namespace.getURI();
++ }
++ }
++ return null;
++ }
++
++ public short getNodeType(Object node)
++ {
++ if ( node instanceof Node )
++ {
++ return ((Node) node).getNodeType();
++ }
++ return 0;
++ }
++
++ public Object getDocument(String uri) throws FunctionCallException
++ {
++ try
++ {
++ return getSAXReader().read( uri );
++ }
++ catch (DocumentException e)
++ {
++ throw new FunctionCallException("Failed to parse document for URI: " + uri, e);
++ }
++ }
++
++ public String getProcessingInstructionTarget(Object obj)
++ {
++ ProcessingInstruction pi = (ProcessingInstruction) obj;
++
++ return pi.getTarget();
++ }
++
++ public String getProcessingInstructionData(Object obj)
++ {
++ ProcessingInstruction pi = (ProcessingInstruction) obj;
++
++ return pi.getText();
++ }
++
++ // Properties
++ //-------------------------------------------------------------------------
++ public SAXReader getSAXReader()
++ {
++ if ( reader == null )
++ {
++ reader = new SAXReader();
++ reader.setMergeAdjacentText( true );
++ }
++ return reader;
++ }
++
++ public void setSAXReader(SAXReader reader)
++ {
++ this.reader = reader;
++ }
++
++}
+--- dom4j-1.6.1+dfsg.orig/src/java/org/jaxen/dom4j/Dom4jXPath.java
++++ dom4j-1.6.1+dfsg/src/java/org/jaxen/dom4j/Dom4jXPath.java
+@@ -0,0 +1,94 @@
++/*
++ * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/dom4j/Dom4jXPath.java,v 1.8 2006/06/03 20:44:53 elharo Exp $
++ * $Revision: 1.8 $
++ * $Date: 2006/06/03 20:44:53 $
++ *
++ * ====================================================================
++ *
++ * Copyright 2000-2002 bob mcwhirter & James Strachan.
++ * All rights reserved.
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions are
++ * met:
++ *
++ * * Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ *
++ * * Redistributions in binary form must reproduce the above copyright
++ * notice, this list of conditions and the following disclaimer in the
++ * documentation and/or other materials provided with the distribution.
++ *
++ * * Neither the name of the Jaxen Project nor the names of its
++ * contributors may be used to endorse or promote products derived
++ * from this software without specific prior written permission.
++ *
++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
++ * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
++ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
++ * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
++ * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
++ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
++ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
++ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
++ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
++ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
++ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
++ *
++ * ====================================================================
++ * This software consists of voluntary contributions made by many
++ * individuals on behalf of the Jaxen Project and was originally
++ * created by bob mcwhirter <bob@werken.com> and
++ * James Strachan <jstrachan@apache.org>. For more information on the
++ * Jaxen Project, please see <http://www.jaxen.org/>.
++ *
++ * $Id: Dom4jXPath.java,v 1.8 2006/06/03 20:44:53 elharo Exp $
++ */
++
++
++
++package org.jaxen.dom4j;
++
++import org.jaxen.BaseXPath;
++import org.jaxen.JaxenException;
++
++/** An XPath implementation for the dom4j model
++ *
++ * <p>This is the main entry point for matching an XPath against a DOM
++ * tree. You create a compiled XPath object, then match it against
++ * one or more context nodes using the {@link #selectNodes(Object)}
++ * method, as in the following example:</p>
++ *
++ * <pre>
++ * Node node = ...;
++ * XPath path = new Dom4jXPath("a/b/c");
++ * List results = path.selectNodes(node);
++ * </pre>
++ *
++ * @see BaseXPath
++ * @see <a href="http://dom4j.org/">The dom4j website</a>
++ *
++ * @author <a href="mailto:bob@werken.com">bob mcwhirter</a>
++ * @author <a href="mailto:jstachan@apache.org">James Strachan</a>
++ *
++ * @version $Revision: 1.8 $
++ */
++public class Dom4jXPath extends BaseXPath
++{
++ /**
++ *
++ */
++ private static final long serialVersionUID = -75510941087659775L;
++
++ /** Construct given an XPath expression string.
++ *
++ * @param xpathExpr the XPath expression
++ *
++ * @throws JaxenException if there is a syntax error while
++ * parsing the expression
++ */
++ public Dom4jXPath(String xpathExpr) throws JaxenException
++ {
++ super( xpathExpr, DocumentNavigator.getInstance() );
++ }
++}
+--- dom4j-1.6.1+dfsg.orig/src/java/org/dom4j/dom/DOMAttribute.java
++++ dom4j-1.6.1+dfsg/src/java/org/dom4j/dom/DOMAttribute.java
+@@ -14,7 +14,10 @@
+ import org.w3c.dom.DOMException;
+ import org.w3c.dom.Document;
+ import org.w3c.dom.NamedNodeMap;
++import org.w3c.dom.Node;
+ import org.w3c.dom.NodeList;
++import org.w3c.dom.TypeInfo;
++import org.w3c.dom.UserDataHandler;
+
+ /**
+ * <p>
+@@ -179,6 +182,76 @@
+ public org.w3c.dom.Element getOwnerElement() {
+ return DOMNodeHelper.asDOMElement(getParent());
+ }
++
++ public TypeInfo getSchemaTypeInfo() {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public boolean isId() {
++ // TODO Auto-generated method stub
++ return false;
++ }
++
++ public String getBaseURI() {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public short compareDocumentPosition(Node other) throws DOMException {
++ // TODO Auto-generated method stub
++ return 0;
++ }
++
++ public String getTextContent() throws DOMException {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public void setTextContent(String textContent) throws DOMException {
++ // TODO Auto-generated method stub
++
++ }
++
++ public boolean isSameNode(Node other) {
++ // TODO Auto-generated method stub
++ return false;
++ }
++
++ public String lookupPrefix(String namespaceURI) {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public boolean isDefaultNamespace(String namespaceURI) {
++ // TODO Auto-generated method stub
++ return false;
++ }
++
++ public String lookupNamespaceURI(String prefix) {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public boolean isEqualNode(Node arg) {
++ // TODO Auto-generated method stub
++ return false;
++ }
++
++ public Object getFeature(String feature, String version) {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public Object setUserData(String key, Object data, UserDataHandler handler) {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public Object getUserData(String key) {
++ // TODO Auto-generated method stub
++ return null;
++ }
+ }
+
+ /*
+--- dom4j-1.6.1+dfsg.orig/src/java/org/dom4j/dom/DOMCDATA.java
++++ dom4j-1.6.1+dfsg/src/java/org/dom4j/dom/DOMCDATA.java
+@@ -14,7 +14,10 @@
+ import org.w3c.dom.DOMException;
+ import org.w3c.dom.Document;
+ import org.w3c.dom.NamedNodeMap;
++import org.w3c.dom.Node;
+ import org.w3c.dom.NodeList;
++import org.w3c.dom.Text;
++import org.w3c.dom.UserDataHandler;
+
+ /**
+ * <p>
+@@ -225,6 +228,81 @@
+ protected CDATA createCDATA(String text) {
+ return new DOMCDATA(text);
+ }
++
++ public boolean isElementContentWhitespace() {
++ // TODO Auto-generated method stub
++ return false;
++ }
++
++ public String getWholeText() {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public Text replaceWholeText(String content) throws DOMException {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public String getBaseURI() {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public short compareDocumentPosition(Node other) throws DOMException {
++ // TODO Auto-generated method stub
++ return 0;
++ }
++
++ public String getTextContent() throws DOMException {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public void setTextContent(String textContent) throws DOMException {
++ // TODO Auto-generated method stub
++
++ }
++
++ public boolean isSameNode(Node other) {
++ // TODO Auto-generated method stub
++ return false;
++ }
++
++ public String lookupPrefix(String namespaceURI) {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public boolean isDefaultNamespace(String namespaceURI) {
++ // TODO Auto-generated method stub
++ return false;
++ }
++
++ public String lookupNamespaceURI(String prefix) {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public boolean isEqualNode(Node arg) {
++ // TODO Auto-generated method stub
++ return false;
++ }
++
++ public Object getFeature(String feature, String version) {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public Object setUserData(String key, Object data, UserDataHandler handler) {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public Object getUserData(String key) {
++ // TODO Auto-generated method stub
++ return null;
++ }
+ }
+
+ /*
+--- dom4j-1.6.1+dfsg.orig/src/java/org/dom4j/dom/DOMComment.java
++++ dom4j-1.6.1+dfsg/src/java/org/dom4j/dom/DOMComment.java
+@@ -13,7 +13,9 @@
+ import org.w3c.dom.DOMException;
+ import org.w3c.dom.Document;
+ import org.w3c.dom.NamedNodeMap;
++import org.w3c.dom.Node;
+ import org.w3c.dom.NodeList;
++import org.w3c.dom.UserDataHandler;
+
+ /**
+ * <p>
+@@ -187,6 +189,66 @@
+ throws DOMException {
+ DOMNodeHelper.replaceData(this, offset, count, arg);
+ }
++
++ public String getBaseURI() {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public short compareDocumentPosition(Node other) throws DOMException {
++ // TODO Auto-generated method stub
++ return 0;
++ }
++
++ public String getTextContent() throws DOMException {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public void setTextContent(String textContent) throws DOMException {
++ // TODO Auto-generated method stub
++
++ }
++
++ public boolean isSameNode(Node other) {
++ // TODO Auto-generated method stub
++ return false;
++ }
++
++ public String lookupPrefix(String namespaceURI) {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public boolean isDefaultNamespace(String namespaceURI) {
++ // TODO Auto-generated method stub
++ return false;
++ }
++
++ public String lookupNamespaceURI(String prefix) {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public boolean isEqualNode(Node arg) {
++ // TODO Auto-generated method stub
++ return false;
++ }
++
++ public Object getFeature(String feature, String version) {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public Object setUserData(String key, Object data, UserDataHandler handler) {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public Object getUserData(String key) {
++ // TODO Auto-generated method stub
++ return null;
++ }
+ }
+
+ /*
+--- dom4j-1.6.1+dfsg.orig/src/java/org/dom4j/dom/DOMDocumentFactory.java
++++ dom4j-1.6.1+dfsg/src/java/org/dom4j/dom/DOMDocumentFactory.java
+@@ -174,6 +174,11 @@
+ docType.getPublicId(), docType.getSystemId());
+ }
+ }
++
++ public Object getFeature(String arg0, String arg1) {
++ // TODO Auto-generated method stub
++ return null;
++ }
+ }
+
+
+@@ -213,4 +218,4 @@
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
+- */
+\ No newline at end of file
++ */
+--- dom4j-1.6.1+dfsg.orig/src/java/org/dom4j/dom/DOMDocument.java
++++ dom4j-1.6.1+dfsg/src/java/org/dom4j/dom/DOMDocument.java
+@@ -15,12 +15,15 @@
+
+ import org.w3c.dom.Attr;
+ import org.w3c.dom.CDATASection;
++import org.w3c.dom.DOMConfiguration;
+ import org.w3c.dom.DOMException;
+ import org.w3c.dom.Document;
+ import org.w3c.dom.EntityReference;
+ import org.w3c.dom.NamedNodeMap;
++import org.w3c.dom.Node;
+ import org.w3c.dom.NodeList;
+ import org.w3c.dom.ProcessingInstruction;
++import org.w3c.dom.UserDataHandler;
+
+ /**
+ * <p>
+@@ -301,6 +304,136 @@
+ return super.getDocumentFactory();
+ }
+ }
++
++ public String getInputEncoding() {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public String getXmlEncoding() {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public boolean getXmlStandalone() {
++ // TODO Auto-generated method stub
++ return false;
++ }
++
++ public void setXmlStandalone(boolean arg0) throws DOMException {
++ // TODO Auto-generated method stub
++
++ }
++
++ public String getXmlVersion() {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public void setXmlVersion(String arg0) throws DOMException {
++ // TODO Auto-generated method stub
++
++ }
++
++ public boolean getStrictErrorChecking() {
++ // TODO Auto-generated method stub
++ return false;
++ }
++
++ public void setStrictErrorChecking(boolean arg0) {
++ // TODO Auto-generated method stub
++
++ }
++
++ public String getDocumentURI() {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public void setDocumentURI(String arg0) {
++ // TODO Auto-generated method stub
++
++ }
++
++ public Node adoptNode(Node arg0) throws DOMException {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public DOMConfiguration getDomConfig() {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public void normalizeDocument() {
++ // TODO Auto-generated method stub
++
++ }
++
++ public Node renameNode(Node arg0, String arg1, String arg2) throws DOMException {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public String getBaseURI() {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public short compareDocumentPosition(Node arg0) throws DOMException {
++ // TODO Auto-generated method stub
++ return 0;
++ }
++
++ public String getTextContent() throws DOMException {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public void setTextContent(String arg0) throws DOMException {
++ // TODO Auto-generated method stub
++
++ }
++
++ public boolean isSameNode(Node arg0) {
++ // TODO Auto-generated method stub
++ return false;
++ }
++
++ public String lookupPrefix(String arg0) {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public boolean isDefaultNamespace(String arg0) {
++ // TODO Auto-generated method stub
++ return false;
++ }
++
++ public String lookupNamespaceURI(String arg0) {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public boolean isEqualNode(Node arg0) {
++ // TODO Auto-generated method stub
++ return false;
++ }
++
++ public Object getFeature(String arg0, String arg1) {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public Object setUserData(String arg0, Object arg1, UserDataHandler arg2) {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public Object getUserData(String arg0) {
++ // TODO Auto-generated method stub
++ return null;
++ }
+ }
+
+ /*
+--- dom4j-1.6.1+dfsg.orig/src/java/org/dom4j/dom/DOMDocumentType.java
++++ dom4j-1.6.1+dfsg/src/java/org/dom4j/dom/DOMDocumentType.java
+@@ -12,7 +12,9 @@
+ import org.w3c.dom.DOMException;
+ import org.w3c.dom.Document;
+ import org.w3c.dom.NamedNodeMap;
++import org.w3c.dom.Node;
+ import org.w3c.dom.NodeList;
++import org.w3c.dom.UserDataHandler;
+
+ /**
+ * <p>
+@@ -177,6 +179,66 @@
+ public String getInternalSubset() {
+ return getElementName();
+ }
++
++ public String getBaseURI() {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public short compareDocumentPosition(Node arg0) throws DOMException {
++ // TODO Auto-generated method stub
++ return 0;
++ }
++
++ public String getTextContent() throws DOMException {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public void setTextContent(String arg0) throws DOMException {
++ // TODO Auto-generated method stub
++
++ }
++
++ public boolean isSameNode(Node arg0) {
++ // TODO Auto-generated method stub
++ return false;
++ }
++
++ public String lookupPrefix(String arg0) {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public boolean isDefaultNamespace(String arg0) {
++ // TODO Auto-generated method stub
++ return false;
++ }
++
++ public String lookupNamespaceURI(String arg0) {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public boolean isEqualNode(Node arg0) {
++ // TODO Auto-generated method stub
++ return false;
++ }
++
++ public Object getFeature(String arg0, String arg1) {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public Object setUserData(String arg0, Object arg1, UserDataHandler arg2) {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public Object getUserData(String arg0) {
++ // TODO Auto-generated method stub
++ return null;
++ }
+ }
+
+ /*
+--- dom4j-1.6.1+dfsg.orig/src/java/org/dom4j/dom/DOMElement.java
++++ dom4j-1.6.1+dfsg/src/java/org/dom4j/dom/DOMElement.java
+@@ -16,11 +16,14 @@
+ import org.dom4j.QName;
+ import org.dom4j.tree.DefaultElement;
+
++import org.w3c.dom.Attr;
+ import org.w3c.dom.DOMException;
+ import org.w3c.dom.Document;
+ import org.w3c.dom.NamedNodeMap;
+ import org.w3c.dom.Node;
+ import org.w3c.dom.NodeList;
++import org.w3c.dom.TypeInfo;
++import org.w3c.dom.UserDataHandler;
+
+ /**
+ * <p>
+@@ -389,6 +392,86 @@
+
+ return getDocumentFactory().createQName(localName, prefix, namespace);
+ }
++
++ public TypeInfo getSchemaTypeInfo() {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public void setIdAttribute(String arg0, boolean arg1) throws DOMException {
++ // TODO Auto-generated method stub
++
++ }
++
++ public void setIdAttributeNS(String arg0, String arg1, boolean arg2) throws DOMException {
++ // TODO Auto-generated method stub
++
++ }
++
++ public void setIdAttributeNode(Attr arg0, boolean arg1) throws DOMException {
++ // TODO Auto-generated method stub
++
++ }
++
++ public String getBaseURI() {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public short compareDocumentPosition(Node arg0) throws DOMException {
++ // TODO Auto-generated method stub
++ return 0;
++ }
++
++ public String getTextContent() throws DOMException {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public void setTextContent(String arg0) throws DOMException {
++ // TODO Auto-generated method stub
++
++ }
++
++ public boolean isSameNode(Node arg0) {
++ // TODO Auto-generated method stub
++ return false;
++ }
++
++ public String lookupPrefix(String arg0) {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public boolean isDefaultNamespace(String arg0) {
++ // TODO Auto-generated method stub
++ return false;
++ }
++
++ public String lookupNamespaceURI(String arg0) {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public boolean isEqualNode(Node arg0) {
++ // TODO Auto-generated method stub
++ return false;
++ }
++
++ public Object getFeature(String arg0, String arg1) {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public Object setUserData(String arg0, Object arg1, UserDataHandler arg2) {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public Object getUserData(String arg0) {
++ // TODO Auto-generated method stub
++ return null;
++ }
+ }
+
+ /*
+--- dom4j-1.6.1+dfsg.orig/src/java/org/dom4j/dom/DOMEntityReference.java
++++ dom4j-1.6.1+dfsg/src/java/org/dom4j/dom/DOMEntityReference.java
+@@ -13,7 +13,9 @@
+ import org.w3c.dom.DOMException;
+ import org.w3c.dom.Document;
+ import org.w3c.dom.NamedNodeMap;
++import org.w3c.dom.Node;
+ import org.w3c.dom.NodeList;
++import org.w3c.dom.UserDataHandler;
+
+ /**
+ * <p>
+@@ -166,6 +168,66 @@
+ public boolean hasAttributes() {
+ return DOMNodeHelper.hasAttributes(this);
+ }
++
++ public String getBaseURI() {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public short compareDocumentPosition(Node arg0) throws DOMException {
++ // TODO Auto-generated method stub
++ return 0;
++ }
++
++ public String getTextContent() throws DOMException {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public void setTextContent(String arg0) throws DOMException {
++ // TODO Auto-generated method stub
++
++ }
++
++ public boolean isSameNode(Node arg0) {
++ // TODO Auto-generated method stub
++ return false;
++ }
++
++ public String lookupPrefix(String arg0) {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public boolean isDefaultNamespace(String arg0) {
++ // TODO Auto-generated method stub
++ return false;
++ }
++
++ public String lookupNamespaceURI(String arg0) {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public boolean isEqualNode(Node arg0) {
++ // TODO Auto-generated method stub
++ return false;
++ }
++
++ public Object getFeature(String arg0, String arg1) {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public Object setUserData(String arg0, Object arg1, UserDataHandler arg2) {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public Object getUserData(String arg0) {
++ // TODO Auto-generated method stub
++ return null;
++ }
+ }
+
+ /*
+--- dom4j-1.6.1+dfsg.orig/src/java/org/dom4j/dom/DOMNamespace.java
++++ dom4j-1.6.1+dfsg/src/java/org/dom4j/dom/DOMNamespace.java
+@@ -13,7 +13,9 @@
+ import org.w3c.dom.DOMException;
+ import org.w3c.dom.Document;
+ import org.w3c.dom.NamedNodeMap;
++import org.w3c.dom.Node;
+ import org.w3c.dom.NodeList;
++import org.w3c.dom.UserDataHandler;
+
+ /**
+ * <p>
+@@ -140,6 +142,66 @@
+ public boolean hasAttributes() {
+ return DOMNodeHelper.hasAttributes(this);
+ }
++
++ public String getBaseURI() {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public short compareDocumentPosition(Node arg0) throws DOMException {
++ // TODO Auto-generated method stub
++ return 0;
++ }
++
++ public String getTextContent() throws DOMException {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public void setTextContent(String arg0) throws DOMException {
++ // TODO Auto-generated method stub
++
++ }
++
++ public boolean isSameNode(Node arg0) {
++ // TODO Auto-generated method stub
++ return false;
++ }
++
++ public String lookupPrefix(String arg0) {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public boolean isDefaultNamespace(String arg0) {
++ // TODO Auto-generated method stub
++ return false;
++ }
++
++ public String lookupNamespaceURI(String arg0) {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public boolean isEqualNode(Node arg0) {
++ // TODO Auto-generated method stub
++ return false;
++ }
++
++ public Object getFeature(String arg0, String arg1) {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public Object setUserData(String arg0, Object arg1, UserDataHandler arg2) {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public Object getUserData(String arg0) {
++ // TODO Auto-generated method stub
++ return null;
++ }
+ }
+
+ /*
+--- dom4j-1.6.1+dfsg.orig/src/java/org/dom4j/dom/DOMProcessingInstruction.java
++++ dom4j-1.6.1+dfsg/src/java/org/dom4j/dom/DOMProcessingInstruction.java
+@@ -15,7 +15,9 @@
+ import org.w3c.dom.DOMException;
+ import org.w3c.dom.Document;
+ import org.w3c.dom.NamedNodeMap;
++import org.w3c.dom.Node;
+ import org.w3c.dom.NodeList;
++import org.w3c.dom.UserDataHandler;
+
+ /**
+ * <p>
+@@ -177,6 +179,66 @@
+ }
+ }
+
++ public String getBaseURI() {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public short compareDocumentPosition(Node arg0) throws DOMException {
++ // TODO Auto-generated method stub
++ return 0;
++ }
++
++ public String getTextContent() throws DOMException {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public void setTextContent(String arg0) throws DOMException {
++ // TODO Auto-generated method stub
++
++ }
++
++ public boolean isSameNode(Node arg0) {
++ // TODO Auto-generated method stub
++ return false;
++ }
++
++ public String lookupPrefix(String arg0) {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public boolean isDefaultNamespace(String arg0) {
++ // TODO Auto-generated method stub
++ return false;
++ }
++
++ public String lookupNamespaceURI(String arg0) {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public boolean isEqualNode(Node arg0) {
++ // TODO Auto-generated method stub
++ return false;
++ }
++
++ public Object getFeature(String arg0, String arg1) {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public Object setUserData(String arg0, Object arg1, UserDataHandler arg2) {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public Object getUserData(String arg0) {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
+ // Implementation methods
+ // -------------------------------------------------------------------------
+ }
+--- dom4j-1.6.1+dfsg.orig/src/java/org/dom4j/dom/DOMText.java
++++ dom4j-1.6.1+dfsg/src/java/org/dom4j/dom/DOMText.java
+@@ -14,7 +14,9 @@
+ import org.w3c.dom.DOMException;
+ import org.w3c.dom.Document;
+ import org.w3c.dom.NamedNodeMap;
++import org.w3c.dom.Node;
+ import org.w3c.dom.NodeList;
++import org.w3c.dom.UserDataHandler;
+
+ /**
+ * <p>
+@@ -224,6 +226,81 @@
+ protected Text createText(String text) {
+ return new DOMText(text);
+ }
++
++ public boolean isElementContentWhitespace() {
++ // TODO Auto-generated method stub
++ return false;
++ }
++
++ public String getWholeText() {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public org.w3c.dom.Text replaceWholeText(String arg0) throws DOMException {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public String getBaseURI() {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public short compareDocumentPosition(Node arg0) throws DOMException {
++ // TODO Auto-generated method stub
++ return 0;
++ }
++
++ public String getTextContent() throws DOMException {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public void setTextContent(String arg0) throws DOMException {
++ // TODO Auto-generated method stub
++
++ }
++
++ public boolean isSameNode(Node arg0) {
++ // TODO Auto-generated method stub
++ return false;
++ }
++
++ public String lookupPrefix(String arg0) {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public boolean isDefaultNamespace(String arg0) {
++ // TODO Auto-generated method stub
++ return false;
++ }
++
++ public String lookupNamespaceURI(String arg0) {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public boolean isEqualNode(Node arg0) {
++ // TODO Auto-generated method stub
++ return false;
++ }
++
++ public Object getFeature(String arg0, String arg1) {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public Object setUserData(String arg0, Object arg1, UserDataHandler arg2) {
++ // TODO Auto-generated method stub
++ return null;
++ }
++
++ public Object getUserData(String arg0) {
++ // TODO Auto-generated method stub
++ return null;
++ }
+ }
+
+ /*
+--- dom4j-1.6.1+dfsg.orig/src/java/org/dom4j/tree/NamespaceCache.java
++++ dom4j-1.6.1+dfsg/src/java/org/dom4j/tree/NamespaceCache.java
+@@ -26,42 +26,46 @@
+ * @version $Revision: 1.15 $
+ */
+ public class NamespaceCache {
+- private static final String CONCURRENTREADERHASHMAP_CLASS
+- = "EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap";
++ private static final String BACKPORT_CONCURRENTHASHMAP_CLASS
++ = "edu.emory.mathcs.backport.java.util.concurrent.ConcurrentHashMap";
++ private static final String OSWEGO_CONCURRENTHASHMAP_CLASS
++ = "EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap";
+
+ /**
+ * Cache of {@link Map}instances indexed by URI which contain caches of
+ * {@link Namespace}for each prefix
+ */
+- protected static Map cache;
++ protected static Map cache = newConcurrentHashMap();
+
+ /**
+ * Cache of {@link Namespace}instances indexed by URI for default
+ * namespaces with no prefixes
+ */
+- protected static Map noPrefixCache;
++ protected static Map noPrefixCache = newConcurrentHashMap();
+
+- static {
++ protected static Map newConcurrentHashMap()
++ {
+ /* Try the java.util.concurrent.ConcurrentHashMap first. */
+ try {
+ Class clazz = Class
+ .forName("java.util.concurrent.ConcurrentHashMap");
+ Constructor construct = clazz.getConstructor(new Class[] {
+ Integer.TYPE, Float.TYPE, Integer.TYPE });
+- cache = (Map) construct.newInstance(new Object[] {new Integer(11),
++ return (Map) construct.newInstance(new Object[] {new Integer(11),
+ new Float(0.75f), new Integer(1) });
+- noPrefixCache = (Map) construct.newInstance(new Object[] {
+- new Integer(11), new Float(0.75f), new Integer(1) });
+ } catch (Throwable t1) {
+- /* Try to use the util.concurrent library (if in classpath) */
+ try {
+- Class clazz = Class.forName(CONCURRENTREADERHASHMAP_CLASS);
+- cache = (Map) clazz.newInstance();
+- noPrefixCache = (Map) clazz.newInstance();
++ /* Try to use the backport-util-concurrent library */
++ Class clazz = Class.forName(BACKPORT_CONCURRENTHASHMAP_CLASS);
++ return (Map) clazz.newInstance();
+ } catch (Throwable t2) {
+- /* If previous implementations fail, use internal one */
+- cache = new ConcurrentReaderHashMap();
+- noPrefixCache = new ConcurrentReaderHashMap();
++ try {
++ /* Try to use the oswego concurrent library */
++ Class clazz = Class.forName(OSWEGO_CONCURRENTHASHMAP_CLASS);
++ return (Map) clazz.newInstance();
++ } catch (Throwable t3) {
++ return null;
++ }
+ }
+ }
+ }
+@@ -154,7 +158,7 @@
+ answer = (Map) cache.get(uri);
+
+ if (answer == null) {
+- answer = new ConcurrentReaderHashMap();
++ answer = newConcurrentHashMap();
+ cache.put(uri, answer);
+ }
+ }