[jboss-svn-commits] JBL Code SVN: r38139 - labs/jbossesb/branches/JBESB_4_11_CP/product/rosetta/src/org/jboss/soa/esb/actions/transformation/xslt.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Jul 13 12:14:11 EDT 2012


Author: tcunning
Date: 2012-07-13 12:14:10 -0400 (Fri, 13 Jul 2012)
New Revision: 38139

Modified:
   labs/jbossesb/branches/JBESB_4_11_CP/product/rosetta/src/org/jboss/soa/esb/actions/transformation/xslt/ResultFactory.java
   labs/jbossesb/branches/JBESB_4_11_CP/product/rosetta/src/org/jboss/soa/esb/actions/transformation/xslt/SourceFactory.java
Log:
JBESB-3708
Handle DOMSource as a DocumentFragment rather than as a DOM Document.


Modified: labs/jbossesb/branches/JBESB_4_11_CP/product/rosetta/src/org/jboss/soa/esb/actions/transformation/xslt/ResultFactory.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_11_CP/product/rosetta/src/org/jboss/soa/esb/actions/transformation/xslt/ResultFactory.java	2012-07-13 14:12:17 UTC (rev 38138)
+++ labs/jbossesb/branches/JBESB_4_11_CP/product/rosetta/src/org/jboss/soa/esb/actions/transformation/xslt/ResultFactory.java	2012-07-13 16:14:10 UTC (rev 38139)
@@ -24,11 +24,20 @@
 import java.io.OutputStream;
 import java.io.StringWriter;
 
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.transform.Result;
 import javax.xml.transform.dom.DOMResult;
 import javax.xml.transform.sax.SAXResult;
 import javax.xml.transform.stream.StreamResult;
 
+import org.apache.log4j.Logger;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.DocumentFragment;
+import org.w3c.dom.Node;
+
 /**
  * Factory for {@link Result}s.
  * 
@@ -38,10 +47,23 @@
 {
     public enum ResultType { STRING, BYTES, DOM, SAX, SOURCERESULT }
     
+    private static Logger log = Logger.getLogger(ResultFactory.class);
+    
     private static ResultFactory factory = new ResultFactory();
     
-    private ResultFactory() {} 
+    private static Document doc;
     
+    private ResultFactory() {
+    	DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
+        DocumentBuilder dBuilder = null;
+		try {
+			dBuilder = domFactory.newDocumentBuilder();
+	        doc = dBuilder.newDocument();
+		} catch (ParserConfigurationException e) {
+			log.error("Error construction DOM document", e);
+		}
+    } 
+    
     public static ResultFactory getInstance()
     {
         return factory;
@@ -59,7 +81,8 @@
                 result = new StreamResult(new ByteArrayOutputStream());
                 break;
             case DOM:
-                result = new DOMResult();
+            	DocumentFragment resultRoot = doc.createDocumentFragment();
+                result = new DOMResult( resultRoot );
                 break;
             case SAX:
                 result = new SAXResult();
@@ -80,7 +103,8 @@
                 OutputStream outputStream = ((StreamResult)result).getOutputStream();
                 return ((ByteArrayOutputStream)outputStream).toByteArray();
             case DOM:
-                return ((DOMResult)result).getNode();
+            	Node resultNode = ((DOMResult) result).getNode();
+                return resultNode;
             case SAX:
                 return (SAXResult)result;
             case SOURCERESULT:

Modified: labs/jbossesb/branches/JBESB_4_11_CP/product/rosetta/src/org/jboss/soa/esb/actions/transformation/xslt/SourceFactory.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_11_CP/product/rosetta/src/org/jboss/soa/esb/actions/transformation/xslt/SourceFactory.java	2012-07-13 14:12:17 UTC (rev 38138)
+++ labs/jbossesb/branches/JBESB_4_11_CP/product/rosetta/src/org/jboss/soa/esb/actions/transformation/xslt/SourceFactory.java	2012-07-13 16:14:10 UTC (rev 38139)
@@ -37,6 +37,7 @@
 import javax.xml.transform.stream.StreamSource;
 
 import org.apache.xerces.dom.DocumentImpl;
+import org.w3c.dom.DocumentFragment;
 import org.xml.sax.ErrorHandler;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
@@ -161,6 +162,11 @@
         	DocumentImpl doc = (DocumentImpl) from;
         	domSource.setNode(doc.getFirstChild()); //doc is an object implementing org.w3c.dom.Document
         	source = domSource;
+        } else if (from instanceof DocumentFragment) {
+        	DOMSource domSource = new DOMSource();
+        	DocumentFragment doc = (DocumentFragment) from;
+        	domSource.setNode(doc); //doc is an object implementing org.w3c.dom.Document
+        	source = domSource;        
         } else if (from instanceof Source) {
             source = (Source)from;
         } 



More information about the jboss-svn-commits mailing list