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=1b3bc495db6487f65e8d42dbdc235f69e9129166;hpb=ecdcdb340457ded6898193197e88ea33c84d58ae;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 1b3bc495db..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 @@ -10,8 +10,7 @@ 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.DerivedCaseRuntimeType; -import org.opendaylight.mdsal.binding.generator.impl.rt.OriginalCaseRuntimeType; +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; @@ -36,8 +35,6 @@ 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); @@ -74,11 +76,14 @@ final class CaseGenerator extends CompositeSchemaTreeGenerator children, final List augments) { - final var original = getOriginal(); - return statement.equals(original.statement()) - ? new OriginalCaseRuntimeType(type, statement, children, augments) - : new DerivedCaseRuntimeType(type, statement, children, augments, original.runtimeType().orElseThrow()); + CompositeRuntimeTypeBuilder 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); + } + }; } }