Refactor yang-model-api child traversal return types
[yangtools.git] / yang / yang-parser-rfc7950 / src / main / java / org / opendaylight / yangtools / yang / parser / rfc7950 / stmt / AbstractEffectiveSimpleDataNodeContainer.java
index 7ebc3e95902df844d58ee7bb26d6a4b6359c6b0e..a5fafd4976704abee61a4060279a28fc1bcb5908 100644 (file)
@@ -7,11 +7,9 @@
  */
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt;
 
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
-import java.util.ArrayList;
+import java.util.Collection;
 import java.util.LinkedHashSet;
-import java.util.List;
 import java.util.Optional;
 import java.util.Set;
 import org.eclipse.jdt.annotation.NonNull;
@@ -21,7 +19,6 @@ import org.opendaylight.yangtools.yang.model.api.AugmentationTarget;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath;
 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
-import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
 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.stmt.WhenEffectiveStatement;
@@ -32,15 +29,12 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 public abstract class AbstractEffectiveSimpleDataNodeContainer<D extends DeclaredStatement<QName>> extends
         AbstractEffectiveDocumentedDataNodeContainer<QName, D> implements AugmentationTarget, DataSchemaNode {
 
-    private final Set<AugmentationSchemaNode> augmentations;
-    private final @NonNull List<UnknownSchemaNode> unknownNodes;
+    private final ImmutableSet<AugmentationSchemaNode> augmentations;
     private final RevisionAwareXPath whenCondition;
     private final @NonNull SchemaPath path;
     private final boolean configuration;
     private final boolean addedByUses;
-
-    // FIXME: YANGTOOLS-724: this field should be final
-    private boolean augmenting;
+    private final boolean augmenting;
 
     protected AbstractEffectiveSimpleDataNodeContainer(final StmtContext<QName, D, ?> ctx) {
         super(ctx);
@@ -52,17 +46,12 @@ public abstract class AbstractEffectiveSimpleDataNodeContainer<D extends Declare
 
         // initSubstatementCollectionsAndFields
 
-        List<UnknownSchemaNode> unknownNodesInit = new ArrayList<>();
         Set<AugmentationSchemaNode> augmentationsInit = new LinkedHashSet<>();
         for (EffectiveStatement<?, ?> effectiveStatement : effectiveSubstatements()) {
-            if (effectiveStatement instanceof UnknownSchemaNode) {
-                unknownNodesInit.add((UnknownSchemaNode) effectiveStatement);
-            }
             if (effectiveStatement instanceof AugmentationSchemaNode) {
                 augmentationsInit.add((AugmentationSchemaNode) effectiveStatement);
             }
         }
-        this.unknownNodes = ImmutableList.copyOf(unknownNodesInit);
         this.augmentations = ImmutableSet.copyOf(augmentationsInit);
 
         // initCopyType
@@ -104,28 +93,12 @@ public abstract class AbstractEffectiveSimpleDataNodeContainer<D extends Declare
     }
 
     @Override
-    public Set<AugmentationSchemaNode> getAvailableAugmentations() {
+    public Collection<? extends AugmentationSchemaNode> getAvailableAugmentations() {
         return augmentations;
     }
 
-    @Override
-    public List<UnknownSchemaNode> getUnknownSchemaNodes() {
-        return unknownNodes;
-    }
-
     @Override
     public final Optional<RevisionAwareXPath> getWhenCondition() {
         return Optional.ofNullable(whenCondition);
     }
-
-    /**
-     * Reset {@link #isAugmenting()} to false.
-     *
-     * @deprecated This method is a violation of immutable contract and is a side-effect of bad/incomplete lifecycle,
-     *             which needs to be fixed. Do not introduce new callers. This deficiency is tracked in YANGTOOLS-724.
-     */
-    @Deprecated
-    public final void resetAugmenting() {
-        augmenting = false;
-    }
 }