*/
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;
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;
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);
// 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
}
@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;
- }
}