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%2FUnionTemplate.xtend;h=f87327d4afa0ad025b25d4097ef29c8c4858f3a2;hb=303304a227ad9bf422ef9cd951b891ba3492d337;hp=84e9d78f665b750f94a0cb63371878b1cff1b442;hpb=0f351bbc28ddf2cddfe30c8d018646d81953fa17;p=mdsal.git diff --git a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/UnionTemplate.xtend b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/UnionTemplate.xtend index 84e9d78f66..f87327d4af 100644 --- a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/UnionTemplate.xtend +++ b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/UnionTemplate.xtend @@ -8,19 +8,23 @@ package org.opendaylight.mdsal.binding.java.api.generator import static org.opendaylight.mdsal.binding.model.util.Types.BOOLEAN; +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 com.google.common.io.BaseEncoding import java.util.Arrays +import java.util.Base64; +import org.gaul.modernizer_maven_annotations.SuppressModernizer import org.opendaylight.mdsal.binding.model.api.GeneratedTransferObject import org.opendaylight.mdsal.binding.model.api.Enumeration +import org.opendaylight.mdsal.binding.model.api.Type import org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition /** * Template for generating JAVA class. */ +@SuppressModernizer class UnionTemplate extends ClassTemplate { - /** * Creates instance of this class with concrete genType. * @@ -103,40 +107,35 @@ class UnionTemplate extends ClassTemplate { «val field = property.fieldName» if («field» != null) { «val propRet = property.returnType» - «IF "java.lang.String".equals(propRet.fullyQualifiedName)» + «IF STRING.equals(propRet)» ««« type string return «field»; «ELSEIF "org.opendaylight.yangtools.yang.binding.InstanceIdentifier".equals(propRet.fullyQualifiedName)» ««« type instance-identifier return «field».toString(); - «ELSEIF "byte[]".equals(propRet.name)» + «ELSEIF BYTE_ARRAY.equals(propRet)» ««« type binary return new «String.importedName»(«field»); «ELSEIF propRet.fullyQualifiedName.startsWith("java.lang") || propRet instanceof Enumeration || propRet.fullyQualifiedName.startsWith("java.math")» - ««« type int*, uint, decimal64 or enumeration* + ««« type int*, decimal64 or enumeration* return «field».toString(); + «ELSEIF "org.opendaylight.yangtools.yang.common".equals(propRet.packageName) + && propRet.name.startsWith("Uint")» + ««« type uint* + return «field».toCanonicalString(); «ELSEIF propRet instanceof GeneratedTransferObject && (propRet as GeneratedTransferObject).unionType» ««« union type return «field».stringValue(); - «ELSEIF propRet instanceof GeneratedTransferObject // Is it a GeneratedTransferObject - && (propRet as GeneratedTransferObject).typedef // Is it a typedef - && (propRet as GeneratedTransferObject).properties !== null - && !(propRet as GeneratedTransferObject).properties.empty - && ((propRet as GeneratedTransferObject).properties.size == 1) - && (propRet as GeneratedTransferObject).properties.get(0).name.equals("value") - && BOOLEAN.equals((propRet as GeneratedTransferObject).properties.get(0).returnType) // And the property value is of type boolean» + «ELSEIF BOOLEAN.equals(propRet.typedefReturnType)» ««« generated boolean typedef return «field».isValue().toString(); - «ELSEIF propRet instanceof GeneratedTransferObject // Is it a GeneratedTransferObject - && (propRet as GeneratedTransferObject).typedef // Is it a typedef - && (propRet as GeneratedTransferObject).properties !== null - && !(propRet as GeneratedTransferObject).properties.empty - && ((propRet as GeneratedTransferObject).properties.size == 1) - && (propRet as GeneratedTransferObject).properties.get(0).name.equals("value") - && "byte[]".equals((propRet as GeneratedTransferObject).properties.get(0).returnType.name)» + «ELSEIF BYTE_ARRAY.equals(propRet.typedefReturnType)» ««« generated byte[] typedef - return «BaseEncoding.importedName».base64().encode(«field».getValue()); + return «Base64.importedName».getEncoder().encodeToString(«field».getValue()); + «ELSEIF Constants.EMPTY.equals(propRet) || Constants.EMPTY.equals(propRet.typedefReturnType)» + ««« generated empty typedef + return ""; «ELSEIF propRet instanceof GeneratedTransferObject // Is it a GeneratedTransferObject && (propRet as GeneratedTransferObject).typedef // Is it a typedef && (propRet as GeneratedTransferObject).baseType instanceof BitsTypeDefinition» @@ -153,6 +152,21 @@ class UnionTemplate extends ClassTemplate { } ''' + private static def Type typedefReturnType(Type type) { + if (!(type instanceof GeneratedTransferObject)) { + return null + } + val gto = type as GeneratedTransferObject + if (!gto.typedef || gto.properties === null || gto.properties.size != 1) { + return null + } + val prop = gto.properties.get(0) + if (prop.name.equals("value")) { + return prop.returnType + } + return null + } + override protected copyConstructor() ''' /** * Creates a copy from Source Object.