summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/trunk/modules/assembly-xml
diff options
context:
space:
mode:
authorantelder <antelder@13f79535-47bb-0310-9956-ffa450edef68>2011-05-17 11:16:43 +0000
committerantelder <antelder@13f79535-47bb-0310-9956-ffa450edef68>2011-05-17 11:16:43 +0000
commit50b853e14f40c655983ad8ad5945f62ba43b3bf8 (patch)
tree6d3c167255b75d1467ba9703c64bdcd1890d9c79 /sca-java-2.x/trunk/modules/assembly-xml
parentb2f9f61749643ff11f021a61f24f73670e35f823 (diff)
Update to try the LSSerializer approach to pretty printing
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1104152 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-java-2.x/trunk/modules/assembly-xml')
-rw-r--r--sca-java-2.x/trunk/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/Utils.java34
1 files changed, 31 insertions, 3 deletions
diff --git a/sca-java-2.x/trunk/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/Utils.java b/sca-java-2.x/trunk/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/Utils.java
index 8a8daa13e9..694621fa24 100644
--- a/sca-java-2.x/trunk/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/Utils.java
+++ b/sca-java-2.x/trunk/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/Utils.java
@@ -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.contribution.processor.ExtensibleStAXArtifactProce
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);
}
}
}