Centralize MoreObjects import
[mdsal.git] / binding / mdsal-binding-java-api-generator / src / main / java / org / opendaylight / mdsal / binding / java / api / generator / ClassTemplate.xtend
index 3199d9122db03b8452823d35d21c4ce675c5eeb5..23be8b693a9bb8937973bbce2d164fbfdcb5bac3 100644 (file)
@@ -8,25 +8,24 @@
 package org.opendaylight.mdsal.binding.java.api.generator
 
 import static java.util.Objects.requireNonNull
-import static org.opendaylight.mdsal.binding.model.util.BaseYangTypes.BINARY_TYPE
-import static org.opendaylight.mdsal.binding.model.util.BaseYangTypes.BOOLEAN_TYPE
-import static org.opendaylight.mdsal.binding.model.util.BaseYangTypes.EMPTY_TYPE
-import static org.opendaylight.mdsal.binding.model.util.BaseYangTypes.INSTANCE_IDENTIFIER
-import static org.opendaylight.mdsal.binding.model.util.BaseYangTypes.INT16_TYPE
-import static org.opendaylight.mdsal.binding.model.util.BaseYangTypes.INT32_TYPE
-import static org.opendaylight.mdsal.binding.model.util.BaseYangTypes.INT64_TYPE
-import static org.opendaylight.mdsal.binding.model.util.BaseYangTypes.INT8_TYPE
-import static org.opendaylight.mdsal.binding.model.util.BaseYangTypes.STRING_TYPE
-import static org.opendaylight.mdsal.binding.model.util.BaseYangTypes.UINT16_TYPE
-import static org.opendaylight.mdsal.binding.model.util.BaseYangTypes.UINT32_TYPE
-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 org.opendaylight.mdsal.binding.model.ri.BaseYangTypes.BINARY_TYPE
+import static org.opendaylight.mdsal.binding.model.ri.BaseYangTypes.BOOLEAN_TYPE
+import static org.opendaylight.mdsal.binding.model.ri.BaseYangTypes.EMPTY_TYPE
+import static org.opendaylight.mdsal.binding.model.ri.BaseYangTypes.INSTANCE_IDENTIFIER
+import static org.opendaylight.mdsal.binding.model.ri.BaseYangTypes.INT16_TYPE
+import static org.opendaylight.mdsal.binding.model.ri.BaseYangTypes.INT32_TYPE
+import static org.opendaylight.mdsal.binding.model.ri.BaseYangTypes.INT64_TYPE
+import static org.opendaylight.mdsal.binding.model.ri.BaseYangTypes.INT8_TYPE
+import static org.opendaylight.mdsal.binding.model.ri.BaseYangTypes.STRING_TYPE
+import static org.opendaylight.mdsal.binding.model.ri.BaseYangTypes.UINT16_TYPE
+import static org.opendaylight.mdsal.binding.model.ri.BaseYangTypes.UINT32_TYPE
+import static org.opendaylight.mdsal.binding.model.ri.BaseYangTypes.UINT64_TYPE
+import static org.opendaylight.mdsal.binding.model.ri.BaseYangTypes.UINT8_TYPE
+import static org.opendaylight.mdsal.binding.model.ri.BindingTypes.SCALAR_TYPE_OBJECT
+import static org.opendaylight.mdsal.binding.model.ri.Types.BOOLEAN
+import static org.opendaylight.mdsal.binding.model.ri.Types.STRING;
 import static extension org.apache.commons.text.StringEscapeUtils.escapeJava
 
-import com.google.common.base.MoreObjects
 import com.google.common.base.Preconditions
 import com.google.common.collect.ImmutableList
 import com.google.common.collect.Lists
@@ -48,7 +47,7 @@ import org.opendaylight.mdsal.binding.model.api.GeneratedProperty
 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.mdsal.binding.model.ri.TypeConstants
 import org.opendaylight.mdsal.binding.spec.naming.BindingMapping
 import org.opendaylight.yangtools.yang.common.Empty
 import org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition
