You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by an...@apache.org on 2011/02/17 12:03:34 UTC
svn commit: r1071571 - in
/jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav:
WebdavResponseImpl.java client/methods/XmlRequestEntity.java xml/DomUtil.java
Author: angela
Date: Thu Feb 17 11:03:34 2011
New Revision: 1071571
URL: http://svn.apache.org/viewvc?rev=1071571&view=rev
Log:
JCR-2896 : WebdavResponseImpl should cache TransformerFactory
Modified:
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/XmlRequestEntity.java
jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/xml/DomUtil.java
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=1071571&r1=1071570&r2=1071571&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 Feb 17 11:03:34 2011
@@ -31,18 +31,13 @@ import org.apache.jackrabbit.webdav.xml.
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.w3c.dom.Document;
-import org.xml.sax.ContentHandler;
import org.xml.sax.SAXException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse;
import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.sax.SAXResult;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
@@ -147,14 +142,8 @@ public class WebdavResponseImpl implemen
// JCR-2636: Need to use an explicit OutputStreamWriter
// 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);
- ContentHandler handler =
- SerializingContentHandler.getSerializer(writer);
- TransformerFactory factory = TransformerFactory.newInstance();
- Transformer transformer = factory.newTransformer();
- transformer.transform(
- new DOMSource(doc), new SAXResult(handler));
+ Writer writer = new OutputStreamWriter(out, SerializingContentHandler.ENCODING);
+ DomUtil.transformDocument(doc, writer);
writer.flush();
// TODO: Should this be application/xml? See JCR-1621
Modified: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/methods/XmlRequestEntity.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/methods/XmlRequestEntity.java?rev=1071571&r1=1071570&r2=1071571&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/methods/XmlRequestEntity.java (original)
+++ jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/client/methods/XmlRequestEntity.java Thu Feb 17 11:03:34 2011
@@ -20,18 +20,14 @@ import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
-import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.sax.SAXResult;
import org.apache.commons.httpclient.methods.RequestEntity;
import org.apache.jackrabbit.commons.xml.SerializingContentHandler;
+import org.apache.jackrabbit.webdav.xml.DomUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.w3c.dom.Document;
-import org.xml.sax.ContentHandler;
import org.xml.sax.SAXException;
/**
@@ -45,12 +41,7 @@ public class XmlRequestEntity implements
public XmlRequestEntity(Document xmlDocument) throws IOException {
try {
- ContentHandler handler =
- SerializingContentHandler.getSerializer(xml);
- TransformerFactory factory = TransformerFactory.newInstance();
- Transformer transformer = factory.newTransformer();
- transformer.transform(
- new DOMSource(xmlDocument), new SAXResult(handler));
+ DomUtil.transformDocument(xmlDocument, xml);
} catch (TransformerException e) {
log.error(e.getMessage());
throw new IOException(e.getMessage());
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=1071571&r1=1071570&r2=1071571&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 Feb 17 11:03:34 2011
@@ -16,6 +16,7 @@
*/
package org.apache.jackrabbit.webdav.xml;
+import org.apache.jackrabbit.commons.xml.SerializingContentHandler;
import org.apache.jackrabbit.webdav.DavConstants;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -34,9 +35,19 @@ import javax.xml.XMLConstants;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.Result;
+import javax.xml.transform.Source;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.sax.SAXResult;
+import javax.xml.transform.stream.StreamResult;
import java.io.IOException;
import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.Writer;
import java.util.ArrayList;
import java.util.List;
@@ -68,6 +79,11 @@ public class DomUtil {
}
/**
+ * Transformer factory
+ */
+ private static TransformerFactory TRANSFORMER_FACTORY = TransformerFactory.newInstance();
+
+ /**
* Creates and returns a new empty DOM document.
*
* @return new DOM document
@@ -704,4 +720,47 @@ public class DomUtil {
buf.append(localName);
return buf.toString();
}
+
+ /**
+ * Uses a new Transformer instance to transform the specified xml document
+ * to the specified writer output target.
+ *
+ * @param xmlDoc XML document to create the transformation
+ * <code>Source</code> for.
+ * @param writer The writer used to create a new transformation
+ * <code>Result </code>for.
+ * @throws TransformerException
+ */
+ public static void transformDocument(Document xmlDoc, Writer writer) throws TransformerException, SAXException {
+ Transformer transformer = TRANSFORMER_FACTORY.newTransformer();
+ transformer.transform(new DOMSource(xmlDoc), new SAXResult(SerializingContentHandler.getSerializer(new StreamResult(writer))));
+ }
+
+ /**
+ * Uses a new Transformer instance to transform the specified xml document
+ * to the specified writer output target.
+ *
+ * @param xmlDoc XML document to create the transformation
+ * <code>Source</code> for.
+ * @param out The stream used to create a new transformation
+ * <code>Result </code>for.
+ * @throws TransformerException
+ */
+ public static void transformDocument(Document xmlDoc, OutputStream out) throws TransformerException, SAXException {
+ Transformer transformer = TRANSFORMER_FACTORY.newTransformer();
+ transformer.transform(new DOMSource(xmlDoc), new SAXResult(SerializingContentHandler.getSerializer(new StreamResult(out))));
+ }
+
+ /**
+ * Uses a new Transformer instance to transform the given source to the
+ * specified result.
+ *
+ * @param source the transformation source.
+ * @param result the transformation result.
+ * @throws TransformerException
+ */
+ private static void transformDocument(Source source, Result result) throws TransformerException {
+ Transformer transformer = TRANSFORMER_FACTORY.newTransformer();
+ transformer.transform(source, result);
+ }
}