*/
public abstract static class DefaultWithDataTree<A, D extends DeclaredStatement<A>,
E extends DataTreeAwareEffectiveStatement<A, D>> extends WithDataTree<A, D, E> {
+ public abstract static class WithSubstatements<A, D extends DeclaredStatement<A>,
+ E extends DataTreeAwareEffectiveStatement<A, D>> extends DefaultWithDataTree<A, D, E> {
+ private final @NonNull Object substatements;
+
+ protected WithSubstatements(final D declared, final StmtContext<?, ?, ?> ctx,
+ final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+ super(declared, ctx, substatements);
+ this.substatements = maskList(substatements);
+ }
+
+ @Override
+ public final ImmutableList<? extends EffectiveStatement<?, ?>> effectiveSubstatements() {
+ return unmaskList(substatements);
+ }
+ }
+
private final @NonNull ImmutableMap<QName, SchemaTreeEffectiveStatement<?>> schemaTree;
private final @NonNull ImmutableMap<QName, DataTreeEffectiveStatement<?>> dataTree;
private final @NonNull D declared;
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>,
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 = maskList(substatements);
this.path = requireNonNull(path);
this.original = original;
this.flags = flags;
}
- @Override
- public ImmutableList<? extends EffectiveStatement<?, ?>> effectiveSubstatements() {
- return unmaskList(substatements);
- }
-
@Override
public int flags() {
return flags;