From a88b2224bbb374e1512b1dc538ab8a7f6cb3b737 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Thu, 7 Jun 2018 13:00:51 +0200 Subject: [PATCH] Populate enumeration conflicting names Pairs need to be accounted as conflicting names to prevent clashes with classes used by the enumeration template. JIRA: MDSAL-348 Change-Id: I22e5c72ec944027e20858813c98fed21553d92bd Signed-off-by: Robert Varga --- .../java/api/generator/AbstractJavaGeneratedType.java | 9 +++++++-- .../resources/compilation/mdsal327/test-imports.yang | 1 + 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/AbstractJavaGeneratedType.java b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/AbstractJavaGeneratedType.java index fe60bbbf27..607451b650 100644 --- a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/AbstractJavaGeneratedType.java +++ b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/AbstractJavaGeneratedType.java @@ -7,6 +7,7 @@ */ package org.opendaylight.mdsal.binding.java.api.generator; +import static com.google.common.collect.ImmutableSet.toImmutableSet; import static java.util.Objects.requireNonNull; import com.google.common.collect.ImmutableMap; @@ -20,6 +21,8 @@ import java.util.Set; import javax.annotation.concurrent.NotThreadSafe; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; +import org.opendaylight.mdsal.binding.model.api.Enumeration; +import org.opendaylight.mdsal.binding.model.api.Enumeration.Pair; import org.opendaylight.mdsal.binding.model.api.GeneratedType; import org.opendaylight.mdsal.binding.model.api.JavaTypeName; import org.opendaylight.mdsal.binding.model.api.ParameterizedType; @@ -48,7 +51,9 @@ abstract class AbstractJavaGeneratedType { b.put(type.getIdentifier().simpleName(), new NestedJavaGeneratedType(this, type)); } enclosedTypes = b.build(); - conflictingNames = ImmutableSet.of(); + conflictingNames = genType instanceof Enumeration + ? ((Enumeration) genType).getValues().stream().map(Pair::getMappedName).collect(toImmutableSet()) + : ImmutableSet.of(); } AbstractJavaGeneratedType(final JavaTypeName name, final GeneratedType genType) { @@ -59,7 +64,7 @@ abstract class AbstractJavaGeneratedType { // a GeneratedType for the Builder with a nested type for the implementation, which really should be // a different template which gets generated as an inner type. conflictingNames = Streams.concat(genType.getEnclosedTypes().stream(), genType.getEnumerations().stream()) - .map(type -> type.getIdentifier().simpleName()).collect(ImmutableSet.toImmutableSet()); + .map(type -> type.getIdentifier().simpleName()).collect(toImmutableSet()); } final JavaTypeName getName() { diff --git a/binding/mdsal-binding-java-api-generator/src/test/resources/compilation/mdsal327/test-imports.yang b/binding/mdsal-binding-java-api-generator/src/test/resources/compilation/mdsal327/test-imports.yang index 3376cb560f..372f985372 100644 --- a/binding/mdsal-binding-java-api-generator/src/test/resources/compilation/mdsal327/test-imports.yang +++ b/binding/mdsal-binding-java-api-generator/src/test/resources/compilation/mdsal327/test-imports.yang @@ -19,6 +19,7 @@ module test-imports { type enumeration { enum string; enum int8; + enum optional; } } } -- 2.36.6