Binding generator v2 - uses statement - uses of list 56/60456/2
authorJie Han <han.jie@zte.com.cn>
Fri, 7 Jul 2017 06:19:38 +0000 (14:19 +0800)
committerMartin Ciglan <martin.ciglan@pantheon.tech>
Mon, 17 Jul 2017 08:50:14 +0000 (08:50 +0000)
- fix list getter name of leaf "key" and
  do not add list name as prefix of leaf name.
  key "key" ; // -> getKey

  leaf key { // -> getKeyReservedWord
  ....
  }
  leaf key1 { // -> getKey1

Change-Id: I84821fbeb378e2cdd02730a2c9c0da8a288e2e90
Signed-off-by: Jie Han <han.jie@zte.com.cn>
(cherry picked from commit 58ec504edcb0c8a287b7b871022c715b1e9d6789)

binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/AuxiliaryGenUtils.java
binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/GenHelperUtil.java
binding2/mdsal-binding2-generator-impl/src/test/java/org/opendaylight/mdsal/binding/javav2/generator/impl/BindingGeneratorImplTest.java
binding2/mdsal-binding2-generator-impl/src/test/resources/uses-statement/opendaylight-sal-test-store.yang [new file with mode: 0644]

index 4432555e945577263895d51e69709f7a52aa8fd6..369b7db33313a25f08ea7b67046a2ec95fc86270 100644 (file)
@@ -497,10 +497,13 @@ final class AuxiliaryGenUtils {
         final String leafName = leaf.getQName().getLocalName();
         final String leafGetterName;
 
-        StringBuilder sb = new StringBuilder(nodeName)
-                .append('_')
-                .append(leafName);
-        leafGetterName = sb.toString();
+        if ("key".equals(leafName.toLowerCase())) {
+            StringBuilder sb = new StringBuilder(leafName)
+                    .append('_').append("RESERVED_WORD");
+            leafGetterName = sb.toString();
+        } else {
+            leafGetterName = leafName;
+        }
 
         final String leafDesc = encodeAngleBrackets(leaf.getDescription());
         final GeneratedPropertyBuilder propBuilder =
index b1270c6bed5685d5752a884eb8bde72129522ace..05c9c63473bf799b248e8b38f2f0496e1575e9c8 100644 (file)
@@ -921,15 +921,13 @@ final class GenHelperUtil {
         }
 
         final String leafGetterName;
-        if (!"".equals(nodeName)) {
-            StringBuilder sb = new StringBuilder(nodeName)
-                .append('_')
-                .append(leafName);
+        if ("key".equals(leafName.toLowerCase())) {
+            StringBuilder sb = new StringBuilder(leafName)
+                .append('_').append("RESERVED_WORD");
             leafGetterName = sb.toString();
         } else {
             leafGetterName = leafName;
         }
-
         constructGetter(typeBuilder, leafGetterName, leafDesc, returnType, leaf.getStatus());
         return returnType;
     }
index 78b1c14eec3c353230e31c93c22582623fc3c0e4..674632cc3b726ff0da277043877eb4f3e50bb873 100644 (file)
@@ -88,15 +88,15 @@ public class BindingGeneratorImplTest {
                 int test_j = 0;
                 for (final GeneratedProperty generatedProperty : genTransferObj.getProperties()) {
                     switch (generatedProperty.getName()) {
-                        case "myListKey":
+                        case "keyReservedWord":
                             assertEquals("String", generatedProperty.getReturnType().getName());
                             test_j++;
                             break;
-                        case "myListKey1":
+                        case "key1":
                             assertEquals("String", generatedProperty.getReturnType().getName());
                             test_j++;
                             break;
-                        case "myListKey2":
+                        case "key2":
                             assertEquals("String", generatedProperty.getReturnType().getName());
                             test_j++;
                             break;
@@ -220,20 +220,20 @@ public class BindingGeneratorImplTest {
                                         m);
                             test_j++;
                             break;
-                        case "getMyListKey1":
-                            assertMethod(t, "getMyListKey1", "String","java.lang", m);
+                        case "getKey1":
+                            assertMethod(t, "getKey1", "String","java.lang", m);
                             test_j++;
                             break;
-                        case "getMyListKey2":
-                            assertMethod(t, "getMyListKey2", "String","java.lang", m);
+                        case "getKey2":
+                            assertMethod(t, "getKey2", "String","java.lang", m);
                             test_j++;
                             break;
-                        case "getMyListFoo":
-                            assertMethod(t, "getMyListFoo", "String","java.lang", m);
+                        case "getFoo":
+                            assertMethod(t, "getFoo", "String","java.lang", m);
                             test_j++;
                             break;
-                        case "getMyListKey":
-                            assertMethod(t, "getMyListKey", "String","java.lang", m);
+                        case "getKeyReservedWord":
+                            assertMethod(t, "getKeyReservedWord", "String","java.lang", m);
                             test_j++;
                             break;
                         default:
diff --git a/binding2/mdsal-binding2-generator-impl/src/test/resources/uses-statement/opendaylight-sal-test-store.yang b/binding2/mdsal-binding2-generator-impl/src/test/resources/uses-statement/opendaylight-sal-test-store.yang
new file mode 100644 (file)
index 0000000..1d3f6df
--- /dev/null
@@ -0,0 +1,49 @@
+module opendaylight-sal-test-store {
+       yang-version 1;
+    namespace "urn:opendaylight:params:xml:ns:yang:controller:md:sal:test:store";
+    prefix "binding-impl";
+
+    description
+        "Regression Test model for data store";
+
+    revision "2014-04-22" {
+        description
+            "Initial revision";
+    }
+
+    grouping name-value {
+        leaf name {
+            type string;
+        }
+        leaf value {
+            type string;
+        }
+    }
+
+    container lists {
+        config false;
+        container unordered-container {
+            list unordered-list {
+                key "name";
+                uses name-value;
+            }
+        }
+        container ordered-container {
+            list ordered-list {
+                ordered-by user;
+                key "name";
+                uses name-value;
+            }
+        }
+        container unkeyed-container {
+            /*
+                Following list nodes not specify key, which
+                makes impossible to uniquely identify list items
+                over time.
+            */
+            list unkeyed-list {
+                uses name-value;
+            }
+        }
+    }
+}
\ No newline at end of file