Merge "Fix IPv6 + subnet flow installation"
[controller.git] / opendaylight / sal / yang-prototype / code-generator / code-generator-demo / src / main / java / org / opendaylight / controller / yang / Demo.java
index 60af153f8380361f08335663e9acbd6fc95026d1..ee548876d00f6c547c36f0b2473770ca9249a230 100644 (file)
@@ -8,6 +8,7 @@
 package org.opendaylight.controller.yang;
 
 import java.io.File;
+import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
@@ -20,7 +21,7 @@ import org.opendaylight.controller.sal.binding.model.api.Type;
 import org.opendaylight.controller.sal.java.api.generator.GeneratorJavaFile;
 import org.opendaylight.controller.yang.model.api.Module;
 import org.opendaylight.controller.yang.model.api.SchemaContext;
-import org.opendaylight.controller.yang.model.parser.impl.YangModelParserImpl;
+import org.opendaylight.controller.yang.parser.impl.YangParserImpl;
 
 public class Demo {
     private static final String ERR_MSG = "2 parameters expected: 1. -f=<path-to-input-folder>, 2. -o=<output-folder>";
@@ -44,27 +45,28 @@ public class Demo {
         } else {
             System.err.println("Missing output-folder declaration (-o=)");
         }
-
+        
         File resourceDir = new File(inputFilesDir);
         if (!resourceDir.exists()) {
             throw new IllegalArgumentException(
                     "Specified input-folder does not exists: "
                             + resourceDir.getAbsolutePath());
         }
-
+        
+        final File outputFolder = new File(outputFilesDir);
+        if (!outputFolder.exists()) {
+            outputFolder.mkdirs();
+        }
+        
         String[] dirList = resourceDir.list();
-        String[] absFiles = new String[dirList.length];
-
-        int i = 0;
+        List<File> inputFiles = new ArrayList<File>();
         for (String fileName : dirList) {
-            File abs = new File(resourceDir, fileName);
-            absFiles[i] = abs.getAbsolutePath();
-            i++;
+            inputFiles.add(new File(resourceDir, fileName));
         }
 
-        final YangModelParserImpl parser = new YangModelParserImpl();
+        final YangParserImpl parser = new YangParserImpl();
         final BindingGenerator bindingGenerator = new BindingGeneratorImpl();
-        final Set<Module> modulesToBuild = parser.parseYangModels(absFiles);
+        final Set<Module> modulesToBuild = parser.parseYangModels(inputFiles);
 
         final SchemaContext context = parser
                 .resolveSchemaContext(modulesToBuild);
@@ -72,18 +74,20 @@ public class Demo {
         final Set<GeneratedType> typesToGenerate = new HashSet<GeneratedType>();
         final Set<GeneratedTransferObject> tosToGenerate = new HashSet<GeneratedTransferObject>();
         for (Type type : types) {
-            if (type instanceof GeneratedType) {
+            if (type instanceof GeneratedType && !(type instanceof GeneratedTransferObject)) {
                 typesToGenerate.add((GeneratedType) type);
             }
 
             if (type instanceof GeneratedTransferObject) {
                 tosToGenerate.add((GeneratedTransferObject) type);
+            } else if (type instanceof GeneratedType) {
+                typesToGenerate.add((GeneratedType) type);
             }
         }
 
         final GeneratorJavaFile generator = new GeneratorJavaFile(typesToGenerate, tosToGenerate);
         
-        generator.generateToFile(outputFilesDir);
+        generator.generateToFile(outputFolder);
         System.out.println("Modules built: " + modulesToBuild.size());
     }
 }