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()));


Reply via email to