import org.opendaylight.yangtools.yang.model.api.stmt.UniqueEffectiveStatement;
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.model.spi.meta.AbstractDeclaredEffectiveStatement.DefaultWithDataTree.WithSubstatements;
+import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredEffectiveStatement.DefaultWithDataTree;
import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.ActionNodeContainerMixin;
import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.AugmentationTargetMixin;
import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.DataNodeContainerMixin;
import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.WhenConditionMixin;
abstract class AbstractListEffectiveStatement
- extends WithSubstatements<QName, ListStatement, ListEffectiveStatement>
+ extends DefaultWithDataTree<QName, ListStatement, ListEffectiveStatement>
implements ListEffectiveStatement, ListSchemaNode, DerivableSchemaNode,
ActionNodeContainerCompat<QName, ListStatement, ListEffectiveStatement>,
NotificationNodeContainerCompat<QName, ListStatement, ListEffectiveStatement>,
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.ActionEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.ActionStatement;
-import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredEffectiveStatement.DefaultWithDataTree.WithSubstatements;
+import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredEffectiveStatement.DefaultWithDataTree;
import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.CopyableMixin;
import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.OperationDefinitionMixin;
public final class ActionEffectiveStatementImpl
- extends WithSubstatements<QName, ActionStatement, ActionEffectiveStatement>
+ extends DefaultWithDataTree<QName, ActionStatement, ActionEffectiveStatement>
implements ActionDefinition, ActionEffectiveStatement, OperationDefinitionMixin<ActionStatement>,
CopyableMixin<QName, ActionStatement> {
private final @NonNull QName argument;
import org.opendaylight.yangtools.yang.model.api.stmt.ChoiceEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.ChoiceStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.SchemaTreeEffectiveStatement;
-import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredEffectiveStatement.DefaultWithDataTree.WithSubstatements;
+import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredEffectiveStatement.DefaultWithDataTree;
import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.AugmentationTargetMixin;
import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.DataSchemaNodeMixin;
import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.MandatoryMixin;
public final class ChoiceEffectiveStatementImpl
- extends WithSubstatements<QName, ChoiceStatement, ChoiceEffectiveStatement>
+ extends DefaultWithDataTree<QName, ChoiceStatement, ChoiceEffectiveStatement>
implements ChoiceEffectiveStatement, ChoiceSchemaNode, DerivableSchemaNode,
DataSchemaNodeMixin<ChoiceStatement>, AugmentationTargetMixin<QName, ChoiceStatement>,
MandatoryMixin<QName, ChoiceStatement> {
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.model.spi.meta.AbstractDeclaredEffectiveStatement.DefaultWithDataTree.WithSubstatements;
+import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredEffectiveStatement.DefaultWithDataTree;
import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.ActionNodeContainerMixin;
import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.AugmentationTargetMixin;
import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.DataNodeContainerMixin;
import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.PresenceMixin;
public final class ContainerEffectiveStatementImpl
- extends WithSubstatements<QName, ContainerStatement, ContainerEffectiveStatement>
+ extends DefaultWithDataTree<QName, ContainerStatement, ContainerEffectiveStatement>
implements ContainerEffectiveStatement, ContainerSchemaNode, DerivableSchemaNode,
DataSchemaNodeMixin<ContainerStatement>, DataNodeContainerMixin<QName, ContainerStatement>,
ActionNodeContainerMixin<QName, ContainerStatement>,
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.CaseEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.CaseStatement;
-import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredEffectiveStatement.DefaultWithDataTree.WithSubstatements;
+import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredEffectiveStatement.DefaultWithDataTree;
public final class DeclaredCaseEffectiveStatement
- extends WithSubstatements<QName, CaseStatement, CaseEffectiveStatement> implements CaseEffectiveStatementMixin {
+ extends DefaultWithDataTree<QName, CaseStatement, CaseEffectiveStatement>
+ implements CaseEffectiveStatementMixin {
private final CaseSchemaNode original;
private final @NonNull QName argument;
private final int flags;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.InputEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.InputStatement;
-import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredEffectiveStatement.DefaultWithDataTree.WithSubstatements;
+import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredEffectiveStatement.DefaultWithDataTree;
import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.OperationContainerMixin;
public final class DeclaredInputEffectiveStatement
- extends WithSubstatements<QName, InputStatement, InputEffectiveStatement>
+ extends DefaultWithDataTree<QName, InputStatement, InputEffectiveStatement>
implements InputEffectiveStatement, InputSchemaNode, OperationContainerMixin<InputStatement> {
private final @NonNull QName argument;
private final int flags;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.OutputEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.OutputStatement;
-import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredEffectiveStatement.DefaultWithDataTree.WithSubstatements;
+import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredEffectiveStatement.DefaultWithDataTree;
import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.OperationContainerMixin;
public final class DeclaredOutputEffectiveStatement
- extends WithSubstatements<QName, OutputStatement, OutputEffectiveStatement>
+ extends DefaultWithDataTree<QName, OutputStatement, OutputEffectiveStatement>
implements OutputEffectiveStatement, OutputSchemaNode, OperationContainerMixin<OutputStatement> {
private final @NonNull QName argument;
private final int flags;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.GroupingEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.GroupingStatement;
-import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredEffectiveStatement.DefaultWithDataTree.WithSubstatements;
+import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredEffectiveStatement.DefaultWithDataTree;
import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.ActionNodeContainerMixin;
import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.AddedByUsesMixin;
import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.DataNodeContainerMixin;
import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.SchemaNodeMixin;
public final class GroupingEffectiveStatementImpl
- extends WithSubstatements<QName, GroupingStatement, GroupingEffectiveStatement>
+ extends DefaultWithDataTree<QName, GroupingStatement, GroupingEffectiveStatement>
implements GroupingDefinition, GroupingEffectiveStatement,
DataNodeContainerMixin<QName, GroupingStatement>, SchemaNodeMixin<GroupingStatement>,
ActionNodeContainerMixin<QName, GroupingStatement>,
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.NotificationEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.NotificationStatement;
-import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredEffectiveStatement.DefaultWithDataTree.WithSubstatements;
+import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredEffectiveStatement.DefaultWithDataTree;
import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.AugmentationTargetMixin;
import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.CopyableMixin;
import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.DataNodeContainerMixin;
import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.SchemaNodeMixin;
public final class NotificationEffectiveStatementImpl
- extends WithSubstatements<QName, NotificationStatement, NotificationEffectiveStatement>
+ extends DefaultWithDataTree<QName, NotificationStatement, NotificationEffectiveStatement>
implements NotificationDefinition, NotificationEffectiveStatement,
SchemaNodeMixin<NotificationStatement>, DataNodeContainerMixin<QName, NotificationStatement>,
AugmentationTargetMixin<QName, NotificationStatement>, CopyableMixin<QName, NotificationStatement>,
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.RpcEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.RpcStatement;
-import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredEffectiveStatement.DefaultWithDataTree.WithSubstatements;
+import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredEffectiveStatement.DefaultWithDataTree;
import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.OperationDefinitionMixin;
-public final class RpcEffectiveStatementImpl extends WithSubstatements<QName, RpcStatement, RpcEffectiveStatement>
+public final class RpcEffectiveStatementImpl extends DefaultWithDataTree<QName, RpcStatement, RpcEffectiveStatement>
implements RpcDefinition, RpcEffectiveStatement, OperationDefinitionMixin<RpcStatement> {
private final @NonNull QName argument;
private final int flags;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.CaseEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.CaseStatement;
-import org.opendaylight.yangtools.yang.model.spi.meta.AbstractUndeclaredEffectiveStatement.DefaultWithDataTree.WithSubstatements;
+import org.opendaylight.yangtools.yang.model.spi.meta.AbstractUndeclaredEffectiveStatement.DefaultWithDataTree;
public final class UndeclaredCaseEffectiveStatement
- extends WithSubstatements<QName, CaseStatement, CaseEffectiveStatement> implements CaseEffectiveStatementMixin {
+ extends DefaultWithDataTree<QName, CaseStatement, CaseEffectiveStatement>
+ implements CaseEffectiveStatementMixin {
private final @Nullable CaseSchemaNode original;
private final @NonNull QName argument;
private final int flags;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.InputEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.InputStatement;
-import org.opendaylight.yangtools.yang.model.spi.meta.AbstractUndeclaredEffectiveStatement.DefaultWithDataTree.WithSubstatements;
+import org.opendaylight.yangtools.yang.model.spi.meta.AbstractUndeclaredEffectiveStatement.DefaultWithDataTree;
import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.OperationContainerMixin;
public final class UndeclaredInputEffectiveStatement
- extends WithSubstatements<QName, InputStatement, InputEffectiveStatement>
+ extends DefaultWithDataTree<QName, InputStatement, InputEffectiveStatement>
implements InputEffectiveStatement, InputSchemaNode, OperationContainerMixin<InputStatement> {
private final @NonNull QName argument;
private final int flags;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.OutputEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.OutputStatement;
-import org.opendaylight.yangtools.yang.model.spi.meta.AbstractUndeclaredEffectiveStatement.DefaultWithDataTree.WithSubstatements;
+import org.opendaylight.yangtools.yang.model.spi.meta.AbstractUndeclaredEffectiveStatement.DefaultWithDataTree;
import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.OperationContainerMixin;
public final class UndeclaredOutputEffectiveStatement
- extends WithSubstatements<QName, OutputStatement, OutputEffectiveStatement>
+ extends DefaultWithDataTree<QName, OutputStatement, OutputEffectiveStatement>
implements OutputEffectiveStatement, OutputSchemaNode, OperationContainerMixin<OutputStatement> {
private final @NonNull QName argument;
private final int flags;
*/
public abstract static class DefaultWithSchemaTree<A, D extends DeclaredStatement<A>,
E extends SchemaTreeAwareEffectiveStatement<A, D>> extends WithSchemaTree<A, D, E> {
- public abstract static class WithSubstatements<A, D extends DeclaredStatement<A>,
- E extends SchemaTreeAwareEffectiveStatement<A, D>> extends DefaultWithSchemaTree<A, D, E> {
- private final @NonNull Object substatements;
-
- protected WithSubstatements(final D declared,
- final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
- super(declared, substatements);
- this.substatements = maskList(substatements);
- }
-
- protected WithSubstatements(final WithSubstatements<A, D, E> original) {
- super(original);
- this.substatements = original.substatements;
- }
-
- @Override
- public final ImmutableList<? extends EffectiveStatement<?, ?>> effectiveSubstatements() {
- return unmaskList(substatements);
- }
- }
-
private final @NonNull ImmutableMap<QName, SchemaTreeEffectiveStatement<?>> schemaTree;
+ private final @NonNull Object substatements;
private final @NonNull D declared;
protected DefaultWithSchemaTree(final D declared,
final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
this.declared = requireNonNull(declared);
+ this.substatements = maskList(substatements);
this.schemaTree = ImmutableMap.copyOf(createSchemaTreeNamespace(substatements));
}
protected DefaultWithSchemaTree(final DefaultWithSchemaTree<A, D, E> original) {
this.declared = original.declared;
this.schemaTree = original.schemaTree;
+ this.substatements = original.substatements;
}
@Override
return declared;
}
+ @Override
+ public final ImmutableList<? extends EffectiveStatement<?, ?>> effectiveSubstatements() {
+ return unmaskList(substatements);
+ }
+
@Override
protected final Map<QName, SchemaTreeEffectiveStatement<?>> schemaTreeNamespace() {
return schemaTree;
*/
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 ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
- super(declared, substatements);
- this.substatements = maskList(substatements);
- }
-
- protected WithSubstatements(final WithSubstatements<A, D, E> original) {
- super(original);
- this.substatements = original.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 Object substatements;
private final @NonNull D declared;
protected DefaultWithDataTree(final D declared,
final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
this.declared = requireNonNull(declared);
+ this.substatements = maskList(substatements);
+
+ // Note we call schema.values() so we do not retain them, as that is just pure memory overhead
final Map<QName, SchemaTreeEffectiveStatement<?>> schema = createSchemaTreeNamespace(substatements);
this.schemaTree = ImmutableMap.copyOf(schema);
this.dataTree = createDataTreeNamespace(schema.values(), schemaTree);
this.declared = original.declared;
this.schemaTree = original.schemaTree;
this.dataTree = original.dataTree;
+ this.substatements = original.substatements;
}
@Override
return declared;
}
+ @Override
+ public final ImmutableList<? extends EffectiveStatement<?, ?>> effectiveSubstatements() {
+ return unmaskList(substatements);
+ }
+
@Override
protected final Map<QName, SchemaTreeEffectiveStatement<?>> schemaTreeNamespace() {
return schemaTree;
// TODO: below methods need to find a better place, this is just a temporary hideout as their public class is on
// its way out
+ /**
+ * Create a Map containing the contents of the schema tree. Retur
+ * @param substatements Substatements to index
+ * @return Index of the schema tree as a mutable Map
+ * @throws NullPointerException if {@code substatements} is null
+ */
protected static @NonNull Map<QName, SchemaTreeEffectiveStatement<?>> createSchemaTreeNamespace(
final Collection<? extends EffectiveStatement<?, ?>> substatements) {
final Map<QName, SchemaTreeEffectiveStatement<?>> schemaChildren = new LinkedHashMap<>();
*/
public abstract static class DefaultWithSchemaTree<A, D extends DeclaredStatement<A>,
E extends SchemaTreeAwareEffectiveStatement<A, D>> extends WithSchemaTree<A, D, E> {
- public abstract static class WithSubstatements<A, D extends DeclaredStatement<A>,
- E extends SchemaTreeAwareEffectiveStatement<A, D>> extends DefaultWithSchemaTree<A, D, E> {
- private final @NonNull Object substatements;
-
- protected WithSubstatements(final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
- super(substatements);
- this.substatements = maskList(substatements);
- }
-
- protected WithSubstatements(final WithSubstatements<A, D, E> original) {
- super(original);
- this.substatements = original.substatements;
- }
-
- @Override
- public final ImmutableList<? extends EffectiveStatement<?, ?>> effectiveSubstatements() {
- return unmaskList(substatements);
- }
- }
-
private final @NonNull ImmutableMap<QName, SchemaTreeEffectiveStatement<?>> schemaTree;
+ private final @NonNull Object substatements;
protected DefaultWithSchemaTree(final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+ this.substatements = maskList(substatements);
this.schemaTree = ImmutableMap.copyOf(createSchemaTreeNamespace(substatements));
}
protected DefaultWithSchemaTree(final DefaultWithSchemaTree<A, D, E> original) {
this.schemaTree = original.schemaTree;
+ this.substatements = original.substatements;
+ }
+
+ @Override
+ public final ImmutableList<? extends EffectiveStatement<?, ?>> effectiveSubstatements() {
+ return unmaskList(substatements);
}
@Override
*/
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 ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
- super(substatements);
- this.substatements = maskList(substatements);
- }
-
- protected WithSubstatements(final WithSubstatements<A, D, E> original) {
- super(original);
- this.substatements = original.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 Object substatements;
protected DefaultWithDataTree(final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
final Map<QName, SchemaTreeEffectiveStatement<?>> schema = createSchemaTreeNamespace(substatements);
this.schemaTree = ImmutableMap.copyOf(schema);
this.dataTree = createDataTreeNamespace(schema.values(), schemaTree);
+ this.substatements = maskList(substatements);
}
protected DefaultWithDataTree(final DefaultWithDataTree<A, D, E> original) {
this.schemaTree = original.schemaTree;
this.dataTree = original.dataTree;
+ this.substatements = original.substatements;
+ }
+
+ @Override
+ public final ImmutableList<? extends EffectiveStatement<?, ?>> effectiveSubstatements() {
+ return unmaskList(substatements);
}
@Override
import org.opendaylight.yangtools.yang.model.api.stmt.TypedefEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.YangVersionEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.compat.NotificationNodeContainerCompat;
-import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredEffectiveStatement.DefaultWithDataTree.WithSubstatements;
+import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredEffectiveStatement.DefaultWithDataTree;
import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.DocumentedNodeMixin;
import org.opendaylight.yangtools.yang.parser.spi.meta.CommonStmtCtx;
import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
@Beta
public abstract class AbstractEffectiveModule<D extends DeclaredStatement<UnqualifiedQName>,
E extends DataTreeAwareEffectiveStatement<UnqualifiedQName, D>>
- extends WithSubstatements<UnqualifiedQName, D, E>
+ extends DefaultWithDataTree<UnqualifiedQName, D, E>
implements ModuleLike, DocumentedNodeMixin<UnqualifiedQName, D>,
NotificationNodeContainerCompat<UnqualifiedQName, D, E> {
private final String prefix;