Remove duplicate documentation
[mdsal.git] / binding / mdsal-binding-generator / src / main / java / org / opendaylight / mdsal / binding / generator / impl / rt / DefaultGroupingRuntimeType.java
index 64260960e916f52b017a5af88cdafbd1be6b58a5..418bfee7414a2cc908a3b80166b98a25bc41c31c 100644 (file)
@@ -7,18 +7,40 @@
  */
 package org.opendaylight.mdsal.binding.generator.impl.rt;
 
-import com.google.common.annotations.Beta;
+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;
 
-@Beta
 public final class DefaultGroupingRuntimeType extends AbstractCompositeRuntimeType<GroupingEffectiveStatement>
         implements GroupingRuntimeType {
+    private final @Nullable Object directUsers;
+
     public DefaultGroupingRuntimeType(final GeneratedType bindingType, final GroupingEffectiveStatement statement,
-            final List<RuntimeType> children) {
+            final List<RuntimeType> children, final List<? extends CompositeRuntimeType> 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<CompositeRuntimeType> 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);
+        }
     }
 }