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%2FDefaultDenyWriteStatementSupport.java;h=a15be8e7415dd9f781245c3942a5ff5ed628eebe;hb=1c6350e2c7937a36cfdd50e8838d30cc43f9a05c;hp=ba488122b904b9da798c7652b391c79e398008c1;hpb=c8668229ad6e73d5ae03a52f4b87e8e4d2a67c6e;p=yangtools.git diff --git a/yang/rfc6536-parser-support/src/main/java/org/opendaylight/yangtools/rfc6536/parser/DefaultDenyWriteStatementSupport.java b/yang/rfc6536-parser-support/src/main/java/org/opendaylight/yangtools/rfc6536/parser/DefaultDenyWriteStatementSupport.java index ba488122b9..a15be8e741 100644 --- a/yang/rfc6536-parser-support/src/main/java/org/opendaylight/yangtools/rfc6536/parser/DefaultDenyWriteStatementSupport.java +++ b/yang/rfc6536-parser-support/src/main/java/org/opendaylight/yangtools/rfc6536/parser/DefaultDenyWriteStatementSupport.java @@ -7,42 +7,46 @@ */ package org.opendaylight.yangtools.rfc6536.parser; +import com.google.common.collect.ImmutableList; +import org.eclipse.jdt.annotation.NonNull; +import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.yangtools.rfc6536.model.api.DefaultDenyWriteEffectiveStatement; import org.opendaylight.yangtools.rfc6536.model.api.DefaultDenyWriteSchemaNode; import org.opendaylight.yangtools.rfc6536.model.api.DefaultDenyWriteStatement; import org.opendaylight.yangtools.rfc6536.model.api.NACMStatements; import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.model.api.SchemaNodeDefaults; 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.AbstractVoidStatementSupport; +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 DefaultDenyWriteStatementSupport - extends AbstractVoidStatementSupport { + extends AbstractVoidStatementSupport { + private static final class Declared extends WithSubstatements implements DefaultDenyWriteStatement { + static final @NonNull Declared EMPTY = new Declared(ImmutableList.of()); - private static final class Declared extends AbstractDeclaredStatement implements DefaultDenyWriteStatement { - 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 DefaultDenyWriteEffectiveStatement, DefaultDenyWriteSchemaNode { + private final @Nullable SchemaPath 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.wrap(stmt.getEffectiveParent().getSchemaPath() + .createChild(stmt.publicDefinition().getStatementName())); } @Override @@ -51,8 +55,14 @@ public final class DefaultDenyWriteStatementSupport } @Override + @Deprecated public SchemaPath getPath() { - return path; + return SchemaNodeDefaults.throwUnsupportedIfNull(this, path); + } + + @Override + public DefaultDenyWriteEffectiveStatement asEffectiveStatement() { + return this; } } @@ -62,7 +72,7 @@ public final class DefaultDenyWriteStatementSupport private final SubstatementValidator validator; DefaultDenyWriteStatementSupport(final StatementDefinition definition) { - super(definition); + super(definition, StatementPolicy.contextIndependent()); this.validator = SubstatementValidator.builder(definition).build(); } @@ -71,18 +81,24 @@ public final class DefaultDenyWriteStatementSupport } @Override - public DefaultDenyWriteStatement createDeclared(final StmtContext ctx) { - return new Declared(ctx); + protected SubstatementValidator getSubstatementValidator() { + return validator; } @Override - public DefaultDenyWriteEffectiveStatement createEffective( - final StmtContext ctx) { - return new Effective(ctx); + protected DefaultDenyWriteStatement createDeclared(final StmtContext ctx, + final ImmutableList> substatements) { + return new Declared(substatements); } @Override - protected SubstatementValidator getSubstatementValidator() { - return validator; + protected DefaultDenyWriteStatement createEmptyDeclared(final StmtContext ctx) { + return Declared.EMPTY; + } + + @Override + protected DefaultDenyWriteEffectiveStatement createEffective(final Current stmt, + final ImmutableList> substatements) { + return new Effective(stmt, substatements); } }