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=37918184d9472df5afb4cc504b2e9d8d13916e0a;hb=32fec636ad3113a3acc52d56410c5e1b90d647e0;hp=d63e6cf43893ad4fceed882ecaa5f580b5b54f5f;hpb=6c92275ae2b3c6ce597c0c0f7a915ec911aacf21;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 d63e6cf438..37918184d9 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 @@ -19,12 +19,12 @@ 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; @@ -36,6 +36,7 @@ import org.opendaylight.yangtools.yang.model.api.stmt.AugmentEffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.CaseEffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.ChoiceEffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.ContainerEffectiveStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.FeatureEffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.GroupingEffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.IdentityEffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.InputEffectiveStatement; @@ -170,16 +171,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 @@ -204,9 +203,9 @@ public abstract class AbstractCompositeGenerator composite) { // We know how to descend down - return ((AbstractCompositeGenerator) ret).findGenerator(childStrategy, stmtPath, next); + return composite.findGenerator(childStrategy, stmtPath, next); } // Yeah, don't know how to continue here return null; @@ -309,19 +308,16 @@ public abstract class AbstractCompositeGenerator) child).linkOriginalGenerator()) { - progress = LinkageProgress.SOME; - it.remove(); - - // If this is a composite generator we need to process is further - if (child instanceof AbstractCompositeGenerator composite) { - if (unlinkedComposites.isEmpty()) { - unlinkedComposites = new ArrayList<>(); - } - unlinkedComposites.add(composite); + if (it.next() instanceof AbstractExplicitGenerator explicit && explicit.linkOriginalGenerator()) { + progress = LinkageProgress.SOME; + it.remove(); + + // If this is a composite generator we need to process is further + if (explicit instanceof AbstractCompositeGenerator composite) { + if (unlinkedComposites.isEmpty()) { + unlinkedComposites = new ArrayList<>(); } + unlinkedComposites.add(composite); } } } @@ -494,13 +490,14 @@ public abstract class AbstractCompositeGenerator original map we provide to BindingRuntimeTypes. - if (this instanceof ModuleGenerator) { - tmpAug.add(new ModuleAugmentGenerator(augment, this)); + if (this instanceof ModuleGenerator module) { + tmpAug.add(new ModuleAugmentGenerator(augment, module)); } } else if (stmt instanceof UsesEffectiveStatement uses) { for (var usesSub : uses.effectiveSubstatements()) { @@ -554,6 +552,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); } // Utility equivalent of (!isAddedByUses(stmt) && !isAugmenting(stmt)). Takes advantage of relationship between // CopyableNode and AddedByUsesAware private static boolean isOriginalDeclaration(final EffectiveStatement stmt) { - if (stmt instanceof AddedByUsesAware aware) { - if (aware.isAddedByUses() - || stmt instanceof CopyableNode copyable && copyable.isAugmenting()) { - return false; - } + if (stmt instanceof AddedByUsesAware aware + && (aware.isAddedByUses() || stmt instanceof CopyableNode copyable && copyable.isAugmenting())) { + return false; } return true; }