Cache most common importedName(Class) references 11/85311/4
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 21 Oct 2019 18:44:10 +0000 (20:44 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Mon, 21 Oct 2019 20:57:36 +0000 (22:57 +0200)
Going through importedName(Class) incurs some cost to look up
the JavaTypeName in the global cache. There is a number of common
classes we end up using very frequently.

We express these references as JavaTypeName constants, hence
reducing the need for cache lookups in the hot path.

Change-Id: I7f0430f529e82a7d4838ebe2200520d20a5a44a0
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/AbstractBuilderTemplate.xtend
binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/BaseTemplate.xtend
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/EnumTemplate.xtend
binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/InterfaceTemplate.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/UnionTemplate.xtend

index 870be6c1cc5f8038619f7c63249460abb4a4ed56..923b78ff22115f465435881e72295a89a846d32c 100644 (file)
@@ -7,6 +7,7 @@
  */
 package org.opendaylight.mdsal.binding.java.api.generator
 
+import static org.opendaylight.mdsal.binding.model.util.Types.STRING;
 import static org.opendaylight.mdsal.binding.spec.naming.BindingMapping.AUGMENTATION_FIELD
 
 import com.google.common.base.MoreObjects
@@ -15,7 +16,6 @@ import java.util.Collection
 import java.util.Collections
 import java.util.Comparator
 import java.util.List
-import java.util.Map
 import java.util.Set
 import org.opendaylight.mdsal.binding.model.api.AnnotationType
 import org.opendaylight.mdsal.binding.model.api.GeneratedProperty
@@ -24,7 +24,6 @@ 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.CodeHelpers
 import org.opendaylight.yangtools.yang.binding.Identifiable
 
 abstract class AbstractBuilderTemplate extends BaseTemplate {
@@ -85,20 +84,20 @@ abstract class AbstractBuilderTemplate extends BaseTemplate {
     def protected final generateAugmentField() {
         val augmentTypeRef = augmentType.importedName
         return '''
-           «Map.importedName»<«Class.importedName»<? extends «augmentTypeRef»>, «augmentTypeRef»> «AUGMENTATION_FIELD» = «Collections.importedName».emptyMap();
+           «JU_MAP.importedName»<«CLASS.importedName»<? extends «augmentTypeRef»>, «augmentTypeRef»> «AUGMENTATION_FIELD» = «Collections.importedName».emptyMap();
         '''
     }
 
     override generateToString(Collection<GeneratedProperty> properties) '''
         «IF properties !== null»
             @«OVERRIDE.importedName»
-            public «String.importedName» toString() {
+            public «STRING.importedName» toString() {
                 final «MoreObjects.importedName».ToStringHelper helper = «MoreObjects.importedName».toStringHelper("«targetType.name»");
                 «FOR property : properties»
-                    «CodeHelpers.importedName».appendValue(helper, "«property.fieldName»", «property.fieldName»);
+                    «CODEHELPERS.importedName».appendValue(helper, "«property.fieldName»", «property.fieldName»);
                 «ENDFOR»
                 «IF augmentType !== null»
-                    «CodeHelpers.importedName».appendValue(helper, "«AUGMENTATION_FIELD»", augmentations().values());
+                    «CODEHELPERS.importedName».appendValue(helper, "«AUGMENTATION_FIELD»", augmentations().values());
                 «ENDIF»
                 return helper.toString();
             }
index fb97640c1a572771ce9eb298d995f6cced128856..e1dc45caafc4a4529d444e1db2025076ffc2535d 100644 (file)
@@ -8,6 +8,7 @@
 package org.opendaylight.mdsal.binding.java.api.generator
 
 import static org.opendaylight.mdsal.binding.model.util.BindingGeneratorUtil.encodeAngleBrackets
+import static org.opendaylight.mdsal.binding.model.util.Types.STRING;
 
 import com.google.common.base.CharMatcher
 import com.google.common.base.MoreObjects
@@ -37,7 +38,6 @@ import org.opendaylight.mdsal.binding.model.api.YangSourceDefinition.Multiple
 import org.opendaylight.mdsal.binding.model.util.TypeConstants
 import org.opendaylight.mdsal.binding.model.util.Types
 import org.opendaylight.mdsal.binding.spec.naming.BindingMapping
-import org.opendaylight.yangtools.yang.binding.CodeHelpers
 import org.opendaylight.yangtools.yang.common.QName
 import org.opendaylight.yangtools.yang.common.Uint8
 import org.opendaylight.yangtools.yang.common.Uint16
@@ -416,10 +416,10 @@ abstract class BaseTemplate extends JavaFileTemplate {
     def protected generateToString(Collection<GeneratedProperty> properties) '''
         «IF !properties.empty»
             @«OVERRIDE.importedName»
-            public «String.importedName» toString() {
+            public «STRING.importedName» toString() {
                 final «MoreObjects.importedName».ToStringHelper helper = «MoreObjects.importedName».toStringHelper(«type.importedName».class);
                 «FOR property : properties»
-                    «CodeHelpers.importedName».appendValue(helper, "«property.fieldName»", «property.fieldName»);
+                    «CODEHELPERS.importedName».appendValue(helper, "«property.fieldName»", «property.fieldName»);
                 «ENDFOR»
                 return helper.toString();
             }
@@ -481,7 +481,7 @@ abstract class BaseTemplate extends JavaFileTemplate {
        «FOR currentConstant : type.getConstantDefinitions»
            «IF currentConstant.getName.startsWith(TypeConstants.PATTERN_CONSTANT_NAME)
                && fieldUpperCase.equals(currentConstant.getName.substring(TypeConstants.PATTERN_CONSTANT_NAME.length))»
-           «CodeHelpers.importedName».checkPattern(value, «Constants.MEMBER_PATTERN_LIST»«fieldName», «Constants.MEMBER_REGEX_LIST»«fieldName»);
+           «CODEHELPERS.importedName».checkPattern(value, «Constants.MEMBER_PATTERN_LIST»«fieldName», «Constants.MEMBER_REGEX_LIST»«fieldName»);
            «ENDIF»
        «ENDFOR»
     '''
index 137b24f07dbca0729015867f7761afb9fd193575..a57d5778def5550ae75e503e89780ddc896126ba 100644 (file)
@@ -12,8 +12,6 @@ import static org.opendaylight.mdsal.binding.spec.naming.BindingMapping.AUGMENTA
 import static org.opendaylight.mdsal.binding.spec.naming.BindingMapping.DATA_CONTAINER_IMPLEMENTED_INTERFACE_NAME
 
 import java.util.List
-import java.util.Map
-import java.util.Objects
 import org.opendaylight.mdsal.binding.model.api.AnnotationType
 import org.opendaylight.mdsal.binding.model.api.GeneratedProperty
 import org.opendaylight.mdsal.binding.model.api.GeneratedType
@@ -76,7 +74,7 @@ class BuilderImplTemplate extends AbstractBuilderTemplate {
 
                 «hashCodeResult(properties)»
                 «IF augmentType !== null»
-                    result = prime * result + «Objects.importedName».hashCode(augmentations());
+                    result = prime * result + «JU_OBJECTS.importedName».hashCode(augmentations());
                 «ENDIF»
 
                 hash = result;
@@ -115,12 +113,12 @@ class BuilderImplTemplate extends AbstractBuilderTemplate {
                     if (getClass() == obj.getClass()) {
                         // Simple case: we are comparing against self
                         «type.name» otherImpl = («type.name») obj;
-                        if (!«Objects.importedName».equals(augmentations(), otherImpl.augmentations())) {
+                        if (!«JU_OBJECTS.importedName».equals(augmentations(), otherImpl.augmentations())) {
                             return false;
                         }
                     } else {
                         // Hard case: compare our augments with presence there...
-                        for («Map.importedName».Entry<«Class.importedName»<? extends «augmentType.importedName»>, «augmentType.importedName»> e : augmentations().entrySet()) {
+                        for («JU_MAP.importedName».Entry<«CLASS.importedName»<? extends «augmentType.importedName»>, «augmentType.importedName»> e : augmentations().entrySet()) {
                             if (!e.getValue().equals(other.«AUGMENTABLE_AUGMENTATION_NAME»(e.getKey()))) {
                                 return false;
                             }
index 854114bfb13ce0a14b8a3e31558128318ff16180..89c1ed186120b077ec41bbbd47ded2781122c125 100644 (file)
@@ -19,7 +19,6 @@ import java.util.HashSet
 import java.util.List
 import java.util.Map
 import java.util.Set
-import java.util.regex.Pattern
 import org.opendaylight.mdsal.binding.model.api.AnnotationType
 import org.opendaylight.mdsal.binding.model.api.GeneratedProperty
 import org.opendaylight.mdsal.binding.model.api.GeneratedTransferObject
@@ -32,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.CodeHelpers
 import org.opendaylight.yangtools.yang.binding.DataObject
 
 /**
@@ -165,7 +163,7 @@ class BuilderTemplate extends AbstractBuilderTemplate {
                     «FOR impl : targetType.getAllIfcs»
                         «generateIfCheck(impl, done)»
                     «ENDFOR»
-                    «CodeHelpers.importedName».validValue(isValidArg, arg, "«targetType.getAllIfcs.toListOfNames»");
+                    «CODEHELPERS.importedName».validValue(isValidArg, arg, "«targetType.getAllIfcs.toListOfNames»");
                 }
             «ENDIF»
         «ENDIF»
@@ -256,12 +254,13 @@ class BuilderTemplate extends AbstractBuilderTemplate {
             «IF c.getName.startsWith(TypeConstants.PATTERN_CONSTANT_NAME)»
                 «val cValue = c.value as Map<String, String>»
                 «val String fieldSuffix = c.getName.substring(TypeConstants.PATTERN_CONSTANT_NAME.length)»
+                «val jurPatternRef = JUR_PATTERN.importedName»
                 «IF cValue.size == 1»
                    «val firstEntry = cValue.entrySet.iterator.next»
-                   private static final «Pattern.importedName» «Constants.MEMBER_PATTERN_LIST»«fieldSuffix» = «Pattern.importedName».compile("«firstEntry.key.escapeJava»");
+                   private static final «jurPatternRef» «Constants.MEMBER_PATTERN_LIST»«fieldSuffix» = «jurPatternRef».compile("«firstEntry.key.escapeJava»");
                    private static final String «Constants.MEMBER_REGEX_LIST»«fieldSuffix» = "«firstEntry.value.escapeJava»";
                 «ELSE»
-                   private static final «Pattern.importedName»[] «Constants.MEMBER_PATTERN_LIST»«fieldSuffix» = «CodeHelpers.importedName».compilePatterns(«ImmutableList.importedName».of(
+                   private static final «jurPatternRef»[] «Constants.MEMBER_PATTERN_LIST»«fieldSuffix» = «CODEHELPERS.importedName».compilePatterns(«ImmutableList.importedName».of(
                    «FOR v : cValue.keySet SEPARATOR ", "»"«v.escapeJava»"«ENDFOR»));
                    private static final String[] «Constants.MEMBER_REGEX_LIST»«fieldSuffix» = { «
                    FOR v : cValue.values SEPARATOR ", "»"«v.escapeJava»"«ENDFOR» };
@@ -320,7 +319,7 @@ class BuilderTemplate extends AbstractBuilderTemplate {
              */
             @Deprecated(forRemoval = true)
             public «type.getName» «setterName»(final «uintType.importedName» value) {
-                return «setterName»(«CodeHelpers.importedName».compatUint(value));
+                return «setterName»(«CODEHELPERS.importedName».compatUint(value));
             }
         «ENDIF»
     '''
@@ -351,7 +350,8 @@ class BuilderTemplate extends AbstractBuilderTemplate {
 
         «IF augmentType !== null»
             «val augmentTypeRef = augmentType.importedName»
-            public «type.name» add«AUGMENTATION_FIELD_UPPER»(«Class.importedName»<? extends «augmentTypeRef»> augmentationType, «augmentTypeRef» augmentationValue) {
+            «val jlClassRef = CLASS.importedName»
+            public «type.name» add«AUGMENTATION_FIELD_UPPER»(«jlClassRef»<? extends «augmentTypeRef»> augmentationType, «augmentTypeRef» augmentationValue) {
                 if (augmentationValue == null) {
                     return remove«AUGMENTATION_FIELD_UPPER»(augmentationType);
                 }
@@ -364,7 +364,7 @@ class BuilderTemplate extends AbstractBuilderTemplate {
                 return this;
             }
 
-            public «type.name» remove«AUGMENTATION_FIELD_UPPER»(«Class.importedName»<? extends «augmentTypeRef»> augmentationType) {
+            public «type.name» remove«AUGMENTATION_FIELD_UPPER»(«jlClassRef»<? extends «augmentTypeRef»> augmentationType) {
                 if (this.«AUGMENTATION_FIELD» instanceof «HashMap.importedName») {
                     this.«AUGMENTATION_FIELD».remove(augmentationType);
                 }
@@ -427,8 +427,8 @@ class BuilderTemplate extends AbstractBuilderTemplate {
 
     private def generateAugmentation() '''
         @«SUPPRESS_WARNINGS.importedName»({ "unchecked", "checkstyle:methodTypeParameterName"})
-        public <E$$ extends «augmentType.importedName»> E$$ «AUGMENTABLE_AUGMENTATION_NAME»(«Class.importedName»<E$$> augmentationType) {
-            return (E$$) «AUGMENTATION_FIELD».get(«CodeHelpers.importedName».nonNullValue(augmentationType, "augmentationType"));
+        public <E$$ extends «augmentType.importedName»> E$$ «AUGMENTABLE_AUGMENTATION_NAME»(«CLASS.importedName»<E$$> augmentationType) {
+            return (E$$) «AUGMENTATION_FIELD».get(«CODEHELPERS.importedName».nonNullValue(augmentationType, "augmentationType"));
         }
     '''
 
@@ -447,7 +447,7 @@ class BuilderTemplate extends AbstractBuilderTemplate {
         return '''
             if (base instanceof «augmentationHolderRef») {
                 @SuppressWarnings("unchecked")
-                «Map.importedName»<«Class.importedName»<? extends «augmentTypeRef»>, «augmentTypeRef»> aug =((«augmentationHolderRef»<«typeRef»>) base).augmentations();
+                «JU_MAP.importedName»<«CLASS.importedName»<? extends «augmentTypeRef»>, «augmentTypeRef»> aug =((«augmentationHolderRef»<«typeRef»>) base).augmentations();
                 if (!aug.isEmpty()) {
                     this.«AUGMENTATION_FIELD» = new «hashMapRef»<>(aug);
                 }
index 6c330ef91b482389d22a03160f4755943708ecc0..7000c109fdbe7eac3483b285cef203e1538768a0 100644 (file)
@@ -22,7 +22,6 @@ import java.util.Base64;
 import java.util.Comparator
 import java.util.List
 import java.util.Map
-import java.util.regex.Pattern
 import javax.management.ConstructorParameters
 import org.gaul.modernizer_maven_annotations.SuppressModernizer
 import org.opendaylight.mdsal.binding.model.api.ConcreteType
@@ -33,7 +32,6 @@ import org.opendaylight.mdsal.binding.model.api.GeneratedTransferObject
 import org.opendaylight.mdsal.binding.model.api.Restrictions
 import org.opendaylight.mdsal.binding.model.api.Type
 import org.opendaylight.mdsal.binding.model.util.TypeConstants
-import org.opendaylight.yangtools.yang.binding.CodeHelpers
 import org.opendaylight.yangtools.yang.common.Empty
 import org.opendaylight.yangtools.yang.common.Uint16
 import org.opendaylight.yangtools.yang.common.Uint32
@@ -251,7 +249,7 @@ class ClassTemplate extends BaseTemplate {
          * If we have patterns, we need to apply them to the value field. This is a sad consequence of how this code is
          * structured.
          */»
-        «CodeHelpers.importedName».requireValue(_value);
+        «CODEHELPERS.importedName».requireValue(_value);
         «genPatternEnforcer("_value")»
 
         «FOR p : properties»
@@ -270,7 +268,7 @@ class ClassTemplate extends BaseTemplate {
             return ""
         }
 
-        val compatUint = CodeHelpers.importedName + ".compatUint("
+        val compatUint = CODEHELPERS.importedName + ".compatUint("
         return '''
 
             /**
@@ -316,7 +314,7 @@ class ClassTemplate extends BaseTemplate {
     def private genPatternEnforcer(String ref) '''
         «FOR c : consts»
             «IF c.name == TypeConstants.PATTERN_CONSTANT_NAME»
-            «CodeHelpers.importedName».checkPattern(«ref», «Constants.MEMBER_PATTERN_LIST», «Constants.MEMBER_REGEX_LIST»);
+            «CODEHELPERS.importedName».checkPattern(«ref», «Constants.MEMBER_PATTERN_LIST», «Constants.MEMBER_REGEX_LIST»);
             «ENDIF»
         «ENDFOR»
     '''
@@ -415,7 +413,7 @@ class ClassTemplate extends BaseTemplate {
     '''
 
     def protected bitsArgs() '''
-        «List.importedName»<«String.importedName»> properties = «Lists.importedName».newArrayList(«allProperties.propsAsArgs»);
+        «JU_LIST.importedName»<«STRING.importedName»> properties = «Lists.importedName».newArrayList(«allProperties.propsAsArgs»);
         if (!properties.contains(defaultValue)) {
             throw new «IllegalArgumentException.importedName»("invalid default parameter");
         }
@@ -496,13 +494,14 @@ class ClassTemplate extends BaseTemplate {
             «FOR c : consts»
                 «IF c.name == TypeConstants.PATTERN_CONSTANT_NAME»
                     «val cValue = c.value as Map<String, String>»
-                    public static final «List.importedName»<String> «TypeConstants.PATTERN_CONSTANT_NAME» = «ImmutableList.importedName».of(«
+                    «val jurPatternRef = JUR_PATTERN.importedName»
+                    public static final «JU_LIST.importedName»<String> «TypeConstants.PATTERN_CONSTANT_NAME» = «ImmutableList.importedName».of(«
                     FOR v : cValue.keySet SEPARATOR ", "»"«v.escapeJava»"«ENDFOR»);
                     «IF cValue.size == 1»
-                        private static final «Pattern.importedName» «Constants.MEMBER_PATTERN_LIST» = «Pattern.importedName».compile(«TypeConstants.PATTERN_CONSTANT_NAME».get(0));
+                        private static final «jurPatternRef» «Constants.MEMBER_PATTERN_LIST» = «jurPatternRef».compile(«TypeConstants.PATTERN_CONSTANT_NAME».get(0));
                         private static final String «Constants.MEMBER_REGEX_LIST» = "«cValue.values.iterator.next.escapeJava»";
                     «ELSE»
-                        private static final «Pattern.importedName»[] «Constants.MEMBER_PATTERN_LIST» = «CodeHelpers.importedName».compilePatterns(«TypeConstants.PATTERN_CONSTANT_NAME»);
+                        private static final «jurPatternRef»[] «Constants.MEMBER_PATTERN_LIST» = «CODEHELPERS.importedName».compilePatterns(«TypeConstants.PATTERN_CONSTANT_NAME»);
                         private static final String[] «Constants.MEMBER_REGEX_LIST» = { «
                         FOR v : cValue.values SEPARATOR ", "»"«v.escapeJava»"«ENDFOR» };
                     «ENDIF»
@@ -547,7 +546,7 @@ class ClassTemplate extends BaseTemplate {
                     «hashCodeResult(genTO.hashCodeIdentifiers)»
                     return result;
                 «ELSE»
-                    return «CodeHelpers.importedName».wrapperHashCode(«genTO.hashCodeIdentifiers.get(0).fieldName»);
+                    return «CODEHELPERS.importedName».wrapperHashCode(«genTO.hashCodeIdentifiers.get(0).fieldName»);
                 «ENDIF»
             }
         '''
index ca45d66ff4d51d398656b020c9d5bef19af23248..51cfab310ea97b5ec0b728eebbe3b1c666ca79b3 100644 (file)
@@ -8,11 +8,10 @@
 package org.opendaylight.mdsal.binding.java.api.generator
 
 import static org.opendaylight.mdsal.binding.model.util.BindingGeneratorUtil.encodeAngleBrackets
+import static org.opendaylight.mdsal.binding.model.util.Types.STRING;
 
 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
@@ -70,11 +69,11 @@ class EnumTemplate extends BaseTemplate {
         public enum «enums.name» implements «org.opendaylight.yangtools.yang.binding.Enumeration.importedName» {
             «writeEnumeration(enums)»
 
-            private static final «Map.importedName»<«String.importedName», «enums.name»> NAME_MAP;
-            private static final «Map.importedName»<«Integer.importedName», «enums.name»> VALUE_MAP;
+            private static final «JU_MAP.importedName»<«STRING.importedName», «enums.name»> NAME_MAP;
+            private static final «JU_MAP.importedName»<«Integer.importedName», «enums.name»> VALUE_MAP;
 
             static {
-                final «Builder.importedName»<«String.importedName», «enums.name»> nb = «ImmutableMap.importedName».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);
@@ -85,16 +84,16 @@ class EnumTemplate extends BaseTemplate {
                 VALUE_MAP = vb.build();
             }
 
-            private final «String.importedName» name;
+            private final «STRING.importedName» name;
             private final int value;
 
-            private «enums.name»(int value, «String.importedName» name) {
+            private «enums.name»(int value, «STRING.importedName» name) {
                 this.value = value;
                 this.name = name;
             }
 
             @«OVERRIDE.importedName»
-            public «String.importedName» getName() {
+            public «STRING.importedName» getName() {
                 return name;
             }
 
@@ -110,8 +109,8 @@ class EnumTemplate extends BaseTemplate {
              * @return corresponding «enums.name» item, if present
              * @throws NullPointerException if name is null
              */
-            public static «Optional.importedName»<«enums.name»> forName(«String.importedName» name) {
-                return «Optional.importedName».ofNullable(NAME_MAP.get(«Objects.importedName».requireNonNull(name)));
+            public static «Optional.importedName»<«enums.name»> forName(«STRING.importedName» name) {
+                return «Optional.importedName».ofNullable(NAME_MAP.get(«JU_OBJECTS.importedName».requireNonNull(name)));
             }
 
             /**
index b5b62a3ba36adfddfd9ef3447adea541a231e071..afe3651461f2ba618c3e3512984347a3da0ba5f1 100644 (file)
@@ -21,7 +21,6 @@ import org.opendaylight.mdsal.binding.model.api.GeneratedType
 import org.opendaylight.mdsal.binding.model.api.MethodSignature
 import org.opendaylight.mdsal.binding.model.api.Type
 import org.opendaylight.mdsal.binding.model.util.TypeConstants
-import org.opendaylight.yangtools.yang.binding.CodeHelpers
 
 /**
  * Template for generating JAVA interfaces.
@@ -195,7 +194,7 @@ class InterfaceTemplate extends BaseTemplate {
 
     def private generateDefaultImplementedInterface() '''
         @«OVERRIDE.importedName»
-        default «Class.importedName»<«type.fullyQualifiedName»> «DATA_CONTAINER_IMPLEMENTED_INTERFACE_NAME»() {
+        default «CLASS.importedName»<«type.fullyQualifiedName»> «DATA_CONTAINER_IMPLEMENTED_INTERFACE_NAME»() {
             return «type.fullyQualifiedName».class;
         }
     '''
@@ -206,7 +205,7 @@ class InterfaceTemplate extends BaseTemplate {
         «formatDataForJavaDoc(method, "@return " + asCode(ret.fullyQualifiedName) + " " + asCode(propertyNameFromGetter(method)) + ", or an empty list if it is not present")»
         «method.annotations.generateAnnotations»
         default «ret.importedNonNull» «name»() {
-            return «CodeHelpers.importedName».nonnull(«getGetterMethodForNonnull(name)»());
+            return «CODEHELPERS.importedName».nonnull(«getGetterMethodForNonnull(name)»());
         }
     '''
 
index 1da129d4aee9c973e742eaf9ef3402e111d22d2c..5cceeef75970419d0a6a05916c151910aae581b2 100644 (file)
@@ -11,8 +11,11 @@ import static com.google.common.base.Verify.verify;
 import static java.util.Objects.requireNonNull;
 
 import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 import java.util.Optional;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 import org.opendaylight.mdsal.binding.model.api.ConcreteType;
 import org.opendaylight.mdsal.binding.model.api.GeneratedProperty;
@@ -23,17 +26,65 @@ import org.opendaylight.mdsal.binding.model.api.ParameterizedType;
 import org.opendaylight.mdsal.binding.model.api.Restrictions;
 import org.opendaylight.mdsal.binding.model.api.Type;
 import org.opendaylight.mdsal.binding.model.util.Types;
+import org.opendaylight.yangtools.yang.binding.CodeHelpers;
 
 /**
  * Base Java file template. Contains a non-null type and imports which the generated code refers to.
  */
 class JavaFileTemplate {
-    static final JavaTypeName NONNULL = JavaTypeName.create("org.eclipse.jdt.annotation", "NonNull");
-    static final JavaTypeName NULLABLE = JavaTypeName.create("org.eclipse.jdt.annotation", "Nullable");
+    /**
+     * {@code java.lang.Class} as a JavaTypeName.
+     */
+    static final JavaTypeName CLASS = JavaTypeName.create(Class.class);
+    /**
+     * {@code java.lang.Deprecated} as a JavaTypeName.
+     */
     static final JavaTypeName DEPRECATED = JavaTypeName.create(Deprecated.class);
+    /**
+     * {@code java.lang.Override} as a JavaTypeName.
+     */
     static final JavaTypeName OVERRIDE = JavaTypeName.create(Override.class);
+
+    /**
+     * {@code java.lang.SuppressWarnings} as a JavaTypeName.
+     */
     static final JavaTypeName SUPPRESS_WARNINGS = JavaTypeName.create(SuppressWarnings.class);
 
+    /**
+     * {@code java.util.Arrays} as a JavaTypeName.
+     */
+    static final JavaTypeName JU_ARRAYS = JavaTypeName.create(Arrays.class);
+    /**
+     * {@code java.util.List} as a JavaTypeName.
+     */
+    static final JavaTypeName JU_LIST = JavaTypeName.create(List.class);
+    /**
+     * {@code java.util.Map} as a JavaTypeName.
+     */
+    static final JavaTypeName JU_MAP = JavaTypeName.create(Map.class);
+    /**
+     * {@code java.util.Objects} as a JavaTypeName.
+     */
+    static final JavaTypeName JU_OBJECTS = JavaTypeName.create(Objects.class);
+    /**
+     * {@code java.util.regex.Pattern} as a JavaTypeName.
+     */
+    static final JavaTypeName JUR_PATTERN = JavaTypeName.create(Pattern.class);
+
+    /**
+     * {@code org.eclipse.jdt.annotation.NonNull} as a JavaTypeName.
+     */
+    static final JavaTypeName NONNULL = JavaTypeName.create("org.eclipse.jdt.annotation", "NonNull");
+    /**
+     * {@code org.eclipse.jdt.annotation.Nullable} as a JavaTypeName.
+     */
+    static final JavaTypeName NULLABLE = JavaTypeName.create("org.eclipse.jdt.annotation", "Nullable");
+
+    /**
+     * {@code org.opendaylight.yangtools.yang.binding.CodeHelpers} as a JavaTypeName.
+     */
+    static final JavaTypeName CODEHELPERS = JavaTypeName.create(CodeHelpers.class);
+
     private final AbstractJavaGeneratedType javaType;
     private final GeneratedType type;
 
@@ -128,7 +179,7 @@ class JavaFileTemplate {
      * @return Imported class name
      */
     final String importedUtilClass(final GeneratedProperty property) {
-        return importedName(property.getReturnType().getName().indexOf('[') != -1 ? Arrays.class : Objects.class);
+        return importedName(property.getReturnType().getName().indexOf('[') != -1 ? JU_ARRAYS : JU_OBJECTS);
     }
 
     static final Restrictions restrictionsForSetter(final Type actualType) {
index 9f1582cdc4477c146d820ab47d26a38b65a079bd..78c3b2eafd88fb6e78ed6cab71bed6b45e7d24dd 100644 (file)
@@ -12,7 +12,6 @@ import static org.opendaylight.mdsal.binding.model.util.Types.BYTE_ARRAY;
 import static org.opendaylight.mdsal.binding.model.util.Types.STRING;
 import static org.opendaylight.mdsal.binding.model.util.Types.getOuterClassName;
 
-import java.util.Arrays
 import java.util.Base64;
 import org.gaul.modernizer_maven_annotations.SuppressModernizer
 import org.opendaylight.mdsal.binding.model.api.GeneratedTransferObject
@@ -102,7 +101,7 @@ class UnionTemplate extends ClassTemplate {
          *
          * @return String representation of this union's value.
          */
-        public «String.importedName» stringValue() {
+        public «STRING.importedName» stringValue() {
             «FOR property : finalProperties»
                 «val field = property.fieldName»
             if («field» != null) {
@@ -115,7 +114,7 @@ class UnionTemplate extends ClassTemplate {
                 return «field».toString();
                 «ELSEIF BYTE_ARRAY.equals(propRet)»
                     ««« type binary
-                return new «String.importedName»(«field»);
+                return new «STRING.importedName»(«field»);
                 «ELSEIF propRet.fullyQualifiedName.startsWith("java.lang") || propRet instanceof Enumeration
                         || propRet.fullyQualifiedName.startsWith("java.math")»
                     ««« type int*, decimal64 or enumeration*
@@ -140,7 +139,7 @@ class UnionTemplate extends ClassTemplate {
                         && (propRet as GeneratedTransferObject).typedef  // Is it a typedef
                         && (propRet as GeneratedTransferObject).baseType instanceof BitsTypeDefinition»
                     ««« generated bits typedef
-                return «Arrays.importedName».toString(«field».getValue());
+                return «JU_ARRAYS.importedName».toString(«field».getValue());
                 «ELSE»
                     ««« generated type
                 return «field».getValue().toString();