You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by an...@apache.org on 2011/05/17 13:16:43 UTC

svn commit: r1104152 - /tuscany/sca-java-2.x/trunk/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/Utils.java

Author: antelder
Date: Tue May 17 11:16:43 2011
New Revision: 1104152

URL: http://svn.apache.org/viewvc?rev=1104152&view=rev
Log:
Update to try the LSSerializer approach to pretty printing

Modified:
    tuscany/sca-java-2.x/trunk/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/Utils.java

Modified: tuscany/sca-java-2.x/trunk/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/Utils.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/Utils.java?rev=1104152&r1=1104151&r2=1104152&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/Utils.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/Utils.java Tue May 17 11:16:43 2011
@@ -19,8 +19,14 @@
 
 package org.apache.tuscany.sca.assembly.xml;
 
+import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
+import java.io.StringWriter;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
 
 import org.apache.tuscany.sca.assembly.Base;
 import org.apache.tuscany.sca.common.xml.stax.StAXHelper;
@@ -29,6 +35,11 @@ import org.apache.tuscany.sca.contributi
 import org.apache.tuscany.sca.contribution.processor.ProcessorContext;
 import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint;
 import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.w3c.dom.Document;
+import org.w3c.dom.ls.DOMImplementationLS;
+import org.w3c.dom.ls.LSOutput;
+import org.w3c.dom.ls.LSSerializer;
+import org.xml.sax.SAXException;
 
 public class Utils {
     
@@ -44,15 +55,32 @@ public class Utils {
             staxProcessor.write(model, bos, new ProcessorContext(extensionPointRegistry));
             bos.close();
 
-// TODO: support pretty printing            
-//            if (!pretty) {
+            if (!pretty) {
                 return bos.toString();
-//            }
+            }
+
+            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+            DocumentBuilder parser = factory.newDocumentBuilder();
+            Document document = parser.parse(new ByteArrayInputStream(bos.toByteArray()));        
             
+            DOMImplementationLS domImplementationLS = (DOMImplementationLS) document.getImplementation().getFeature("LS", "3.0");
+            LSSerializer lsSerializer = domImplementationLS.createLSSerializer();
+            lsSerializer.getDomConfig().setParameter("format-pretty-print", Boolean.TRUE);
+            LSOutput lsOutput = domImplementationLS.createLSOutput();
+            lsOutput.setEncoding("UTF-8");
+            StringWriter stringWriter = new StringWriter();
+            lsOutput.setCharacterStream(stringWriter);
+            lsSerializer.write(document, lsOutput);
+            return stringWriter.toString();
+
         } catch (ContributionWriteException e) {
             throw new RuntimeException(e);
         } catch (IOException e) {
             throw new RuntimeException(e);
+        } catch (SAXException e) {
+            throw new RuntimeException(e);
+        } catch (ParserConfigurationException e) {
+            throw new RuntimeException(e);
         }
     }
 }