X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=binding%2Fmdsal-binding-generator-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fmdsal%2Fbinding%2Fgenerator%2Fimpl%2FModuleContext.java;h=617189b9ce9c8af3b694ad5add045c5a57050bd5;hb=9ab6fa0732bb152e682249dffe7cf940f79e66c5;hp=baa5824c6d505a6ca87aeaff6ba21ff33bc2ce0f;hpb=45650f19eb0ceb1f5f5a6eed4f8beab1e364c8cf;p=mdsal.git diff --git a/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/impl/ModuleContext.java b/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/impl/ModuleContext.java index baa5824c6d..617189b9ce 100644 --- a/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/impl/ModuleContext.java +++ b/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/impl/ModuleContext.java @@ -7,6 +7,7 @@ */ package org.opendaylight.mdsal.binding.generator.impl; +import static com.google.common.base.Preconditions.checkState; import static java.util.Objects.requireNonNull; import com.google.common.collect.BiMap; @@ -22,6 +23,9 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; +import org.eclipse.jdt.annotation.NonNull; +import org.eclipse.jdt.annotation.Nullable; +import org.opendaylight.mdsal.binding.model.api.GeneratedType; import org.opendaylight.mdsal.binding.model.api.JavaTypeName; import org.opendaylight.mdsal.binding.model.api.Type; import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTOBuilder; @@ -31,6 +35,7 @@ import org.opendaylight.yangtools.concepts.Mutable; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; +import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.api.DocumentedNode.WithStatus; import org.opendaylight.yangtools.yang.model.api.GroupingDefinition; @@ -59,6 +64,7 @@ public final class ModuleContext implements Mutable { private final List augmentations = new ArrayList<>(); private final Multimap choiceToCases = HashMultimap.create(); private final Set topLevelNodes = new HashSet<>(); + private final Map aliases = new HashMap<>(); private final Map typeToSchema = new HashMap<>(); private final List genTOs = new ArrayList<>(); private final Map innerTypes = new HashMap<>(); @@ -151,6 +157,23 @@ public final class ModuleContext implements Mutable { genTOs.add(builder); } + @NonNull GeneratedType addAliasType(final ModuleContext sourceContext, final ContainerSchemaNode source, + final ContainerSchemaNode alias) { + final GeneratedTypeBuilder builder = sourceContext.getChildNode(source.getPath()); + checkState(builder != null, "Could not find builder for %s", source); + + final JavaTypeName id = builder.getIdentifier(); + final SchemaPath path = alias.getPath(); + final JavaTypeName prev = aliases.putIfAbsent(path, id); + checkState(prev == null, "Type aliasing conflict on %s: %s vs %s", path, prev, id); + + return builder.build(); + } + + @Nullable JavaTypeName getAlias(final SchemaPath path) { + return aliases.get(path); + } + public void addChildNodeType(final SchemaNode def, final GeneratedTypeBuilder builder) { checkNamingConflict(def, builder.getIdentifier()); childNodes.put(def.getPath(), builder);