Improve often-used class imports 73/89173/3
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 20 Apr 2020 18:28:29 +0000 (20:28 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Mon, 20 Apr 2020 18:43:07 +0000 (20:43 +0200)
importedName(Class) is slightly slower than importName(JavaTypeName),
hence improve performance by creating a few more often-used constants.

Change-Id: I2af9ad97bc2122a83c26cd247faf15e136bdb768
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/BuilderGenerator.java
binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/BuilderImplTemplate.xtend
binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/BuilderTemplate.xtend
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/JavaFileTemplate.java
binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/LengthGenerator.java

index 350a2e1ccb69bebdb927e481ec9d7e2b37c323a9..a632394a7569f3fa8a7f782dacd6f2efaeb9ca3d 100644 (file)
@@ -93,7 +93,7 @@ public final class BuilderGenerator implements CodeGenerator {
 
     @Override
     public String getUnitName(final Type type) {
-        return type.getName() + BuilderTemplate.BUILDER;
+        return type.getName() + BuilderTemplate.BUILDER_STR;
     }
 
     @VisibleForTesting
@@ -107,7 +107,7 @@ public final class BuilderGenerator implements CodeGenerator {
                 .addAll(methods).build();
 
         final GeneratedTypeBuilder builderTypeBuilder = new CodegenGeneratedTypeBuilder(
-            origName.createSibling(origName.simpleName() + BuilderTemplate.BUILDER));
+            origName.createSibling(origName.simpleName() + BuilderTemplate.BUILDER_STR));
 
         final GeneratedTOBuilder implTypeBuilder = builderTypeBuilder.addEnclosingTransferObject(
             origName.simpleName() + "Impl");
index a57d5778def5550ae75e503e89780ddc896126ba..e782775166816ae12aceb2183d4cdc3d23515ddf 100644 (file)
@@ -7,6 +7,7 @@
  */
 package org.opendaylight.mdsal.binding.java.api.generator
 
+import static org.opendaylight.mdsal.binding.model.util.BindingTypes.DATA_OBJECT
 import static org.opendaylight.mdsal.binding.spec.naming.BindingMapping.AUGMENTATION_FIELD
 import static org.opendaylight.mdsal.binding.spec.naming.BindingMapping.AUGMENTABLE_AUGMENTATION_NAME
 import static org.opendaylight.mdsal.binding.spec.naming.BindingMapping.DATA_CONTAINER_IMPLEMENTED_INTERFACE_NAME
@@ -16,9 +17,9 @@ import org.opendaylight.mdsal.binding.model.api.AnnotationType
 import org.opendaylight.mdsal.binding.model.api.GeneratedProperty
 import org.opendaylight.mdsal.binding.model.api.GeneratedType
 import org.opendaylight.mdsal.binding.model.api.Type
+import org.opendaylight.mdsal.binding.model.util.Types
 import org.opendaylight.mdsal.binding.spec.naming.BindingMapping
 import org.opendaylight.yangtools.yang.binding.AbstractAugmentable
-import org.opendaylight.yangtools.yang.binding.DataObject
 
 class BuilderImplTemplate extends AbstractBuilderTemplate {
     val Type builderType;
@@ -92,14 +93,14 @@ class BuilderImplTemplate extends AbstractBuilderTemplate {
     def protected generateEquals() '''
         «IF !properties.empty || augmentType !== null»
             @«OVERRIDE.importedName»
-            public boolean equals(«Object.importedName» obj) {
+            public boolean equals(«Types.objectType().importedName» obj) {
                 if (this == obj) {
                     return true;
                 }
-                if (!(obj instanceof «DataObject.importedName»)) {
+                if (!(obj instanceof «DATA_OBJECT.importedName»)) {
                     return false;
                 }
-                if (!«targetType.importedName».class.equals(((«DataObject.importedName»)obj).«DATA_CONTAINER_IMPLEMENTED_INTERFACE_NAME»())) {
+                if (!«targetType.importedName».class.equals(((«DATA_OBJECT.importedName»)obj).«DATA_CONTAINER_IMPLEMENTED_INTERFACE_NAME»())) {
                     return false;
                 }
                 «targetType.importedName» other = («targetType.importedName»)obj;
index 0194697f1451e56fa2814f533572540d93b7e557..b57296bf5b52a2c475465553787a0f93a80bbddf 100644 (file)
@@ -8,13 +8,13 @@
 package org.opendaylight.mdsal.binding.java.api.generator
 
 import static extension org.apache.commons.text.StringEscapeUtils.escapeJava
+import static org.opendaylight.mdsal.binding.model.util.BindingTypes.DATA_OBJECT
 import static org.opendaylight.mdsal.binding.spec.naming.BindingMapping.AUGMENTABLE_AUGMENTATION_NAME
 import static org.opendaylight.mdsal.binding.spec.naming.BindingMapping.AUGMENTATION_FIELD
 
 import com.google.common.collect.ImmutableList
 import java.util.ArrayList
 import java.util.Collection
-import java.util.HashMap
 import java.util.HashSet
 import java.util.List
 import java.util.Map
@@ -31,7 +31,6 @@ import org.opendaylight.mdsal.binding.model.util.Types
 import org.opendaylight.mdsal.binding.spec.naming.BindingMapping
 import org.opendaylight.yangtools.concepts.Builder
 import org.opendaylight.yangtools.yang.binding.AugmentationHolder
-import org.opendaylight.yangtools.yang.binding.DataObject
 
 /**
  * Template for generating JAVA builder classes.
@@ -40,9 +39,10 @@ class BuilderTemplate extends AbstractBuilderTemplate {
     /**
      * Constant used as suffix for builder name.
      */
-    public static val BUILDER = "Builder";
+    package static val BUILDER_STR = "Builder";
 
     static val AUGMENTATION_FIELD_UPPER = AUGMENTATION_FIELD.toFirstUpper
+    static val BUILDER = JavaTypeName.create(Builder)
 
     /**
      * Constructs new instance of this class.
@@ -66,7 +66,7 @@ class BuilderTemplate extends AbstractBuilderTemplate {
     override body() '''
         «wrapToDocumentation(formatDataForJavaDoc(targetType))»
         «targetType.annotations.generateDeprecatedAnnotation»
-        public class «type.name» implements «Builder.importedName»<«targetType.importedName»> {
+        public class «type.name» implements «BUILDER.importedName»<«targetType.importedName»> {
 
             «generateFields(false)»
 
@@ -158,7 +158,7 @@ class BuilderTemplate extends AbstractBuilderTemplate {
             «IF targetType.hasImplementsFromUses»
                 «val List<Type> done = targetType.getBaseIfcs»
                 «generateMethodFieldsFromComment(targetType)»
-                public void fieldsFrom(«DataObject.importedName» arg) {
+                public void fieldsFrom(«DATA_OBJECT.importedName» arg) {
                     boolean isValidArg = false;
                     «FOR impl : targetType.getAllIfcs»
                         «generateIfCheck(impl, done)»
@@ -340,13 +340,14 @@ class BuilderTemplate extends AbstractBuilderTemplate {
         «IF augmentType !== null»
             «val augmentTypeRef = augmentType.importedName»
             «val jlClassRef = CLASS.importedName»
+            «val hashMapRef = JU_HASHMAP.importedName»
             public «type.name» add«AUGMENTATION_FIELD_UPPER»(«jlClassRef»<? extends «augmentTypeRef»> augmentationType, «augmentTypeRef» augmentationValue) {
                 if (augmentationValue == null) {
                     return remove«AUGMENTATION_FIELD_UPPER»(augmentationType);
                 }
 
-                if (!(this.«AUGMENTATION_FIELD» instanceof «HashMap.importedName»)) {
-                    this.«AUGMENTATION_FIELD» = new «HashMap.importedName»<>();
+                if (!(this.«AUGMENTATION_FIELD» instanceof «hashMapRef»)) {
+                    this.«AUGMENTATION_FIELD» = new «hashMapRef»<>();
                 }
 
                 this.«AUGMENTATION_FIELD».put(augmentationType, augmentationValue);
@@ -354,7 +355,7 @@ class BuilderTemplate extends AbstractBuilderTemplate {
             }
 
             public «type.name» remove«AUGMENTATION_FIELD_UPPER»(«jlClassRef»<? extends «augmentTypeRef»> augmentationType) {
-                if (this.«AUGMENTATION_FIELD» instanceof «HashMap.importedName») {
+                if (this.«AUGMENTATION_FIELD» instanceof «hashMapRef») {
                     this.«AUGMENTATION_FIELD».remove(augmentationType);
                 }
                 return this;
@@ -400,7 +401,7 @@ class BuilderTemplate extends AbstractBuilderTemplate {
         </ul>
 
         @see «target»
-        @see «Builder.importedName»
+        @see «BUILDER.importedName»
     '''
     }
 
@@ -431,7 +432,7 @@ class BuilderTemplate extends AbstractBuilderTemplate {
     override protected generateCopyAugmentation(Type implType) {
         val augmentationHolderRef = AugmentationHolder.importedName
         val typeRef = targetType.importedName
-        val hashMapRef = HashMap.importedName
+        val hashMapRef = JU_HASHMAP.importedName
         val augmentTypeRef = augmentType.importedName
         return '''
             if (base instanceof «augmentationHolderRef») {
index 5af4d01a43756febf6ea3eb134f33549beb9d053..fac6cf25c5aed0a114667df8fd07314f01508bbb 100644 (file)
@@ -22,6 +22,7 @@ import static org.opendaylight.mdsal.binding.model.util.BaseYangTypes.UINT32_TYP
 import static org.opendaylight.mdsal.binding.model.util.BaseYangTypes.UINT64_TYPE
 import static org.opendaylight.mdsal.binding.model.util.BaseYangTypes.UINT8_TYPE
 import static org.opendaylight.mdsal.binding.model.util.BindingTypes.SCALAR_TYPE_OBJECT
+import static org.opendaylight.mdsal.binding.model.util.Types.BOOLEAN
 import static org.opendaylight.mdsal.binding.model.util.Types.STRING;
 import static extension org.apache.commons.text.StringEscapeUtils.escapeJava
 
@@ -430,7 +431,7 @@ class ClassTemplate extends BaseTemplate {
         int i = 0;
         return new «genTO.name»(
         «FOR prop : allProperties SEPARATOR ","»
-            properties.get(i++).equals(defaultValue) ? «Boolean.importedName».TRUE : null
+            properties.get(i++).equals(defaultValue) ? «BOOLEAN.importedName».TRUE : null
         «ENDFOR»
         );
     '''
index bbe7e66ad10f15f7411e345f43727479f0ce3779..7da0b974877a0c35de625f5c21bc1e580dd6277c 100644 (file)
@@ -11,6 +11,7 @@ import static com.google.common.base.Verify.verify;
 import static java.util.Objects.requireNonNull;
 
 import java.util.Arrays;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
@@ -55,6 +56,10 @@ class JavaFileTemplate {
      * {@code java.util.Arrays} as a JavaTypeName.
      */
     static final @NonNull JavaTypeName JU_ARRAYS = JavaTypeName.create(Arrays.class);
+    /**
+     * {@code java.util.HashMap} as a JavaTypeName.
+     */
+    static final @NonNull JavaTypeName JU_HASHMAP = JavaTypeName.create(HashMap.class);
     /**
      * {@code java.util.List} as a JavaTypeName.
      */
index b96c4d5ad933be90d4bd55339b8b5ddd53a44815..4684e3dfe541e444e16eadb68aa630907789c1f6 100644 (file)
@@ -14,7 +14,6 @@ import java.util.Set;
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.mdsal.binding.model.api.Type;
-import org.opendaylight.yangtools.yang.binding.CodeHelpers;
 import org.opendaylight.yangtools.yang.model.api.type.LengthConstraint;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -83,8 +82,8 @@ final class LengthGenerator {
                 sb.append("    }\n");
             }
 
-            sb.append("    ").append(template.importedName(CodeHelpers.class)).append(".throwInvalidLength(\"")
-            .append(createLengthString(constraint)).append("\", value);\n");
+            sb.append("    ").append(template.importedName(JavaFileTemplate.CODEHELPERS))
+            .append(".throwInvalidLength(\"").append(createLengthString(constraint)).append("\", value);\n");
         }
 
         return sb.append("}\n").toString();
@@ -106,8 +105,8 @@ final class LengthGenerator {
                 sb.append("    }\n");
             }
 
-            sb.append("    ").append(template.importedName(CodeHelpers.class)).append(".throwInvalidLength(\"")
-            .append(createLengthString(constraint)).append("\", value);\n");
+            sb.append("    ").append(template.importedName(JavaFileTemplate.CODEHELPERS))
+            .append(".throwInvalidLength(\"").append(createLengthString(constraint)).append("\", value);\n");
         }
 
         return sb.append("}\n").toString();