Rework AugmentRuntimeType and Choice/Case linkage
[mdsal.git] / binding / mdsal-binding-generator / src / main / java / org / opendaylight / mdsal / binding / generator / impl / reactor / GroupingGenerator.java
index d789413cacfd0afda7f2b730c7e47f5619be27ee..74ca6074c03b72a935c311b20e84a3ef5d67883d 100644 (file)
@@ -7,6 +7,8 @@
  */
 package org.opendaylight.mdsal.binding.generator.impl.reactor;
 
+import static com.google.common.base.Verify.verify;
+
 import java.util.List;
 import org.opendaylight.mdsal.binding.generator.impl.rt.DefaultGroupingRuntimeType;
 import org.opendaylight.mdsal.binding.model.api.GeneratedType;
@@ -55,13 +57,22 @@ final class GroupingGenerator extends AbstractCompositeGenerator<GroupingEffecti
     }
 
     @Override
-    GroupingRuntimeType createRuntimeType(final GeneratedType type, final GroupingEffectiveStatement statement,
-            final List<RuntimeType> children, final List<AugmentRuntimeType> augments) {
-        return new DefaultGroupingRuntimeType(type, statement, children, augments);
+    void addAsGetterMethod(final GeneratedTypeBuilderBase<?> builder, final TypeBuilderFactory builderFactory) {
+        // groupings are a separate concept
     }
 
     @Override
-    void addAsGetterMethod(final GeneratedTypeBuilderBase<?> builder, final TypeBuilderFactory builderFactory) {
-        // groupings are a separate concept
+    CompositeRuntimeTypeBuilder<GroupingEffectiveStatement, GroupingRuntimeType> createBuilder(
+            final GroupingEffectiveStatement statement) {
+        return new CompositeRuntimeTypeBuilder<>(statement) {
+            @Override
+            GroupingRuntimeType build(final GeneratedType type, final GroupingEffectiveStatement statement,
+                    final List<RuntimeType> children, final List<AugmentRuntimeType> augments) {
+                // Groupings cannot be targeted by 'augment'
+                verify(augments.isEmpty(), "Unexpected augments %s", augments);
+                return new DefaultGroupingRuntimeType(type, statement, children);
+            }
+        };
     }
+
 }