You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2010/09/17 01:59:38 UTC
svn commit: r997955 - in /jackrabbit/trunk:
jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/
jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/version/report/
jackrabbit-jcr-server/src/main/java/org/apache/jackra...
Author: jukka
Date: Thu Sep 16 23:59:38 2010
New Revision: 997955
URL: http://svn.apache.org/viewvc?rev=997955&view=rev
Log:
JCR-2638: Litmus locks test failures
Consolidate duplicate code to the new DomUtil.createDocument() and .parseDocument() methods, and use an explicit error handler instance to prevent system out prints by parser libraries like Xerces.
Modified:
jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/DefaultItemCollection.java
jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/DefaultItemResource.java
jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/version/report/ExportViewReport.java
jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/simple/ResourceConfig.java
jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/ExceptionConverter.java
jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/RepositoryServiceImpl.java
jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2davex/QValueFactoryImpl.java
jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/WebdavRequestImpl.java
jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/WebdavResponseImpl.java
jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/methods/BaselineControlMethod.java
jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/methods/DavMethodBase.java
jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/methods/PropFindMethod.java
jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/methods/PropPatchMethod.java
jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/xml/DomUtil.java
jackrabbit/trunk/jackrabbit-webdav/src/test/java/org/apache/jackrabbit/webdav/lock/ActiveLockTest.java
Modified: jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/DefaultItemCollection.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/DefaultItemCollection.java?rev=997955&r1=997954&r2=997955&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/DefaultItemCollection.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/DefaultItemCollection.java Thu Sep 16 23:59:38 2010
@@ -1000,7 +1000,7 @@ public class DefaultItemCollection exten
private ValuesProperty buildValuesProperty(InputStream in) {
String errorMsg = "Cannot parse stream into a 'ValuesProperty'.";
try {
- Document reqBody = DomUtil.BUILDER_FACTORY.newDocumentBuilder().parse(in);
+ Document reqBody = DomUtil.parseDocument(in);
DavProperty<?> defaultProp = DefaultDavProperty.createFromXml(reqBody.getDocumentElement());
ValuesProperty vp = new ValuesProperty(defaultProp, PropertyType.STRING, getRepositorySession().getValueFactory());
return vp;
Modified: jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/DefaultItemResource.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/DefaultItemResource.java?rev=997955&r1=997954&r2=997955&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/DefaultItemResource.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/DefaultItemResource.java Thu Sep 16 23:59:38 2010
@@ -136,8 +136,7 @@ public class DefaultItemResource extends
private void spoolMultiValued(OutputStream out) {
try {
- Document doc =
- DomUtil.BUILDER_FACTORY.newDocumentBuilder().newDocument();
+ Document doc = DomUtil.createDocument();
doc.appendChild(getProperty(JCR_VALUES).toXml(doc));
ContentHandler handler =
Modified: jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/version/report/ExportViewReport.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/version/report/ExportViewReport.java?rev=997955&r1=997954&r2=997955&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/version/report/ExportViewReport.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/version/report/ExportViewReport.java Thu Sep 16 23:59:38 2010
@@ -138,8 +138,8 @@ public class ExportViewReport extends Ab
}
out.close();
- InputStream in = new FileInputStream(tmpfile);
- Document tmpDoc = DomUtil.BUILDER_FACTORY.newDocumentBuilder().parse(in);
+ Document tmpDoc =
+ DomUtil.parseDocument(new FileInputStream(tmpfile));
// import the root node of the generated xml to the given document.
Element rootElem = (Element)document.importNode(tmpDoc.getDocumentElement(), true);
Modified: jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/simple/ResourceConfig.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/simple/ResourceConfig.java?rev=997955&r1=997954&r2=997955&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/simple/ResourceConfig.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/simple/ResourceConfig.java Thu Sep 16 23:59:38 2010
@@ -25,7 +25,6 @@ import java.util.List;
import javax.jcr.Item;
import javax.jcr.Node;
import javax.jcr.RepositoryException;
-import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.ParserConfigurationException;
import org.apache.jackrabbit.server.io.DefaultIOManager;
@@ -39,7 +38,6 @@ import org.apache.jackrabbit.webdav.xml.
import org.apache.tika.detect.Detector;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.xml.sax.SAXException;
@@ -105,9 +103,7 @@ public class ResourceConfig {
public void parse(URL configURL) {
try {
InputStream in = configURL.openStream();
- DocumentBuilder builder = DomUtil.BUILDER_FACTORY.newDocumentBuilder();
- Document document = builder.parse(in);
- Element config = document.getDocumentElement();
+ Element config = DomUtil.parseDocument(in).getDocumentElement();
if (config == null) {
log.warn("Resource configuration: mandatory 'config' element is missing.");
Modified: jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/ExceptionConverter.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/ExceptionConverter.java?rev=997955&r1=997954&r2=997955&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/ExceptionConverter.java (original)
+++ jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/ExceptionConverter.java Thu Sep 16 23:59:38 2010
@@ -55,7 +55,7 @@ public class ExceptionConverter {
String msg = davExc.getMessage();
if (davExc.hasErrorCondition()) {
try {
- Element error = davExc.toXml(DomUtil.BUILDER_FACTORY.newDocumentBuilder().newDocument());
+ Element error = davExc.toXml(DomUtil.createDocument());
if (DomUtil.matches(error, DavException.XML_ERROR, DavConstants.NAMESPACE)) {
if (DomUtil.hasChildElement(error, "exception", null)) {
Element exc = DomUtil.getChildElement(error, "exception", null);
Modified: jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/RepositoryServiceImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/RepositoryServiceImpl.java?rev=997955&r1=997954&r2=997955&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/RepositoryServiceImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/RepositoryServiceImpl.java Thu Sep 16 23:59:38 2010
@@ -53,7 +53,6 @@ import javax.jcr.nodetype.NoSuchNodeType
import javax.jcr.nodetype.NodeTypeExistsException;
import javax.jcr.query.InvalidQueryException;
import javax.jcr.version.VersionException;
-import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.ParserConfigurationException;
import org.apache.commons.httpclient.Header;
@@ -256,7 +255,7 @@ public class RepositoryServiceImpl imple
this.itemInfoCacheSize = itemInfoCacheSize;
try {
- domFactory = DomUtil.BUILDER_FACTORY.newDocumentBuilder().newDocument();
+ domFactory = DomUtil.createDocument();
} catch (ParserConfigurationException e) {
throw new RepositoryException(e);
}
@@ -1157,8 +1156,7 @@ public class RepositoryServiceImpl imple
private QValue[] getValues(InputStream response, NamePathResolver resolver, ItemId id) throws RepositoryException {
try {
- DocumentBuilder db = DomUtil.BUILDER_FACTORY.newDocumentBuilder();
- Document doc = db.parse(response);
+ Document doc = DomUtil.parseDocument(response);
Element prop = DomUtil.getChildElement(doc, ItemResourceConstants.JCR_VALUES.getName(), ItemResourceConstants.JCR_VALUES.getNamespace());
if (prop == null) {
// no jcr-values present in the response body -> apparently
@@ -2421,7 +2419,7 @@ public class RepositoryServiceImpl imple
MkColMethod method = new MkColMethod(uri);
// build 'sys-view' for the node to create and append it as request body
- Document body = DomUtil.BUILDER_FACTORY.newDocumentBuilder().newDocument();
+ Document body = DomUtil.createDocument();
Element nodeElement = DomUtil.addChildElement(body, NODE_ELEMENT, SV_NAMESPACE);
String nameAttr = resolver.getJCRName(nodeName);
DomUtil.setAttribute(nodeElement, NAME_ATTRIBUTE, SV_NAMESPACE, nameAttr);
Modified: jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2davex/QValueFactoryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2davex/QValueFactoryImpl.java?rev=997955&r1=997954&r2=997955&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2davex/QValueFactoryImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2davex/QValueFactoryImpl.java Thu Sep 16 23:59:38 2010
@@ -16,7 +16,6 @@
*/
package org.apache.jackrabbit.spi2davex;
-
import static org.apache.jackrabbit.webdav.DavConstants.HEADER_ETAG;
import static org.apache.jackrabbit.webdav.DavConstants.HEADER_LAST_MODIFIED;
@@ -41,7 +40,6 @@ import javax.jcr.PropertyType;
import javax.jcr.RepositoryException;
import javax.jcr.Value;
import javax.jcr.ValueFactory;
-import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.ParserConfigurationException;
import java.io.ByteArrayInputStream;
@@ -550,8 +548,7 @@ class QValueFactoryImpl extends org.apac
} else {
// TODO: improve. jcr-server sends XML for multivalued properties
try {
- DocumentBuilder db = DomUtil.BUILDER_FACTORY.newDocumentBuilder();
- Document doc = db.parse(in);
+ Document doc = DomUtil.parseDocument(in);
Element prop = DomUtil.getChildElement(doc, ItemResourceConstants.JCR_VALUES.getName(), ItemResourceConstants.JCR_VALUES.getNamespace());
DavProperty<?> p = DefaultDavProperty.createFromXml(prop);
ValuesProperty vp = new ValuesProperty(p, PropertyType.BINARY, vf);
Modified: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/WebdavRequestImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/WebdavRequestImpl.java?rev=997955&r1=997954&r2=997955&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/WebdavRequestImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/WebdavRequestImpl.java Thu Sep 16 23:59:38 2010
@@ -36,7 +36,6 @@ import javax.servlet.ServletInputStream;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
-import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.ParserConfigurationException;
import org.apache.jackrabbit.webdav.bind.BindInfo;
@@ -300,8 +299,7 @@ public class WebdavRequestImpl implement
boolean isEmpty = -1 == bin.read();
bin.reset();
if (!isEmpty) {
- DocumentBuilder docBuilder = DomUtil.BUILDER_FACTORY.newDocumentBuilder();
- requestDocument = docBuilder.parse(bin);
+ requestDocument = DomUtil.parseDocument(bin);
}
}
} catch (IOException e) {
Modified: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/WebdavResponseImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/WebdavResponseImpl.java?rev=997955&r1=997954&r2=997955&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/WebdavResponseImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/WebdavResponseImpl.java Thu Sep 16 23:59:38 2010
@@ -141,11 +141,11 @@ public class WebdavResponseImpl implemen
if (serializable != null) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
try {
- Document doc = DomUtil.BUILDER_FACTORY.newDocumentBuilder().newDocument();
+ Document doc = DomUtil.createDocument();
doc.appendChild(serializable.toXml(doc));
// JCR-2636: Need to use an explicit OutputStreamWriter
- // instead of relying on the built-in UTF-8 serialisation
+ // instead of relying on the built-in UTF-8 serialization
// to avoid problems with surrogate pairs on Sun JRE 1.5.
Writer writer = new OutputStreamWriter(
out, SerializingContentHandler.ENCODING);
Modified: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/methods/BaselineControlMethod.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/methods/BaselineControlMethod.java?rev=997955&r1=997954&r2=997955&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/methods/BaselineControlMethod.java (original)
+++ jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/methods/BaselineControlMethod.java Thu Sep 16 23:59:38 2010
@@ -45,7 +45,7 @@ public class BaselineControlMethod exten
// build the request body
try {
// create the document and attach the root element
- Document document = BUILDER_FACTORY.newDocumentBuilder().newDocument();
+ Document document = DomUtil.createDocument();
Element el = DomUtil.addChildElement(document, "baseline-control", DeltaVConstants.NAMESPACE);
el.appendChild(DomUtil.hrefToXml(baselineHref, document));
// set the request body
Modified: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/methods/DavMethodBase.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/methods/DavMethodBase.java?rev=997955&r1=997954&r2=997955&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/methods/DavMethodBase.java (original)
+++ jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/methods/DavMethodBase.java Thu Sep 16 23:59:38 2010
@@ -34,10 +34,7 @@ import org.slf4j.LoggerFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.xml.sax.SAXException;
-import org.xml.sax.helpers.DefaultHandler;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import java.io.IOException;
import java.io.InputStream;
@@ -49,8 +46,6 @@ public abstract class DavMethodBase exte
private static Logger log = LoggerFactory.getLogger(DavMethodBase.class);
- static final DocumentBuilderFactory BUILDER_FACTORY = DomUtil.BUILDER_FACTORY;
-
private boolean success;
private Document responseDocument;
private MultiStatus multiStatus;
@@ -115,10 +110,7 @@ public abstract class DavMethodBase exte
if (in != null) {
// read response and try to build a xml document
try {
- DocumentBuilder docBuilder = BUILDER_FACTORY.newDocumentBuilder();
- docBuilder.setErrorHandler(new DefaultHandler());
- responseDocument = docBuilder.parse(in);
- return responseDocument;
+ return DomUtil.parseDocument(in);
} catch (ParserConfigurationException e) {
IOException exception =
new IOException("XML parser configuration error");
@@ -208,7 +200,7 @@ public abstract class DavMethodBase exte
*/
public void setRequestBody(XmlSerializable requestBody) throws IOException {
try {
- Document doc = BUILDER_FACTORY.newDocumentBuilder().newDocument();
+ Document doc = DomUtil.createDocument();
doc.appendChild(requestBody.toXml(doc));
setRequestBody(doc);
} catch (ParserConfigurationException e) {
Modified: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/methods/PropFindMethod.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/methods/PropFindMethod.java?rev=997955&r1=997954&r2=997955&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/methods/PropFindMethod.java (original)
+++ jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/methods/PropFindMethod.java Thu Sep 16 23:59:38 2010
@@ -79,7 +79,7 @@ public class PropFindMethod extends DavM
// build the request body
try {
// create the document and attach the root element
- Document document = BUILDER_FACTORY.newDocumentBuilder().newDocument();
+ Document document = DomUtil.createDocument();
Element propfind = DomUtil.createElement(document, XML_PROPFIND, NAMESPACE);
document.appendChild(propfind);
Modified: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/methods/PropPatchMethod.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/methods/PropPatchMethod.java?rev=997955&r1=997954&r2=997955&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/methods/PropPatchMethod.java (original)
+++ jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/methods/PropPatchMethod.java Thu Sep 16 23:59:38 2010
@@ -65,7 +65,7 @@ public class PropPatchMethod extends Dav
throw new IllegalArgumentException("PROPPATCH cannot be executed without properties to be set or removed.");
}
try {
- Document document = BUILDER_FACTORY.newDocumentBuilder().newDocument();
+ Document document = DomUtil.createDocument();
Element propUpdateElement = DomUtil.addChildElement(document, XML_PROPERTYUPDATE, NAMESPACE);
Element propElement = null;
@@ -115,7 +115,7 @@ public class PropPatchMethod extends Dav
}
try {
- Document document = BUILDER_FACTORY.newDocumentBuilder().newDocument();
+ Document document = DomUtil.createDocument();
Element propupdate = DomUtil.addChildElement(document, XML_PROPERTYUPDATE, NAMESPACE);
// DAV:set
if (!setProperties.isEmpty()) {
Modified: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/xml/DomUtil.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/xml/DomUtil.java?rev=997955&r1=997954&r2=997955&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/xml/DomUtil.java (original)
+++ jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/xml/DomUtil.java Thu Sep 16 23:59:38 2010
@@ -27,8 +27,16 @@ import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;
import org.w3c.dom.NamedNodeMap;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.DefaultHandler;
+import javax.xml.XMLConstants;
+import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import java.io.IOException;
+import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
@@ -41,14 +49,53 @@ public class DomUtil {
/**
* Constant for <code>DocumentBuilderFactory</code> which is used
- * widely to create new <code>Document</code>s
+ * to create and parse DOM documents.
+ */
+ private static DocumentBuilderFactory BUILDER_FACTORY = createFactory();
+
+ private static DocumentBuilderFactory createFactory() {
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ factory.setNamespaceAware(true);
+ factory.setIgnoringComments(true);
+ factory.setIgnoringElementContentWhitespace(true);
+ factory.setCoalescing(true);
+ try {
+ factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
+ } catch (ParserConfigurationException e) {
+ log.warn("Secure XML processing is not supported", e);
+ }
+ return factory;
+ }
+
+ /**
+ * Creates and returns a new empty DOM document.
+ *
+ * @return new DOM document
+ * @throws ParserConfigurationException if the document can not be created
*/
- public static DocumentBuilderFactory BUILDER_FACTORY = DocumentBuilderFactory.newInstance();
- static {
- BUILDER_FACTORY.setNamespaceAware(true);
- BUILDER_FACTORY.setIgnoringComments(true);
- BUILDER_FACTORY.setIgnoringElementContentWhitespace(true);
- BUILDER_FACTORY.setCoalescing(true);
+ public static Document createDocument()
+ throws ParserConfigurationException {
+ return BUILDER_FACTORY.newDocumentBuilder().newDocument();
+ }
+
+ /**
+ * Parses the given input stream and returns the resulting DOM document.
+ *
+ * @param input XML input stream
+ * @return parsed DOM document
+ * @throws ParserConfigurationException if the document can not be created
+ * @throws SAXException if the document can not be parsed
+ * @throws IOException if the input stream can not be read
+ */
+ public static Document parseDocument(InputStream stream)
+ throws ParserConfigurationException, SAXException, IOException {
+ DocumentBuilder docBuilder = BUILDER_FACTORY.newDocumentBuilder();
+
+ // Set an error handler to prevent parsers like Xerces
+ // from printing error messages to standard output!
+ docBuilder.setErrorHandler(new DefaultHandler());
+
+ return docBuilder.parse(stream);
}
/**
Modified: jackrabbit/trunk/jackrabbit-webdav/src/test/java/org/apache/jackrabbit/webdav/lock/ActiveLockTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webdav/src/test/java/org/apache/jackrabbit/webdav/lock/ActiveLockTest.java?rev=997955&r1=997954&r2=997955&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-webdav/src/test/java/org/apache/jackrabbit/webdav/lock/ActiveLockTest.java (original)
+++ jackrabbit/trunk/jackrabbit-webdav/src/test/java/org/apache/jackrabbit/webdav/lock/ActiveLockTest.java Thu Sep 16 23:59:38 2010
@@ -43,7 +43,7 @@ public class ActiveLockTest extends Test
}
public void testParsing() throws ParserConfigurationException {
- Document doc = DomUtil.BUILDER_FACTORY.newDocumentBuilder().newDocument();
+ Document doc = DomUtil.createDocument();
ActiveLock lock = new DefaultActiveLock();
lock.setLockroot("lockroot");