Decouple config and netconf subsystems.
[controller.git] / opendaylight / netconf / netconf-netty-util / src / main / java / org / opendaylight / controller / netconf / nettyutil / handler / exi / NetconfStartExiMessage.java
index 1b0a34d7e0fa7d0b6ab32c6c3600de52a5f1543f..4cc0461f9ebe478d3063e0e397f7da34b3316a4d 100644 (file)
@@ -8,17 +8,15 @@
 
 package org.opendaylight.controller.netconf.nettyutil.handler.exi;
 
+import com.google.common.collect.Lists;
 import java.util.List;
-
+import org.opendaylight.controller.config.util.xml.XmlUtil;
 import org.opendaylight.controller.netconf.api.NetconfMessage;
 import org.opendaylight.controller.netconf.api.xml.XmlNetconfConstants;
-import org.opendaylight.controller.netconf.util.xml.XmlUtil;
 import org.openexi.proc.common.EXIOptions;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
-import com.google.common.collect.Lists;
-
 /**
  * Start-exi netconf message.
  */
@@ -33,22 +31,22 @@ public final class NetconfStartExiMessage extends NetconfMessage {
     public static final String PIS_KEY = "pis";
     public static final String PREFIXES_KEY = "prefixes";
 
-    private NetconfStartExiMessage(Document doc) {
+    private NetconfStartExiMessage(final Document doc) {
         super(doc);
     }
 
-    public static NetconfStartExiMessage create(EXIOptions exiOptions, String messageId) {
-        Document doc = XmlUtil.newDocument();
-        Element rpcElement = doc.createElementNS(XmlNetconfConstants.URN_IETF_PARAMS_XML_NS_NETCONF_BASE_1_0,
+    public static NetconfStartExiMessage create(final EXIOptions exiOptions, final String messageId) {
+        final Document doc = XmlUtil.newDocument();
+        final Element rpcElement = doc.createElementNS(XmlNetconfConstants.URN_IETF_PARAMS_XML_NS_NETCONF_BASE_1_0,
                 XmlNetconfConstants.RPC_KEY);
         rpcElement.setAttributeNS(XmlNetconfConstants.URN_IETF_PARAMS_XML_NS_NETCONF_BASE_1_0,
                 XmlNetconfConstants.MESSAGE_ID, messageId);
 
         // TODO draft http://tools.ietf.org/html/draft-varga-netconf-exi-capability-02#section-3.5.1 has no namespace for start-exi element in xml
-        Element startExiElement = doc.createElementNS(XmlNetconfConstants.URN_IETF_PARAMS_XML_NS_NETCONF_EXI_1_0,
+        final Element startExiElement = doc.createElementNS(XmlNetconfConstants.URN_IETF_PARAMS_XML_NS_NETCONF_EXI_1_0,
                 START_EXI);
 
-        addAlignemnt(exiOptions, doc, startExiElement);
+        addAlignment(exiOptions, doc, startExiElement);
         addFidelity(exiOptions, doc, startExiElement);
 
         rpcElement.appendChild(startExiElement);
@@ -57,8 +55,8 @@ public final class NetconfStartExiMessage extends NetconfMessage {
         return new NetconfStartExiMessage(doc);
     }
 
-    private static void addFidelity(EXIOptions exiOptions, Document doc, Element startExiElement) {
-        List<Element> fidelityElements = Lists.newArrayList();
+    private static void addFidelity(final EXIOptions exiOptions, final Document doc, final Element startExiElement) {
+        final List<Element> fidelityElements = Lists.newArrayList();
         createFidelityElement(doc, fidelityElements, exiOptions.getPreserveComments(), COMMENTS_KEY);
         createFidelityElement(doc, fidelityElements, exiOptions.getPreserveDTD(), DTD_KEY);
         createFidelityElement(doc, fidelityElements, exiOptions.getPreserveLexicalValues(), LEXICAL_VALUES_KEY);
@@ -66,23 +64,44 @@ public final class NetconfStartExiMessage extends NetconfMessage {
         createFidelityElement(doc, fidelityElements, exiOptions.getPreserveNS(), PREFIXES_KEY);
 
         if (fidelityElements.isEmpty() == false) {
-            Element fidelityElement = doc.createElementNS(
+            final Element fidelityElement = doc.createElementNS(
                     XmlNetconfConstants.URN_IETF_PARAMS_XML_NS_NETCONF_EXI_1_0, FIDELITY_KEY);
-            for (Element element : fidelityElements) {
+            for (final Element element : fidelityElements) {
                 fidelityElement.appendChild(element);
             }
             startExiElement.appendChild(fidelityElement);
         }
     }
 
-    private static void addAlignemnt(EXIOptions exiOptions, Document doc, Element startExiElement) {
-        Element alignmentElement = doc.createElementNS(XmlNetconfConstants.URN_IETF_PARAMS_XML_NS_NETCONF_EXI_1_0,
+    private static void addAlignment(final EXIOptions exiOptions, final Document doc, final Element startExiElement) {
+        final Element alignmentElement = doc.createElementNS(XmlNetconfConstants.URN_IETF_PARAMS_XML_NS_NETCONF_EXI_1_0,
                 ALIGNMENT_KEY);
-        alignmentElement.setTextContent(exiOptions.getAlignmentType().toString());
+
+        String alignmentString = EXIParameters.EXI_PARAMETER_BIT_PACKED;
+        switch (exiOptions.getAlignmentType()) {
+        case byteAligned: {
+            alignmentString = EXIParameters.EXI_PARAMETER_BYTE_ALIGNED;
+            break;
+        }
+        case bitPacked: {
+            alignmentString = EXIParameters.EXI_PARAMETER_BIT_PACKED;
+            break;
+        }
+        case compress: {
+            alignmentString = EXIParameters.EXI_PARAMETER_COMPRESSED;
+            break;
+        }
+        case preCompress: {
+            alignmentString = EXIParameters.EXI_PARAMETER_PRE_COMPRESSION;
+            break;
+        }
+        }
+
+        alignmentElement.setTextContent(alignmentString);
         startExiElement.appendChild(alignmentElement);
     }
 
-    private static void createFidelityElement(Document doc, List<Element> fidelityElements, boolean fidelity, String fidelityName) {
+    private static void createFidelityElement(final Document doc, final List<Element> fidelityElements, final boolean fidelity, final String fidelityName) {
 
         if (fidelity) {
             fidelityElements.add(doc.createElementNS(XmlNetconfConstants.URN_IETF_PARAMS_XML_NS_NETCONF_EXI_1_0,