Ignore empty augmentations at runtime
[mdsal.git] / binding / mdsal-binding-generator / src / main / java / org / opendaylight / mdsal / binding / generator / impl / reactor / UsesAugmentGenerator.java
index dbb1e10a0f83165ce1aeae7807a76d47bdf2e1ec..59bc06b301a445f5825a4d3070a91e951f169ef7 100644 (file)
@@ -11,13 +11,10 @@ import static com.google.common.base.Verify.verify;
 import static com.google.common.base.Verify.verifyNotNull;
 import static java.util.Objects.requireNonNull;
 
-import com.google.common.collect.ImmutableList;
 import org.eclipse.jdt.annotation.NonNull;
-import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.AugmentEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.AugmentStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.SchemaTreeAwareEffectiveStatement;
-import org.opendaylight.yangtools.yang.model.api.stmt.SchemaTreeAwareEffectiveStatement.SchemaTreeNamespace;
 import org.opendaylight.yangtools.yang.model.api.stmt.SchemaTreeEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.UsesEffectiveStatement;
 
@@ -67,21 +64,8 @@ final class UsesAugmentGenerator extends AbstractAugmentGenerator {
     TargetAugmentEffectiveStatement effectiveIn(final SchemaTreeAwareEffectiveStatement<?, ?> target) {
         verify(target instanceof SchemaTreeEffectiveStatement, "Unexpected statement %s", target);
         // 'uses'/'augment': our children are binding to target's namespace
-        final var targetNamespace = ((SchemaTreeEffectiveStatement<?>) target).argument().getModule();
-
-        final var augment = statement();
-        final var stmts = augment.effectiveSubstatements();
-        final var builder = ImmutableList.<EffectiveStatement<?, ?>>builderWithExpectedSize(stmts.size());
-        for (var stmt : stmts) {
-            if (stmt instanceof SchemaTreeEffectiveStatement) {
-                final var qname = ((SchemaTreeEffectiveStatement<?>) stmt).getIdentifier().bindTo(targetNamespace);
-                // FIXME: orElseThrow()?
-                target.get(SchemaTreeNamespace.class, qname).ifPresent(builder::add);
-            } else {
-                builder.add(stmt);
-            }
-        }
 
-        return new TargetAugmentEffectiveStatement(augment, target, builder.build());
+        final var targetNamespace = ((SchemaTreeEffectiveStatement<?>) target).argument().getModule();
+        return effectiveIn(target, qname -> qname.bindTo(targetNamespace));
     }
 }