From 371bb07d5c970798f247170130c93147890708e8 Mon Sep 17 00:00:00 2001 From: Maros Marsalek Date: Thu, 21 Nov 2013 17:50:31 +0100 Subject: [PATCH 1/1] Add prefixes to type attribute in generated xml from netconf Add support for parsing prefixed type attributes from incomming xml to netconf Prefixed type attribute conforms to config api defined in yang Change-Id: I4516ddb97d3fcfaab50f3402edb4a6e1bd6505cf Signed-off-by: Maros Marsalek --- .../yangjmxgenerator/ModuleMXBeanEntry.java | 48 +++--- .../ObjectNameAttributeReadingStrategy.java | 24 ++- .../attributes/mapping/ObjectMapper.java | 3 +- .../ObjectNameAttributeMappingStrategy.java | 20 ++- .../ObjectNameAttributeResolvingStrategy.java | 10 +- .../ObjectNameAttributeWritingStrategy.java | 5 +- .../mapping/config/Config.java | 14 +- .../mapping/config/ModuleConfig.java | 28 +++- .../mapping/config/Services.java | 146 ++++++++++++------ .../operations/editconfig/EditConfig.java | 1 + .../operations/getconfig/GetConfig.java | 1 + .../NetconfMappingTest.java | 2 +- .../ServiceTrackerTest.java | 50 +++--- .../netconf/util/xml/XmlElement.java | 2 +- .../netconf/util/xml/XmlNetconfConstants.java | 2 + .../resources/netconfMessages/editConfig.xml | 6 +- .../netconfMessages/editConfig_none.xml | 6 +- .../editConfig_differentNamespaceTO.xml | 6 +- ...editConfig_sameAttrDifferentNamespaces.xml | 6 +- ...Config_sameAttrDifferentNamespacesList.xml | 6 +- ...Config_typeNameConfigAttributeMatching.xml | 6 +- .../unrecognised/editConfig_unrecognised1.xml | 2 +- .../unrecognised/editConfig_unrecognised2.xml | 2 +- .../unrecognised/editConfig_unrecognised3.xml | 2 +- .../unrecognised/editConfig_unrecognised4.xml | 2 +- .../unrecognised/editConfig_unrecognised5.xml | 2 +- .../unrecognised/editConfig_unrecognised6.xml | 2 +- .../unrecognised/editConfig_unrecognised7.xml | 6 +- .../unrecognised/editConfig_unrecognised8.xml | 6 +- 29 files changed, 256 insertions(+), 160 deletions(-) diff --git a/opendaylight/config/yang-jmx-generator/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/ModuleMXBeanEntry.java b/opendaylight/config/yang-jmx-generator/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/ModuleMXBeanEntry.java index fdc573f975..70a4edde41 100644 --- a/opendaylight/config/yang-jmx-generator/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/ModuleMXBeanEntry.java +++ b/opendaylight/config/yang-jmx-generator/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/ModuleMXBeanEntry.java @@ -7,21 +7,8 @@ */ package org.opendaylight.controller.config.yangjmxgenerator; -import static com.google.common.base.Preconditions.checkNotNull; -import static com.google.common.base.Preconditions.checkState; -import static java.lang.String.format; -import static org.opendaylight.controller.config.yangjmxgenerator.ConfigConstants.createConfigQName; - -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - +import com.google.common.annotations.VisibleForTesting; +import com.google.common.collect.Sets; import org.opendaylight.controller.config.yangjmxgenerator.attribute.AttributeIfc; import org.opendaylight.controller.config.yangjmxgenerator.attribute.DependencyAttribute; import org.opendaylight.controller.config.yangjmxgenerator.attribute.JavaAttribute; @@ -50,8 +37,20 @@ import org.opendaylight.yangtools.yang.model.api.UsesNode; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.common.annotations.VisibleForTesting; -import com.google.common.collect.Sets; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import static com.google.common.base.Preconditions.checkNotNull; +import static com.google.common.base.Preconditions.checkState; +import static java.lang.String.format; +import static org.opendaylight.controller.config.yangjmxgenerator.ConfigConstants.createConfigQName; /** * Represents part of yang model that describes a module. @@ -129,13 +128,13 @@ public class ModuleMXBeanEntry extends AbstractEntry { private final String nullableDescription, packageName, javaNamePrefix, namespace; - private final Map providedServices; + private final Map providedServices; private Collection runtimeBeans; public ModuleMXBeanEntry(IdentitySchemaNode id, Map yangToAttributes, String packageName, - Map providedServices2, String javaNamePrefix, + Map providedServices2, String javaNamePrefix, String namespace, Collection runtimeBeans) { this.globallyUniqueName = id.getQName().getLocalName(); this.yangToAttributes = yangToAttributes; @@ -184,7 +183,7 @@ public class ModuleMXBeanEntry extends AbstractEntry { * @return services implemented by this module. Keys are fully qualified java names of generated * ServiceInterface classes, values are identity local names. */ - public Map getProvidedServices() { + public Map getProvidedServices() { return providedServices; } @@ -317,7 +316,7 @@ public class ModuleMXBeanEntry extends AbstractEntry { checkState(moduleIdentity != null, "Cannot find identity " + moduleLocalNameFromXPath + " matching augmentation " + augmentation); - Map providedServices = findProvidedServices( + Map providedServices = findProvidedServices( moduleIdentity, currentModule, qNamesToSIEs, schemaContext); @@ -497,11 +496,11 @@ public class ModuleMXBeanEntry extends AbstractEntry { return yangToAttributes; } - private static Map findProvidedServices( + private static Map findProvidedServices( IdentitySchemaNode moduleIdentity, Module currentModule, Map qNamesToSIEs, SchemaContext schemaContext) { - Map result = new HashMap<>(); + Map result = new HashMap<>(); for (UnknownSchemaNode unknownNode : moduleIdentity .getUnknownSchemaNodes()) { if (ConfigConstants.PROVIDED_SERVICE_EXTENSION_QNAME @@ -510,8 +509,7 @@ public class ModuleMXBeanEntry extends AbstractEntry { .getNodeParameter(); ServiceInterfaceEntry sie = findSIE(prefixAndIdentityLocalName, currentModule, qNamesToSIEs, schemaContext); - result.put(sie.getFullyQualifiedName(), sie.getQName() - .getLocalName()); + result.put(sie.getFullyQualifiedName(), sie.getQName()); } } return result; diff --git a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/fromxml/ObjectNameAttributeReadingStrategy.java b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/fromxml/ObjectNameAttributeReadingStrategy.java index bdb9391e2b..59dc11f0b8 100644 --- a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/fromxml/ObjectNameAttributeReadingStrategy.java +++ b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/fromxml/ObjectNameAttributeReadingStrategy.java @@ -15,9 +15,12 @@ import org.opendaylight.controller.netconf.util.xml.XmlElement; import org.opendaylight.controller.netconf.util.xml.XmlNetconfConstants; import java.util.List; +import java.util.Map; public class ObjectNameAttributeReadingStrategy extends AbstractAttributeReadingStrategy { + private static final Object PREFIX_SEPARATOR = ":"; + public ObjectNameAttributeReadingStrategy(DependencyAttribute attributeIfc) { super(attributeIfc); } @@ -35,11 +38,28 @@ public class ObjectNameAttributeReadingStrategy extends AbstractAttributeReading private ObjectNameAttributeMappingStrategy.MappedDependency resolve(XmlElement firstChild) { XmlElement typeElement = firstChild.getOnlyChildElementWithSameNamespace(XmlNetconfConstants.TYPE_KEY); - String serviceName = typeElement.getTextContent(); + Map.Entry prefixNamespace = typeElement.findNamespaceOfTextContent(); + + String serviceName = checkPrefixAndExtractServiceName(typeElement, prefixNamespace); + XmlElement nameElement = firstChild.getOnlyChildElementWithSameNamespace(XmlNetconfConstants.NAME_KEY); String dependencyName = nameElement.getTextContent(); - return new ObjectNameAttributeMappingStrategy.MappedDependency(serviceName, dependencyName); + return new ObjectNameAttributeMappingStrategy.MappedDependency(prefixNamespace.getValue(), serviceName, + dependencyName); + } + + public static String checkPrefixAndExtractServiceName(XmlElement typeElement, Map.Entry prefixNamespace) { + String serviceName = typeElement.getTextContent(); + + Preconditions.checkState(prefixNamespace.equals("") == false, "Service %s value not prefixed with namespace", + XmlNetconfConstants.TYPE_KEY); + String prefix = prefixNamespace.getKey() + PREFIX_SEPARATOR; + Preconditions.checkState(serviceName.startsWith(prefix), + "Service %s not correctly prefixed, expected %s, but was %s", XmlNetconfConstants.TYPE_KEY, prefix, + serviceName); + serviceName = serviceName.substring(prefix.length()); + return serviceName; } } diff --git a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/mapping/ObjectMapper.java b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/mapping/ObjectMapper.java index d63e61cea8..3e63b92884 100644 --- a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/mapping/ObjectMapper.java +++ b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/mapping/ObjectMapper.java @@ -74,8 +74,9 @@ public class ObjectMapper extends AttributeIfcSwitchStatement> caseDependencyAttribute( DependencyAttribute attributeIfc) { String serviceName = attributeIfc.getDependency().getSie().getQName().getLocalName(); + String namespace = attributeIfc.getDependency().getSie().getQName().getNamespace().toString(); return new ObjectNameAttributeMappingStrategy((SimpleType) attributeIfc.getOpenType(), dependencyTracker, - serviceName); + serviceName, namespace); } @Override diff --git a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/mapping/ObjectNameAttributeMappingStrategy.java b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/mapping/ObjectNameAttributeMappingStrategy.java index 1febf02a2d..f4d88c7c8e 100644 --- a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/mapping/ObjectNameAttributeMappingStrategy.java +++ b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/mapping/ObjectNameAttributeMappingStrategy.java @@ -21,11 +21,13 @@ public class ObjectNameAttributeMappingStrategy extends private final Services tracker; private final String serviceName; + private final String namespace; - public ObjectNameAttributeMappingStrategy(SimpleType openType, Services dependencyTracker, String serviceName) { + public ObjectNameAttributeMappingStrategy(SimpleType openType, Services dependencyTracker, String serviceName, String namespace) { super(openType); this.tracker = dependencyTracker; this.serviceName = serviceName; + this.namespace = namespace; } @Override @@ -40,17 +42,18 @@ public class ObjectNameAttributeMappingStrategy extends Util.checkType(value, ObjectName.class); ObjectName on = (ObjectName) value; - String refName = tracker.addServiceEntry(serviceName, on); + String refName = tracker.addServiceEntry(namespace, serviceName, on); - return Optional.of(new MappedDependency(serviceName, refName)); + return Optional.of(new MappedDependency(namespace, serviceName, refName)); } public static class MappedDependency { - private final String serviceName, refName; + private final String namespace, serviceName, refName; - public MappedDependency(String serviceName, String refName) { + public MappedDependency(String namespace, String serviceName, String refName) { this.serviceName = serviceName; this.refName = refName; + this.namespace = namespace; } public String getServiceName() { @@ -61,10 +64,15 @@ public class ObjectNameAttributeMappingStrategy extends return refName; } + public String getNamespace() { + return namespace; + } + @Override public String toString() { final StringBuffer sb = new StringBuffer("MappedDependency{"); - sb.append("serviceName='").append(serviceName).append('\''); + sb.append("namespace='").append(namespace).append('\''); + sb.append(", serviceName='").append(serviceName).append('\''); sb.append(", refName='").append(refName).append('\''); sb.append('}'); return sb.toString(); diff --git a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/resolving/ObjectNameAttributeResolvingStrategy.java b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/resolving/ObjectNameAttributeResolvingStrategy.java index af6e3db8e9..c6f306b360 100644 --- a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/resolving/ObjectNameAttributeResolvingStrategy.java +++ b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/resolving/ObjectNameAttributeResolvingStrategy.java @@ -40,13 +40,11 @@ public class ObjectNameAttributeResolvingStrategy extends AbstractAttributeResol ObjectNameAttributeMappingStrategy.MappedDependency mappedDep = (ObjectNameAttributeMappingStrategy.MappedDependency) value; String serviceName = mappedDep.getServiceName(); - if (serviceName.contains(":")) { - // hack for yuma - serviceName = serviceName.substring(serviceName.indexOf(":") + 1); - } String refName = mappedDep.getRefName(); - logger.trace("Getting service instance by service name {} and ref name {}", serviceName, refName); - ServiceInstance byRefName = serviceTracker.getByServiceAndRefName(serviceName, refName); + String namespace = mappedDep.getNamespace(); + logger.trace("Getting service instance by service name {} : {} and ref name {}", namespace, serviceName, refName); + + ServiceInstance byRefName = serviceTracker.getByServiceAndRefName(namespace, serviceName, refName); ObjectName on = ObjectNameUtil.createReadOnlyModuleON(byRefName.getModuleName(), byRefName.getInstanceName()); logger.debug("Attribute {} : {} parsed to type {}", attrName, value, getOpenType()); return Optional.of(on); diff --git a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/toxml/ObjectNameAttributeWritingStrategy.java b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/toxml/ObjectNameAttributeWritingStrategy.java index b88b6722c8..8563b781e3 100644 --- a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/toxml/ObjectNameAttributeWritingStrategy.java +++ b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/toxml/ObjectNameAttributeWritingStrategy.java @@ -37,8 +37,11 @@ public class ObjectNameAttributeWritingStrategy implements AttributeWritingStrat String moduleName = ((ObjectNameAttributeMappingStrategy.MappedDependency) value).getServiceName(); String refName = ((ObjectNameAttributeMappingStrategy.MappedDependency) value).getRefName(); + String namespaceForType = ((ObjectNameAttributeMappingStrategy.MappedDependency) value).getNamespace(); - final Element typeElement = XmlUtil.createTextElement(document, XmlNetconfConstants.TYPE_KEY, moduleName); + Element typeElement = XmlUtil.createPrefixedTextElement(document, XmlNetconfConstants.TYPE_KEY, XmlNetconfConstants.PREFIX, + moduleName); + XmlUtil.addPrefixedNamespaceAttr(typeElement, XmlNetconfConstants.PREFIX, namespaceForType); innerNode.appendChild(typeElement); final Element nameElement = XmlUtil.createTextElement(document, XmlNetconfConstants.NAME_KEY, refName); diff --git a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/config/Config.java b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/config/Config.java index 115fc2ccb6..2242101f5b 100644 --- a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/config/Config.java +++ b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/config/Config.java @@ -87,10 +87,10 @@ public class Config { } private void addServices(Services serviceTracker, Collection instances, - Collection providedServices) { + Map providedServices) { for (ObjectName instanceOn : instances) { - for (String serviceName : providedServices) { - serviceTracker.addServiceEntry(serviceName, instanceOn); + for (Entry serviceName : providedServices.entrySet()) { + serviceTracker.addServiceEntry(serviceName.getKey(), serviceName.getValue(), instanceOn); } } } @@ -149,6 +149,7 @@ public class Config { return root; } + // TODO remove commented modules from output private void addEmptyModulesCommented(Document document, Element root, String moduleNamespace, Entry> moduleMappingEntry) { Element emptyModule = document.createElement(XmlNetconfConstants.MODULE_KEY); @@ -224,7 +225,7 @@ public class Config { Optional servicesElement = xml.getOnlyChildElementOptionally(XmlNetconfConstants.SERVICES_KEY, XmlNetconfConstants.URN_OPENDAYLIGHT_PARAMS_XML_NS_YANG_CONTROLLER_CONFIG); - Map> mappedServices; + Map>> mappedServices; if (servicesElement.isPresent()) { mappedServices = Services.fromXml(servicesElement.get()); recognisedChildren.add(servicesElement.get()); @@ -242,8 +243,9 @@ public class Config { checkState(moduleConfig != null, "Cannot find ModuleConfig with name " + factoryName + " in " + moduleNamesToConfigs); // Set services = ; - for (String serviceName : moduleConfig.getProvidedServices()) { - services.addServiceEntry(serviceName, existingON); + for (Entry serviceName : moduleConfig.getProvidedServices().entrySet()) { + + services.addServiceEntry(serviceName.getKey(), serviceName.getValue(), existingON); } } diff --git a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/config/ModuleConfig.java b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/config/ModuleConfig.java index 991a5637e1..064cd9fe6f 100644 --- a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/config/ModuleConfig.java +++ b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/config/ModuleConfig.java @@ -8,34 +8,52 @@ package org.opendaylight.controller.netconf.confignetconfconnector.mapping.config; +import com.google.common.base.Preconditions; +import com.google.common.collect.Maps; import org.opendaylight.controller.config.api.jmx.ObjectNameUtil; import org.opendaylight.controller.netconf.confignetconfconnector.operations.editconfig.EditStrategyType; import org.opendaylight.controller.netconf.util.xml.XmlElement; import org.opendaylight.controller.netconf.util.xml.XmlNetconfConstants; import org.opendaylight.controller.netconf.util.xml.XmlUtil; +import org.opendaylight.yangtools.yang.common.QName; import org.w3c.dom.Document; import org.w3c.dom.Element; import javax.management.ObjectName; import java.util.Collection; +import java.util.HashMap; +import java.util.Map; public class ModuleConfig { private final String moduleName; private final InstanceConfig instanceConfig; - private final Collection providedServices; + // TODO 2 services from same namespace ? + private final Map providedServices; - public ModuleConfig(String moduleName, InstanceConfig mbeanMapping, Collection providedServices) { + public ModuleConfig(String moduleName, InstanceConfig mbeanMapping, Collection providedServices) { this.moduleName = moduleName; this.instanceConfig = mbeanMapping; - this.providedServices = providedServices; + this.providedServices = mapServices(providedServices); + } + + private Map mapServices(Collection providedServices) { + HashMap mapped = Maps.newHashMap(); + + for (QName providedService : providedServices) { + String key = providedService.getNamespace().toString(); + Preconditions.checkState(mapped.containsKey(key) == false); + mapped.put(key, providedService.getLocalName()); + } + + return mapped; } public InstanceConfig getMbeanMapping() { return instanceConfig; } - public Collection getProvidedServices() { + public Map getProvidedServices() { return providedServices; } @@ -64,7 +82,7 @@ public class ModuleConfig { private String getPrefix(String namespace) { // if(namespace.contains(":")==false) - return "prefix"; + return XmlNetconfConstants.PREFIX; // return namespace.substring(namespace.lastIndexOf(':') + 1, // namespace.length()); diff --git a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/config/Services.java b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/config/Services.java index 883dde7564..e4fa6f504b 100644 --- a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/config/Services.java +++ b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/config/Services.java @@ -13,6 +13,7 @@ import com.google.common.base.Function; import com.google.common.base.Preconditions; import com.google.common.collect.Maps; import com.google.common.collect.Sets; +import org.opendaylight.controller.netconf.confignetconfconnector.mapping.attributes.fromxml.ObjectNameAttributeReadingStrategy; import org.opendaylight.controller.netconf.util.xml.XmlElement; import org.opendaylight.controller.netconf.util.xml.XmlNetconfConstants; import org.opendaylight.controller.netconf.util.xml.XmlUtil; @@ -42,27 +43,33 @@ public final class Services { private long suffix = 1; private final Map instanceToRef = Maps.newHashMap(); - private final Map> serviceNameToRefNameToInstance = Maps + private final Map>> namespaceToServiceNameToRefNameToInstance = Maps .newHashMap(); - public String addServiceEntry(String serviceName, ObjectName on) { + public String addServiceEntry(String namespace, String serviceName, ObjectName on) { String moduleName = on.getKeyProperty("moduleFactoryName"); String instanceName = on.getKeyProperty("instanceName"); - String refName = addServiceEntry(serviceName, moduleName, instanceName); + String refName = addServiceEntry(namespace, serviceName, moduleName, instanceName); logger.trace("Added service entry to tracker. Service name {}, ref name {}, module name {}, instance name {}", serviceName, refName, moduleName, instanceName); return refName; } @VisibleForTesting - public String addServiceEntry(String serviceName, String moduleName, String instanceName) { + public String addServiceEntry(String namespace, String serviceName, String moduleName, String instanceName) { ServiceInstance serviceInstance = new ServiceInstance(moduleName, instanceName); serviceInstance.setServiceName(serviceName); String refName = instanceToRef.get(serviceInstance); + Map> serviceNameToRefNameToInstance = namespaceToServiceNameToRefNameToInstance.get(namespace); + if (serviceNameToRefNameToInstance == null) { + serviceNameToRefNameToInstance = Maps.newHashMap(); + namespaceToServiceNameToRefNameToInstance.put(namespace, serviceNameToRefNameToInstance); + } + Map refNameToInstance = serviceNameToRefNameToInstance.get(serviceName); if (refNameToInstance == null) { refNameToInstance = Maps.newHashMap(); @@ -101,7 +108,11 @@ public final class Services { return refNamesAsSet; } - public ServiceInstance getByServiceAndRefName(String serviceName, String refName) { + public ServiceInstance getByServiceAndRefName(String namespace, String serviceName, String refName) { + Map> serviceNameToRefNameToInstance = namespaceToServiceNameToRefNameToInstance.get(namespace); + Preconditions.checkArgument(serviceNameToRefNameToInstance != null, "No serviceInstances mapped to " + namespace + " , " + + serviceNameToRefNameToInstance.keySet()); + Map refNameToInstance = serviceNameToRefNameToInstance.get(serviceName); Preconditions.checkArgument(refNameToInstance != null, "No serviceInstances mapped to " + serviceName + " , " + serviceNameToRefNameToInstance.keySet()); @@ -114,20 +125,28 @@ public final class Services { // TODO hide getMappedServices, call it explicitly in toXml - public Map> getMappedServices() { - Map> retVal = Maps.newHashMap(); + public Map>> getMappedServices() { + Map>> retVal = Maps.newHashMap(); + + for (String namespace : namespaceToServiceNameToRefNameToInstance.keySet()) { - for (String serviceName : serviceNameToRefNameToInstance.keySet()) { + Map> serviceNameToRefNameToInstance = namespaceToServiceNameToRefNameToInstance + .get(namespace); + Map> innerRetVal = Maps.newHashMap(); - Map innerRetVal = Maps.transformValues(serviceNameToRefNameToInstance.get(serviceName), - new Function() { - @Nullable - @Override - public String apply(@Nullable ServiceInstance serviceInstance) { - return serviceInstance.toString(); - } - }); - retVal.put(serviceName, innerRetVal); + for (String serviceName : serviceNameToRefNameToInstance.keySet()) { + + Map innerInnerRetVal = Maps.transformValues( + serviceNameToRefNameToInstance.get(serviceName), new Function() { + @Nullable + @Override + public String apply(@Nullable ServiceInstance serviceInstance) { + return serviceInstance.toString(); + } + }); + innerRetVal.put(serviceName, innerInnerRetVal); + } + retVal.put(namespace, innerRetVal); } return retVal; @@ -135,35 +154,45 @@ public final class Services { // TODO hide resolveServices, call it explicitly in fromXml - public static Services resolveServices(Map> mappedServices) { + public static Services resolveServices(Map>> mappedServices) { Services tracker = new Services(); - for (Entry> serviceEntry : mappedServices.entrySet()) { + for (Entry>> namespaceEntry : mappedServices.entrySet()) { + String namespace = namespaceEntry.getKey(); - String serviceName = serviceEntry.getKey(); - for (Entry refEntry : serviceEntry.getValue().entrySet()) { + for (Entry> serviceEntry : namespaceEntry.getValue().entrySet()) { - Map refNameToInstance = tracker.serviceNameToRefNameToInstance - .get(serviceName); - if (refNameToInstance == null) { - refNameToInstance = Maps.newHashMap(); - tracker.serviceNameToRefNameToInstance.put(serviceName, refNameToInstance); - } + String serviceName = serviceEntry.getKey(); + for (Entry refEntry : serviceEntry.getValue().entrySet()) { - String refName = refEntry.getKey(); - Preconditions.checkState(false == refNameToInstance.containsKey(refName), - "Duplicate reference name to service " + refName + " under service " + serviceName); - ServiceInstance serviceInstance = ServiceInstance.fromString(refEntry.getValue()); - refNameToInstance.put(refName, serviceInstance); + Map> namespaceToServices = tracker.namespaceToServiceNameToRefNameToInstance.get(namespace); + if (namespaceToServices == null) { + namespaceToServices = Maps.newHashMap(); + tracker.namespaceToServiceNameToRefNameToInstance.put(namespace, namespaceToServices); + } + + Map refNameToInstance = namespaceToServices + .get(serviceName); + if (refNameToInstance == null) { + refNameToInstance = Maps.newHashMap(); + namespaceToServices.put(serviceName, refNameToInstance); + } - tracker.instanceToRef.put(serviceInstance, refEntry.getKey()); + String refName = refEntry.getKey(); + Preconditions.checkState(false == refNameToInstance.containsKey(refName), + "Duplicate reference name to service " + refName + " under service " + serviceName); + ServiceInstance serviceInstance = ServiceInstance.fromString(refEntry.getValue()); + refNameToInstance.put(refName, serviceInstance); + + tracker.instanceToRef.put(serviceInstance, refEntry.getKey()); + } } } return tracker; } - public static Map> fromXml(XmlElement xml) { - Map> retVal = Maps.newHashMap(); + public static Map>> fromXml(XmlElement xml) { + Map>> retVal = Maps.newHashMap(); List services = xml.getChildElements(SERVICE_KEY); xml.checkUnrecognisedElements(services); @@ -171,10 +200,20 @@ public final class Services { for (XmlElement service : services) { XmlElement typeElement = service.getOnlyChildElement(TYPE_KEY); - String serviceName = typeElement.getTextContent(); + Entry prefixNamespace = typeElement.findNamespaceOfTextContent(); + + Preconditions.checkState(prefixNamespace.getKey()!=null && prefixNamespace.getKey().equals("") == false, "Type attribute was not prefixed"); + + Map> namespaceToServices = retVal.get(prefixNamespace.getValue()); + if(namespaceToServices == null) { + namespaceToServices = Maps.newHashMap(); + retVal.put(prefixNamespace.getValue(), namespaceToServices); + } + + String serviceName = ObjectNameAttributeReadingStrategy.checkPrefixAndExtractServiceName(typeElement, prefixNamespace); Map innerMap = Maps.newHashMap(); - retVal.put(serviceName, innerMap); + namespaceToServices.put(serviceName, innerMap); List instances = service.getChildElements(XmlNetconfConstants.INSTANCE_KEY); service.checkUnrecognisedElements(instances, typeElement); @@ -205,29 +244,34 @@ public final class Services { } } - public Element toXml(Map> mappedServices, Document document) { + public Element toXml(Map>> mappedServices, Document document) { Element root = document.createElement(XmlNetconfConstants.SERVICES_KEY); XmlUtil.addNamespaceAttr(root, XmlNetconfConstants.URN_OPENDAYLIGHT_PARAMS_XML_NS_YANG_CONTROLLER_CONFIG); - for (Entry> serviceEntry : mappedServices.entrySet()) { - Element serviceElement = document.createElement(SERVICE_KEY); - root.appendChild(serviceElement); + for (String namespace : mappedServices.keySet()) { + + for (Entry> serviceEntry : mappedServices.get(namespace).entrySet()) { + Element serviceElement = document.createElement(SERVICE_KEY); + root.appendChild(serviceElement); - Element typeElement = XmlUtil.createTextElement(document, TYPE_KEY, serviceEntry.getKey()); - serviceElement.appendChild(typeElement); + Element typeElement = XmlUtil.createPrefixedTextElement(document, TYPE_KEY, XmlNetconfConstants.PREFIX, + serviceEntry.getKey()); + XmlUtil.addPrefixedNamespaceAttr(typeElement, XmlNetconfConstants.PREFIX, namespace); + serviceElement.appendChild(typeElement); - for (Entry instanceEntry : serviceEntry.getValue().entrySet()) { - Element instanceElement = document.createElement(XmlNetconfConstants.INSTANCE_KEY); - serviceElement.appendChild(instanceElement); + for (Entry instanceEntry : serviceEntry.getValue().entrySet()) { + Element instanceElement = document.createElement(XmlNetconfConstants.INSTANCE_KEY); + serviceElement.appendChild(instanceElement); - Element nameElement = XmlUtil.createTextElement(document, NAME_KEY, instanceEntry.getKey()); - instanceElement.appendChild(nameElement); + Element nameElement = XmlUtil.createTextElement(document, NAME_KEY, instanceEntry.getKey()); + instanceElement.appendChild(nameElement); - Element providerElement = XmlUtil.createTextElement(document, PROVIDER_KEY, instanceEntry.getValue()); - instanceElement.appendChild(providerElement); + Element providerElement = XmlUtil.createTextElement(document, PROVIDER_KEY, instanceEntry.getValue()); + instanceElement.appendChild(providerElement); + } } - } + } return root; } diff --git a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/operations/editconfig/EditConfig.java b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/operations/editconfig/EditConfig.java index 362f023283..101af48a89 100644 --- a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/operations/editconfig/EditConfig.java +++ b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/operations/editconfig/EditConfig.java @@ -151,6 +151,7 @@ public class EditConfig extends AbstractConfigNetconfOperation { Map> mBeanEntries) { Map> factories = transform(configRegistryClient, mBeanEntries); + return new Config(factories); } diff --git a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/operations/getconfig/GetConfig.java b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/operations/getconfig/GetConfig.java index 9b8c1503c7..79b3e26aec 100644 --- a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/operations/getconfig/GetConfig.java +++ b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/operations/getconfig/GetConfig.java @@ -80,6 +80,7 @@ public class GetConfig extends AbstractConfigNetconfOperation { Element dataElement = document.createElement(XmlNetconfConstants.DATA_KEY); final Set instances = Datastore.getInstanceQueryStrategy(source, this.transactionProvider) .queryInstances(configRegistryClient); + final Config configMapping = new Config(transform(configRegistryClient, yangStoreSnapshot.getModuleMXBeanEntryMap())); dataElement = configMapping.toXml(instances, this.maybeNamespace, document, dataElement); diff --git a/opendaylight/netconf/config-netconf-connector/src/test/java/org/opendaylight/controller/netconf/confignetconfconnector/NetconfMappingTest.java b/opendaylight/netconf/config-netconf-connector/src/test/java/org/opendaylight/controller/netconf/confignetconfconnector/NetconfMappingTest.java index d404a96468..de0ecdbf1e 100644 --- a/opendaylight/netconf/config-netconf-connector/src/test/java/org/opendaylight/controller/netconf/confignetconfconnector/NetconfMappingTest.java +++ b/opendaylight/netconf/config-netconf-connector/src/test/java/org/opendaylight/controller/netconf/confignetconfconnector/NetconfMappingTest.java @@ -143,6 +143,7 @@ public class NetconfMappingTest extends AbstractConfigTest { edit("netconfMessages/editConfig.xml"); checkBinaryLeafEdited(getConfigCandidate()); + // default-operation:none, should not affect binary leaf edit("netconfMessages/editConfig_none.xml"); checkBinaryLeafEdited(getConfigCandidate()); @@ -150,7 +151,6 @@ public class NetconfMappingTest extends AbstractConfigTest { // check after edit commit(); Element response = getConfigRunning(); - // System.out.println(Xml.toString(response)); checkBinaryLeafEdited(response); checkTypeConfigAttribute(response); diff --git a/opendaylight/netconf/config-netconf-connector/src/test/java/org/opendaylight/controller/netconf/confignetconfconnector/ServiceTrackerTest.java b/opendaylight/netconf/config-netconf-connector/src/test/java/org/opendaylight/controller/netconf/confignetconfconnector/ServiceTrackerTest.java index e07f9ce3e1..425ecf6d02 100644 --- a/opendaylight/netconf/config-netconf-connector/src/test/java/org/opendaylight/controller/netconf/confignetconfconnector/ServiceTrackerTest.java +++ b/opendaylight/netconf/config-netconf-connector/src/test/java/org/opendaylight/controller/netconf/confignetconfconnector/ServiceTrackerTest.java @@ -1,10 +1,10 @@ /* - * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ +* Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. +* +* This program and the accompanying materials are made available under the +* terms of the Eclipse Public License v1.0 which accompanies this distribution, +* and is available at http://www.eclipse.org/legal/epl-v10.html +*/ package org.opendaylight.controller.netconf.confignetconfconnector; @@ -31,41 +31,41 @@ public class ServiceTrackerTest { @Test public void testOneInstanceMultipleServices() { Services services = new Services(); - services.addServiceEntry("s1", "module", "instance"); + services.addServiceEntry("nm", "s1", "module", "instance"); assertEquals(1, services.getMappedServices().size()); - services.addServiceEntry("s2", "module", "instance"); + services.addServiceEntry("nm2", "s2", "module", "instance"); assertEquals(2, services.getMappedServices().size()); } @Test public void testMultipleInstancesOneName() throws Exception { Services services = new Services(); - services.addServiceEntry("s1", "module", "instance"); + services.addServiceEntry("nm", "s1", "module", "instance"); assertEquals(1, services.getMappedServices().size()); - services.addServiceEntry("s1", "module2", "instance"); + services.addServiceEntry("nm", "s1", "module2", "instance"); assertEquals(1, services.getMappedServices().size()); - assertEquals(2, services.getMappedServices().get("s1").size()); - assertTrue(services.getMappedServices().get("s1").containsKey("ref_instance")); - assertTrue(services.getMappedServices().get("s1").containsKey("ref_instance_1")); + assertEquals(2, services.getMappedServices().get("nm").get("s1").size()); + assertTrue(services.getMappedServices().get("nm").get("s1").containsKey("ref_instance")); + assertTrue(services.getMappedServices().get("nm").get("s1").containsKey("ref_instance_1")); } @Test public void testMultipleInstancesOneName2() throws Exception { Services services = new Services(); - services.addServiceEntry("s1", "module", "instance_1"); - - services.addServiceEntry("s2", "module2", "instance"); - services.addServiceEntry("s2", "module3", "instance"); - services.addServiceEntry("s1", "module3", "instance"); - - assertEquals(2, services.getMappedServices().get("s1").size()); - assertEquals(2, services.getMappedServices().get("s2").size()); - assertTrue(services.getMappedServices().get("s1").containsKey("ref_instance_2")); - assertTrue(services.getMappedServices().get("s1").containsKey("ref_instance_1")); - assertTrue(services.getMappedServices().get("s2").containsKey("ref_instance")); - assertTrue(services.getMappedServices().get("s2").containsKey("ref_instance_2")); + services.addServiceEntry("nm", "s1", "module", "instance_1"); + + services.addServiceEntry("nm2", "s2", "module2", "instance"); + services.addServiceEntry("nm2", "s2", "module3", "instance"); + services.addServiceEntry("nm", "s1", "module3", "instance"); + + assertEquals(2, services.getMappedServices().get("nm").get("s1").size()); + assertEquals(2, services.getMappedServices().get("nm2").get("s2").size()); + assertTrue(services.getMappedServices().get("nm").get("s1").containsKey("ref_instance_2")); + assertTrue(services.getMappedServices().get("nm").get("s1").containsKey("ref_instance_1")); + assertTrue(services.getMappedServices().get("nm2").get("s2").containsKey("ref_instance")); + assertTrue(services.getMappedServices().get("nm2").get("s2").containsKey("ref_instance_2")); } } diff --git a/opendaylight/netconf/netconf-util/src/main/java/org/opendaylight/controller/netconf/util/xml/XmlElement.java b/opendaylight/netconf/netconf-util/src/main/java/org/opendaylight/controller/netconf/util/xml/XmlElement.java index c37b4abc62..212214cd2a 100644 --- a/opendaylight/netconf/netconf-util/src/main/java/org/opendaylight/controller/netconf/util/xml/XmlElement.java +++ b/opendaylight/netconf/netconf-util/src/main/java/org/opendaylight/controller/netconf/util/xml/XmlElement.java @@ -326,7 +326,7 @@ public class XmlElement { prefix = ""; } if (namespaces.containsKey(prefix) == false) { - throw new IllegalArgumentException("Cannot find namespace for " + element + ". Prefix from content is " + throw new IllegalArgumentException("Cannot find namespace for " + XmlUtil.toString(element) + ". Prefix from content is " + prefix + ". Found namespaces " + namespaces); } return Maps.immutableEntry(prefix, namespaces.get(prefix)); diff --git a/opendaylight/netconf/netconf-util/src/main/java/org/opendaylight/controller/netconf/util/xml/XmlNetconfConstants.java b/opendaylight/netconf/netconf-util/src/main/java/org/opendaylight/controller/netconf/util/xml/XmlNetconfConstants.java index 2a900e052b..7fb293f054 100644 --- a/opendaylight/netconf/netconf-util/src/main/java/org/opendaylight/controller/netconf/util/xml/XmlNetconfConstants.java +++ b/opendaylight/netconf/netconf-util/src/main/java/org/opendaylight/controller/netconf/util/xml/XmlNetconfConstants.java @@ -33,6 +33,8 @@ public class XmlNetconfConstants { public static final String NAME_KEY = "name"; public static final String NOTIFICATION_ELEMENT_NAME = "notification"; + public static final String PREFIX = "prefix"; + // // public static final String RFC4741_TARGET_NAMESPACE = "urn:ietf:params:xml:ns:netconf:base:1.0"; diff --git a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/editConfig.xml b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/editConfig.xml index 904c0a6322..0611dceb3a 100644 --- a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/editConfig.xml +++ b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/editConfig.xml @@ -75,7 +75,7 @@ 44 - testing + prefix:testing ref_dep @@ -86,7 +86,7 @@ test2 - testing + prefix:testing ref_dep @@ -94,7 +94,7 @@ - testing + prefix:testing ref_dep /config/modules/module[name='impl-dep']/instance[name='dep'] diff --git a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/editConfig_none.xml b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/editConfig_none.xml index 42021c59a3..c825536b7b 100644 --- a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/editConfig_none.xml +++ b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/editConfig_none.xml @@ -69,7 +69,7 @@ 44 - testing + prefix:testing ref_dep @@ -79,14 +79,14 @@ test2 - testing + prefix:testing ref_dep - testing + prefix:testing ref_dep /config/modules/module[name='impl-dep']/instance[name='dep'] diff --git a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/namespaces/editConfig_differentNamespaceTO.xml b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/namespaces/editConfig_differentNamespaceTO.xml index efa4690f6f..82c218dd73 100644 --- a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/namespaces/editConfig_differentNamespaceTO.xml +++ b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/namespaces/editConfig_differentNamespaceTO.xml @@ -75,7 +75,7 @@ 44 - testing + prefix:testing ref_dep @@ -86,7 +86,7 @@ test2 - testing + prefix:testing ref_dep @@ -94,7 +94,7 @@ - testing + prefix:testing ref_dep /config/modules/module[name='impl-dep']/instance[name='dep'] diff --git a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/namespaces/editConfig_sameAttrDifferentNamespaces.xml b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/namespaces/editConfig_sameAttrDifferentNamespaces.xml index 3dbb297c29..7c19b9f7b3 100644 --- a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/namespaces/editConfig_sameAttrDifferentNamespaces.xml +++ b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/namespaces/editConfig_sameAttrDifferentNamespaces.xml @@ -76,7 +76,7 @@ 44 - testing + prefix:testing ref_dep @@ -87,7 +87,7 @@ test2 - testing + prefix:testing ref_dep @@ -95,7 +95,7 @@ - testing + prefix:testing ref_dep /config/modules/module[name='impl-dep']/instance[name='dep'] diff --git a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/namespaces/editConfig_sameAttrDifferentNamespacesList.xml b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/namespaces/editConfig_sameAttrDifferentNamespacesList.xml index 504ccff78f..84ae575559 100644 --- a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/namespaces/editConfig_sameAttrDifferentNamespacesList.xml +++ b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/namespaces/editConfig_sameAttrDifferentNamespacesList.xml @@ -75,7 +75,7 @@ 44 - testing + prefix:testing ref_dep @@ -86,7 +86,7 @@ test2 - testing + prefix:testing ref_dep @@ -94,7 +94,7 @@ - testing + prefix:testing ref_dep /config/modules/module[name='impl-dep']/instance[name='dep'] diff --git a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/namespaces/editConfig_typeNameConfigAttributeMatching.xml b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/namespaces/editConfig_typeNameConfigAttributeMatching.xml index 8398fdb588..2d9e9edb2c 100644 --- a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/namespaces/editConfig_typeNameConfigAttributeMatching.xml +++ b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/namespaces/editConfig_typeNameConfigAttributeMatching.xml @@ -74,7 +74,7 @@ 44 - testing + prefix:testing ref_dep @@ -85,7 +85,7 @@ test2 - testing + prefix:testing ref_dep @@ -93,7 +93,7 @@ - testing + prefix:testing ref_dep /config/modules/module[name='impl-dep']/instance[name='dep'] diff --git a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/unrecognised/editConfig_unrecognised1.xml b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/unrecognised/editConfig_unrecognised1.xml index 6b267c57a3..e675e86d07 100644 --- a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/unrecognised/editConfig_unrecognised1.xml +++ b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/unrecognised/editConfig_unrecognised1.xml @@ -23,7 +23,7 @@ - testing + prefix:testing ref_dep /config/modules/module[name='impl-dep']/instance[name='dep'] diff --git a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/unrecognised/editConfig_unrecognised2.xml b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/unrecognised/editConfig_unrecognised2.xml index 8ca7ee724a..9407dd0c75 100644 --- a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/unrecognised/editConfig_unrecognised2.xml +++ b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/unrecognised/editConfig_unrecognised2.xml @@ -24,7 +24,7 @@ - testing + prefix:testing ref_dep /config/modules/module[name='impl-dep']/instance[name='dep'] diff --git a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/unrecognised/editConfig_unrecognised3.xml b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/unrecognised/editConfig_unrecognised3.xml index d3705cc3c4..233ad23286 100644 --- a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/unrecognised/editConfig_unrecognised3.xml +++ b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/unrecognised/editConfig_unrecognised3.xml @@ -25,7 +25,7 @@ error l - testing + prefix:testing ref_dep /config/modules/module[name='impl-dep']/instance[name='dep'] diff --git a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/unrecognised/editConfig_unrecognised4.xml b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/unrecognised/editConfig_unrecognised4.xml index a485574969..4593887f49 100644 --- a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/unrecognised/editConfig_unrecognised4.xml +++ b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/unrecognised/editConfig_unrecognised4.xml @@ -24,7 +24,7 @@ l - testing + prefix:testing error diff --git a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/unrecognised/editConfig_unrecognised5.xml b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/unrecognised/editConfig_unrecognised5.xml index 654a183359..81c4137d4e 100644 --- a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/unrecognised/editConfig_unrecognised5.xml +++ b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/unrecognised/editConfig_unrecognised5.xml @@ -24,7 +24,7 @@ l - testing + prefix:testing ref_dep diff --git a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/unrecognised/editConfig_unrecognised6.xml b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/unrecognised/editConfig_unrecognised6.xml index fc43a77406..528d5b06fc 100644 --- a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/unrecognised/editConfig_unrecognised6.xml +++ b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/unrecognised/editConfig_unrecognised6.xml @@ -23,7 +23,7 @@ - testing + prefix:testing ref_dep /config/modules/module[name='impl-dep']/instance[name='dep'] diff --git a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/unrecognised/editConfig_unrecognised7.xml b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/unrecognised/editConfig_unrecognised7.xml index 1bea536934..a1e304b374 100644 --- a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/unrecognised/editConfig_unrecognised7.xml +++ b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/unrecognised/editConfig_unrecognised7.xml @@ -75,7 +75,7 @@ 44 - testing + prefix:testing ref_dep @@ -86,7 +86,7 @@ test2 - testing + prefix:testing ref_dep @@ -94,7 +94,7 @@ - testing + prefix:testing ref_dep /config/modules/module[name='impl-dep']/instance[name='dep'] diff --git a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/unrecognised/editConfig_unrecognised8.xml b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/unrecognised/editConfig_unrecognised8.xml index d0afb276aa..812882a2a9 100644 --- a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/unrecognised/editConfig_unrecognised8.xml +++ b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/unrecognised/editConfig_unrecognised8.xml @@ -75,7 +75,7 @@ error - testing + prefix:testing ref_dep @@ -86,7 +86,7 @@ test2 - testing + prefix:testing ref_dep @@ -94,7 +94,7 @@ - testing + prefix:testing ref_dep /config/modules/module[name='impl-dep']/instance[name='dep'] -- 2.36.6