1 package org.opendaylight.controller.sal.connector.remoterpc;
4 import org.opendaylight.yangtools.yang.data.api.CompositeNode;
5 import org.opendaylight.yangtools.yang.data.api.Node;
6 import org.opendaylight.yangtools.yang.data.api.SimpleNode;
7 import org.opendaylight.yangtools.yang.data.impl.NodeUtils;
8 import org.opendaylight.yangtools.yang.data.impl.XmlTreeBuilder;
9 import org.slf4j.Logger;
10 import org.slf4j.LoggerFactory;
11 import org.w3c.dom.Document;
13 import javax.xml.stream.XMLStreamException;
14 import javax.xml.transform.OutputKeys;
15 import javax.xml.transform.Transformer;
16 import javax.xml.transform.TransformerException;
17 import javax.xml.transform.TransformerFactory;
18 import javax.xml.transform.dom.DOMSource;
19 import javax.xml.transform.stream.StreamResult;
20 import java.io.FileNotFoundException;
21 import java.io.InputStream;
22 import java.io.StringWriter;
24 public class SerilizationTest {
26 private static final Logger _logger = LoggerFactory.getLogger(SerilizationTest.class);
28 public void fromXml() {
32 public void toXml() throws FileNotFoundException {
34 InputStream xmlStream = SerilizationTest.class.getResourceAsStream("/FourSimpleChildren.xml");
35 StringWriter writer = new StringWriter();
37 CompositeNode data = loadCompositeNode(xmlStream);
38 Document domTree = NodeUtils.buildShadowDomTree(data);
40 TransformerFactory tf = TransformerFactory.newInstance();
41 Transformer transformer = tf.newTransformer();
42 transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
43 //transformer.setOutputProperty(OutputKeys.METHOD, "xml");
44 //transformer.setOutputProperty(OutputKeys.INDENT, "yes");
45 //transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
46 //transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
47 transformer.transform(new DOMSource(domTree), new StreamResult(writer));
48 } catch (TransformerException e) {
49 _logger.error("Error during translation of Document to OutputStream", e);
52 _logger.info("Parsed xml [{}]", writer.toString());
55 //Note to self: Stolen from TestUtils
56 ///Users/alefan/odl/controller4/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/TestUtils.java
57 // Figure out how to include TestUtils through pom ...was getting errors
58 private CompositeNode loadCompositeNode(InputStream xmlInputStream) throws FileNotFoundException {
59 if (xmlInputStream == null) {
60 throw new IllegalArgumentException();
64 dataTree = XmlTreeBuilder.buildDataTree(xmlInputStream);
65 } catch (XMLStreamException e) {
66 _logger.error("Error during building data tree from XML", e);
69 if (dataTree == null) {
70 _logger.error("data tree is null");
73 if (dataTree instanceof SimpleNode) {
74 _logger.error("RPC XML was resolved as SimpleNode");
77 return (CompositeNode) dataTree;