You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2013/11/27 18:34:34 UTC
svn commit: r1546133 - in
/cxf/branches/2.7.x-fixes/rt/core/src/main/java/org/apache/cxf/feature/transform:
AbstractXSLTInterceptor.java XSLTUtils.java
Author: dkulp
Date: Wed Nov 27 17:34:34 2013
New Revision: 1546133
URL: http://svn.apache.org/r1546133
Log:
Merged revisions 1546126 via git cherry-pick from
https://svn.apache.org/repos/asf/cxf/trunk
........
r1546126 | dkulp | 2013-11-27 12:28:53 -0500 (Wed, 27 Nov 2013) | 2 lines
Use our Stax XML parsing for all the parsing to prevent global locks on sax factories and provide more security
........
Modified:
cxf/branches/2.7.x-fixes/rt/core/src/main/java/org/apache/cxf/feature/transform/AbstractXSLTInterceptor.java
cxf/branches/2.7.x-fixes/rt/core/src/main/java/org/apache/cxf/feature/transform/XSLTUtils.java
Modified: cxf/branches/2.7.x-fixes/rt/core/src/main/java/org/apache/cxf/feature/transform/AbstractXSLTInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/core/src/main/java/org/apache/cxf/feature/transform/AbstractXSLTInterceptor.java?rev=1546133&r1=1546132&r2=1546133&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/rt/core/src/main/java/org/apache/cxf/feature/transform/AbstractXSLTInterceptor.java (original)
+++ cxf/branches/2.7.x-fixes/rt/core/src/main/java/org/apache/cxf/feature/transform/AbstractXSLTInterceptor.java Wed Nov 27 17:34:34 2013
@@ -22,16 +22,19 @@ package org.apache.cxf.feature.transform
import java.io.InputStream;
-import javax.xml.transform.Source;
+import javax.xml.stream.XMLStreamException;
import javax.xml.transform.Templates;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.stream.StreamSource;
+import javax.xml.transform.dom.DOMSource;
+
+import org.w3c.dom.Document;
import org.apache.cxf.common.classloader.ClassLoaderUtils;
import org.apache.cxf.message.Message;
import org.apache.cxf.message.MessageUtils;
import org.apache.cxf.phase.AbstractPhaseInterceptor;
+import org.apache.cxf.staxutils.StaxUtils;
/**
@@ -57,12 +60,16 @@ public abstract class AbstractXSLTInterc
if (xsltStream == null) {
throw new IllegalArgumentException("Cannot load XSLT from path: " + xsltPath);
}
- Source xsltSource = new StreamSource(xsltStream);
- xsltTemplate = TRANSFORM_FACTORIY.newTemplates(xsltSource);
+ Document doc = StaxUtils.read(xsltStream);
+ xsltTemplate = TRANSFORM_FACTORIY.newTemplates(new DOMSource(doc));
} catch (TransformerConfigurationException e) {
throw new IllegalArgumentException(
String.format("Cannot create XSLT template from path: %s, error: ",
xsltPath, e.getException()), e);
+ } catch (XMLStreamException e) {
+ throw new IllegalArgumentException(
+ String.format("Cannot create XSLT template from path: %s, error: ",
+ xsltPath, e.getNestedException()), e);
}
}
Modified: cxf/branches/2.7.x-fixes/rt/core/src/main/java/org/apache/cxf/feature/transform/XSLTUtils.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/core/src/main/java/org/apache/cxf/feature/transform/XSLTUtils.java?rev=1546133&r1=1546132&r2=1546133&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/rt/core/src/main/java/org/apache/cxf/feature/transform/XSLTUtils.java (original)
+++ cxf/branches/2.7.x-fixes/rt/core/src/main/java/org/apache/cxf/feature/transform/XSLTUtils.java Wed Nov 27 17:34:34 2013
@@ -24,20 +24,24 @@ import java.io.InputStream;
import java.io.Reader;
import java.util.logging.Logger;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.transform.Source;
import javax.xml.transform.Templates;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.dom.DOMResult;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
-import javax.xml.transform.stream.StreamSource;
import org.w3c.dom.Document;
+
import org.apache.cxf.common.logging.LogUtils;
import org.apache.cxf.helpers.DOMUtils;
import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.io.CachedOutputStream;
import org.apache.cxf.io.CachedWriter;
+import org.apache.cxf.staxutils.StaxSource;
+import org.apache.cxf.staxutils.StaxUtils;
public final class XSLTUtils {
private static final Logger LOG = LogUtils.getL7dLogger(XSLTUtils.class);
@@ -48,7 +52,8 @@ public final class XSLTUtils {
public static InputStream transform(Templates xsltTemplate, InputStream in) {
try {
- StreamSource beforeSource = new StreamSource(in);
+ XMLStreamReader reader = StaxUtils.createXMLStreamReader(in);
+ Source beforeSource = new StaxSource(reader);
CachedOutputStream out = new CachedOutputStream();
Transformer trans = xsltTemplate.newTransformer();
@@ -64,7 +69,8 @@ public final class XSLTUtils {
public static Reader transform(Templates xsltTemplate, Reader inReader) {
try {
- StreamSource beforeSource = new StreamSource(inReader);
+ XMLStreamReader reader = StaxUtils.createXMLStreamReader(inReader);
+ Source beforeSource = new StaxSource(reader);
CachedWriter outWriter = new CachedWriter();
Transformer trans = xsltTemplate.newTransformer();