From 86fbc7bff96f17325bbc7e3a1814acd9c4153da4 Mon Sep 17 00:00:00 2001 From: Maros Marsalek Date: Thu, 5 Dec 2013 14:17:47 +0100 Subject: [PATCH] Updated xpath pointing to a module instance under services subtree. From /config/modules/module[name='hash-map-data-store']/instance[name='hash-map-data-store'] To /modules/module[type=hash-map-data-store][name=hash-map-data-store'] Affected netconf operations: get-config, edit-config. Backwards compatibility with previous xpath version is preserved. Change-Id: Ic7c8057811001dbec34115b3745ce42bae790a45 Signed-off-by: Maros Marsalek --- .../mapping/config/Services.java | 22 +++++++++++++++---- .../NetconfMappingTest.java | 1 + .../resources/netconfMessages/editConfig.xml | 7 +++--- .../netconfMessages/editConfig_none.xml | 7 +++--- .../editConfig_differentNamespaceTO.xml | 7 +++--- ...editConfig_sameAttrDifferentNamespaces.xml | 7 +++--- ...Config_sameAttrDifferentNamespacesList.xml | 7 +++--- ...Config_typeNameConfigAttributeMatching.xml | 7 +++--- .../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 | 7 +++--- .../unrecognised/editConfig_unrecognised8.xml | 7 +++--- 15 files changed, 56 insertions(+), 33 deletions(-) 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 e4fa6f504b..f522668733 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 @@ -284,8 +284,13 @@ public final class Services { public static ServiceInstance fromString(String instanceId) { instanceId = instanceId.trim(); Matcher matcher = p.matcher(instanceId); + if(matcher.matches() == false) { + matcher = pDeprecated.matcher(instanceId); + } + Preconditions.checkArgument(matcher.matches(), "Unexpected format for provider, expected " + p.toString() - + " but was " + instanceId); + + " or " + pDeprecated.toString() + " but was " + instanceId); + String factoryName = matcher.group(1); String instanceName = matcher.group(2); return new ServiceInstance(factoryName, instanceName); @@ -310,16 +315,25 @@ public final class Services { return instanceName; } - private static final String blueprint = "/" + XmlNetconfConstants.CONFIG_KEY + "/" + private static final String blueprint = "/" + XmlNetconfConstants.MODULES_KEY + "/" + XmlNetconfConstants.MODULE_KEY + "[" - + XmlNetconfConstants.NAME_KEY + "='%s']/" + XmlNetconfConstants.INSTANCE_KEY + "[" + + XmlNetconfConstants.TYPE_KEY + "='%s'][" + XmlNetconfConstants.NAME_KEY + "='%s']"; - private static final String blueprintR = "/" + XmlNetconfConstants.CONFIG_KEY + "/" + // TODO unify with xpath in RuntimeRpc + + // Previous version of xpath, needs to be supported for backwards compatibility (persisted configs by config-persister) + private static final String blueprintRDeprecated = "/" + XmlNetconfConstants.CONFIG_KEY + "/" + XmlNetconfConstants.MODULES_KEY + "/" + XmlNetconfConstants.MODULE_KEY + "\\[" + XmlNetconfConstants.NAME_KEY + "='%s'\\]/" + XmlNetconfConstants.INSTANCE_KEY + "\\[" + XmlNetconfConstants.NAME_KEY + "='%s'\\]"; + private static final String blueprintR = "/" + + XmlNetconfConstants.MODULES_KEY + "/" + XmlNetconfConstants.MODULE_KEY + "\\[" + + XmlNetconfConstants.TYPE_KEY + "='%s'\\]\\[" + + XmlNetconfConstants.NAME_KEY + "='%s'\\]"; + + private static final Pattern pDeprecated = Pattern.compile(String.format(blueprintRDeprecated, "(.+)", "(.+)")); private static final Pattern p = Pattern.compile(String.format(blueprintR, "(.+)", "(.+)")); @Override 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 d91e38db33..73522e90b4 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 @@ -132,6 +132,7 @@ public class NetconfMappingTest extends AbstractConfigTest { // check after edit commit(); Element response = getConfigRunning(); + System.err.println(XmlUtil.toString(response)); checkBinaryLeafEdited(response); checkTypeConfigAttribute(response); 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 caa0094c4b..3957f7f474 100644 --- a/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/editConfig.xml +++ b/opendaylight/netconf/netconf-util/src/test/resources/netconfMessages/editConfig.xml @@ -105,7 +105,7 @@ prefix:testing - ref_dep + ref_dep_2 @@ -115,7 +115,7 @@ prefix:testing ref_dep - /config/modules/module[name='impl-dep']/instance[name='dep'] + /modules/module[type='impl-dep'][name='dep'] @@ -125,7 +125,8 @@ ref_test1 - /config/modules/module[name='impl-netconf']/instance[name='test1'] + + /modules/module[type='impl-netconf'][name='test1'] 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 c825536b7b..388aa4f2ab 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 @@ -89,17 +89,18 @@ prefix:testing ref_dep - /config/modules/module[name='impl-dep']/instance[name='dep'] + /modules/module[type='impl-dep'][name='dep'] ref_dep_2 - /config/modules/module[name='impl-dep']/instance[name='dep2'] + /modules/module[type='impl-dep'][name='dep2'] ref_test1 - /config/modules/module[name='impl-netconf']/instance[name='test1'] + + /modules/module[type='impl-netconf'][name='test1'] 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 82c218dd73..4d94d9e949 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 @@ -97,17 +97,18 @@ prefix:testing ref_dep - /config/modules/module[name='impl-dep']/instance[name='dep'] + /modules/module[type='impl-dep'][name='dep'] ref_dep_2 - /config/modules/module[name='impl-dep']/instance[name='dep2'] + /modules/module[type='impl-dep'][name='dep2'] ref_test1 - /config/modules/module[name='impl-netconf']/instance[name='test1'] + + /modules/module[type='impl-netconf'][name='test1'] 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 7c19b9f7b3..c399c196d3 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 @@ -98,17 +98,18 @@ prefix:testing ref_dep - /config/modules/module[name='impl-dep']/instance[name='dep'] + /modules/module[type='impl-dep'][name='dep'] ref_dep_2 - /config/modules/module[name='impl-dep']/instance[name='dep2'] + /modules/module[type='impl-dep'][name='dep2'] ref_test1 - /config/modules/module[name='impl-netconf']/instance[name='test1'] + + /modules/module[type='impl-netconf'][name='test1'] 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 84ae575559..47b82c6114 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 @@ -97,17 +97,18 @@ prefix:testing ref_dep - /config/modules/module[name='impl-dep']/instance[name='dep'] + /modules/module[type='impl-dep'][name='dep'] ref_dep_2 - /config/modules/module[name='impl-dep']/instance[name='dep2'] + /modules/module[type='impl-dep'][name='dep2'] ref_test1 - /config/modules/module[name='impl-netconf']/instance[name='test1'] + + /modules/module[type='impl-netconf'][name='test1'] 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 2d9e9edb2c..0e70e13a34 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 @@ -96,17 +96,18 @@ prefix:testing ref_dep - /config/modules/module[name='impl-dep']/instance[name='dep'] + /modules/module[type='impl-dep'][name='dep'] ref_dep_2 - /config/modules/module[name='impl-dep']/instance[name='dep2'] + /modules/module[type='impl-dep'][name='dep2'] ref_test1 - /config/modules/module[name='impl-netconf']/instance[name='test1'] + + /modules/module[type='impl-netconf'][name='test1'] 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 9407dd0c75..bc05d63931 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 @@ -27,7 +27,7 @@ prefix:testing ref_dep - /config/modules/module[name='impl-dep']/instance[name='dep'] + /modules/module[type='impl-dep'][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 233ad23286..f20d9ff9fa 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 @@ -28,7 +28,7 @@ prefix:testing ref_dep - /config/modules/module[name='impl-dep']/instance[name='dep'] + /modules/module[type='impl-dep'][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 4593887f49..ff0bd9feb5 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 @@ -29,7 +29,7 @@ ref_dep - /config/modules/module[name='impl-dep']/instance[name='dep'] + /modules/module[type='impl-dep'][name='dep'] 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 81c4137d4e..906367b7a6 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 @@ -29,7 +29,7 @@ ref_dep error - /config/modules/module[name='impl-dep']/instance[name='dep'] + /modules/module[type='impl-dep'][name='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 528d5b06fc..b05046db4b 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 @@ -26,7 +26,7 @@ prefix:testing ref_dep - /config/modules/module[name='impl-dep']/instance[name='dep'] + /modules/module[type='impl-dep'][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 a1e304b374..d03bb084b8 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 @@ -97,17 +97,18 @@ prefix:testing ref_dep - /config/modules/module[name='impl-dep']/instance[name='dep'] + /modules/module[type='impl-dep'][name='dep'] ref_dep_2 - /config/modules/module[name='impl-dep']/instance[name='dep2'] + /modules/module[type='impl-dep'][name='dep2'] ref_test1 - /config/modules/module[name='impl-netconf']/instance[name='test1'] + + /modules/module[type='impl-netconf'][name='test1'] 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 812882a2a9..3722973912 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 @@ -97,17 +97,18 @@ prefix:testing ref_dep - /config/modules/module[name='impl-dep']/instance[name='dep'] + /modules/module[type='impl-dep'][name='dep'] ref_dep_2 - /config/modules/module[name='impl-dep']/instance[name='dep2'] + /modules/module[type='impl-dep'][name='dep2'] ref_test1 - /config/modules/module[name='impl-netconf']/instance[name='test1'] + + /modules/module[type='impl-netconf'][name='test1'] -- 2.36.6