Fixup collections return implementations
[yangtools.git] / yang / yang-parser-rfc7950 / src / main / java / org / opendaylight / yangtools / yang / parser / rfc7950 / stmt / AbstractEffectiveDocumentedNodeWithStatus.java
index 6560a27cf49381ebed155fd33cb5db5dc7d6c9a3..fdc94a358f0345aed2caaf964c80de7800fed491 100644 (file)
@@ -7,6 +7,8 @@
  */
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt;
 
+import static java.util.Objects.requireNonNull;
+
 import com.google.common.annotations.Beta;
 import com.google.common.collect.Collections2;
 import com.google.common.collect.ImmutableList;
@@ -18,55 +20,35 @@ import org.opendaylight.yangtools.yang.model.api.DocumentedNode;
 import org.opendaylight.yangtools.yang.model.api.Status;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
-import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
-import org.opendaylight.yangtools.yang.model.api.meta.StatementSource;
 import org.opendaylight.yangtools.yang.model.api.stmt.StatusEffectiveStatement;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.EffectiveStatementMixins.DocumentedNodeMixin;
-import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 
 /**
  * A declared {@link AbstractEffectiveStatement} with DocumentedNode.WithStatus.
  */
 @Beta
 public abstract class AbstractEffectiveDocumentedNodeWithStatus<A, D extends DeclaredStatement<A>>
-        extends AbstractEffectiveStatement<A, D> implements DocumentedNodeMixin<A, D>, DocumentedNode.WithStatus {
+        extends AbstractDeclaredEffectiveStatement<A, D>
+        implements DocumentedNodeMixin<A, D>, DocumentedNode.WithStatus {
     private final @NonNull ImmutableList<? extends EffectiveStatement<?, ?>> substatements;
-    private final @NonNull StatementSource statementSource;
-    private final @NonNull D declaredInstance;
+    private final @NonNull D declared;
     private final A argument;
 
-    /**
-     * Constructor.
-     *
-     * @param ctx context of statement.
-     */
-    protected AbstractEffectiveDocumentedNodeWithStatus(final StmtContext<A, D, ?> ctx) {
-        argument = ctx.getStatementArgument();
-        statementSource = ctx.getStatementSource();
-        declaredInstance = ctx.buildDeclared();
-        substatements = ImmutableList.copyOf(
-            Collections2.transform(Collections2.filter(BaseStatementSupport.declaredSubstatements(ctx),
-                StmtContext::isSupportedToBuildEffective), StmtContext::buildEffective));
-    }
-
-    @Override
-    public final StatementDefinition statementDefinition() {
-        return declaredInstance.statementDefinition();
+    protected AbstractEffectiveDocumentedNodeWithStatus(final A argument, final @NonNull D declared,
+            final @NonNull ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+        this.argument = argument;
+        this.declared = requireNonNull(declared);
+        this.substatements = requireNonNull(substatements);
     }
 
     @Override
-    public A argument() {
+    public final A argument() {
         return argument;
     }
 
     @Override
-    public final StatementSource getStatementSource() {
-        return statementSource;
-    }
-
-    @Override
-    public final D getDeclared() {
-        return declaredInstance;
+    public final @NonNull D getDeclared() {
+        return declared;
     }
 
     @Override