Rework BindingRuntimeTypes
[mdsal.git] / binding / mdsal-binding-generator / src / main / java / org / opendaylight / mdsal / binding / generator / impl / reactor / ListGenerator.java
index 63a6e8d9afd5195557b470b3ef1339654e58afef..a7c464e392f5f54e07824a5a9d7a5e6c3073dea4 100644 (file)
@@ -9,7 +9,9 @@ package org.opendaylight.mdsal.binding.generator.impl.reactor;
 
 import static org.opendaylight.mdsal.binding.model.ri.BindingTypes.identifiable;
 
+import java.util.List;
 import org.eclipse.jdt.annotation.Nullable;
+import org.opendaylight.mdsal.binding.generator.impl.rt.DefaultListRuntimeType;
 import org.opendaylight.mdsal.binding.model.api.GeneratedType;
 import org.opendaylight.mdsal.binding.model.api.MethodSignature.ValueMechanics;
 import org.opendaylight.mdsal.binding.model.api.Type;
@@ -17,6 +19,9 @@ import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTypeBuilde
 import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTypeBuilderBase;
 import org.opendaylight.mdsal.binding.model.api.type.builder.MethodSignatureBuilder;
 import org.opendaylight.mdsal.binding.model.ri.Types;
+import org.opendaylight.mdsal.binding.runtime.api.AugmentRuntimeType;
+import org.opendaylight.mdsal.binding.runtime.api.ListRuntimeType;
+import org.opendaylight.mdsal.binding.runtime.api.RuntimeType;
 import org.opendaylight.mdsal.binding.spec.naming.BindingMapping;
 import org.opendaylight.yangtools.yang.common.Ordering;
 import org.opendaylight.yangtools.yang.model.api.stmt.KeyEffectiveStatement;
@@ -27,10 +32,10 @@ import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack;
 /**
  * Generator corresponding to a {@code list} statement.
  */
-final class ListGenerator extends CompositeSchemaTreeGenerator<ListEffectiveStatement, ListGenerator> {
+final class ListGenerator extends CompositeSchemaTreeGenerator<ListEffectiveStatement, ListRuntimeType> {
     private final @Nullable KeyGenerator keyGen;
 
-    ListGenerator(final ListEffectiveStatement statement, final AbstractCompositeGenerator<?> parent) {
+    ListGenerator(final ListEffectiveStatement statement, final AbstractCompositeGenerator<?, ?> parent) {
         super(statement, parent);
         keyGen = statement.findFirstEffectiveSubstatement(KeyEffectiveStatement.class)
             .map(key -> new KeyGenerator(key, parent, this))
@@ -76,6 +81,13 @@ final class ListGenerator extends CompositeSchemaTreeGenerator<ListEffectiveStat
         return builder.build();
     }
 
+    @Override
+    ListRuntimeType createRuntimeType(final GeneratedType type, final ListEffectiveStatement statement,
+            final List<RuntimeType> children, final List<AugmentRuntimeType> augments) {
+        return new DefaultListRuntimeType(type, statement, children, augments,
+            keyGen != null ? keyGen.runtimeType().orElseThrow() : null);
+    }
+
     @Override
     Type methodReturnType(final TypeBuilderFactory builderFactory) {
         final Type generatedType = super.methodReturnType(builderFactory);