Be more defensive around List types 78/94478/3
authorRobert Varga <robert.varga@pantheon.tech>
Thu, 7 Jan 2021 16:00:14 +0000 (17:00 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Fri, 8 Jan 2021 10:10:26 +0000 (11:10 +0100)
We can end up generating a windcard type, in which case the arguments
will be empty. Use Types.objectType() in that case.

JIRA: MDSAL-651
Change-Id: I5fe15a1cd0eb4f10154c268fea2092dd52cd390a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/BuilderTemplate.xtend

index 94bbbcc9c50281c2e89d2cc1f264797ca3cf2155..f70787d07d48e5d998d14e997b9d7c1fcac4a767 100644 (file)
@@ -14,6 +14,7 @@ import static org.opendaylight.mdsal.binding.spec.naming.BindingMapping.AUGMENTA
 import static org.opendaylight.mdsal.binding.spec.naming.BindingMapping.DATA_CONTAINER_IMPLEMENTED_INTERFACE_NAME
 
 import com.google.common.collect.ImmutableList
+import com.google.common.collect.ImmutableSet
 import com.google.common.collect.Sets
 import java.util.ArrayList
 import java.util.Collection
@@ -33,7 +34,6 @@ import org.opendaylight.mdsal.binding.model.util.TypeConstants
 import org.opendaylight.mdsal.binding.model.util.Types
 import org.opendaylight.mdsal.binding.spec.naming.BindingMapping
 import org.opendaylight.yangtools.concepts.Builder
-import com.google.common.collect.ImmutableSet
 
 /**
  * Template for generating JAVA builder classes.
@@ -322,7 +322,11 @@ class BuilderTemplate extends AbstractBuilderTemplate {
         val returnType = field.returnType
         if (returnType instanceof ParameterizedType) {
             if (Types.isListType(returnType)) {
-                return generateListSetter(field, returnType.actualTypeArguments.get(0))
+                val arguments = returnType.actualTypeArguments
+                if (arguments.isEmpty) {
+                    return generateListSetter(field, Types.objectType)
+                }
+                return generateListSetter(field, arguments.get(0))
             } else if (Types.isMapType(returnType)) {
                 return generateMapSetter(field, returnType.actualTypeArguments.get(1))
             }