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%2FAbstractCompositeGenerator.java;h=5d74b61ad083ffde5e27683cd134c432daa13ada;hb=b1e88583f0d16ef8b8dab5d43f61978e064e27e5;hp=55352d60e8cf5461763d326bf6a0268ea1ba3c0b;hpb=bfe0613872d2a3d550e10cdad7de69682dd00ee5;p=mdsal.git diff --git a/binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/AbstractCompositeGenerator.java b/binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/AbstractCompositeGenerator.java index 55352d60e8..5d74b61ad0 100644 --- a/binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/AbstractCompositeGenerator.java +++ b/binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/AbstractCompositeGenerator.java @@ -14,17 +14,18 @@ import static java.util.Objects.requireNonNull; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.Set; import java.util.stream.Collectors; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.mdsal.binding.model.api.Enumeration; import org.opendaylight.mdsal.binding.model.api.GeneratedTransferObject; -import org.opendaylight.mdsal.binding.model.api.GeneratedType; import org.opendaylight.mdsal.binding.model.api.Type; 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.CompositeRuntimeType; import org.opendaylight.mdsal.binding.runtime.api.RuntimeType; +import org.opendaylight.yangtools.rfc8040.model.api.YangDataEffectiveStatement; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.AddedByUsesAware; import org.opendaylight.yangtools.yang.model.api.CopyableNode; @@ -171,16 +172,14 @@ public abstract class AbstractCompositeGenerator createBuilder(S statement); @Override final R createInternalRuntimeType(final AugmentResolver resolver, final S statement, final Type type) { - verify(type instanceof GeneratedType, "Unexpected type %s", type); - return createBuilder(statement).populate(resolver, this).build((GeneratedType) type); + return createBuilder(statement).populate(resolver, this).build(verifyGeneratedType(type)); } @Override @@ -268,6 +267,29 @@ public abstract class AbstractCompositeGenerator skippedChildren) { + // Link to used groupings IFF we have a corresponding generated Java class + switch (classPlacement()) { + case NONE: + case PHANTOM: + break; + default: + for (var grouping : groupings()) { + grouping.addUser(this); + } + } + + for (var child : childGenerators) { + if (child instanceof GroupingGenerator grouping) { + skippedChildren.add(grouping); + } else if (child instanceof AbstractCompositeGenerator composite) { + composite.linkUsedGroupings(skippedChildren); + } + } + } + final void startUsesAugmentLinkage(final List requirements) { for (var child : childGenerators) { if (child instanceof UsesAugmentGenerator uses) { @@ -554,6 +576,10 @@ public abstract class AbstractCompositeGenerator notifs = tmp.stream() - .filter(NotificationGenerator.class::isInstance) - .map(NotificationGenerator.class::cast) - .collect(Collectors.toUnmodifiableList()); - if (!notifs.isEmpty()) { - tmp.add(new NotificationServiceGenerator(moduleGen, notifs)); - } - - final List rpcs = tmp.stream() - .filter(RpcGenerator.class::isInstance) - .map(RpcGenerator.class::cast) - .collect(Collectors.toUnmodifiableList()); - if (!rpcs.isEmpty()) { - tmp.add(new RpcServiceGenerator(moduleGen, rpcs)); - } - } - return List.copyOf(tmp); } @@ -592,7 +598,7 @@ public abstract class AbstractCompositeGenerator stmt) { if (stmt instanceof AddedByUsesAware aware - && (aware.isAddedByUses() || stmt instanceof CopyableNode copyable && copyable.isAugmenting())) { + && (aware.isAddedByUses() || aware instanceof CopyableNode copyable && copyable.isAugmenting())) { return false; } return true;