Make CopyHistory implement CopyableNode
[yangtools.git] / yang / yang-parser-rfc7950 / src / main / java / org / opendaylight / yangtools / yang / parser / rfc7950 / stmt / UnknownEffectiveStatementBase.java
index 487f0049e74e1ccff5245ace8838efd8d1f85116..708208c528d814812ce99094958da5fa8e0c3eef 100644 (file)
@@ -9,8 +9,6 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt;
 
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableList.Builder;
-import java.util.List;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.ExtensionDefinition;
@@ -21,29 +19,29 @@ import org.opendaylight.yangtools.yang.model.api.stmt.ExtensionStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.UnknownStatement;
 import org.opendaylight.yangtools.yang.parser.spi.ExtensionNamespace;
 import org.opendaylight.yangtools.yang.parser.spi.meta.CopyHistory;
-import org.opendaylight.yangtools.yang.parser.spi.meta.CopyType;
+import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 
 public abstract class UnknownEffectiveStatementBase<A, D extends UnknownStatement<A>>
-        extends AbstractSchemaEffectiveDocumentedNode<A, D> implements UnknownSchemaNode {
+        extends AbstractEffectiveDocumentedNodeWithStatus<A, D> implements UnknownSchemaNode {
 
     private final boolean addedByUses;
-    private final boolean addedByAugmentation;
+    private final boolean augmenting;
 
     private final ExtensionDefinition extension;
-    private final @NonNull ImmutableList<UnknownSchemaNode> unknownNodes;
     private final QName nodeType;
     private final String nodeParameter;
 
-    protected UnknownEffectiveStatementBase(final StmtContext<A, D, ?> ctx) {
-        super(ctx);
+    protected UnknownEffectiveStatementBase(final Current<A, D> stmt,
+            final @NonNull ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+        super(stmt.argument(), stmt.declared(), substatements);
 
         final StmtContext<?, ExtensionStatement, ExtensionEffectiveStatement> extensionInit =
-                ctx.getFromNamespace(ExtensionNamespace.class, ctx.getPublicDefinition().getStatementName());
+                stmt.getFromNamespace(ExtensionNamespace.class, stmt.publicDefinition().getStatementName());
 
         if (extensionInit == null) {
             extension = null;
-            nodeType = ctx.getPublicDefinition().getStatementName();
+            nodeType = stmt.publicDefinition().getStatementName();
         } else {
             final EffectiveStatement<QName, ExtensionStatement> effective = extensionInit.buildEffective();
             Preconditions.checkState(effective instanceof ExtensionDefinition,
@@ -53,31 +51,17 @@ public abstract class UnknownEffectiveStatementBase<A, D extends UnknownStatemen
         }
 
         // initCopyType
-        final CopyHistory copyTypesFromOriginal = ctx.getCopyHistory();
-        if (copyTypesFromOriginal.contains(CopyType.ADDED_BY_USES_AUGMENTATION)) {
-            this.addedByAugmentation = true;
-            this.addedByUses = true;
-        } else {
-            this.addedByAugmentation = copyTypesFromOriginal.contains(CopyType.ADDED_BY_AUGMENTATION);
-            this.addedByUses = copyTypesFromOriginal.contains(CopyType.ADDED_BY_USES);
-        }
+        final CopyHistory copyTypesFromOriginal = stmt.history();
+        this.augmenting = copyTypesFromOriginal.isAugmenting();
+        this.addedByUses = copyTypesFromOriginal.isAddedByUses();
 
-        nodeParameter = ctx.rawStatementArgument() == null ? "" : ctx.rawStatementArgument();
-
-        // TODO init other fields (see Bug1412Test)
-        final Builder<UnknownSchemaNode> builder = ImmutableList.builder();
-        for (final EffectiveStatement<?, ?> effectiveStatement : effectiveSubstatements()) {
-            if (effectiveStatement instanceof UnknownSchemaNode) {
-                builder.add((UnknownSchemaNode) effectiveStatement);
-            }
-        }
-        unknownNodes = builder.build();
+        nodeParameter = stmt.rawArgument() == null ? "" : stmt.rawArgument();
     }
 
     @Deprecated
     @Override
-    public boolean isAddedByAugmentation() {
-        return addedByAugmentation;
+    public boolean isAugmenting() {
+        return augmenting;
     }
 
     @Override
@@ -101,11 +85,6 @@ public abstract class UnknownEffectiveStatementBase<A, D extends UnknownStatemen
         return extension;
     }
 
-    @Override
-    public List<UnknownSchemaNode> getUnknownSchemaNodes() {
-        return unknownNodes;
-    }
-
     @Override
     public String toString() {
         final QName type = getNodeType();