*/
package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.container;
-import static com.google.common.base.Verify.verify;
import static java.util.Objects.requireNonNull;
import com.google.common.collect.ImmutableList;
import org.opendaylight.yangtools.yang.model.api.stmt.ContainerStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.compat.ActionNodeContainerCompat;
import org.opendaylight.yangtools.yang.model.api.stmt.compat.NotificationNodeContainerCompat;
-import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredEffectiveStatement.DefaultWithDataTree;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredEffectiveStatement.DefaultWithDataTree.WithSubstatements;
import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.EffectiveStatementMixins.ActionNodeContainerMixin;
import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.EffectiveStatementMixins.AugmentationTargetMixin;
import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.EffectiveStatementMixins.DataNodeContainerMixin;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
final class ContainerEffectiveStatementImpl
- extends DefaultWithDataTree<QName, ContainerStatement, ContainerEffectiveStatement>
+ extends WithSubstatements<QName, ContainerStatement, ContainerEffectiveStatement>
implements ContainerEffectiveStatement, ContainerSchemaNode, DerivableSchemaNode,
DataSchemaNodeMixin<QName, ContainerStatement>, DataNodeContainerMixin<QName, ContainerStatement>,
ActionNodeContainerMixin<QName, ContainerStatement>,
- ActionNodeContainerCompat<QName, ContainerStatement>,
+ ActionNodeContainerCompat<QName, ContainerStatement, ContainerEffectiveStatement>,
NotificationNodeContainerMixin<QName, ContainerStatement>,
- NotificationNodeContainerCompat<QName, ContainerStatement>,
+ NotificationNodeContainerCompat<QName, ContainerStatement, ContainerEffectiveStatement>,
MustConstraintMixin<QName, ContainerStatement>, PresenceMixin<QName, ContainerStatement>,
AugmentationTargetMixin<QName, ContainerStatement> {
private final int flags;
- private final @NonNull Object substatements;
private final @NonNull SchemaPath path;
private final @Nullable ContainerSchemaNode original;
EffectiveStmtUtils.checkUniqueTypedefs(ctx, substatements);
EffectiveStmtUtils.checkUniqueUses(ctx, substatements);
- this.substatements = substatements.size() == 1 ? substatements.get(0) : substatements;
this.path = requireNonNull(path);
this.original = original;
this.flags = flags;
}
- @SuppressWarnings("unchecked")
- @Override
- public ImmutableList<? extends EffectiveStatement<?, ?>> effectiveSubstatements() {
- if (substatements instanceof ImmutableList) {
- return (ImmutableList<? extends EffectiveStatement<?, ?>>) substatements;
- }
- verify(substatements instanceof EffectiveStatement, "Unexpected substatement %s", substatements);
- return ImmutableList.of((EffectiveStatement<?, ?>) substatements);
- }
-
@Override
public int flags() {
return flags;
}
@Override
+ @Deprecated
public SchemaPath getPath() {
return path;
}