X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=binding%2Fmdsal-binding-java-api-generator%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fmdsal%2Fbinding%2Fjava%2Fapi%2Fgenerator%2FClassTemplate.xtend;h=08935e81aa35ddfa171daa7da35c4d0790ce9b84;hb=4c2b08900d7a4a06bf99698801f339c8bf22e07c;hp=3199d9122db03b8452823d35d21c4ce675c5eeb5;hpb=8e9118b01e2f89ebf34181de1dc6c96d1a48bf52;p=mdsal.git diff --git a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/ClassTemplate.xtend b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/ClassTemplate.xtend index 3199d9122d..08935e81aa 100644 --- a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/ClassTemplate.xtend +++ b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/ClassTemplate.xtend @@ -8,25 +8,26 @@ 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.DECIMAL64_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 static extension org.opendaylight.mdsal.binding.model.ri.BindingTypes.isBitsType -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,10 +49,9 @@ 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 /** * Template for generating JAVA class. @@ -61,6 +61,7 @@ class ClassTemplate extends BaseTemplate { static val Comparator PROP_COMPARATOR = Comparator.comparing([prop | prop.name]) static val VALUEOF_TYPES = Set.of( BOOLEAN_TYPE, + DECIMAL64_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, @@ -148,8 +149,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» @@ -173,7 +177,7 @@ class ClassTemplate extends BaseTemplate { «propertyMethods» - «IF (genTO.isTypedef() && genTO.getBaseType instanceof BitsTypeDefinition)» + «IF genTO.isBitsType» «generateGetValueForBitsTypeDef» «ENDIF» @@ -214,7 +218,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 +257,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 +308,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 other = new ArrayList(properties)» @@ -440,7 +415,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 +600,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 +617,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 - } }