Split out isBitsType()
[mdsal.git] / binding / mdsal-binding-java-api-generator / src / main / java / org / opendaylight / mdsal / binding / java / api / generator / YangModuleInfoTemplate.xtend
index e27d7cdec40739144a2e14a38e251c9d6c01f110..4ee07e08e4409a34ea901082a1843707518b28d2 100644 (file)
@@ -25,8 +25,10 @@ import org.eclipse.xtend.lib.annotations.Accessors
 import org.gaul.modernizer_maven_annotations.SuppressModernizer
 import org.opendaylight.yangtools.yang.binding.YangModuleInfo
 import org.opendaylight.yangtools.yang.common.Revision
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext
 import org.opendaylight.yangtools.yang.model.api.Module
-import org.opendaylight.yangtools.yang.model.api.SchemaContext
+import org.opendaylight.yangtools.yang.model.api.ModuleLike
+import org.opendaylight.yangtools.yang.model.api.Submodule
 
 /**
  * Template for {@link YangModuleInfo} implementation for a particular module. Aside from fulfilling that contract,
@@ -62,8 +64,8 @@ class YangModuleInfoTemplate {
     '''
 
     val Module module
-    val SchemaContext ctx
-    val Function<Module, Optional<String>> moduleFilePathResolver
+    val EffectiveModelContext ctx
+    val Function<ModuleLike, Optional<String>> moduleFilePathResolver
 
     var importedTypes = CORE_IMPORT_STR
 
@@ -73,7 +75,7 @@ class YangModuleInfoTemplate {
     @Accessors
     val String modelBindingProviderName
 
-    new(Module module, SchemaContext ctx, Function<Module, Optional<String>> moduleFilePathResolver) {
+    new(Module module, EffectiveModelContext ctx, Function<ModuleLike, Optional<String>> moduleFilePathResolver) {
         Preconditions.checkArgument(module !== null, "Module must not be null.")
         this.module = module
         this.ctx = ctx
@@ -83,13 +85,14 @@ class YangModuleInfoTemplate {
     }
 
     def String generate() {
-        val Set<Module> submodules = new HashSet
+        val Set<Submodule> submodules = new HashSet
         collectSubmodules(submodules, module)
 
         val body = '''
+            @«JavaFileTemplate.GENERATED»("mdsal-binding-generator")
             public final class «MODULE_INFO_CLASS_NAME» extends ResourceYangModuleInfo {
                 «val rev = module.revision»
-                private static final @NonNull QName NAME = QName.create("«module.namespace.toString»", «IF rev.present»"«rev.get.toString»", «ENDIF»"«module.name»").intern();
+                private static final @NonNull QName NAME = QName.create("«module.QNameModule.namespace.toString»", «IF rev.present»"«rev.get.toString»", «ENDIF»"«module.name»").intern();
                 private static final @NonNull YangModuleInfo INSTANCE = new «MODULE_INFO_CLASS_NAME»();
 
                 private final @NonNull ImmutableSet<YangModuleInfo> importedModules;
@@ -129,15 +132,15 @@ class YangModuleInfoTemplate {
         }
     '''
 
-    private static def void collectSubmodules(Set<Module> dest, Module module) {
-        for (Module submodule : module.submodules) {
+    private static def void collectSubmodules(Set<Submodule> dest, ModuleLike module) {
+        for (Submodule submodule : module.submodules) {
             if (dest.add(submodule)) {
                 collectSubmodules(dest, submodule)
             }
         }
     }
 
-    private def CharSequence classBody(Module m, String className, Set<Module> submodules) '''
+    private def CharSequence classBody(ModuleLike m, String className, Set<Submodule> submodules) '''
         private «className»() {
             «IF !m.imports.empty || !submodules.empty»
                 «extendImports»
@@ -148,9 +151,8 @@ class YangModuleInfoTemplate {
                     «val name = imp.moduleName»
                     «val rev = imp.revision»
                     «IF !rev.present»
-                        «val Set<Module> modules = ctx.modules»
                         «val TreeMap<Optional<Revision>, Module> sorted = new TreeMap(REVISION_COMPARATOR)»
-                        «FOR module : modules»
+                        «FOR module : ctx.modules»
                             «IF module.name.equals(name)»
                                 «sorted.put(module.revision, module)»
                             «ENDIF»
@@ -192,19 +194,19 @@ class YangModuleInfoTemplate {
         importedTypes = EXT_IMPORT_STR
     }
 
-    private def sourcePath(Module module) {
+    private def sourcePath(ModuleLike module) {
         val opt = moduleFilePathResolver.apply(module)
         Preconditions.checkState(opt.isPresent, "Module %s does not have a file path", module)
         return opt.get
     }
 
-    private def generateSubInfo(Set<Module> submodules) '''
+    private def generateSubInfo(Set<Submodule> submodules) '''
         «FOR submodule : submodules»
             «val className = submodule.name.className»
 
             private static final class «className»Info extends ResourceYangModuleInfo {
                 «val rev = submodule.revision»
-                private final @NonNull QName NAME = QName.create("«submodule.namespace.toString»", «
+                private final @NonNull QName NAME = QName.create("«submodule.QNameModule.namespace.toString»", «
                 IF rev.present»"«rev.get.toString»", «ENDIF»"«submodule.name»").intern();
                 private static final @NonNull YangModuleInfo INSTANCE = new «className»Info();