Use YangSnippetCleaner in implemetation + test with yangs 05/55905/1
authorJakub Toth <jatoth@cisco.com>
Mon, 24 Apr 2017 10:58:08 +0000 (12:58 +0200)
committerRobert Varga <nite@hq.sk>
Mon, 24 Apr 2017 12:40:21 +0000 (12:40 +0000)
  *fix revision part of module in yangTemplateForModule template

Change-Id: Ic5719982c25c0c4223eeb66da8de2afe27d4d8ec
Signed-off-by: Jakub Toth <jatoth@cisco.com>
(cherry picked from commit 0a90e0b8385289e0d3c77d25ab56a17a28ca5960)

binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/AuxiliaryGenUtils.java
binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateForModule.scala.txt
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/base/with_import/test-import.yang [new file with mode: 0644]
binding2/mdsal-binding2-generator-impl/src/test/resources/base/with_import/test-typedef-with-import.yang [new file with mode: 0644]

index 95da08fbff5830f12a27ce5ebade1825e5b99067..e30c25bbb5a40a427f04aea3b70387cc116b38c9 100644 (file)
@@ -32,6 +32,7 @@ import org.opendaylight.mdsal.binding.javav2.generator.spi.TypeProvider;
 import org.opendaylight.mdsal.binding.javav2.generator.util.JavaIdentifier;
 import org.opendaylight.mdsal.binding.javav2.generator.util.JavaIdentifierNormalizer;
 import org.opendaylight.mdsal.binding.javav2.generator.util.Types;
+import org.opendaylight.mdsal.binding.javav2.generator.util.YangSnippetCleaner;
 import org.opendaylight.mdsal.binding.javav2.generator.util.generated.type.builder.GeneratedTOBuilderImpl;
 import org.opendaylight.mdsal.binding.javav2.generator.yang.types.TypeProviderImpl;
 import org.opendaylight.mdsal.binding.javav2.model.api.AccessModifier;
@@ -192,7 +193,8 @@ final class AuxiliaryGenUtils {
             sb.append(NEW_LINE);
             sb.append("<pre>");
             sb.append(NEW_LINE);
-            sb.append(encodeAngleBrackets(yangTemplateForNode.render(schemaNode, module).body()));
+            String formedYang = YangSnippetCleaner.clean(yangTemplateForNode.render(schemaNode, module).body());
+            sb.append(encodeAngleBrackets(formedYang));
             sb.append("</pre>");
             sb.append(NEW_LINE);
             sb.append("The schema path to identify an instance is");
@@ -242,7 +244,8 @@ final class AuxiliaryGenUtils {
             sb.append(NEW_LINE);
             sb.append("<pre>");
             sb.append(NEW_LINE);
-            sb.append(encodeAngleBrackets(yangTemplateForModule.render(module).body()));
+            String formedYang = YangSnippetCleaner.clean(yangTemplateForModule.render(module).body());
+            sb.append(encodeAngleBrackets(formedYang));
             sb.append("</pre>");
         }
 
index 5ee18de975687b012a2299882c67d056c7e93c29..02dbb57aab88d4ca26286f0f4776c4e09afc3426 100644 (file)
             }
         }
         @if(module.getRevision() != null) {
-            revision @{SimpleDateFormatUtil.getRevisionFormat().format(module.getRevision())} {
-                @for(effectiveStatement <- module.asInstanceOf[EffectiveStatement[_, _]].effectiveSubstatements()){
-                    @if(effectiveStatement.getDeclared().isInstanceOf[RevisionStatement]){
-                        description "@{effectiveStatement.asInstanceOf[DocumentedNode].getDescription()}";
+            @for(effectiveStatement <- module.asInstanceOf[EffectiveStatement[_, _]].effectiveSubstatements()){
+                @if(effectiveStatement.getDeclared().isInstanceOf[RevisionStatement]){
+                    @if(effectiveStatement.asInstanceOf[DocumentedNode].getDescription() == null || effectiveStatement.asInstanceOf[DocumentedNode].getDescription().isEmpty()){
+                        revision @{SimpleDateFormatUtil.getRevisionFormat().format(module.getRevision())};
+                    } else {
+                        revision @{SimpleDateFormatUtil.getRevisionFormat().format(module.getRevision())} {
+                            description "@{effectiveStatement.asInstanceOf[DocumentedNode].getDescription()}";
+                        }
                     }
                 }
             }
index c9adc7c6101b607666777197b0e4484d9096ba9b..461befc75186040b47cab8f157fb332158ed9da3 100644 (file)
@@ -69,6 +69,28 @@ public class BindingGeneratorImplTest {
         assertEquals(7, test_i[0]);
     }
 
+    @Test
+    public void generateTypesDescriptionsTest() throws Exception {
+        final BindingGenerator bg = new BindingGeneratorImpl(true);
+        final SchemaContext context = YangParserTestUtils.parseYangSources("/base/with_import/");
+        assertNotNull(context);
+
+        final List<Type> generateTypes = bg.generateTypes(context, context.getModules());
+        assertNotNull(generateTypes);
+        assertTrue(!generateTypes.isEmpty());
+
+        for (final Type type : generateTypes) {
+            if (type.getName().equals("TestData")) {
+                final String description = ((GeneratedType) type).getDescription().get();
+                description
+                        .contains("    import test-import { prefix \"imported-test\"; revision-date 2017-04-21; }\n\n");
+                description.contains("    revision 2017-02-06;\n\n");
+                description.contains("    typedef my-type {\n        type int8;\n    }");
+                description.contains("    container *my-cont {\n    }\n");
+            }
+        }
+    }
+
     private void testActualType(final GeneratedType t, final int[] test_i) {
         MethodSignature methodSignature = null;
         switch (t.getName()) {
diff --git a/binding2/mdsal-binding2-generator-impl/src/test/resources/base/with_import/test-import.yang b/binding2/mdsal-binding2-generator-impl/src/test/resources/base/with_import/test-import.yang
new file mode 100644 (file)
index 0000000..ac7c31b
--- /dev/null
@@ -0,0 +1,11 @@
+module test-import {
+
+    yang-version 1;
+    namespace "urn:test:simple:test:import";
+    prefix "test-import";
+
+    revision 2017-04-21;
+
+    container *my-import-%cont {
+    }
+}
\ No newline at end of file
diff --git a/binding2/mdsal-binding2-generator-impl/src/test/resources/base/with_import/test-typedef-with-import.yang b/binding2/mdsal-binding2-generator-impl/src/test/resources/base/with_import/test-typedef-with-import.yang
new file mode 100644 (file)
index 0000000..db5caab
--- /dev/null
@@ -0,0 +1,17 @@
+module test {
+
+    yang-version 1;
+    namespace "urn:test:simple:test";
+    prefix "test";
+
+    import test-import { prefix "imported-test"; revision-date 2017-04-21; }
+
+    revision 2017-02-06;
+
+    typedef my-type {
+        type int8;
+    }
+
+    container *my-cont {
+    }
+}
\ No newline at end of file