@@ -148,8 +147,11 @@ class ClassTemplate extends BaseTemplate {
      * @return string with class source code in JAVA format
      */
     def protected generateBody(boolean isInnerClass) '''
-        «wrapToDocumentation(formatDataForJavaDoc(type))»
+        «type.formatDataForJavaDoc.wrapToDocumentation»
         «annotationDeclaration»
+        «IF !isInnerClass»
+            «generatedAnnotation»
+        «ENDIF»
         «generateClassDeclaration(isInnerClass)» {
             «suidDeclaration»
             «innerClassesDeclarations»
@@ -214,7 +216,7 @@ class ClassTemplate extends BaseTemplate {
     def private scalarTypeObjectValue(GeneratedProperty field) '''
         @«OVERRIDE.importedName»
         public «field.returnType.importedName» «BindingMapping.SCALAR_TYPE_OBJECT_GET_VALUE_NAME»() {
-            return «field.fieldName»«IF field.returnType.name.endsWith("[]")».clone()«ENDIF»;
+            return «field.fieldName»«field.cloneCall»;
         }
     '''
 
@@ -253,10 +255,8 @@ class ClassTemplate extends BaseTemplate {
             «genUnionConstructor»
         «ELSEIF genTO.typedef && allProperties.size == 1 && allProperties.get(0).name.equals(TypeConstants.VALUE_PROP)»
             «typedefConstructor»
-            «legacyConstructor»
         «ELSE»
             «allValuesConstructor»
-            «legacyConstructor»
         «ENDIF»
 
         «IF !allProperties.empty»
@@ -306,38 +306,11 @@ class ClassTemplate extends BaseTemplate {
 
         «FOR p : properties»
             «val fieldName = p.fieldName»
-            «IF p.returnType.name.endsWith("[]")»
-                this.«fieldName» = «fieldName».clone();
-            «ELSE»
-                this.«fieldName» = «fieldName»;
-            «ENDIF»
+            this.«fieldName» = «fieldName»«p.cloneCall»;
         «ENDFOR»
     }
     '''
 
-    def private legacyConstructor() {
-        if (!hasUintProperties) {
-            return ""
-        }
-
-        val compatUint = CODEHELPERS.importedName + ".compatUint("
-        return '''
-
-            /**
-             * Utility migration constructor.
-             *
-             «FOR prop : allProperties»
-             * @param «prop.fieldName» «prop.name»«IF prop.isUintType» in legacy Java type«ENDIF»
-             «ENDFOR»
-             * @deprecated Use {#link «type.name»(«FOR prop : allProperties SEPARATOR ", "»«prop.returnType.importedJavadocName»«ENDFOR»)} instead.
-             */
-            @Deprecated(forRemoval = true)
-            public «type.getName»(«FOR prop : allProperties SEPARATOR ", "»«prop.legacyType.importedName» «prop.fieldName»«ENDFOR») {
-                this(«FOR prop : allProperties SEPARATOR ", "»«IF prop.isUintType»«compatUint»«prop.fieldName»)«ELSE»«prop.fieldName»«ENDIF»«ENDFOR»);
-            }
-        '''
-    }
-
     def protected genUnionConstructor() '''
     «FOR p : allProperties»
         «val List<GeneratedProperty> other = new ArrayList(properties)»
@@ -440,7 +413,7 @@ class ClassTemplate extends BaseTemplate {
                     return new «genTO.name»(«Base64.importedName».getDecoder().decode(defaultValue));
                 «ELSEIF EMPTY_TYPE.equals(propType)»
                     «Preconditions.importedName».checkArgument(defaultValue.isEmpty(), "Invalid value %s", defaultValue);
-                    return new «genTO.name»(«Empty.importedName».getInstance());
+                    return new «genTO.name»(«Empty.importedName».value());
                 «ELSE»
                     return new «genTO.name»(new «propType.importedName»(defaultValue));
                 «ENDIF»
@@ -625,7 +598,7 @@ class ClassTemplate extends BaseTemplate {
         «IF !properties.empty»
             @«OVERRIDE.importedName»
             public «STRING.importedName» toString() {
-                final «MoreObjects.importedName».ToStringHelper helper = «MoreObjects.importedName».toStringHelper(«type.importedName».class);
+                final var helper = «MOREOBJECTS.importedName».toStringHelper(«type.importedName».class);
                 «FOR property : properties»
                     «CODEHELPERS.importedName».appendValue(helper, "«property.fieldName»", «property.fieldName»);
                 «ENDFOR»
@@ -642,26 +615,4 @@ class ClassTemplate extends BaseTemplate {
         }
         return null
     }
-
-    def private hasUintProperties() {
-        for (GeneratedProperty prop : allProperties) {
-            if (prop.isUintType) {
-                return true
-            }
-        }
-        return false
-    }
-
-    def private static isUintType(GeneratedProperty prop) {
-        UINT_TYPES.containsKey(prop.returnType)
-    }
-
-    def private static legacyType(GeneratedProperty prop) {
-        val type = prop.returnType
-        val uint = UINT_TYPES.get(type)
-        if (uint !== null) {
-            return uint
-        }
-        return type
-    }
 }