[MDSAL-121] YANG leaf named 'class' breaks write with netconf connector Created: 11/Dec/15  Updated: 09/Mar/18  Resolved: 12/May/16

Status: Resolved
Project: mdsal
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Bug
Reporter: Donald Hunter Assignee: Filip Gregor
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: Mac OS
Platform: Macintosh


External issue ID: 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();



 Comments   
Comment by Tony Tkacik [ 09/Mar/16 ]

https://git.opendaylight.org/gerrit/#/c/35968/

Comment by Robert Varga [ 12/May/16 ]

Be: https://git.opendaylight.org/gerrit/36134

Generated at Wed Feb 07 20:08:41 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.