Details
-
Bug
-
Status: Resolved
-
Resolution: Done
-
None
-
None
-
None
-
None
-
Operating System: Mac OS
Platform: Macintosh
-
4760
Description
When using the netconf connector with Cisco-IOS-XR-l2vpn-cfg@2015-01-07.yang and trying to write the following piece of configuration, the 'class' leaf causes the request to fail.
<l2vpn xmlns="http://cisco.com/ns/yang/Cisco-IOS-XR-l2vpn-cfg">
<database>
<xconnect-groups>
<xconnect-group>
<name>GEN15-1000</name>
<p2p-xconnects>
<p2p-xconnect>
<name>GEN15-p2p-1000</name>
<pseudowires>
<pseudowire>
<pseudowire-id>2006</pseudowire-id>
<neighbor>
<neighbor>192.168.0.1</neighbor>
<class>static</class>
<mpls-static-labels>
<local-static-label>2006</local-static-label>
<remote-static-label>2006</remote-static-label>
</mpls-static-labels>
</neighbor>
</pseudowire>
</pseudowires>
<attachment-circuits>
<attachment-circuit>
<name>GigabitEthernet0/0/0/4</name>
<enable/>
</attachment-circuit>
</attachment-circuits>
</p2p-xconnect>
</p2p-xconnects>
</xconnect-group>
</xconnect-groups>
</database>
</l2vpn>
The following patch fixes the problem, though you may want to refactor it to implement the fix in BindingMapping. This patch is based of mdsal 0.8.0-SNAPSHOT commit 0e377a7bdfd917662d56075fbfd2bdc504d6fcd8
diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/yangtools/binding/data/codec/gen/impl/DataNodeContainerSerializerSource.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/yangtools/binding/data/codec/gen/impl/DataNodeContainerSerializerSource.java
index d9094ac..0c934c8 100644
— a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/yangtools/binding/data/codec/gen/impl/DataNodeContainerSerializerSource.java
+++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/yangtools/binding/data/codec/gen/impl/DataNodeContainerSerializerSource.java
@@ -124,8 +124,8 @@ abstract class DataNodeContainerSerializerSource extends DataObjectSerializerSou
prefix = "is";
}
}
-
- return prefix + BindingMapping.getClassName(node.getQName().getLocalName());
+ final String potential = BindingMapping.getClassName(node.getQName().getLocalName());
+ return prefix + ("Class".equals(potential) ? "XmlClass" : potential);
}
private void emitBody(final StringBuilder b)
{ diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/yangtools/binding/data/codec/impl/BindingCodecContext.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/yangtools/binding/data/codec/impl/BindingCodecContext.java index 6e05628..152e3f8 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/yangtools/binding/data/codec/impl/BindingCodecContext.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/yangtools/binding/data/codec/impl/BindingCodecContext.java @@ -238,7 +238,8 @@ final class BindingCodecContext implements CodecContextFactory, BindingCodecTree }private String getGetterName(final QName qName, TypeDefinition<?> typeDef) {
- final String suffix = BindingMapping.getClassName(qName);
+ final String candidate = BindingMapping.getClassName(qName);
+ final String suffix = ("Class".equals(candidate) ? "XmlClass" : candidate);
while (typeDef.getBaseType() != null) {
typeDef = typeDef.getBaseType();