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%2Frt%2FDefaultGroupingRuntimeType.java;h=a0abdcefbb02c7de44aebd796a250a253f4364e6;hb=b1e88583f0d16ef8b8dab5d43f61978e064e27e5;hp=5b81473851784efb1d746533f8f17acf81f9b089;hpb=77d4d3fb01c2164be405b683d2df7f9662884e2c;p=mdsal.git diff --git a/binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/rt/DefaultGroupingRuntimeType.java b/binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/rt/DefaultGroupingRuntimeType.java index 5b81473851..a0abdcefbb 100644 --- a/binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/rt/DefaultGroupingRuntimeType.java +++ b/binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/rt/DefaultGroupingRuntimeType.java @@ -7,16 +7,49 @@ */ package org.opendaylight.mdsal.binding.generator.impl.rt; +import java.util.Arrays; +import java.util.Collections; import java.util.List; +import java.util.Objects; +import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.mdsal.binding.model.api.GeneratedType; +import org.opendaylight.mdsal.binding.runtime.api.CompositeRuntimeType; import org.opendaylight.mdsal.binding.runtime.api.GroupingRuntimeType; import org.opendaylight.mdsal.binding.runtime.api.RuntimeType; import org.opendaylight.yangtools.yang.model.api.stmt.GroupingEffectiveStatement; public final class DefaultGroupingRuntimeType extends AbstractCompositeRuntimeType implements GroupingRuntimeType { + /** + * These are vectors towards concrete instantiations of this type -- i.e. the manifestation in the effective data + * tree. Each item in this list represents either: + * + * We use these vectors to create {@link #instantiations()}. + */ + private final @Nullable Object instantiationVectors; + public DefaultGroupingRuntimeType(final GeneratedType bindingType, final GroupingEffectiveStatement statement, - final List children) { + final List children, final List instantiationVectors) { super(bindingType, statement, children); + this.instantiationVectors = switch (instantiationVectors.size()) { + case 0 -> null; + case 1 -> Objects.requireNonNull(instantiationVectors.get(0)); + default -> instantiationVectors.stream().map(Objects::requireNonNull).toArray(CompositeRuntimeType[]::new); + }; + } + + @Override + public List directUsers() { + final var local = instantiationVectors; + if (local == null) { + return List.of(); + } else if (local instanceof CompositeRuntimeType[] array) { + return Collections.unmodifiableList(Arrays.asList(array)); + } else { + return List.of((CompositeRuntimeType) local); + } } }