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=418bfee7414a2cc908a3b80166b98a25bc41c31c;hb=refs%2Fchanges%2F84%2F109384%2F1;hp=5b81473851784efb1d746533f8f17acf81f9b089;hpb=131809e025f6dd46f29bf8aa9f7613536e50760d;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..418bfee741 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,40 @@ */ 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 { + private final @Nullable Object directUsers; + public DefaultGroupingRuntimeType(final GeneratedType bindingType, final GroupingEffectiveStatement statement, - final List children) { + final List children, final List directUsers) { super(bindingType, statement, children); + this.directUsers = switch (directUsers.size()) { + case 0 -> null; + case 1 -> Objects.requireNonNull(directUsers.get(0)); + default -> directUsers.stream().map(Objects::requireNonNull).toArray(CompositeRuntimeType[]::new); + }; + } + + @Override + public List directUsers() { + final var local = directUsers; + if (local == null) { + return List.of(); + } else if (local instanceof CompositeRuntimeType[] array) { + return Collections.unmodifiableList(Arrays.asList(array)); + } else { + return List.of((CompositeRuntimeType) local); + } } }