From 049f67708d556e5477bf2a7eca63cd57c7e42541 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Thu, 26 Jul 2018 20:42:56 +0200 Subject: [PATCH] Do not confuse nested type with available types Nested types imply the same package, which is not acurate in this context. Fix this by populating conflictingNames and mark it for possible future improvement. Change-Id: Icca087257eaf0c63b9a44204368dd48552da01a4 JIRA: MDSAL-365 Signed-off-by: Robert Varga --- .../generator/AbstractJavaGeneratedType.java | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 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 9a25876d64..0d368f0252 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,7 +7,6 @@ */ 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; @@ -15,6 +14,7 @@ import com.google.common.collect.ImmutableMap.Builder; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; import java.util.Set; import javax.annotation.concurrent.NotThreadSafe; @@ -49,27 +49,26 @@ abstract class AbstractJavaGeneratedType { for (GeneratedType type : Iterables.concat(genType.getEnclosedTypes(), genType.getEnumerations())) { b.put(type.getIdentifier().simpleName(), new NestedJavaGeneratedType(this, type)); } - collectInheritedEnclosedTypes(b, genType); - enclosedTypes = b.build(); + final Set cb = new HashSet<>(); if (genType instanceof Enumeration) { - conflictingNames = ((Enumeration) genType).getValues().stream().map(Pair::getMappedName) - .collect(toImmutableSet()); - } else { - conflictingNames = ImmutableSet.of(); + ((Enumeration) genType).getValues().stream().map(Pair::getMappedName).forEach(cb::add); } + // TODO: perhaps we can do something smarter to actually access the types + collectAccessibleTypes(cb, genType); + + conflictingNames = ImmutableSet.copyOf(cb); } - private void collectInheritedEnclosedTypes(Builder builder, - GeneratedType type) { + private void collectAccessibleTypes(Set set, GeneratedType type) { for (Type impl : type.getImplements()) { if (impl instanceof GeneratedType) { final GeneratedType genType = (GeneratedType) impl; for (GeneratedType inner : Iterables.concat(genType.getEnclosedTypes(), genType.getEnumerations())) { - builder.put(inner.getIdentifier().simpleName(), new NestedJavaGeneratedType(this, inner)); + set.add(inner.getIdentifier().simpleName()); } - collectInheritedEnclosedTypes(builder, genType); + collectAccessibleTypes(set, genType); } } } -- 2.36.6