Fix add imports of nested classes 21/69421/9
authorJie Han <han.jie@zte.com.cn>
Tue, 13 Mar 2018 07:46:02 +0000 (15:46 +0800)
committerRobert Varga <nite@hq.sk>
Mon, 19 Mar 2018 12:09:51 +0000 (12:09 +0000)
- Use importedName instead of
  directly hard code class FQN in the template.

Change-Id: Icb39df83f6c09461a2130c3ba3a9b2151a30fb85
Signed-off-by: Jie Han <han.jie@zte.com.cn>
binding/mdsal-binding-generator-util/src/main/java/org/opendaylight/mdsal/binding/model/util/Types.java
binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/ClassTemplate.xtend
binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/EnumTemplate.xtend
binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/InterfaceTemplate.xtend

index f16ed9cf5a303478a58748705c5ce697aa9eb968..97b15049cdabcb3ebebec02a4dd62081f9a818dd 100644 (file)
@@ -41,7 +41,12 @@ public final class Types {
             new CacheLoader<Class<?>, ConcreteType>() {
                 @Override
                 public ConcreteType load(final Class<?> key) {
-                    return new ConcreteTypeImpl(key.getPackage().getName(), key.getSimpleName(), null);
+                    //Nested class
+                    if (key.getEnclosingClass() != null) {
+                        return new ConcreteTypeImpl(key.getEnclosingClass().getName(), key.getSimpleName(), null);
+                    } else {
+                        return new ConcreteTypeImpl(key.getPackage().getName(), key.getSimpleName(), null);
+                    }
                 }
     };
     private static final LoadingCache<Class<?>, ConcreteType> TYPE_CACHE =
index 9b82cd1374709d3676acf9ebaa9f64a1768394f8..dec2c5761e7ea197d7a930cafce00aa239021e59 100644 (file)
@@ -185,7 +185,7 @@ class ClassTemplate extends BaseTemplate {
                 «IF (innerClass instanceof GeneratedTransferObject)»
                     «val classTemplate = new ClassTemplate(innerClass)»
                     «classTemplate.generateAsInnerClass»
-
+                    «addImports(classTemplate)»
                 «ENDIF»
             «ENDFOR»
         «ENDIF»
@@ -407,6 +407,7 @@ class ClassTemplate extends BaseTemplate {
             «FOR e : enums SEPARATOR "\n"»
                 «val enumTemplate = new EnumTemplate(e)»
                 «enumTemplate.generateAsInnerClass»
+                «addImports(enumTemplate)»
             «ENDFOR»
         «ENDIF»
     '''
index a322f842ced09ec828af7c274be98f91972e3bdf..f2e7533a10763f5b9004bef2eb8193f12c567a79 100644 (file)
@@ -9,6 +9,11 @@ package org.opendaylight.mdsal.binding.java.api.generator
 
 import static org.opendaylight.mdsal.binding.model.util.BindingGeneratorUtil.encodeAngleBrackets
 
+import com.google.common.collect.ImmutableMap
+import com.google.common.collect.ImmutableMap.Builder
+import java.util.Map
+import java.util.Objects
+import java.util.Optional
 import org.opendaylight.mdsal.binding.model.api.Enumeration
 import org.opendaylight.mdsal.binding.model.api.GeneratedType
 
@@ -50,20 +55,19 @@ class EnumTemplate extends BaseTemplate {
      *
      * @return string with the enumeration body
      */
-    // FIXME: for some reason importedName does not work here :(
     override body() '''
         «wrapToDocumentation(formatDataForJavaDoc(enums))»
-        public enum «enums.name» implements org.opendaylight.yangtools.yang.binding.Enumeration {
+        public enum «enums.name» implements «org.opendaylight.yangtools.yang.binding.Enumeration.importedName» {
             «writeEnumeration(enums)»
 
-            private static final java.util.Map<java.lang.String, «enums.name»> NAME_MAP;
-            private static final java.util.Map<java.lang.Integer, «enums.name»> VALUE_MAP;
+            private static final «Map.importedName»<«String.importedName», «enums.name»> NAME_MAP;
+            private static final «Map.importedName»<«Integer.importedName», «enums.name»> VALUE_MAP;
 
             static {
-                final com.google.common.collect.ImmutableMap.Builder<java.lang.String, «enums.name»> nb =
-                    com.google.common.collect.ImmutableMap.builder();
-                final com.google.common.collect.ImmutableMap.Builder<java.lang.Integer, «enums.name»> vb =
-                    com.google.common.collect.ImmutableMap.builder();
+                final «Builder.importedName»<«String.importedName», «enums.name»> nb =
+                    «ImmutableMap.importedName».builder();
+                final «Builder.importedName»<«Integer.importedName», «enums.name»> vb =
+                    «ImmutableMap.importedName».builder();
                 for («enums.name» enumItem : «enums.name».values()) {
                     vb.put(enumItem.value, enumItem);
                     nb.put(enumItem.name, enumItem);
@@ -73,7 +77,7 @@ class EnumTemplate extends BaseTemplate {
                 VALUE_MAP = vb.build();
             }
 
-            private final java.lang.String name;
+            private final «String.importedName» name;
             private final int value;
 
             private «enums.name»(int value, «String.importedName» name) {
@@ -82,7 +86,7 @@ class EnumTemplate extends BaseTemplate {
             }
 
             @Override
-            public java.lang.String getName() {
+            public «String.importedName» getName() {
                 return name;
             }
 
@@ -98,8 +102,8 @@ class EnumTemplate extends BaseTemplate {
              * @return corresponding «enums.name» item, if present
              * @throws NullPointerException if name is null
              */
-            public static java.util.Optional<«enums.name»> forName(«String.importedName» name) {
-                return java.util.Optional.ofNullable(NAME_MAP.get(java.util.Objects.requireNonNull(name)));
+            public static «Optional.importedName»<«enums.name»> forName(«String.importedName» name) {
+                return «Optional.importedName».ofNullable(NAME_MAP.get(«Objects.importedName».requireNonNull(name)));
             }
 
             /**
index 2d70587e06ac8d095be90b2c33c128a3bac1c188..0d10d69345698d27618ce6d2886f11262c6ee5cc 100644 (file)
@@ -148,6 +148,7 @@ class InterfaceTemplate extends BaseTemplate {
             «FOR e : enums SEPARATOR "\n"»
                 «val enumTemplate = new EnumTemplate(e)»
                 «enumTemplate.generateAsInnerClass»
+                «addImports(enumTemplate)»
             «ENDFOR»
         «ENDIF»
     '''