From c7da6941c5e7f46e189cc85a8b4eb66ba8551f70 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Mon, 18 Nov 2019 13:16:37 +0100 Subject: [PATCH] Add Types.isListType(ParameterizedType) Performing duplicate checks is not efficient, if the caller already knows the type is parameterized. Change-Id: I164291490602959d1f5bdd83eb35be7f2b0d0428 Signed-off-by: Robert Varga --- .../mdsal/binding/model/util/Types.java | 6 ++++- .../java/api/generator/BuilderTemplate.xtend | 22 ++++++++++--------- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/binding/mdsal-binding-generator-util/src/main/java/org/opendaylight/mdsal/binding/model/util/Types.java b/binding/mdsal-binding-generator-util/src/main/java/org/opendaylight/mdsal/binding/model/util/Types.java index 2027f87604..2dec3dae45 100644 --- a/binding/mdsal-binding-generator-util/src/main/java/org/opendaylight/mdsal/binding/model/util/Types.java +++ b/binding/mdsal-binding-generator-util/src/main/java/org/opendaylight/mdsal/binding/model/util/Types.java @@ -178,8 +178,12 @@ public final class Types { return parameterizedTypeFor(LIST_TYPE, valueType); } + public static boolean isListType(final ParameterizedType type) { + return LIST_TYPE.equals(type.getRawType()); + } + public static boolean isListType(final Type type) { - return type instanceof ParameterizedType && LIST_TYPE.equals(((ParameterizedType) type).getRawType()); + return type instanceof ParameterizedType && isListType((ParameterizedType) type); } /** diff --git a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/BuilderTemplate.xtend b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/BuilderTemplate.xtend index 89c1ed1861..14b77a06fd 100644 --- a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/BuilderTemplate.xtend +++ b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/BuilderTemplate.xtend @@ -271,6 +271,16 @@ class BuilderTemplate extends AbstractBuilderTemplate { «ENDFOR» ''' + def private generateSetter(GeneratedProperty field) { + val returnType = field.returnType + if (returnType instanceof ParameterizedType) { + if (Types.isListType(returnType)) { + return generateListSetter(field, returnType.actualTypeArguments.get(0)) + } + } + return generateSimpleSetter(field, returnType) + } + def private generateListSetter(GeneratedProperty field, Type actualType) ''' «val restrictions = restrictionsForSetter(actualType)» «IF restrictions !== null» @@ -290,7 +300,7 @@ class BuilderTemplate extends AbstractBuilderTemplate { ''' - def private generateSetter(GeneratedProperty field, Type actualType) ''' + def private generateSimpleSetter(GeneratedProperty field, Type actualType) ''' «val restrictions = restrictionsForSetter(actualType)» «IF restrictions !== null» @@ -324,10 +334,6 @@ class BuilderTemplate extends AbstractBuilderTemplate { «ENDIF» ''' - private def Type getActualType(ParameterizedType ptype) { - return ptype.getActualTypeArguments.get(0) - } - /** * Template method which generates setter methods * @@ -341,11 +347,7 @@ class BuilderTemplate extends AbstractBuilderTemplate { } «ENDIF» «FOR property : properties» - «IF property.returnType instanceof ParameterizedType && Types.isListType(property.returnType)» - «generateListSetter(property, getActualType(property.returnType as ParameterizedType))» - «ELSE» - «generateSetter(property, property.returnType)» - «ENDIF» + «generateSetter(property)» «ENDFOR» «IF augmentType !== null» -- 2.36.6