From 7eccaea41a742b020a7a1a2453a670eb4fe03498 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Tue, 19 Mar 2019 12:19:41 +0100 Subject: [PATCH] Simplify UnionTemplate stringValue() dispatch We have a complicated if in two cases, simplify it and take advantage of Types.BYTE_ARRAY. Change-Id: Ib413d5f987b0dd15cf29fbc429bde68bc35c1379 Signed-off-by: Robert Varga (cherry picked from commit 7531d77c44d5b10be7d7728ff028792440d66a38) --- .../java/api/generator/UnionTemplate.xtend | 33 +++++++++++-------- 1 file changed, 19 insertions(+), 14 deletions(-) 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..c4acfe905e 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,12 +8,14 @@ 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.getOuterClassName; import com.google.common.io.BaseEncoding import java.util.Arrays 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 /** @@ -119,22 +121,10 @@ class UnionTemplate extends ClassTemplate { «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()); «ELSEIF propRet instanceof GeneratedTransferObject // Is it a GeneratedTransferObject @@ -153,6 +143,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. -- 2.36.6