From 63f2df4babca2cd2232d6b1f438ddcea1d3f3fa2 Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Wed, 22 Aug 2012 10:46:29 +0200 Subject: Replace deprecated Xerces DOM to XML serialisation with DOM3 LS. Refactor all to use the Outcome.serialize static method. --- .../instance/predefined/PredefinedStep.java | 19 ++--------- .../com/c2kernel/persistency/outcome/Outcome.java | 39 +++++++++++----------- 2 files changed, 23 insertions(+), 35 deletions(-) (limited to 'src/main') diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/PredefinedStep.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/PredefinedStep.java index 8aec993..9531ede 100644 --- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/PredefinedStep.java +++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/PredefinedStep.java @@ -1,13 +1,9 @@ package com.c2kernel.lifecycle.instance.predefined; import java.io.StringReader; -import java.io.StringWriter; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; -import org.apache.xml.serialize.Method; -import org.apache.xml.serialize.OutputFormat; -import org.apache.xml.serialize.XMLSerializer; import org.w3c.dom.CDATASection; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -17,6 +13,7 @@ import org.w3c.dom.Text; import org.xml.sax.InputSource; import com.c2kernel.lifecycle.instance.Activity; +import com.c2kernel.persistency.outcome.Outcome; import com.c2kernel.utils.Logger; /*********************************************************************************************************************************************************************************************************************************************************************************************************** * @author $Author: sgaspard $ $Date: 2004/09/21 10:32:17 $ @@ -100,19 +97,9 @@ public class PredefinedStep extends Activity param.appendChild(t); root.appendChild(param); } - // xalan method - use internal xerces one instead -// TransformerFactory transFactory = TransformerFactory.newInstance(); -// Transformer transformer = transFactory.newTransformer(); -// StringWriter stringOut = new StringWriter(); -// transformer.transform(new DOMSource(dom), new StreamResult(stringOut)); -// return stringOut.toString(); + + return Outcome.serialize(dom, false); - OutputFormat format = new OutputFormat(Method.XML, null, false); - StringWriter stringOut = new StringWriter(); - XMLSerializer serial = new XMLSerializer(stringOut, format); - serial.asDOMSerializer(); - serial.serialize(dom); - return stringOut.toString(); } catch (Exception e) { diff --git a/src/main/java/com/c2kernel/persistency/outcome/Outcome.java b/src/main/java/com/c2kernel/persistency/outcome/Outcome.java index d321f69..a0b01ee 100644 --- a/src/main/java/com/c2kernel/persistency/outcome/Outcome.java +++ b/src/main/java/com/c2kernel/persistency/outcome/Outcome.java @@ -1,18 +1,17 @@ package com.c2kernel.persistency.outcome; import java.io.StringReader; -import java.io.StringWriter; import java.util.StringTokenizer; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; -import org.apache.xml.serialize.Method; -import org.apache.xml.serialize.OutputFormat; -import org.apache.xml.serialize.XMLSerializer; import org.w3c.dom.Document; import org.w3c.dom.NodeList; import org.w3c.dom.Text; +import org.w3c.dom.bootstrap.DOMImplementationRegistry; +import org.w3c.dom.ls.DOMImplementationLS; +import org.w3c.dom.ls.LSSerializer; import org.xml.sax.InputSource; import com.c2kernel.common.PersistencyException; @@ -27,8 +26,10 @@ public class Outcome implements C2KLocalObject { int mSchemaVersion; Document dom; static DocumentBuilder parser; + static DOMImplementationLS impl; static { + // Set up parser DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); dbf.setValidating(false); dbf.setNamespaceAware(false); @@ -36,7 +37,18 @@ public class Outcome implements C2KLocalObject { parser = dbf.newDocumentBuilder(); } catch (ParserConfigurationException e) { Logger.error(e); + Logger.die("Cannot function without XML parser"); } + + // Set up serialiser + try { + DOMImplementationRegistry registry = DOMImplementationRegistry.newInstance(); + impl = (DOMImplementationLS)registry.getDOMImplementation("LS"); + } catch (Exception e) { + Logger.error(e); + Logger.die("Cannot function without XML serialiser"); + } + } //id is the eventID @@ -158,20 +170,9 @@ public class Outcome implements C2KLocalObject { static public String serialize(Document doc, boolean prettyPrint) { - String serializedDoc = null; - OutputFormat format = new OutputFormat(Method.XML, null, prettyPrint); - StringWriter stringOut = new StringWriter(); - XMLSerializer serial = new XMLSerializer(stringOut, format); - try - { - serial.asDOMSerializer(); - serial.serialize(doc); - } - catch (java.io.IOException ex) - { - Logger.error(ex.toString()); - } - serializedDoc = stringOut.toString(); - return serializedDoc; + LSSerializer writer = impl.createLSSerializer(); + writer.getDomConfig().setParameter("format-pretty-print", prettyPrint); + writer.getDomConfig().setParameter("xml-declaration", false); + return writer.writeToString(doc); } } -- cgit v1.2.3