X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Frfc6536-parser-support%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Frfc6536%2Fparser%2FDefaultDenyAllStatementSupport.java;h=39b19eaaa0386ba5e0291b824b6d8aaafcedcedf;hb=4b699eee4622fe4349bf4e1aeb67567b3e9926b0;hp=a2b65d529b8e9f5229273069d338fe591903ed43;hpb=2c95faed5a453756b654584ffcc2a1d05a25d7be;p=yangtools.git diff --git a/yang/rfc6536-parser-support/src/main/java/org/opendaylight/yangtools/rfc6536/parser/DefaultDenyAllStatementSupport.java b/yang/rfc6536-parser-support/src/main/java/org/opendaylight/yangtools/rfc6536/parser/DefaultDenyAllStatementSupport.java index a2b65d529b..39b19eaaa0 100644 --- a/yang/rfc6536-parser-support/src/main/java/org/opendaylight/yangtools/rfc6536/parser/DefaultDenyAllStatementSupport.java +++ b/yang/rfc6536-parser-support/src/main/java/org/opendaylight/yangtools/rfc6536/parser/DefaultDenyAllStatementSupport.java @@ -7,51 +7,61 @@ */ package org.opendaylight.yangtools.rfc6536.parser; +import com.google.common.collect.ImmutableList; +import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.rfc6536.model.api.DefaultDenyAllEffectiveStatement; +import org.opendaylight.yangtools.rfc6536.model.api.DefaultDenyAllSchemaNode; import org.opendaylight.yangtools.rfc6536.model.api.DefaultDenyAllStatement; import org.opendaylight.yangtools.rfc6536.model.api.NACMStatements; +import org.opendaylight.yangtools.yang.common.Empty; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.SchemaPath; +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.meta.StatementDefinition; +import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredStatement.WithoutArgument.WithSubstatements; import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.UnknownEffectiveStatementBase; -import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement; -import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport; +import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractEmptyStatementSupport; +import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current; +import org.opendaylight.yangtools.yang.parser.spi.meta.SchemaPathSupport; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator; public final class DefaultDenyAllStatementSupport - extends AbstractStatementSupport { + extends AbstractEmptyStatementSupport { + private static final class Declared extends WithSubstatements implements DefaultDenyAllStatement { + static final @NonNull Declared EMPTY = new Declared(ImmutableList.of()); - private static final class Declared extends AbstractDeclaredStatement implements DefaultDenyAllStatement { - Declared(final StmtContext context) { - super(context); - } - - @Override - public Void getArgument() { - return null; + Declared(final ImmutableList> substatements) { + super(substatements); } } - private static final class Effective extends UnknownEffectiveStatementBase - implements DefaultDenyAllEffectiveStatement { + private static final class Effective extends UnknownEffectiveStatementBase + implements DefaultDenyAllEffectiveStatement, DefaultDenyAllSchemaNode { + private final @NonNull Object path; - private final SchemaPath path; - - Effective(final StmtContext ctx) { - super(ctx); - path = ctx.coerceParentContext().getSchemaPath().get().createChild( - ctx.getPublicDefinition().getStatementName()); + Effective(final Current stmt, + final ImmutableList> substatements) { + super(stmt, substatements); + path = SchemaPathSupport.toEffectivePath(stmt.getEffectiveParent().getSchemaPath() + .createChild(stmt.publicDefinition().getStatementName())); } @Override public QName getQName() { - return path.getLastComponent(); + return SchemaPathSupport.extractQName(path); } @Override + @Deprecated public SchemaPath getPath() { - return path; + return SchemaPathSupport.extractPath(this, path); + } + + @Override + public DefaultDenyAllEffectiveStatement asEffectiveStatement() { + return this; } } @@ -61,7 +71,7 @@ public final class DefaultDenyAllStatementSupport private final SubstatementValidator validator; private DefaultDenyAllStatementSupport(final StatementDefinition definition) { - super(definition); + super(definition, StatementPolicy.contextIndependent()); this.validator = SubstatementValidator.builder(definition).build(); } @@ -70,23 +80,24 @@ public final class DefaultDenyAllStatementSupport } @Override - public DefaultDenyAllStatement createDeclared(final StmtContext ctx) { - return new Declared(ctx); + protected SubstatementValidator getSubstatementValidator() { + return validator; } @Override - public DefaultDenyAllEffectiveStatement createEffective( - final StmtContext ctx) { - return new Effective(ctx); + protected DefaultDenyAllStatement createDeclared(final StmtContext ctx, + final ImmutableList> substatements) { + return new Declared(substatements); } @Override - public Void parseArgumentValue(final StmtContext ctx, final String value) { - return null; + protected DefaultDenyAllStatement createEmptyDeclared(final StmtContext ctx) { + return Declared.EMPTY; } @Override - protected SubstatementValidator getSubstatementValidator() { - return validator; + protected DefaultDenyAllEffectiveStatement createEffective(final Current stmt, + final ImmutableList> substatements) { + return new Effective(stmt, substatements); } }