Fix config-netconf-connector needed for interacting with yuma's yangcli.
[controller.git] / opendaylight / netconf / config-netconf-connector / src / main / java / org / opendaylight / controller / netconf / confignetconfconnector / mapping / config / ModuleConfig.java
1 /*
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8
9 package org.opendaylight.controller.netconf.confignetconfconnector.mapping.config;
10
11 import org.opendaylight.controller.config.api.jmx.ObjectNameUtil;
12 import org.opendaylight.controller.netconf.util.xml.XmlElement;
13 import org.opendaylight.controller.netconf.util.xml.XmlNetconfConstants;
14 import org.opendaylight.controller.netconf.util.xml.XmlUtil;
15 import org.w3c.dom.Document;
16 import org.w3c.dom.Element;
17
18 import javax.management.ObjectName;
19 import java.util.Collection;
20
21 public class ModuleConfig {
22
23     private final String moduleName;
24     private final InstanceConfig instanceConfig;
25     private final Collection<String> providedServices;
26
27     public ModuleConfig(String moduleName, InstanceConfig mbeanMapping, Collection<String> providedServices) {
28         this.moduleName = moduleName;
29         this.instanceConfig = mbeanMapping;
30         this.providedServices = providedServices;
31     }
32
33     public InstanceConfig getMbeanMapping() {
34         return instanceConfig;
35     }
36
37     public Collection<String> getProvidedServices() {
38         return providedServices;
39     }
40
41     public Element toXml(ObjectName instanceON, Services depTracker, Document document, String namespace) {
42         Element root = document.createElement(XmlNetconfConstants.MODULE_KEY);
43         // Xml.addNamespaceAttr(document, root, namespace);
44
45         final String prefix = getPrefix(namespace);
46         Element typeElement = XmlUtil.createPrefixedTextElement(document, XmlNetconfConstants.TYPE_KEY, prefix,
47                 moduleName);
48         XmlUtil.addPrefixedNamespaceAttr(typeElement, prefix, namespace);
49         // Xml.addNamespaceAttr(document, typeElement,
50         // XMLUtil.URN_OPENDAYLIGHT_PARAMS_XML_NS_YANG_CONTROLLER_CONFIG);
51         root.appendChild(typeElement);
52
53         Element nameElement = XmlUtil.createTextElement(document, XmlNetconfConstants.NAME_KEY,
54                 ObjectNameUtil.getInstanceName(instanceON));
55         // Xml.addNamespaceAttr(document, nameElement,
56         // XMLUtil.URN_OPENDAYLIGHT_PARAMS_XML_NS_YANG_CONTROLLER_CONFIG);
57         root.appendChild(nameElement);
58
59         root = instanceConfig.toXml(instanceON, depTracker, namespace, document, root);
60
61         return root;
62     }
63
64     private String getPrefix(String namespace) {
65         // if(namespace.contains(":")==false)
66         return "prefix";
67         // return namespace.substring(namespace.lastIndexOf(':') + 1,
68         // namespace.length());
69
70     }
71
72     public ModuleElementResolved fromXml(XmlElement moduleElement, Services depTracker, String instanceName,
73             String moduleNamespace) {
74
75         InstanceConfigElementResolved ice = instanceConfig.fromXml(moduleElement, depTracker, moduleNamespace);
76         return new ModuleElementResolved(instanceName, ice);
77     }
78
79 }