Promote BaseVoidStatementSupport
[yangtools.git] / yang / rfc6241-parser-support / src / main / java / org / opendaylight / yangtools / rfc6241 / parser / GetFilterElementAttributesStatementSupport.java
index e8d75aadcdf5502879407eacab24846f2f9768cc..e769035e28fd9ff911070f334a834bbd0e1af410 100644 (file)
@@ -10,20 +10,23 @@ package org.opendaylight.yangtools.rfc6241.parser;
 import com.google.common.annotations.Beta;
 import com.google.common.collect.ImmutableList;
 import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.yangtools.rfc6241.model.api.GetFilterElementAttributesEffectiveStatement;
 import org.opendaylight.yangtools.rfc6241.model.api.GetFilterElementAttributesSchemaNode;
 import org.opendaylight.yangtools.rfc6241.model.api.GetFilterElementAttributesStatement;
 import org.opendaylight.yangtools.rfc6241.model.api.NetconfStatements;
 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.YangStmtMapping;
 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.BaseVoidStatementSupport;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.UnknownEffectiveStatementBase;
+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.StmtContext.Mutable;
 import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
@@ -31,7 +34,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @Beta
-public final class GetFilterElementAttributesStatementSupport extends BaseVoidStatementSupport<
+public final class GetFilterElementAttributesStatementSupport extends AbstractVoidStatementSupport<
         GetFilterElementAttributesStatement, GetFilterElementAttributesEffectiveStatement> {
 
     private static final class Declared extends WithSubstatements implements GetFilterElementAttributesStatement {
@@ -45,12 +48,13 @@ public final class GetFilterElementAttributesStatementSupport extends BaseVoidSt
     private static final class Effective
             extends UnknownEffectiveStatementBase<Void, GetFilterElementAttributesStatement>
             implements GetFilterElementAttributesEffectiveStatement, GetFilterElementAttributesSchemaNode {
-        private final @NonNull SchemaPath path;
+        private final @Nullable SchemaPath path;
 
         Effective(final Current<Void, GetFilterElementAttributesStatement> stmt,
                 final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
             super(stmt, substatements);
-            path = stmt.getParent().getSchemaPath().createChild(stmt.publicDefinition().getStatementName());
+            path = SchemaPathSupport.wrap(stmt.getEffectiveParent().getSchemaPath()
+                    .createChild(stmt.publicDefinition().getStatementName()));
         }
 
         @Override
@@ -61,7 +65,7 @@ public final class GetFilterElementAttributesStatementSupport extends BaseVoidSt
         @Override
         @Deprecated
         public SchemaPath getPath() {
-            return path;
+            return SchemaNodeDefaults.throwUnsupportedIfNull(this, path);
         }
 
         @Override
@@ -77,7 +81,7 @@ public final class GetFilterElementAttributesStatementSupport extends BaseVoidSt
     private final SubstatementValidator validator;
 
     GetFilterElementAttributesStatementSupport(final StatementDefinition definition) {
-        super(definition);
+        super(definition, StatementPolicy.reject());
         this.validator = SubstatementValidator.builder(definition).build();
     }
 
@@ -123,11 +127,11 @@ public final class GetFilterElementAttributesStatementSupport extends BaseVoidSt
             LOG.debug("No parent, ignoring get-filter-element-attributes statement");
             return false;
         }
-        if (parent.getPublicDefinition() != YangStmtMapping.ANYXML) {
+        if (parent.publicDefinition() != YangStmtMapping.ANYXML) {
             LOG.debug("Parent is not an anyxml node, ignoring get-filter-element-attributes statement");
             return false;
         }
-        if (!"filter".equals(parent.rawStatementArgument())) {
+        if (!"filter".equals(parent.rawArgument())) {
             LOG.debug("Parent is not named 'filter', ignoring get-filter-element-attributes statement");
             return false;
         }
@@ -137,7 +141,7 @@ public final class GetFilterElementAttributesStatementSupport extends BaseVoidSt
             LOG.debug("No grandparent, ignoring get-filter-element-attributes statement");
             return false;
         }
-        if (grandParent.getPublicDefinition() != YangStmtMapping.INPUT) {
+        if (grandParent.publicDefinition() != YangStmtMapping.INPUT) {
             LOG.debug("Grandparent is not an input node, ignoring get-filter-element-attributes statement");
             return false;
         }
@@ -147,12 +151,12 @@ public final class GetFilterElementAttributesStatementSupport extends BaseVoidSt
             LOG.debug("No grandparent, ignoring get-filter-element-attributes statement");
             return false;
         }
-        if (greatGrandParent.getPublicDefinition() != YangStmtMapping.RPC) {
+        if (greatGrandParent.publicDefinition() != YangStmtMapping.RPC) {
             LOG.debug("Grandparent is not an RPC node, ignoring get-filter-element-attributes statement");
             return false;
         }
 
-        switch (greatGrandParent.rawStatementArgument()) {
+        switch (greatGrandParent.getRawArgument()) {
             case "get":
             case "get-config":
                 return true;