Author: gnodet
Date: Tue Oct 3 09:18:30 2006
New Revision: 452563
URL: http://svn.apache.org/viewvc?view=rev&rev=452563
Log:
Use SourceTransformer in saxon instead of parsing manually
Modified:
incubator/servicemix/trunk/servicemix-saxon/src/main/java/org/apache/servicemix/saxon/SaxonEndpoint.java
incubator/servicemix/trunk/servicemix-saxon/src/main/java/org/apache/servicemix/saxon/XsltEndpoint.java
Modified:
incubator/servicemix/trunk/servicemix-saxon/src/main/java/org/apache/servicemix/saxon/SaxonEndpoint.java
URL:
http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-saxon/src/main/java/org/apache/servicemix/saxon/SaxonEndpoint.java?view=diff&rev=452563&r1=452562&r2=452563
==============================================================================
---
incubator/servicemix/trunk/servicemix-saxon/src/main/java/org/apache/servicemix/saxon/SaxonEndpoint.java
(original)
+++
incubator/servicemix/trunk/servicemix-saxon/src/main/java/org/apache/servicemix/saxon/SaxonEndpoint.java
Tue Oct 3 09:18:30 2006
@@ -6,20 +6,15 @@
import java.net.URL;
import java.util.Iterator;
-import javax.jbi.messaging.ExchangeStatus;
-import javax.jbi.messaging.InOut;
import javax.jbi.messaging.MessageExchange;
import javax.jbi.messaging.NormalizedMessage;
-import javax.jbi.messaging.InOnly;
-import javax.jbi.messaging.RobustInOnly;
-import javax.jbi.JBIException;
import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
import net.sf.saxon.Configuration;
import org.apache.servicemix.common.ProviderEndpoint;
import org.apache.servicemix.expression.Expression;
+import org.apache.servicemix.jbi.jaxp.SourceTransformer;
import org.springframework.core.io.DefaultResourceLoader;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource;
@@ -40,6 +35,21 @@
private Resource resource;
private Expression expression;
private Resource wsdlResource;
+ private SourceTransformer sourceTransformer = new SourceTransformer();
+
+ /**
+ * @param sourceTransformer the sourceTransformer to set
+ */
+ protected void setSourceTransformer(SourceTransformer sourceTransformer) {
+ this.sourceTransformer = sourceTransformer;
+ }
+
+ /**
+ * @return the sourceTransformer
+ */
+ public SourceTransformer getSourceTransformer() {
+ return sourceTransformer;
+ }
/**
* @return the wsdlResource
@@ -226,9 +236,7 @@
} catch (IOException e) {
// Ignore
}
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- DocumentBuilder builder = factory.newDocumentBuilder();
+ DocumentBuilder builder = sourceTransformer.createDocumentBuilder();
return builder.parse(res.getInputStream(), url != null ?
url.toExternalForm() : null);
}
Modified:
incubator/servicemix/trunk/servicemix-saxon/src/main/java/org/apache/servicemix/saxon/XsltEndpoint.java
URL:
http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-saxon/src/main/java/org/apache/servicemix/saxon/XsltEndpoint.java?view=diff&rev=452563&r1=452562&r2=452563
==============================================================================
---
incubator/servicemix/trunk/servicemix-saxon/src/main/java/org/apache/servicemix/saxon/XsltEndpoint.java
(original)
+++
incubator/servicemix/trunk/servicemix-saxon/src/main/java/org/apache/servicemix/saxon/XsltEndpoint.java
Tue Oct 3 09:18:30 2006
@@ -23,7 +23,6 @@
import javax.jbi.management.DeploymentException;
import javax.jbi.messaging.MessageExchange;
import javax.jbi.messaging.NormalizedMessage;
-import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Templates;
@@ -38,8 +37,6 @@
import org.apache.servicemix.jbi.jaxp.BytesSource;
import org.apache.servicemix.jbi.jaxp.StringSource;
import org.springframework.core.io.Resource;
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
/**
* @org.apache.xbean.XBean element="xslt"
@@ -78,13 +75,8 @@
protected void transformContent(Transformer transformer, MessageExchange
exchange, NormalizedMessage in, NormalizedMessage out) throws Exception {
Source src = in.getContent();
- if (src instanceof DOMSource ||
RESULT_DOM.equalsIgnoreCase(getResult())) {
- Node n = ((DOMSource) src).getNode();
- if (n instanceof Document == false) {
- Document doc =
DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
- doc.appendChild(doc.importNode(n, true));
- src = new DOMSource(doc);
- }
+ if (src instanceof DOMSource) {
+ src = new DOMSource(getSourceTransformer().toDOMDocument(src));
}
if (RESULT_BYTES.equalsIgnoreCase(getResult())) {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
@@ -98,6 +90,8 @@
transformer.transform(src, result);
out.setContent(new StringSource(buffer.toString()));
} else {
+ // Saxon has a blocking bug
+ // see
http://sourceforge.net/tracker/index.php?func=detail&aid=1558133&group_id=29872&atid=397617
DOMResult result = new DOMResult();
transformer.transform(src, result);
out.setContent(new DOMSource(result.getNode()));