Make CopyHistory implement CopyableNode
[yangtools.git] / yang / yang-parser-rfc7950 / src / main / java / org / opendaylight / yangtools / yang / parser / rfc7950 / stmt / UnknownEffectiveStatementBase.java
index fde388da25ba8aab4fdea66a1d8b89e17580676f..8c861a1d205ce0660c4397838bf05c0d6d5db270 100644 (file)
@@ -5,40 +5,39 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-
 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 javax.annotation.Nonnull;
+import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.ExtensionDefinition;
 import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.ExtensionEffectiveStatement;
 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.StmtContext;
 
 public abstract class UnknownEffectiveStatementBase<A, D extends UnknownStatement<A>>
-        extends AbstractEffectiveDocumentedNode<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 List<UnknownSchemaNode> unknownNodes;
     private final QName nodeType;
     private final String nodeParameter;
 
-    protected UnknownEffectiveStatementBase(final StmtContext<A, D, ?> ctx) {
-        super(ctx);
+    protected UnknownEffectiveStatementBase(final A argument, final @NonNull D declared,
+            final @NonNull ImmutableList<? extends EffectiveStatement<?, ?>> substatements,
+            // FIXME: 7.0.0: we should not be needing this
+            final StmtContext<A, D, ?> ctx) {
+        super(argument, declared, substatements);
 
-        final StmtContext<?, ExtensionStatement, EffectiveStatement<QName, ExtensionStatement>> extensionInit =
+        final StmtContext<?, ExtensionStatement, ExtensionEffectiveStatement> extensionInit =
                 ctx.getFromNamespace(ExtensionNamespace.class, ctx.getPublicDefinition().getStatementName());
 
         if (extensionInit == null) {
@@ -54,29 +53,16 @@ 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);
-        }
+        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();
     }
 
+    @Deprecated
     @Override
-    public boolean isAddedByAugmentation() {
-        return addedByAugmentation;
+    public boolean isAugmenting() {
+        return augmenting;
     }
 
     @Override
@@ -89,6 +75,7 @@ public abstract class UnknownEffectiveStatementBase<A, D extends UnknownStatemen
         return nodeParameter;
     }
 
+    @Deprecated
     @Override
     public boolean isAddedByUses() {
         return addedByUses;
@@ -99,12 +86,6 @@ public abstract class UnknownEffectiveStatementBase<A, D extends UnknownStatemen
         return extension;
     }
 
-    @Nonnull
-    @Override
-    public List<UnknownSchemaNode> getUnknownSchemaNodes() {
-        return unknownNodes;
-    }
-
     @Override
     public String toString() {
         final QName type = getNodeType();