X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=binding%2Fmdsal-binding-generator%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fmdsal%2Fbinding%2Fgenerator%2Fimpl%2Freactor%2FCaseGenerator.java;h=f49f371aca0c755d401c1b94959ca2aa80bdfa10;hb=0ee55d1f9da11dd03ff05fc67d10cbcbfe63fd2c;hp=84a29c0a85792c16320b1e45a33b5fd244051b41;hpb=feaecf128a14832eec9661057af4de6b3704a07f;p=mdsal.git diff --git a/binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/CaseGenerator.java b/binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/CaseGenerator.java index 84a29c0a85..f49f371aca 100644 --- a/binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/CaseGenerator.java +++ b/binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/CaseGenerator.java @@ -9,17 +9,22 @@ package org.opendaylight.mdsal.binding.generator.impl.reactor; import static com.google.common.base.Verify.verify; +import java.util.List; +import org.opendaylight.mdsal.binding.generator.impl.rt.DefaultCaseRuntimeType; import org.opendaylight.mdsal.binding.model.api.GeneratedType; import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTypeBuilder; import org.opendaylight.mdsal.binding.model.ri.BindingTypes; +import org.opendaylight.mdsal.binding.runtime.api.AugmentRuntimeType; +import org.opendaylight.mdsal.binding.runtime.api.CaseRuntimeType; +import org.opendaylight.mdsal.binding.runtime.api.RuntimeType; import org.opendaylight.yangtools.yang.model.api.stmt.CaseEffectiveStatement; import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack; /** * Generator corresponding to a {@code case} statement. */ -final class CaseGenerator extends CompositeSchemaTreeGenerator { - CaseGenerator(final CaseEffectiveStatement statement, final AbstractCompositeGenerator parent) { +final class CaseGenerator extends CompositeSchemaTreeGenerator { + CaseGenerator(final CaseEffectiveStatement statement, final AbstractCompositeGenerator parent) { super(statement, parent); } @@ -30,16 +35,14 @@ final class CaseGenerator extends CompositeSchemaTreeGenerator parent = getParent(); + final AbstractCompositeGenerator parent = getParent(); final ChoiceGenerator choice; if (parent instanceof AbstractAugmentGenerator) { - final AbstractCompositeGenerator target = ((AbstractAugmentGenerator) parent).targetGenerator(); + final AbstractCompositeGenerator target = ((AbstractAugmentGenerator) parent).targetGenerator(); verify(target instanceof ChoiceGenerator, "Unexpected parent augment %s target %s", parent, target); choice = (ChoiceGenerator) target; } else { @@ -49,8 +52,13 @@ final class CaseGenerator extends CompositeSchemaTreeGeneratorchild dependency due to parent methods' return types and therefore children // must not request parent's type. That is not true for choice->case relationship and hence we do not need to - // go through DefaultType here. + // go through DefaultType here + final GeneratedTypeBuilder builder = builderFactory.newGeneratedTypeBuilder(typeName()); + // Note: this needs to be the first type we mention as we are relying on that fact for global runtime type + // choice/case indexing. builder.addImplementsType(choice.getGeneratedType(builderFactory)); + + builder.addImplementsType(BindingTypes.DATA_OBJECT); addAugmentable(builder); addUsesInterfaces(builder, builderFactory); addConcreteInterfaceMethods(builder); @@ -66,4 +74,16 @@ final class CaseGenerator extends CompositeSchemaTreeGenerator createBuilder( + final CaseEffectiveStatement statement) { + return new CompositeRuntimeTypeBuilder<>(statement) { + @Override + CaseRuntimeType build(final GeneratedType generatedType, final CaseEffectiveStatement statement, + final List childTypes, final List augmentTypes) { + return new DefaultCaseRuntimeType(generatedType, statement, childTypes, augmentTypes); + } + }; + } }