Reuse cardinality constants 93/47193/1
authorRobert Varga <rovarga@cisco.com>
Tue, 18 Oct 2016 00:20:16 +0000 (02:20 +0200)
committerRobert Varga <nite@hq.sk>
Thu, 20 Oct 2016 08:30:40 +0000 (08:30 +0000)
0..1, 0..MAX and 1..1 are common cardinalities. Instead of leaking the MAX constant
create additional builder methods which reuse Cardinality objects.

Change-Id: Ie11e1f4414c484ecd43f0b472f9df8f0d0c18d0e
Signed-off-by: Robert Varga <rovarga@cisco.com>
(cherry picked from commit aae3ec264b796274acca53ddb404f0bdecdace70)

46 files changed:
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/spi/SubstatementValidator.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/AnyxmlStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/ArgumentStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/AugmentStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/BelongsToStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/BitStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/BitsSpecificationImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/CaseStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/ChoiceStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/ContainerStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/Decimal64SpecificationImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/DeviateStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/DeviationStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/EnumSpecificationImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/EnumStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/ExtensionStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/FeatureStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/GroupingStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/IdentityRefSpecificationImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/IdentityStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/ImportStatementDefinition.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/IncludeStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/InputStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/InstanceIdentifierSpecificationImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/LeafListStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/LeafStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/LeafrefSpecificationImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/LengthStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/ListStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/ModuleStatementSupport.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/MustStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/NotificationStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/NumericalRestrictionsImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/OutputStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/PatternStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/RangeStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/RefineStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/RevisionStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/RpcStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/StringRestrictionsImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/SubmoduleStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/TypeStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/TypedefStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/UnionSpecificationImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/UsesStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/WhenStatementImpl.java

index 761b60c1f2ff2477bf3642f242e47dce9e229f6c..48d90fa61867130267e6c82563db552212bdde9b 100644 (file)
@@ -24,7 +24,15 @@ import org.opendaylight.yangtools.yang.parser.spi.source.ModuleCtxToModuleQName;
 import org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase;
 
 public final class SubstatementValidator {
+    /**
+     * @deprecated Deprecated since version 1.1.0. Use {@link Builder#addAny(StatementDefinition)},
+     *             {@link Builder#addAtLeast(StatementDefinition, int)},
+     *             {@link Builder#addMandatory(StatementDefinition)}, or
+     *             {@link Builder#addMultiple(StatementDefinition)} instead.
+     */
+    @Deprecated
     public final static int MAX = Integer.MAX_VALUE;
+
     private final Map<StatementDefinition, Cardinality> cardinalityMap;
     private final StatementDefinition currentStatement;
     private final SpecialCase specialCase;
@@ -40,6 +48,11 @@ public final class SubstatementValidator {
     }
 
     public static class Builder {
+        private static final Cardinality ONE_MAX = new Cardinality(1, Integer.MAX_VALUE);
+        private static final Cardinality ONE_ONE = new Cardinality(1, 1);
+        private static final Cardinality ZERO_MAX = new Cardinality(0, Integer.MAX_VALUE);
+        private static final Cardinality ZERO_ONE = new Cardinality(0, 1);
+
         private final ImmutableMap.Builder<StatementDefinition, Cardinality> cardinalityMap = ImmutableMap.builder();
         private final StatementDefinition currentStatement;
 
@@ -47,11 +60,59 @@ public final class SubstatementValidator {
             this.currentStatement = currentStatement;
         }
 
-        public Builder add(final StatementDefinition d, final int min, final int max) {
-            this.cardinalityMap.put(d, new Cardinality(min, max));
+        private Builder add(final StatementDefinition d, final Cardinality c) {
+            cardinalityMap.put(d, c);
             return this;
         }
 
+        public Builder add(final StatementDefinition d, final int min, final int max) {
+            if (max == Integer.MAX_VALUE) {
+                return addAtLeast(d, min);
+            } else if (min == 0) {
+                return addAtMost(d, max);
+            } else {
+                return add(d, new Cardinality(min, max));
+            }
+        }
+
+        // Equivalent to min .. Integer.MAX_VALUE
+        public Builder addAtLeast(final StatementDefinition d, final int min) {
+            switch (min) {
+                case 0:
+                    return addAny(d);
+                case 1:
+                    return addMultiple(d);
+                default:
+                    return add(d, new Cardinality(min, Integer.MAX_VALUE));
+            }
+        }
+
+        // Equivalent to 0 .. max
+        public Builder addAtMost(final StatementDefinition d, final int max) {
+            return max == Integer.MAX_VALUE ? addAny(d) : add(d, new Cardinality(0, max));
+        }
+
+
+        // Equivalent to 0 .. Integer.MAX_VALUE
+        public Builder addAny(final StatementDefinition d) {
+            return add(d, ZERO_MAX);
+        }
+
+        // Equivalent to 1 .. 1
+        public Builder addMandatory(final StatementDefinition d) {
+            return add(d, ONE_ONE);
+        }
+
+        // Equivalent to 1 .. MAX
+        public Builder addMultiple(final StatementDefinition d) {
+            return add(d, ONE_MAX);
+        }
+
+        // Equivalent to 0 .. 1
+        public Builder addOptional(final StatementDefinition d) {
+            return add(d, ZERO_ONE);
+        }
+
         public SubstatementValidator build() {
             return new SubstatementValidator(this, SpecialCase.NULL);
         }
@@ -122,7 +183,7 @@ public final class SubstatementValidator {
         }
     }
 
-    private static class Cardinality {
+    private static final class Cardinality {
         private final int min;
         private final int max;
 
index db3dc9d211364055db2163bbc4514eb2c4653869..fe30481bbcd5ffc2ab84cc7788abd507253192cd 100644 (file)
@@ -7,8 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.parser.stmt.rfc6020;
 
-import static org.opendaylight.yangtools.yang.parser.spi.SubstatementValidator.MAX;
-
 import com.google.common.base.Optional;
 import java.util.Collection;
 import java.util.Map;
@@ -41,18 +39,18 @@ import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.YangModeled
 public class AnyxmlStatementImpl extends AbstractDeclaredStatement<QName> implements AnyxmlStatement {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(Rfc6020Mapping
             .ANYXML)
-            .add(Rfc6020Mapping.CONFIG, 0, 1)
-            .add(Rfc6020Mapping.DESCRIPTION, 0, 1)
-            .add(Rfc6020Mapping.IF_FEATURE, 0, MAX)
-            .add(Rfc6020Mapping.MANDATORY, 0, 1)
-            .add(Rfc6020Mapping.MUST, 0, MAX)
-            .add(Rfc6020Mapping.REFERENCE, 0, 1)
-            .add(Rfc6020Mapping.STATUS, 0, 1)
-            .add(Rfc6020Mapping.WHEN, 0, 1)
-            .add(SupportedExtensionsMapping.ANYXML_SCHEMA_LOCATION, 0, 1)
+            .addOptional(Rfc6020Mapping.CONFIG)
+            .addOptional(Rfc6020Mapping.DESCRIPTION)
+            .addAny(Rfc6020Mapping.IF_FEATURE)
+            .addOptional(Rfc6020Mapping.MANDATORY)
+            .addAny(Rfc6020Mapping.MUST)
+            .addOptional(Rfc6020Mapping.REFERENCE)
+            .addOptional(Rfc6020Mapping.STATUS)
+            .addOptional(Rfc6020Mapping.WHEN)
+            .addOptional(SupportedExtensionsMapping.ANYXML_SCHEMA_LOCATION)
             .build();
 
-    protected AnyxmlStatementImpl(StmtContext<QName, AnyxmlStatement, ?> context) {
+    protected AnyxmlStatementImpl(final StmtContext<QName, AnyxmlStatement, ?> context) {
         super(context);
     }
 
@@ -64,17 +62,17 @@ public class AnyxmlStatementImpl extends AbstractDeclaredStatement<QName> implem
         }
 
         @Override
-        public QName parseArgumentValue(StmtContext<?, ?, ?> ctx, String value) {
+        public QName parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
             return Utils.qNameFromArgument(ctx, value);
         }
 
         @Override
-        public void onStatementAdded(Mutable<QName, AnyxmlStatement, EffectiveStatement<QName, AnyxmlStatement>> stmt) {
+        public void onStatementAdded(final Mutable<QName, AnyxmlStatement, EffectiveStatement<QName, AnyxmlStatement>> stmt) {
             stmt.getParentContext().addToNs(ChildSchemaNodes.class, stmt.getStatementArgument(), stmt);
         }
 
         @Override
-        public AnyxmlStatement createDeclared(StmtContext<QName, AnyxmlStatement, ?> ctx) {
+        public AnyxmlStatement createDeclared(final StmtContext<QName, AnyxmlStatement, ?> ctx) {
             return new AnyxmlStatementImpl(ctx);
         }
 
@@ -95,15 +93,15 @@ public class AnyxmlStatementImpl extends AbstractDeclaredStatement<QName> implem
         }
 
         @Override
-        public void onFullDefinitionDeclared(Mutable<QName, AnyxmlStatement,
+        public void onFullDefinitionDeclared(final Mutable<QName, AnyxmlStatement,
                 EffectiveStatement<QName, AnyxmlStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
             SUBSTATEMENT_VALIDATOR.validate(stmt);
         }
 
         private Optional<ContainerSchemaNode> getAnyXmlSchema(
-                StmtContext<QName, AnyxmlStatement, EffectiveStatement<QName, AnyxmlStatement>> ctx,
-                SchemaNodeIdentifier contentSchemaPath) {
+                final StmtContext<QName, AnyxmlStatement, EffectiveStatement<QName, AnyxmlStatement>> ctx,
+                final SchemaNodeIdentifier contentSchemaPath) {
             final StatementContextBase<?, ?, ?> findNode = Utils.findNode(ctx.getRoot(), contentSchemaPath);
             if (findNode != null) {
                 final EffectiveStatement<?, ?> anyXmlSchemaNode = findNode.buildEffective();
index 1d7a6b719568cd4d0b65515125c8887c6dc895c6..e2fd7af886df6899a389850e206fbf6868cc24dd 100644 (file)
@@ -22,11 +22,11 @@ public class ArgumentStatementImpl extends AbstractDeclaredStatement<QName>
         implements ArgumentStatement {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(Rfc6020Mapping
             .ARGUMENT)
-            .add(Rfc6020Mapping.YIN_ELEMENT, 0, 1)
+            .addOptional(Rfc6020Mapping.YIN_ELEMENT)
             .build();
 
     protected ArgumentStatementImpl(
-            StmtContext<QName, ArgumentStatement, ?> context) {
+            final StmtContext<QName, ArgumentStatement, ?> context) {
         super(context);
     }
 
@@ -39,24 +39,24 @@ public class ArgumentStatementImpl extends AbstractDeclaredStatement<QName>
         }
 
         @Override
-        public QName parseArgumentValue(StmtContext<?, ?, ?> ctx, String value) {
+        public QName parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
             return Utils.qNameFromArgument(ctx, value);
         }
 
         @Override
         public ArgumentStatement createDeclared(
-                StmtContext<QName, ArgumentStatement, ?> ctx) {
+                final StmtContext<QName, ArgumentStatement, ?> ctx) {
             return new ArgumentStatementImpl(ctx);
         }
 
         @Override
         public EffectiveStatement<QName, ArgumentStatement> createEffective(
-                StmtContext<QName, ArgumentStatement, EffectiveStatement<QName, ArgumentStatement>> ctx) {
+                final StmtContext<QName, ArgumentStatement, EffectiveStatement<QName, ArgumentStatement>> ctx) {
             return new ArgumentEffectiveStatementImpl(ctx);
         }
 
         @Override
-        public void onFullDefinitionDeclared(StmtContext.Mutable<QName, ArgumentStatement,
+        public void onFullDefinitionDeclared(final StmtContext.Mutable<QName, ArgumentStatement,
                 EffectiveStatement<QName, ArgumentStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
             SUBSTATEMENT_VALIDATOR.validate(stmt);
index d6adbe039a410c31677ad7613b66ec414391f799..8d2f5e0aeb8207948b78c569eddc8b111b5d8c3d 100644 (file)
@@ -7,8 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.parser.stmt.rfc6020;
 
-import static org.opendaylight.yangtools.yang.parser.spi.SubstatementValidator.MAX;
-
 import com.google.common.base.Preconditions;
 import java.util.Collection;
 import java.util.regex.Pattern;
@@ -42,19 +40,19 @@ public class AugmentStatementImpl extends AbstractDeclaredStatement<SchemaNodeId
     private static final Pattern PATH_REL_PATTERN2 = Pattern.compile("//.*");
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator
             .builder(Rfc6020Mapping.AUGMENT)
-            .add(Rfc6020Mapping.ANYXML, 0, MAX)
-            .add(Rfc6020Mapping.CASE, 0, MAX)
-            .add(Rfc6020Mapping.CHOICE, 0, MAX)
-            .add(Rfc6020Mapping.CONTAINER, 0, MAX)
-            .add(Rfc6020Mapping.DESCRIPTION, 0, 1)
-            .add(Rfc6020Mapping.IF_FEATURE, 0, MAX)
-            .add(Rfc6020Mapping.LEAF, 0, MAX)
-            .add(Rfc6020Mapping.LEAF_LIST, 0, MAX)
-            .add(Rfc6020Mapping.LIST, 0, MAX)
-            .add(Rfc6020Mapping.REFERENCE, 0, 1)
-            .add(Rfc6020Mapping.STATUS, 0, 1)
-            .add(Rfc6020Mapping.USES, 0, MAX)
-            .add(Rfc6020Mapping.WHEN, 0, 1)
+            .addAny(Rfc6020Mapping.ANYXML)
+            .addAny(Rfc6020Mapping.CASE)
+            .addAny(Rfc6020Mapping.CHOICE)
+            .addAny(Rfc6020Mapping.CONTAINER)
+            .addOptional(Rfc6020Mapping.DESCRIPTION)
+            .addAny(Rfc6020Mapping.IF_FEATURE)
+            .addAny(Rfc6020Mapping.LEAF)
+            .addAny(Rfc6020Mapping.LEAF_LIST)
+            .addAny(Rfc6020Mapping.LIST)
+            .addOptional(Rfc6020Mapping.REFERENCE)
+            .addOptional(Rfc6020Mapping.STATUS)
+            .addAny(Rfc6020Mapping.USES)
+            .addOptional(Rfc6020Mapping.WHEN)
             .build();
 
     protected AugmentStatementImpl(final StmtContext<SchemaNodeIdentifier, AugmentStatement, ?> context) {
index 8863477af5131fb932614b8252136caa1aea323f..2627c33e2e6523a46dda49266066403818432f5d 100644 (file)
@@ -33,7 +33,7 @@ import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.BelongsEffe
 public class BelongsToStatementImpl extends AbstractDeclaredStatement<String>
         implements BelongsToStatement {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR =
-            SubstatementValidator.builder(Rfc6020Mapping.BELONGS_TO).add(Rfc6020Mapping.PREFIX, 1, 1).build();
+            SubstatementValidator.builder(Rfc6020Mapping.BELONGS_TO).addMandatory(Rfc6020Mapping.PREFIX).build();
 
     protected BelongsToStatementImpl(final StmtContext<String, BelongsToStatement, ?> context) {
         super(context);
index 3a9a66afb952e00e6b4dfc2942ee7956310c4e90..cfff727609e209b8060460032d4a5462f628dc76 100644 (file)
@@ -24,13 +24,13 @@ import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.type.BitEff
 public class BitStatementImpl extends AbstractDeclaredStatement<QName> implements BitStatement {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(Rfc6020Mapping
             .BIT)
-            .add(Rfc6020Mapping.DESCRIPTION, 0, 1)
-            .add(Rfc6020Mapping.REFERENCE, 0, 1)
-            .add(Rfc6020Mapping.STATUS, 0, 1)
-            .add(Rfc6020Mapping.POSITION, 0, 1)
+            .addOptional(Rfc6020Mapping.DESCRIPTION)
+            .addOptional(Rfc6020Mapping.REFERENCE)
+            .addOptional(Rfc6020Mapping.STATUS)
+            .addOptional(Rfc6020Mapping.POSITION)
             .build();
 
-    protected BitStatementImpl(StmtContext<QName, BitStatement, ?> context) {
+    protected BitStatementImpl(final StmtContext<QName, BitStatement, ?> context) {
         super(context);
     }
 
@@ -42,23 +42,23 @@ public class BitStatementImpl extends AbstractDeclaredStatement<QName> implement
         }
 
         @Override
-        public QName parseArgumentValue(StmtContext<?, ?, ?> ctx, String value) {
+        public QName parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
             return Utils.qNameFromArgument(ctx, value);
         }
 
         @Override
-        public BitStatement createDeclared(StmtContext<QName, BitStatement, ?> ctx) {
+        public BitStatement createDeclared(final StmtContext<QName, BitStatement, ?> ctx) {
             return new BitStatementImpl(ctx);
         }
 
         @Override
         public EffectiveStatement<QName, BitStatement> createEffective(
-                StmtContext<QName, BitStatement, EffectiveStatement<QName, BitStatement>> ctx) {
+                final StmtContext<QName, BitStatement, EffectiveStatement<QName, BitStatement>> ctx) {
             return new BitEffectiveStatementImpl(ctx);
         }
 
         @Override
-        public void onFullDefinitionDeclared(StmtContext.Mutable<QName, BitStatement,
+        public void onFullDefinitionDeclared(final StmtContext.Mutable<QName, BitStatement,
                 EffectiveStatement<QName, BitStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
             SUBSTATEMENT_VALIDATOR.validate(stmt);
index 816bdb62c5666842294217b000d1c4454df9e025..055efd2268218d6bc1872b59e8db4258feb396fa 100644 (file)
@@ -7,8 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.parser.stmt.rfc6020;
 
-import static org.opendaylight.yangtools.yang.parser.spi.SubstatementValidator.MAX;
-
 import java.util.Collection;
 import org.opendaylight.yangtools.yang.model.api.Rfc6020Mapping;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
@@ -23,7 +21,7 @@ import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.type.BitsSp
 public class BitsSpecificationImpl extends AbstractDeclaredStatement<String> implements TypeStatement.BitsSpecification {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(Rfc6020Mapping
             .TYPE)
-            .add(Rfc6020Mapping.BIT, 1, MAX)
+            .addMultiple(Rfc6020Mapping.BIT)
             .build();
 
     protected BitsSpecificationImpl(final StmtContext<String, TypeStatement.BitsSpecification, ?> context) {
@@ -56,7 +54,7 @@ public class BitsSpecificationImpl extends AbstractDeclaredStatement<String> imp
         }
 
         @Override
-        public void onFullDefinitionDeclared(StmtContext.Mutable<String, BitsSpecification,
+        public void onFullDefinitionDeclared(final StmtContext.Mutable<String, BitsSpecification,
                 EffectiveStatement<String, BitsSpecification>> stmt) {
             super.onFullDefinitionDeclared(stmt);
             SUBSTATEMENT_VALIDATOR.validate(stmt);
index 48a07a5890ca32cecaf2c5f1ceb0a4677d95e46f..a49ce2b8dd18cfd0bb2124abb9a420092eb237d6 100644 (file)
@@ -7,8 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.parser.stmt.rfc6020;
 
-import static org.opendaylight.yangtools.yang.parser.spi.SubstatementValidator.MAX;
-
 import java.util.Collection;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
@@ -32,18 +30,18 @@ import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.CaseEffecti
 public class CaseStatementImpl extends AbstractDeclaredStatement<QName> implements CaseStatement {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(Rfc6020Mapping
             .CASE)
-            .add(Rfc6020Mapping.ANYXML, 0, MAX)
-            .add(Rfc6020Mapping.CHOICE, 0, MAX)
-            .add(Rfc6020Mapping.CONTAINER, 0, MAX)
-            .add(Rfc6020Mapping.DESCRIPTION, 0, 1)
-            .add(Rfc6020Mapping.IF_FEATURE, 0, MAX)
-            .add(Rfc6020Mapping.LEAF, 0, MAX)
-            .add(Rfc6020Mapping.LEAF_LIST, 0, MAX)
-            .add(Rfc6020Mapping.LIST, 0, MAX)
-            .add(Rfc6020Mapping.REFERENCE, 0, 1)
-            .add(Rfc6020Mapping.STATUS, 0, 1)
-            .add(Rfc6020Mapping.USES, 0, MAX)
-            .add(Rfc6020Mapping.WHEN, 0, 1)
+            .addAny(Rfc6020Mapping.ANYXML)
+            .addAny(Rfc6020Mapping.CHOICE)
+            .addAny(Rfc6020Mapping.CONTAINER)
+            .addOptional(Rfc6020Mapping.DESCRIPTION)
+            .addAny(Rfc6020Mapping.IF_FEATURE)
+            .addAny(Rfc6020Mapping.LEAF)
+            .addAny(Rfc6020Mapping.LEAF_LIST)
+            .addAny(Rfc6020Mapping.LIST)
+            .addOptional(Rfc6020Mapping.REFERENCE)
+            .addOptional(Rfc6020Mapping.STATUS)
+            .addAny(Rfc6020Mapping.USES)
+            .addOptional(Rfc6020Mapping.WHEN)
             .build();
 
     protected CaseStatementImpl(
@@ -77,7 +75,7 @@ public class CaseStatementImpl extends AbstractDeclaredStatement<QName> implemen
         }
 
         @Override
-        public void onFullDefinitionDeclared(Mutable<QName, CaseStatement,
+        public void onFullDefinitionDeclared(final Mutable<QName, CaseStatement,
                 EffectiveStatement<QName, CaseStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
             SUBSTATEMENT_VALIDATOR.validate(stmt);
index fc151f32e2e1214e8b41f3292019fc4df83ee68e..3bb32761a8708c05ffeaa4b251658812238942a1 100644 (file)
@@ -7,8 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.parser.stmt.rfc6020;
 
-import static org.opendaylight.yangtools.yang.parser.spi.SubstatementValidator.MAX;
-
 import java.util.Collection;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
@@ -36,23 +34,23 @@ public class ChoiceStatementImpl extends AbstractDeclaredStatement<QName>
         implements ChoiceStatement {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(Rfc6020Mapping
             .CHOICE)
-            .add(Rfc6020Mapping.ANYXML, 0, MAX)
-            .add(Rfc6020Mapping.CASE, 0, MAX)
-            .add(Rfc6020Mapping.CONFIG, 0, 1)
-            .add(Rfc6020Mapping.CONTAINER, 0, MAX)
-            .add(Rfc6020Mapping.DEFAULT, 0, 1)
-            .add(Rfc6020Mapping.DESCRIPTION, 0, 1)
-            .add(Rfc6020Mapping.IF_FEATURE, 0, MAX)
-            .add(Rfc6020Mapping.LEAF, 0, MAX)
-            .add(Rfc6020Mapping.LEAF_LIST, 0, MAX)
-            .add(Rfc6020Mapping.LIST, 0, MAX)
-            .add(Rfc6020Mapping.MANDATORY, 0, 1)
-            .add(Rfc6020Mapping.REFERENCE, 0, 1)
-            .add(Rfc6020Mapping.STATUS, 0, 1)
-            .add(Rfc6020Mapping.WHEN, 0, 1)
+            .addAny(Rfc6020Mapping.ANYXML)
+            .addAny(Rfc6020Mapping.CASE)
+            .addOptional(Rfc6020Mapping.CONFIG)
+            .addAny(Rfc6020Mapping.CONTAINER)
+            .addOptional(Rfc6020Mapping.DEFAULT)
+            .addOptional(Rfc6020Mapping.DESCRIPTION)
+            .addAny(Rfc6020Mapping.IF_FEATURE)
+            .addAny(Rfc6020Mapping.LEAF)
+            .addAny(Rfc6020Mapping.LEAF_LIST)
+            .addAny(Rfc6020Mapping.LIST)
+            .addOptional(Rfc6020Mapping.MANDATORY)
+            .addOptional(Rfc6020Mapping.REFERENCE)
+            .addOptional(Rfc6020Mapping.STATUS)
+            .addOptional(Rfc6020Mapping.WHEN)
             .build();
 
-    protected ChoiceStatementImpl(StmtContext<QName, ChoiceStatement, ?> context) {
+    protected ChoiceStatementImpl(final StmtContext<QName, ChoiceStatement, ?> context) {
         super(context);
     }
 
@@ -65,29 +63,29 @@ public class ChoiceStatementImpl extends AbstractDeclaredStatement<QName>
         }
 
         @Override
-        public QName parseArgumentValue(StmtContext<?, ?, ?> ctx, String value) {
+        public QName parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
             return Utils.qNameFromArgument(ctx, value);
         }
 
         @Override
-        public void onStatementAdded(Mutable<QName, ChoiceStatement, EffectiveStatement<QName, ChoiceStatement>> stmt) {
+        public void onStatementAdded(final Mutable<QName, ChoiceStatement, EffectiveStatement<QName, ChoiceStatement>> stmt) {
             stmt.getParentContext().addToNs(ChildSchemaNodes.class, stmt.getStatementArgument(), stmt);
         }
 
         @Override
         public ChoiceStatement createDeclared(
-                StmtContext<QName, ChoiceStatement, ?> ctx) {
+                final StmtContext<QName, ChoiceStatement, ?> ctx) {
             return new ChoiceStatementImpl(ctx);
         }
 
         @Override
         public EffectiveStatement<QName, ChoiceStatement> createEffective(
-                StmtContext<QName, ChoiceStatement, EffectiveStatement<QName, ChoiceStatement>> ctx) {
+                final StmtContext<QName, ChoiceStatement, EffectiveStatement<QName, ChoiceStatement>> ctx) {
             return new ChoiceEffectiveStatementImpl(ctx);
         }
 
         @Override
-        public void onFullDefinitionDeclared(Mutable<QName, ChoiceStatement,
+        public void onFullDefinitionDeclared(final Mutable<QName, ChoiceStatement,
                 EffectiveStatement<QName, ChoiceStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
             SUBSTATEMENT_VALIDATOR.validate(stmt);
index 475949f0149b5e6898e46cefa3f7de6ba140228d..7c4d847323021c1630ea183f1ce993eafbbb0b3f 100644 (file)
@@ -7,8 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.parser.stmt.rfc6020;
 
-import static org.opendaylight.yangtools.yang.parser.spi.SubstatementValidator.MAX;
-
 import java.util.Collection;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.Rfc6020Mapping;
@@ -35,26 +33,26 @@ import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.ContainerEf
 public class ContainerStatementImpl extends AbstractDeclaredStatement<QName> implements ContainerStatement {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(Rfc6020Mapping
             .CONTAINER)
-            .add(Rfc6020Mapping.ANYXML, 0, MAX)
-            .add(Rfc6020Mapping.CHOICE, 0, MAX)
-            .add(Rfc6020Mapping.CONFIG, 0, 1)
-            .add(Rfc6020Mapping.CONTAINER, 0, MAX)
-            .add(Rfc6020Mapping.DESCRIPTION, 0, 1)
-            .add(Rfc6020Mapping.GROUPING, 0, MAX)
-            .add(Rfc6020Mapping.IF_FEATURE, 0, MAX)
-            .add(Rfc6020Mapping.LEAF, 0, MAX)
-            .add(Rfc6020Mapping.LEAF_LIST, 0, MAX)
-            .add(Rfc6020Mapping.LIST, 0, MAX)
-            .add(Rfc6020Mapping.MUST, 0, MAX)
-            .add(Rfc6020Mapping.PRESENCE, 0, 1)
-            .add(Rfc6020Mapping.REFERENCE, 0, 1)
-            .add(Rfc6020Mapping.STATUS, 0, 1)
-            .add(Rfc6020Mapping.TYPEDEF, 0, MAX)
-            .add(Rfc6020Mapping.USES, 0, MAX)
-            .add(Rfc6020Mapping.WHEN, 0, 1)
+            .addAny(Rfc6020Mapping.ANYXML)
+            .addAny(Rfc6020Mapping.CHOICE)
+            .addOptional(Rfc6020Mapping.CONFIG)
+            .addAny(Rfc6020Mapping.CONTAINER)
+            .addOptional(Rfc6020Mapping.DESCRIPTION)
+            .addAny(Rfc6020Mapping.GROUPING)
+            .addAny(Rfc6020Mapping.IF_FEATURE)
+            .addAny(Rfc6020Mapping.LEAF)
+            .addAny(Rfc6020Mapping.LEAF_LIST)
+            .addAny(Rfc6020Mapping.LIST)
+            .addAny(Rfc6020Mapping.MUST)
+            .addOptional(Rfc6020Mapping.PRESENCE)
+            .addOptional(Rfc6020Mapping.REFERENCE)
+            .addOptional(Rfc6020Mapping.STATUS)
+            .addAny(Rfc6020Mapping.TYPEDEF)
+            .addAny(Rfc6020Mapping.USES)
+            .addOptional(Rfc6020Mapping.WHEN)
             .build();
 
-    protected ContainerStatementImpl(StmtContext<QName, ContainerStatement,?> context) {
+    protected ContainerStatementImpl(final StmtContext<QName, ContainerStatement,?> context) {
         super(context);
     }
 
@@ -65,28 +63,28 @@ public class ContainerStatementImpl extends AbstractDeclaredStatement<QName> imp
         }
 
         @Override
-        public QName parseArgumentValue(StmtContext<?,?,?> ctx, String value) {
+        public QName parseArgumentValue(final StmtContext<?,?,?> ctx, final String value) {
             return Utils.qNameFromArgument(ctx,value);
         }
 
         @Override
         public void onStatementAdded(
-                Mutable<QName, ContainerStatement, EffectiveStatement<QName, ContainerStatement>> stmt) {
+                final Mutable<QName, ContainerStatement, EffectiveStatement<QName, ContainerStatement>> stmt) {
             stmt.getParentContext().addToNs(ChildSchemaNodes.class, stmt.getStatementArgument(), stmt);
         }
 
         @Override
-        public ContainerStatement createDeclared(StmtContext<QName, ContainerStatement,?> ctx) {
+        public ContainerStatement createDeclared(final StmtContext<QName, ContainerStatement,?> ctx) {
             return new ContainerStatementImpl(ctx);
         }
 
         @Override
-        public EffectiveStatement<QName,ContainerStatement> createEffective(StmtContext<QName,ContainerStatement,EffectiveStatement<QName,ContainerStatement>> ctx) {
+        public EffectiveStatement<QName,ContainerStatement> createEffective(final StmtContext<QName,ContainerStatement,EffectiveStatement<QName,ContainerStatement>> ctx) {
            return new ContainerEffectiveStatementImpl(ctx);
         }
 
         @Override
-        public void onFullDefinitionDeclared(Mutable<QName, ContainerStatement,
+        public void onFullDefinitionDeclared(final Mutable<QName, ContainerStatement,
                 EffectiveStatement<QName, ContainerStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
             SUBSTATEMENT_VALIDATOR.validate(stmt);
index 7aab5c1a66d864d34a743ed33839658189d04a26..0b46a69aac3343b797fb5b36a94e2189bc8c8366 100644 (file)
@@ -21,8 +21,8 @@ import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.type.Decima
 public class Decimal64SpecificationImpl extends AbstractDeclaredStatement<String> implements Decimal64Specification {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(Rfc6020Mapping
             .TYPE)
-            .add(Rfc6020Mapping.FRACTION_DIGITS, 1, 1)
-            .add(Rfc6020Mapping.RANGE, 0, 1)
+            .addMandatory(Rfc6020Mapping.FRACTION_DIGITS)
+            .addOptional(Rfc6020Mapping.RANGE)
             .build();
 
     protected Decimal64SpecificationImpl(final StmtContext<String, Decimal64Specification, ?> context) {
@@ -53,7 +53,7 @@ public class Decimal64SpecificationImpl extends AbstractDeclaredStatement<String
         }
 
         @Override
-        public void onFullDefinitionDeclared(StmtContext.Mutable<String, Decimal64Specification,
+        public void onFullDefinitionDeclared(final StmtContext.Mutable<String, Decimal64Specification,
                 EffectiveStatement<String, Decimal64Specification>> stmt) {
             super.onFullDefinitionDeclared(stmt);
             SUBSTATEMENT_VALIDATOR.validate(stmt);
index 6aaa6fba278a94840cbf6aae0d06c5f894fcab1e..6a4b91e0c7c2d8b220a10c9bd7ad8f1b003f9697 100644 (file)
@@ -7,8 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.parser.stmt.rfc6020;
 
-import static org.opendaylight.yangtools.yang.parser.spi.SubstatementValidator.MAX;
-
 import javax.annotation.Nonnull;
 import org.opendaylight.yangtools.yang.model.api.DeviateKind;
 import org.opendaylight.yangtools.yang.model.api.Rfc6020Mapping;
@@ -23,18 +21,18 @@ import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.DeviateEffe
 public class DeviateStatementImpl extends AbstractDeclaredStatement<DeviateKind> implements DeviateStatement {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(Rfc6020Mapping
             .DEVIATE)
-            .add(Rfc6020Mapping.CONFIG, 0, 1)
-            .add(Rfc6020Mapping.DEFAULT, 0, 1)
-            .add(Rfc6020Mapping.MANDATORY, 0, 1)
-            .add(Rfc6020Mapping.MAX_ELEMENTS, 0, 1)
-            .add(Rfc6020Mapping.MIN_ELEMENTS, 0, 1)
-            .add(Rfc6020Mapping.MUST, 0, MAX)
-            .add(Rfc6020Mapping.TYPE, 0, 1)
-            .add(Rfc6020Mapping.UNIQUE, 0, MAX)
-            .add(Rfc6020Mapping.UNITS, 0, 1)
+            .addOptional(Rfc6020Mapping.CONFIG)
+            .addOptional(Rfc6020Mapping.DEFAULT)
+            .addOptional(Rfc6020Mapping.MANDATORY)
+            .addOptional(Rfc6020Mapping.MAX_ELEMENTS)
+            .addOptional(Rfc6020Mapping.MIN_ELEMENTS)
+            .addAny(Rfc6020Mapping.MUST)
+            .addOptional(Rfc6020Mapping.TYPE)
+            .addAny(Rfc6020Mapping.UNIQUE)
+            .addOptional(Rfc6020Mapping.UNITS)
             .build();
 
-    protected DeviateStatementImpl(StmtContext<DeviateKind, DeviateStatement, ?> context) {
+    protected DeviateStatementImpl(final StmtContext<DeviateKind, DeviateStatement, ?> context) {
         super(context);
     }
 
@@ -45,22 +43,22 @@ public class DeviateStatementImpl extends AbstractDeclaredStatement<DeviateKind>
             super(Rfc6020Mapping.DEVIATE);
         }
 
-        @Override public DeviateKind parseArgumentValue(StmtContext<?, ?, ?> ctx, String value) {
+        @Override public DeviateKind parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
             return Utils.parseDeviateFromString(ctx, value);
         }
 
-        @Override public DeviateStatement createDeclared(StmtContext<DeviateKind, DeviateStatement, ?> ctx) {
+        @Override public DeviateStatement createDeclared(final StmtContext<DeviateKind, DeviateStatement, ?> ctx) {
             return new DeviateStatementImpl(ctx);
         }
 
         @Override public EffectiveStatement<DeviateKind, DeviateStatement> createEffective(
-                StmtContext<DeviateKind, DeviateStatement, EffectiveStatement<DeviateKind,
+                final StmtContext<DeviateKind, DeviateStatement, EffectiveStatement<DeviateKind,
                         DeviateStatement>> ctx) {
             return new DeviateEffectiveStatementImpl(ctx);
         }
 
         @Override
-        public void onFullDefinitionDeclared(StmtContext.Mutable<DeviateKind, DeviateStatement,
+        public void onFullDefinitionDeclared(final StmtContext.Mutable<DeviateKind, DeviateStatement,
                 EffectiveStatement<DeviateKind, DeviateStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
             SUBSTATEMENT_VALIDATOR.validate(stmt);
index 7ea5a5760d4e6d6361e2c9472ccce8eca8a08abb..82589ef59defe1631c3064e25c0f020dd9a2f515 100644 (file)
@@ -7,8 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.parser.stmt.rfc6020;
 
-import static org.opendaylight.yangtools.yang.parser.spi.SubstatementValidator.MAX;
-
 import javax.annotation.Nonnull;
 import org.opendaylight.yangtools.yang.model.api.Rfc6020Mapping;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
@@ -23,9 +21,9 @@ import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.DeviationEf
 public class DeviationStatementImpl extends AbstractDeclaredStatement<SchemaNodeIdentifier> implements DeviationStatement {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(Rfc6020Mapping
             .DEVIATION)
-            .add(Rfc6020Mapping.DESCRIPTION, 0, 1)
-            .add(Rfc6020Mapping.DEVIATE, 0, MAX)
-            .add(Rfc6020Mapping.REFERENCE, 0, 1)
+            .addOptional(Rfc6020Mapping.DESCRIPTION)
+            .addAny(Rfc6020Mapping.DEVIATE)
+            .addOptional(Rfc6020Mapping.REFERENCE)
             .build();
 
     protected DeviationStatementImpl(final StmtContext<SchemaNodeIdentifier, DeviationStatement, ?> context) {
@@ -55,7 +53,7 @@ public class DeviationStatementImpl extends AbstractDeclaredStatement<SchemaNode
         }
 
         @Override
-        public void onFullDefinitionDeclared(StmtContext.Mutable<SchemaNodeIdentifier, DeviationStatement,
+        public void onFullDefinitionDeclared(final StmtContext.Mutable<SchemaNodeIdentifier, DeviationStatement,
                 EffectiveStatement<SchemaNodeIdentifier, DeviationStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
             SUBSTATEMENT_VALIDATOR.validate(stmt);
index deb6339754b800701b451b627ae9ac1e6fe6ddd1..05f6ea41bdcef245a33abba263c7e210858e96ff 100644 (file)
@@ -7,8 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.parser.stmt.rfc6020;
 
-import static org.opendaylight.yangtools.yang.parser.spi.SubstatementValidator.MAX;
-
 import java.util.Collection;
 import org.opendaylight.yangtools.yang.model.api.Rfc6020Mapping;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
@@ -23,10 +21,10 @@ import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.type.EnumSp
 public class EnumSpecificationImpl extends AbstractDeclaredStatement<String> implements TypeStatement.EnumSpecification {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(Rfc6020Mapping
             .TYPE)
-            .add(Rfc6020Mapping.ENUM, 1, MAX)
+            .addMultiple(Rfc6020Mapping.ENUM)
             .build();
 
-    protected EnumSpecificationImpl(StmtContext<String, TypeStatement.EnumSpecification, ?> context) {
+    protected EnumSpecificationImpl(final StmtContext<String, TypeStatement.EnumSpecification, ?> context) {
         super(context);
     }
 
@@ -39,24 +37,24 @@ public class EnumSpecificationImpl extends AbstractDeclaredStatement<String> imp
         }
 
         @Override
-        public String parseArgumentValue(StmtContext<?, ?, ?> ctx, String value) {
+        public String parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
             return value;
         }
 
         @Override
         public TypeStatement.EnumSpecification createDeclared(
-                StmtContext<String, TypeStatement.EnumSpecification, ?> ctx) {
+                final StmtContext<String, TypeStatement.EnumSpecification, ?> ctx) {
             return new EnumSpecificationImpl(ctx);
         }
 
         @Override
         public EffectiveStatement<String, TypeStatement.EnumSpecification> createEffective(
-                StmtContext<String, TypeStatement.EnumSpecification, EffectiveStatement<String, TypeStatement.EnumSpecification>> ctx) {
+                final StmtContext<String, TypeStatement.EnumSpecification, EffectiveStatement<String, TypeStatement.EnumSpecification>> ctx) {
             return new EnumSpecificationEffectiveStatementImpl(ctx);
         }
 
         @Override
-        public void onFullDefinitionDeclared(StmtContext.Mutable<String, EnumSpecification,
+        public void onFullDefinitionDeclared(final StmtContext.Mutable<String, EnumSpecification,
                 EffectiveStatement<String, EnumSpecification>> stmt) {
             super.onFullDefinitionDeclared(stmt);
             SUBSTATEMENT_VALIDATOR.validate(stmt);
index 4809d7cbcf67ded4739b68c9855e798b6ab6285c..825990af7359bc6dd9abc8b35e52d191b462236c 100644 (file)
@@ -23,10 +23,10 @@ import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.type.EnumEf
 public class EnumStatementImpl extends AbstractDeclaredStatement<String> implements EnumStatement {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(Rfc6020Mapping
             .ENUM)
-            .add(Rfc6020Mapping.DESCRIPTION, 0, 1)
-            .add(Rfc6020Mapping.REFERENCE, 0, 1)
-            .add(Rfc6020Mapping.STATUS, 0, 1)
-            .add(Rfc6020Mapping.VALUE, 0, 1)
+            .addOptional(Rfc6020Mapping.DESCRIPTION)
+            .addOptional(Rfc6020Mapping.REFERENCE)
+            .addOptional(Rfc6020Mapping.STATUS)
+            .addOptional(Rfc6020Mapping.VALUE)
             .build();
 
     protected EnumStatementImpl(final StmtContext<String, EnumStatement, ?> context) {
@@ -58,7 +58,7 @@ public class EnumStatementImpl extends AbstractDeclaredStatement<String> impleme
         }
 
         @Override
-        public void onFullDefinitionDeclared(StmtContext.Mutable<String, EnumStatement,
+        public void onFullDefinitionDeclared(final StmtContext.Mutable<String, EnumStatement,
                 EffectiveStatement<String, EnumStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
             SUBSTATEMENT_VALIDATOR.validate(stmt);
index ebcbc5b189b96697daa9ae2f3faf06732784810a..6ac35b56283f1ca2ba4c7799cb4c9c714bac9e7c 100644 (file)
@@ -25,10 +25,10 @@ import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.ExtensionEf
 public class ExtensionStatementImpl extends AbstractDeclaredStatement<QName> implements ExtensionStatement {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(Rfc6020Mapping
             .EXTENSION)
-            .add(Rfc6020Mapping.ARGUMENT, 0, 1)
-            .add(Rfc6020Mapping.DESCRIPTION, 0, 1)
-            .add(Rfc6020Mapping.REFERENCE, 0, 1)
-            .add(Rfc6020Mapping.STATUS, 0, 1)
+            .addOptional(Rfc6020Mapping.ARGUMENT)
+            .addOptional(Rfc6020Mapping.DESCRIPTION)
+            .addOptional(Rfc6020Mapping.REFERENCE)
+            .addOptional(Rfc6020Mapping.STATUS)
             .build();
 
     protected ExtensionStatementImpl(final StmtContext<QName, ExtensionStatement,?> context) {
index 29578ae77519dcafb18323ddaf372b0df18f8034..d03b4017af1013097b0ec323b7e9bd9db78afede 100644 (file)
@@ -7,8 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.parser.stmt.rfc6020;
 
-import static org.opendaylight.yangtools.yang.parser.spi.SubstatementValidator.MAX;
-
 import java.util.Collection;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.Rfc6020Mapping;
@@ -28,14 +26,14 @@ public class FeatureStatementImpl extends AbstractDeclaredStatement<QName>
         implements FeatureStatement {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(Rfc6020Mapping
             .FEATURE)
-            .add(Rfc6020Mapping.DESCRIPTION, 0, 1)
-            .add(Rfc6020Mapping.IF_FEATURE, 0, MAX)
-            .add(Rfc6020Mapping.STATUS, 0, 1)
-            .add(Rfc6020Mapping.REFERENCE, 0, 1)
+            .addOptional(Rfc6020Mapping.DESCRIPTION)
+            .addAny(Rfc6020Mapping.IF_FEATURE)
+            .addOptional(Rfc6020Mapping.STATUS)
+            .addOptional(Rfc6020Mapping.REFERENCE)
             .build();
 
     protected FeatureStatementImpl(
-            StmtContext<QName, FeatureStatement, ?> context) {
+            final StmtContext<QName, FeatureStatement, ?> context) {
         super(context);
     }
 
@@ -48,24 +46,24 @@ public class FeatureStatementImpl extends AbstractDeclaredStatement<QName>
         }
 
         @Override
-        public QName parseArgumentValue(StmtContext<?, ?, ?> ctx, String value) {
+        public QName parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
             return Utils.qNameFromArgument(ctx, value);
         }
 
         @Override
         public FeatureStatement createDeclared(
-                StmtContext<QName, FeatureStatement, ?> ctx) {
+                final StmtContext<QName, FeatureStatement, ?> ctx) {
             return new FeatureStatementImpl(ctx);
         }
 
         @Override
         public EffectiveStatement<QName, FeatureStatement> createEffective(
-                StmtContext<QName, FeatureStatement, EffectiveStatement<QName, FeatureStatement>> ctx) {
+                final StmtContext<QName, FeatureStatement, EffectiveStatement<QName, FeatureStatement>> ctx) {
             return new FeatureEffectiveStatementImpl(ctx);
         }
 
         @Override
-        public void onFullDefinitionDeclared(StmtContext.Mutable<QName, FeatureStatement,
+        public void onFullDefinitionDeclared(final StmtContext.Mutable<QName, FeatureStatement,
                 EffectiveStatement<QName, FeatureStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
             SUBSTATEMENT_VALIDATOR.validate(stmt);
index df1be54756360a28f05d6ceade7d59d41e60ab20..4960b965198dcd6be121cb8b51b2eb4c65834959 100644 (file)
@@ -7,8 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.parser.stmt.rfc6020;
 
-import static org.opendaylight.yangtools.yang.parser.spi.SubstatementValidator.MAX;
-
 import java.util.Collection;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.Rfc6020Mapping;
@@ -31,22 +29,22 @@ public class GroupingStatementImpl extends AbstractDeclaredStatement<QName>
         implements GroupingStatement {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(Rfc6020Mapping
             .GROUPING)
-            .add(Rfc6020Mapping.ANYXML, 0, MAX)
-            .add(Rfc6020Mapping.CHOICE, 0, MAX)
-            .add(Rfc6020Mapping.CONTAINER, 0, MAX)
-            .add(Rfc6020Mapping.DESCRIPTION, 0, 1)
-            .add(Rfc6020Mapping.GROUPING, 0, MAX)
-            .add(Rfc6020Mapping.LEAF, 0, MAX)
-            .add(Rfc6020Mapping.LEAF_LIST, 0, MAX)
-            .add(Rfc6020Mapping.LIST, 0, MAX)
-            .add(Rfc6020Mapping.REFERENCE, 0, 1)
-            .add(Rfc6020Mapping.STATUS, 0, 1)
-            .add(Rfc6020Mapping.TYPEDEF, 0, MAX)
-            .add(Rfc6020Mapping.USES, 0, MAX)
+            .addAny(Rfc6020Mapping.ANYXML)
+            .addAny(Rfc6020Mapping.CHOICE)
+            .addAny(Rfc6020Mapping.CONTAINER)
+            .addOptional(Rfc6020Mapping.DESCRIPTION)
+            .addAny(Rfc6020Mapping.GROUPING)
+            .addAny(Rfc6020Mapping.LEAF)
+            .addAny(Rfc6020Mapping.LEAF_LIST)
+            .addAny(Rfc6020Mapping.LIST)
+            .addOptional(Rfc6020Mapping.REFERENCE)
+            .addOptional(Rfc6020Mapping.STATUS)
+            .addAny(Rfc6020Mapping.TYPEDEF)
+            .addAny(Rfc6020Mapping.USES)
             .build();
 
     protected GroupingStatementImpl(
-            StmtContext<QName, GroupingStatement, ?> context) {
+            final StmtContext<QName, GroupingStatement, ?> context) {
         super(context);
     }
 
@@ -59,24 +57,24 @@ public class GroupingStatementImpl extends AbstractDeclaredStatement<QName>
         }
 
         @Override
-        public QName parseArgumentValue(StmtContext<?, ?, ?> ctx, String value) {
+        public QName parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
             return Utils.qNameFromArgument(ctx, value);
         }
 
         @Override
         public GroupingStatement createDeclared(
-                StmtContext<QName, GroupingStatement, ?> ctx) {
+                final StmtContext<QName, GroupingStatement, ?> ctx) {
             return new GroupingStatementImpl(ctx);
         }
 
         @Override
         public EffectiveStatement<QName, GroupingStatement> createEffective(
-                StmtContext<QName, GroupingStatement, EffectiveStatement<QName, GroupingStatement>> ctx) {
+                final StmtContext<QName, GroupingStatement, EffectiveStatement<QName, GroupingStatement>> ctx) {
             return new GroupingEffectiveStatementImpl(ctx);
         }
 
         @Override
-        public void onFullDefinitionDeclared(Mutable<QName, GroupingStatement,
+        public void onFullDefinitionDeclared(final Mutable<QName, GroupingStatement,
                 EffectiveStatement<QName, GroupingStatement>> stmt) {
             SUBSTATEMENT_VALIDATOR.validate(stmt);
 
index 2deb59dc921133516e27ae36c1d72de7e9855275..ef813f1f4c59f7e25b1e3277baa16ee031c212eb 100644 (file)
@@ -26,11 +26,11 @@ import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.type.Identi
 public class IdentityRefSpecificationImpl extends AbstractDeclaredStatement<String> implements TypeStatement.IdentityRefSpecification {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(Rfc6020Mapping
             .TYPE)
-            .add(Rfc6020Mapping.BASE, 1, 1)
+            .addMandatory(Rfc6020Mapping.BASE)
             .build();
 
     protected IdentityRefSpecificationImpl(
-            StmtContext<String, TypeStatement.IdentityRefSpecification, ?> context) {
+            final StmtContext<String, TypeStatement.IdentityRefSpecification, ?> context) {
         super(context);
     }
 
@@ -43,25 +43,25 @@ public class IdentityRefSpecificationImpl extends AbstractDeclaredStatement<Stri
         }
 
         @Override
-        public String parseArgumentValue(StmtContext<?, ?, ?> ctx, String value) {
+        public String parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
             return value;
         }
 
         @Override
         public TypeStatement.IdentityRefSpecification createDeclared(
-                StmtContext<String, TypeStatement.IdentityRefSpecification, ?> ctx) {
+                final StmtContext<String, TypeStatement.IdentityRefSpecification, ?> ctx) {
             return new IdentityRefSpecificationImpl(ctx);
         }
 
         @Override
         public EffectiveStatement<String, TypeStatement.IdentityRefSpecification> createEffective(
-                StmtContext<String, TypeStatement.IdentityRefSpecification, EffectiveStatement<String, TypeStatement
+                final StmtContext<String, TypeStatement.IdentityRefSpecification, EffectiveStatement<String, TypeStatement
                         .IdentityRefSpecification>> ctx) {
             return new IdentityRefSpecificationEffectiveStatementImpl(ctx);
         }
 
         @Override
-        public void onFullDefinitionDeclared(StmtContext.Mutable<String, IdentityRefSpecification,
+        public void onFullDefinitionDeclared(final StmtContext.Mutable<String, IdentityRefSpecification,
                 EffectiveStatement<String, IdentityRefSpecification>> stmt) {
             final StmtContext<QName, ?, ?> baseStmt = StmtContextUtils.findFirstDeclaredSubstatement(stmt,
                     BaseStatement.class);
@@ -77,7 +77,7 @@ public class IdentityRefSpecificationImpl extends AbstractDeclaredStatement<Stri
         }
 
         @Override
-        public void onStatementDefinitionDeclared(StmtContext.Mutable<String, IdentityRefSpecification,
+        public void onStatementDefinitionDeclared(final StmtContext.Mutable<String, IdentityRefSpecification,
                 EffectiveStatement<String, IdentityRefSpecification>> stmt) {
             super.onStatementDefinitionDeclared(stmt);
             SUBSTATEMENT_VALIDATOR.validate(stmt);
index 2b31fe726be38efe87aa320e6aff19eb99fe5d40..47ef21751d5264a58f9890161ca74bcb5f0c0a83 100644 (file)
@@ -26,10 +26,10 @@ public class IdentityStatementImpl extends AbstractDeclaredStatement<QName>
         implements IdentityStatement {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(Rfc6020Mapping
             .IDENTITY)
-            .add(Rfc6020Mapping.BASE, 0, 1)
-            .add(Rfc6020Mapping.DESCRIPTION, 0, 1)
-            .add(Rfc6020Mapping.REFERENCE, 0, 1)
-            .add(Rfc6020Mapping.STATUS, 0, 1)
+            .addOptional(Rfc6020Mapping.BASE)
+            .addOptional(Rfc6020Mapping.DESCRIPTION)
+            .addOptional(Rfc6020Mapping.REFERENCE)
+            .addOptional(Rfc6020Mapping.STATUS)
             .build();
 
     protected IdentityStatementImpl(
@@ -66,7 +66,7 @@ public class IdentityStatementImpl extends AbstractDeclaredStatement<QName>
         }
 
         @Override
-        public void onFullDefinitionDeclared(StmtContext.Mutable<QName, IdentityStatement,
+        public void onFullDefinitionDeclared(final StmtContext.Mutable<QName, IdentityStatement,
                 EffectiveStatement<QName, IdentityStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
             SUBSTATEMENT_VALIDATOR.validate(stmt);
index 336b85cb1a0cacb977cf762674fcb9eadc92f9bb..00b14b4b7ee19b597584aca5f45034e79b7ae31b 100644 (file)
@@ -53,8 +53,11 @@ import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.ImportEffec
 public class ImportStatementDefinition extends
         AbstractStatementSupport<String, ImportStatement, EffectiveStatement<String, ImportStatement>> {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator
-            .builder(Rfc6020Mapping.IMPORT).add(Rfc6020Mapping.PREFIX, 1, 1).add(Rfc6020Mapping.REVISION_DATE, 0, 1)
-            .add(SupportedExtensionsMapping.SEMANTIC_VERSION, 0, 1).build();
+            .builder(Rfc6020Mapping.IMPORT)
+            .addMandatory(Rfc6020Mapping.PREFIX)
+            .addOptional(Rfc6020Mapping.REVISION_DATE)
+            .addOptional(SupportedExtensionsMapping.SEMANTIC_VERSION)
+            .build();
 
     public ImportStatementDefinition() {
         super(Rfc6020Mapping.IMPORT);
@@ -84,7 +87,7 @@ public class ImportStatementDefinition extends
     }
 
     @Override
-    public void onPreLinkageDeclared(Mutable<String, ImportStatement, EffectiveStatement<String, ImportStatement>> stmt) {
+    public void onPreLinkageDeclared(final Mutable<String, ImportStatement, EffectiveStatement<String, ImportStatement>> stmt) {
         final String moduleName = stmt.getStatementArgument();
         final ModelActionBuilder importAction = stmt.newInferenceAction(SOURCE_PRE_LINKAGE);
         final Prerequisite<StmtContext<?, ?, ?>> imported = importAction.requiresCtx(stmt,
@@ -261,7 +264,7 @@ public class ImportStatementDefinition extends
             });
         }
 
-        private static SemVer getRequestedImportVersion(Mutable<?, ?, ?> impStmt) {
+        private static SemVer getRequestedImportVersion(final Mutable<?, ?, ?> impStmt) {
             SemVer requestedImportVersion = impStmt.getFromNamespace(SemanticVersionNamespace.class, impStmt);
             if (requestedImportVersion == null) {
                 requestedImportVersion = Module.DEFAULT_SEMANTIC_VERSION;
index ea2c5f7b5c54a57bba52275591b630f3c7cbb9ae..8aedce9d0e51674253141263bf805e6047988b31 100644 (file)
@@ -9,6 +9,7 @@ package org.opendaylight.yangtools.yang.parser.stmt.rfc6020;
 
 import static org.opendaylight.yangtools.yang.parser.spi.meta.ModelProcessingPhase.SOURCE_LINKAGE;
 import static org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils.firstAttributeOf;
+
 import com.google.common.base.Optional;
 import java.util.Collection;
 import java.util.Date;
@@ -35,7 +36,7 @@ import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.IncludeEffe
 
 public class IncludeStatementImpl extends AbstractDeclaredStatement<String> implements IncludeStatement {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(
-        Rfc6020Mapping.INCLUDE).add(Rfc6020Mapping.REVISION_DATE, 0, 1).build();
+        Rfc6020Mapping.INCLUDE).addOptional(Rfc6020Mapping.REVISION_DATE).build();
 
     protected IncludeStatementImpl(final StmtContext<String, IncludeStatement, ?> context) {
         super(context);
index 23f2547c87100fbfe2b0969984d797435fdd91d0..56287d22a3fb773cb6a899b1785bd2deb381d287 100644 (file)
@@ -7,8 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.parser.stmt.rfc6020;
 
-import static org.opendaylight.yangtools.yang.parser.spi.SubstatementValidator.MAX;
-
 import java.util.Collection;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.Rfc6020Mapping;
@@ -28,18 +26,18 @@ public class InputStatementImpl extends AbstractDeclaredStatement<QName>
         implements InputStatement {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(Rfc6020Mapping
             .INPUT)
-            .add(Rfc6020Mapping.ANYXML, 0, MAX)
-            .add(Rfc6020Mapping.CHOICE, 0, MAX)
-            .add(Rfc6020Mapping.CONTAINER, 0, MAX)
-            .add(Rfc6020Mapping.GROUPING, 0, MAX)
-            .add(Rfc6020Mapping.LEAF, 0, MAX)
-            .add(Rfc6020Mapping.LEAF_LIST, 0, MAX)
-            .add(Rfc6020Mapping.LIST, 0, MAX)
-            .add(Rfc6020Mapping.TYPEDEF, 0, MAX)
-            .add(Rfc6020Mapping.USES, 0, MAX)
+            .addAny(Rfc6020Mapping.ANYXML)
+            .addAny(Rfc6020Mapping.CHOICE)
+            .addAny(Rfc6020Mapping.CONTAINER)
+            .addAny(Rfc6020Mapping.GROUPING)
+            .addAny(Rfc6020Mapping.LEAF)
+            .addAny(Rfc6020Mapping.LEAF_LIST)
+            .addAny(Rfc6020Mapping.LIST)
+            .addAny(Rfc6020Mapping.TYPEDEF)
+            .addAny(Rfc6020Mapping.USES)
             .build();
 
-    protected InputStatementImpl(StmtContext<QName, InputStatement, ?> context) {
+    protected InputStatementImpl(final StmtContext<QName, InputStatement, ?> context) {
         super(context);
     }
 
@@ -52,29 +50,29 @@ public class InputStatementImpl extends AbstractDeclaredStatement<QName>
         }
 
         @Override
-        public QName parseArgumentValue(StmtContext<?, ?, ?> ctx, String value) {
+        public QName parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
             return Utils.qNameFromArgument(ctx, "input");
         }
 
         @Override
-        public void onStatementAdded(Mutable<QName, InputStatement, EffectiveStatement<QName, InputStatement>> stmt) {
+        public void onStatementAdded(final Mutable<QName, InputStatement, EffectiveStatement<QName, InputStatement>> stmt) {
             stmt.getParentContext().addToNs(ChildSchemaNodes.class, stmt.getStatementArgument(), stmt);
         }
 
         @Override
         public InputStatement createDeclared(
-                StmtContext<QName, InputStatement, ?> ctx) {
+                final StmtContext<QName, InputStatement, ?> ctx) {
             return new InputStatementImpl(ctx);
         }
 
         @Override
         public EffectiveStatement<QName, InputStatement> createEffective(
-                StmtContext<QName, InputStatement, EffectiveStatement<QName, InputStatement>> ctx) {
+                final StmtContext<QName, InputStatement, EffectiveStatement<QName, InputStatement>> ctx) {
             return new InputEffectiveStatementImpl(ctx);
         }
 
         @Override
-        public void onFullDefinitionDeclared(Mutable<QName, InputStatement,
+        public void onFullDefinitionDeclared(final Mutable<QName, InputStatement,
                 EffectiveStatement<QName, InputStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
             SUBSTATEMENT_VALIDATOR.validate(stmt);
index fd2195e4a39d2948b2bf548cecf692fc49a32cbf..e6fce24f096e0b56cd6f6b5903b00bc3e4e7ec9a 100644 (file)
@@ -22,11 +22,11 @@ public class InstanceIdentifierSpecificationImpl extends
         TypeStatement.InstanceIdentifierSpecification {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(Rfc6020Mapping
             .TYPE)
-            .add(Rfc6020Mapping.REQUIRE_INSTANCE, 0, 1)
+            .addOptional(Rfc6020Mapping.REQUIRE_INSTANCE)
             .build();
 
     protected InstanceIdentifierSpecificationImpl(
-            StmtContext<String, TypeStatement.InstanceIdentifierSpecification, ?> ctx) {
+            final StmtContext<String, TypeStatement.InstanceIdentifierSpecification, ?> ctx) {
         super(ctx);
     }
 
@@ -39,24 +39,24 @@ public class InstanceIdentifierSpecificationImpl extends
         }
 
         @Override
-        public String parseArgumentValue(StmtContext<?, ?, ?> ctx, String value) {
+        public String parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
             return value;
         }
 
         @Override
         public TypeStatement.InstanceIdentifierSpecification createDeclared(
-                StmtContext<String, TypeStatement.InstanceIdentifierSpecification, ?> ctx) {
+                final StmtContext<String, TypeStatement.InstanceIdentifierSpecification, ?> ctx) {
             return new InstanceIdentifierSpecificationImpl(ctx);
         }
 
         @Override
         public EffectiveStatement<String, TypeStatement.InstanceIdentifierSpecification> createEffective(
-                StmtContext<String, TypeStatement.InstanceIdentifierSpecification, EffectiveStatement<String, TypeStatement.InstanceIdentifierSpecification>> ctx) {
+                final StmtContext<String, TypeStatement.InstanceIdentifierSpecification, EffectiveStatement<String, TypeStatement.InstanceIdentifierSpecification>> ctx) {
             return new InstanceIdentifierSpecificationEffectiveStatementImpl(ctx);
         }
 
         @Override
-        public void onFullDefinitionDeclared(StmtContext.Mutable<String, InstanceIdentifierSpecification,
+        public void onFullDefinitionDeclared(final StmtContext.Mutable<String, InstanceIdentifierSpecification,
                 EffectiveStatement<String, InstanceIdentifierSpecification>> stmt) {
             super.onFullDefinitionDeclared(stmt);
             SUBSTATEMENT_VALIDATOR.validate(stmt);
index 2f0d688c265a27f3396017d631172b507110cb0e..572d395982689db5eb12d080adff9dee04c47f76 100644 (file)
@@ -7,8 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.parser.stmt.rfc6020;
 
-import static org.opendaylight.yangtools.yang.parser.spi.SubstatementValidator.MAX;
-
 import java.util.Collection;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
@@ -39,22 +37,22 @@ public class LeafListStatementImpl extends AbstractDeclaredStatement<QName>
         implements LeafListStatement {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(Rfc6020Mapping
             .LEAF_LIST)
-            .add(Rfc6020Mapping.CONFIG, 0, 1)
-            .add(Rfc6020Mapping.DESCRIPTION, 0, 1)
-            .add(Rfc6020Mapping.IF_FEATURE, 0, MAX)
-            .add(Rfc6020Mapping.MIN_ELEMENTS, 0, 1)
-            .add(Rfc6020Mapping.MAX_ELEMENTS, 0, 1)
-            .add(Rfc6020Mapping.MUST, 0, MAX)
-            .add(Rfc6020Mapping.ORDERED_BY, 0, 1)
-            .add(Rfc6020Mapping.REFERENCE, 0, 1)
-            .add(Rfc6020Mapping.STATUS, 0, 1)
-            .add(Rfc6020Mapping.TYPE, 1, 1)
-            .add(Rfc6020Mapping.UNITS, 0, 1)
-            .add(Rfc6020Mapping.WHEN, 0, 1)
+            .addOptional(Rfc6020Mapping.CONFIG)
+            .addOptional(Rfc6020Mapping.DESCRIPTION)
+            .addAny(Rfc6020Mapping.IF_FEATURE)
+            .addOptional(Rfc6020Mapping.MIN_ELEMENTS)
+            .addOptional(Rfc6020Mapping.MAX_ELEMENTS)
+            .addAny(Rfc6020Mapping.MUST)
+            .addOptional(Rfc6020Mapping.ORDERED_BY)
+            .addOptional(Rfc6020Mapping.REFERENCE)
+            .addOptional(Rfc6020Mapping.STATUS)
+            .addMandatory(Rfc6020Mapping.TYPE)
+            .addOptional(Rfc6020Mapping.UNITS)
+            .addOptional(Rfc6020Mapping.WHEN)
             .build();
 
     protected LeafListStatementImpl(
-            StmtContext<QName, LeafListStatement, ?> context) {
+            final StmtContext<QName, LeafListStatement, ?> context) {
         super(context);
     }
 
@@ -68,30 +66,30 @@ public class LeafListStatementImpl extends AbstractDeclaredStatement<QName>
 
         @Override
         public void onStatementAdded(
-                Mutable<QName, LeafListStatement, EffectiveStatement<QName, LeafListStatement>> stmt) {
+                final Mutable<QName, LeafListStatement, EffectiveStatement<QName, LeafListStatement>> stmt) {
             stmt.getParentContext().addToNs(ChildSchemaNodes.class, stmt.getStatementArgument(), stmt);
         }
 
         @Override
-        public QName parseArgumentValue(StmtContext<?, ?, ?> ctx, String value)
+        public QName parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value)
                 {
             return Utils.qNameFromArgument(ctx, value);
         }
 
         @Override
         public LeafListStatement createDeclared(
-                StmtContext<QName, LeafListStatement, ?> ctx) {
+                final StmtContext<QName, LeafListStatement, ?> ctx) {
             return new LeafListStatementImpl(ctx);
         }
 
         @Override
         public EffectiveStatement<QName, LeafListStatement> createEffective(
-                StmtContext<QName, LeafListStatement, EffectiveStatement<QName, LeafListStatement>> ctx) {
+                final StmtContext<QName, LeafListStatement, EffectiveStatement<QName, LeafListStatement>> ctx) {
             return new LeafListEffectiveStatementImpl(ctx);
         }
 
         @Override
-        public void onFullDefinitionDeclared(Mutable<QName, LeafListStatement,
+        public void onFullDefinitionDeclared(final Mutable<QName, LeafListStatement,
                 EffectiveStatement<QName, LeafListStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
             SUBSTATEMENT_VALIDATOR.validate(stmt);
index 0594c7ea2ba0b06e8ce6cdd2ec479e3f9469e79c..ff24172df80f37bde5147a7757e08863d1c8543f 100644 (file)
@@ -7,8 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.parser.stmt.rfc6020;
 
-import static org.opendaylight.yangtools.yang.parser.spi.SubstatementValidator.MAX;
-
 import java.util.Collection;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
@@ -37,20 +35,20 @@ import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.LeafEffecti
 public class LeafStatementImpl extends AbstractDeclaredStatement<QName> implements LeafStatement {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(Rfc6020Mapping
             .LEAF)
-            .add(Rfc6020Mapping.CONFIG, 0, 1)
-            .add(Rfc6020Mapping.DEFAULT, 0, 1)
-            .add(Rfc6020Mapping.DESCRIPTION, 0, 1)
-            .add(Rfc6020Mapping.IF_FEATURE, 0, MAX)
-            .add(Rfc6020Mapping.MANDATORY, 0, 1)
-            .add(Rfc6020Mapping.MUST, 0, MAX)
-            .add(Rfc6020Mapping.REFERENCE, 0, 1)
-            .add(Rfc6020Mapping.STATUS, 0, 1)
-            .add(Rfc6020Mapping.TYPE, 1, 1)
-            .add(Rfc6020Mapping.UNITS, 0, 1)
-            .add(Rfc6020Mapping.WHEN, 0, 1)
+            .addOptional(Rfc6020Mapping.CONFIG)
+            .addOptional(Rfc6020Mapping.DEFAULT)
+            .addOptional(Rfc6020Mapping.DESCRIPTION)
+            .addAny(Rfc6020Mapping.IF_FEATURE)
+            .addOptional(Rfc6020Mapping.MANDATORY)
+            .addAny(Rfc6020Mapping.MUST)
+            .addOptional(Rfc6020Mapping.REFERENCE)
+            .addOptional(Rfc6020Mapping.STATUS)
+            .addMandatory(Rfc6020Mapping.TYPE)
+            .addOptional(Rfc6020Mapping.UNITS)
+            .addOptional(Rfc6020Mapping.WHEN)
             .build();
 
-    protected LeafStatementImpl(StmtContext<QName, LeafStatement, ?> context) {
+    protected LeafStatementImpl(final StmtContext<QName, LeafStatement, ?> context) {
         super(context);
     }
 
@@ -60,27 +58,27 @@ public class LeafStatementImpl extends AbstractDeclaredStatement<QName> implemen
             super(Rfc6020Mapping.LEAF);
         }
 
-        @Override public QName parseArgumentValue(StmtContext<?, ?, ?> ctx, String value) {
+        @Override public QName parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
             return Utils.qNameFromArgument(ctx,value);
         }
 
         @Override
-        public void onStatementAdded(Mutable<QName, LeafStatement, EffectiveStatement<QName, LeafStatement>> stmt) {
+        public void onStatementAdded(final Mutable<QName, LeafStatement, EffectiveStatement<QName, LeafStatement>> stmt) {
             stmt.getParentContext().addToNs(ChildSchemaNodes.class, stmt.getStatementArgument(), stmt);
         }
 
         @Override public LeafStatement createDeclared(
-                StmtContext<QName, LeafStatement, ?> ctx) {
+                final StmtContext<QName, LeafStatement, ?> ctx) {
             return new LeafStatementImpl(ctx);
         }
 
         @Override public EffectiveStatement<QName, LeafStatement> createEffective(
-                StmtContext<QName, LeafStatement, EffectiveStatement<QName, LeafStatement>> ctx) {
+                final StmtContext<QName, LeafStatement, EffectiveStatement<QName, LeafStatement>> ctx) {
             return new LeafEffectiveStatementImpl(ctx);
         }
 
         @Override
-        public void onFullDefinitionDeclared(Mutable<QName, LeafStatement,
+        public void onFullDefinitionDeclared(final Mutable<QName, LeafStatement,
                 EffectiveStatement<QName, LeafStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
             SUBSTATEMENT_VALIDATOR.validate(stmt);
index c5dd0af72c197672cea7c2748c2cd622e5f2e79b..eb4ab7b41597411a3483f026ed4396538aaaf33d 100644 (file)
@@ -21,12 +21,12 @@ public class LeafrefSpecificationImpl extends AbstractDeclaredStatement<String>
         implements TypeStatement.LeafrefSpecification {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(Rfc6020Mapping
             .TYPE)
-            .add(Rfc6020Mapping.PATH, 1, 1)
-            .add(Rfc6020Mapping.REQUIRE_INSTANCE, 0, 1)
+            .addMandatory(Rfc6020Mapping.PATH)
+            .addOptional(Rfc6020Mapping.REQUIRE_INSTANCE)
             .build();
 
     protected LeafrefSpecificationImpl(
-            StmtContext<String, TypeStatement.LeafrefSpecification, ?> context) {
+            final StmtContext<String, TypeStatement.LeafrefSpecification, ?> context) {
         super(context);
     }
 
@@ -39,24 +39,24 @@ public class LeafrefSpecificationImpl extends AbstractDeclaredStatement<String>
         }
 
         @Override
-        public String parseArgumentValue(StmtContext<?, ?, ?> ctx, String value) {
+        public String parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
             return value;
         }
 
         @Override
         public TypeStatement.LeafrefSpecification createDeclared(
-                StmtContext<String, TypeStatement.LeafrefSpecification, ?> ctx) {
+                final StmtContext<String, TypeStatement.LeafrefSpecification, ?> ctx) {
             return new LeafrefSpecificationImpl(ctx);
         }
 
         @Override
         public EffectiveStatement<String, TypeStatement.LeafrefSpecification> createEffective(
-                StmtContext<String, TypeStatement.LeafrefSpecification, EffectiveStatement<String, TypeStatement.LeafrefSpecification>> ctx) {
+                final StmtContext<String, TypeStatement.LeafrefSpecification, EffectiveStatement<String, TypeStatement.LeafrefSpecification>> ctx) {
             return new LeafrefSpecificationEffectiveStatementImpl(ctx);
         }
 
         @Override
-        public void onFullDefinitionDeclared(StmtContext.Mutable<String, LeafrefSpecification,
+        public void onFullDefinitionDeclared(final StmtContext.Mutable<String, LeafrefSpecification,
                 EffectiveStatement<String, LeafrefSpecification>> stmt) {
             super.onFullDefinitionDeclared(stmt);
             SUBSTATEMENT_VALIDATOR.validate(stmt);
index a8fc152e543ae28979231b56cdced423a40f6f2e..8e4d95c4fa484cedc37a7195f24210dc421c4421 100644 (file)
@@ -25,13 +25,13 @@ import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.type.Length
 public class LengthStatementImpl extends AbstractDeclaredStatement<List<LengthConstraint>> implements LengthStatement {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(Rfc6020Mapping
             .LENGTH)
-            .add(Rfc6020Mapping.DESCRIPTION, 0, 1)
-            .add(Rfc6020Mapping.ERROR_APP_TAG, 0, 1)
-            .add(Rfc6020Mapping.ERROR_MESSAGE, 0, 1)
-            .add(Rfc6020Mapping.REFERENCE, 0, 1)
+            .addOptional(Rfc6020Mapping.DESCRIPTION)
+            .addOptional(Rfc6020Mapping.ERROR_APP_TAG)
+            .addOptional(Rfc6020Mapping.ERROR_MESSAGE)
+            .addOptional(Rfc6020Mapping.REFERENCE)
             .build();
 
-    protected LengthStatementImpl(StmtContext<List<LengthConstraint>, LengthStatement, ?> context) {
+    protected LengthStatementImpl(final StmtContext<List<LengthConstraint>, LengthStatement, ?> context) {
         super(context);
     }
 
@@ -43,24 +43,24 @@ public class LengthStatementImpl extends AbstractDeclaredStatement<List<LengthCo
         }
 
         @Override
-        public List<LengthConstraint> parseArgumentValue(StmtContext<?, ?, ?> ctx, String value) {
+        public List<LengthConstraint> parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
             return TypeUtils.parseLengthListFromString(ctx, value);
         }
 
         @Override
-        public LengthStatement createDeclared(StmtContext<List<LengthConstraint>, LengthStatement, ?> ctx) {
+        public LengthStatement createDeclared(final StmtContext<List<LengthConstraint>, LengthStatement, ?> ctx) {
             return new LengthStatementImpl(ctx);
         }
 
         @Override
         public EffectiveStatement<List<LengthConstraint>, LengthStatement> createEffective(
-                StmtContext<List<LengthConstraint>, LengthStatement, EffectiveStatement<List<LengthConstraint>,
+                final StmtContext<List<LengthConstraint>, LengthStatement, EffectiveStatement<List<LengthConstraint>,
                         LengthStatement>> ctx) {
             return new LengthEffectiveStatementImpl(ctx);
         }
 
         @Override
-        public void onFullDefinitionDeclared(StmtContext.Mutable<List<LengthConstraint>,
+        public void onFullDefinitionDeclared(final StmtContext.Mutable<List<LengthConstraint>,
                 LengthStatement, EffectiveStatement<List<LengthConstraint>, LengthStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
             SUBSTATEMENT_VALIDATOR.validate(stmt);
index 3e5a84c3327a0ab58ead48b52cbd0a0fc7adab64..d1ac7240780314c368c2953a544fc86ff32a7645 100644 (file)
@@ -7,8 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.parser.stmt.rfc6020;
 
-import static org.opendaylight.yangtools.yang.parser.spi.SubstatementValidator.MAX;
-
 import java.util.Collection;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
@@ -42,30 +40,30 @@ public class ListStatementImpl extends AbstractDeclaredStatement<QName>
         implements ListStatement {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(Rfc6020Mapping
             .LIST)
-            .add(Rfc6020Mapping.ANYXML, 0, MAX)
-            .add(Rfc6020Mapping.CHOICE, 0, MAX)
-            .add(Rfc6020Mapping.CONFIG, 0, 1)
-            .add(Rfc6020Mapping.CONTAINER, 0, MAX)
-            .add(Rfc6020Mapping.DESCRIPTION, 0, 1)
-            .add(Rfc6020Mapping.GROUPING, 0, MAX)
-            .add(Rfc6020Mapping.IF_FEATURE, 0, MAX)
-            .add(Rfc6020Mapping.KEY, 0, 1)
-            .add(Rfc6020Mapping.LEAF, 0, MAX)
-            .add(Rfc6020Mapping.LEAF_LIST, 0, MAX)
-            .add(Rfc6020Mapping.LIST, 0, MAX)
-            .add(Rfc6020Mapping.MAX_ELEMENTS, 0, 1)
-            .add(Rfc6020Mapping.MIN_ELEMENTS, 0, 1)
-            .add(Rfc6020Mapping.MUST, 0, MAX)
-            .add(Rfc6020Mapping.ORDERED_BY, 0, 1)
-            .add(Rfc6020Mapping.REFERENCE, 0, 1)
-            .add(Rfc6020Mapping.STATUS, 0, 1)
-            .add(Rfc6020Mapping.TYPEDEF, 0, MAX)
-            .add(Rfc6020Mapping.UNIQUE, 0, MAX)
-            .add(Rfc6020Mapping.USES, 0, MAX)
-            .add(Rfc6020Mapping.WHEN, 0, 1)
+            .addAny(Rfc6020Mapping.ANYXML)
+            .addAny(Rfc6020Mapping.CHOICE)
+            .addOptional(Rfc6020Mapping.CONFIG)
+            .addAny(Rfc6020Mapping.CONTAINER)
+            .addOptional(Rfc6020Mapping.DESCRIPTION)
+            .addAny(Rfc6020Mapping.GROUPING)
+            .addAny(Rfc6020Mapping.IF_FEATURE)
+            .addOptional(Rfc6020Mapping.KEY)
+            .addAny(Rfc6020Mapping.LEAF)
+            .addAny(Rfc6020Mapping.LEAF_LIST)
+            .addAny(Rfc6020Mapping.LIST)
+            .addOptional(Rfc6020Mapping.MAX_ELEMENTS)
+            .addOptional(Rfc6020Mapping.MIN_ELEMENTS)
+            .addAny(Rfc6020Mapping.MUST)
+            .addOptional(Rfc6020Mapping.ORDERED_BY)
+            .addOptional(Rfc6020Mapping.REFERENCE)
+            .addOptional(Rfc6020Mapping.STATUS)
+            .addAny(Rfc6020Mapping.TYPEDEF)
+            .addAny(Rfc6020Mapping.UNIQUE)
+            .addAny(Rfc6020Mapping.USES)
+            .addOptional(Rfc6020Mapping.WHEN)
             .build();
 
-    protected ListStatementImpl(StmtContext<QName, ListStatement, ?> context) {
+    protected ListStatementImpl(final StmtContext<QName, ListStatement, ?> context) {
         super(context);
     }
 
@@ -78,29 +76,29 @@ public class ListStatementImpl extends AbstractDeclaredStatement<QName>
         }
 
         @Override
-        public QName parseArgumentValue(StmtContext<?, ?, ?> ctx, String value) {
+        public QName parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
             return Utils.qNameFromArgument(ctx, value);
         }
 
         @Override
-        public void onStatementAdded(Mutable<QName, ListStatement, EffectiveStatement<QName, ListStatement>> stmt) {
+        public void onStatementAdded(final Mutable<QName, ListStatement, EffectiveStatement<QName, ListStatement>> stmt) {
             stmt.getParentContext().addToNs(ChildSchemaNodes.class, stmt.getStatementArgument(), stmt);
         }
 
         @Override
         public ListStatement createDeclared(
-                StmtContext<QName, ListStatement, ?> ctx) {
+                final StmtContext<QName, ListStatement, ?> ctx) {
             return new ListStatementImpl(ctx);
         }
 
         @Override
         public EffectiveStatement<QName, ListStatement> createEffective(
-                StmtContext<QName, ListStatement, EffectiveStatement<QName, ListStatement>> ctx) {
+                final StmtContext<QName, ListStatement, EffectiveStatement<QName, ListStatement>> ctx) {
             return new ListEffectiveStatementImpl(ctx);
         }
 
         @Override
-        public void onFullDefinitionDeclared(Mutable<QName, ListStatement,
+        public void onFullDefinitionDeclared(final Mutable<QName, ListStatement,
                 EffectiveStatement<QName, ListStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
             SUBSTATEMENT_VALIDATOR.validate(stmt);
index 255fdd337eb744383af7136bf97258d707c0d010..591e88d8b295d0bc700472b3a7c2040fd3ee9e31 100644 (file)
@@ -7,7 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.parser.stmt.rfc6020;
 
-import static org.opendaylight.yangtools.yang.parser.spi.SubstatementValidator.MAX;
 import static org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils.firstAttributeOf;
 
 import com.google.common.base.Optional;
@@ -52,33 +51,33 @@ public class ModuleStatementSupport extends
         AbstractStatementSupport<String, ModuleStatement, EffectiveStatement<String, ModuleStatement>> {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(Rfc6020Mapping
             .MODULE)
-            .add(Rfc6020Mapping.ANYXML, 0, MAX)
-            .add(Rfc6020Mapping.AUGMENT, 0, MAX)
-            .add(Rfc6020Mapping.CHOICE, 0, MAX)
-            .add(Rfc6020Mapping.CONTACT, 0, 1)
-            .add(Rfc6020Mapping.CONTAINER, 0, MAX)
-            .add(Rfc6020Mapping.DESCRIPTION, 0, 1)
-            .add(Rfc6020Mapping.DEVIATION, 0, MAX)
-            .add(Rfc6020Mapping.EXTENSION, 0, MAX)
-            .add(Rfc6020Mapping.FEATURE, 0, MAX)
-            .add(Rfc6020Mapping.GROUPING, 0, MAX)
-            .add(Rfc6020Mapping.IDENTITY, 0, MAX)
-            .add(Rfc6020Mapping.IMPORT, 0, MAX)
-            .add(Rfc6020Mapping.INCLUDE, 0, MAX)
-            .add(Rfc6020Mapping.LEAF, 0, MAX)
-            .add(Rfc6020Mapping.LEAF_LIST, 0, MAX)
-            .add(Rfc6020Mapping.LIST, 0, MAX)
-            .add(Rfc6020Mapping.NAMESPACE, 1, 1)
-            .add(Rfc6020Mapping.NOTIFICATION, 0, MAX)
-            .add(Rfc6020Mapping.ORGANIZATION, 0, 1)
-            .add(Rfc6020Mapping.PREFIX, 1, 1)
-            .add(Rfc6020Mapping.REFERENCE, 0, 1)
-            .add(Rfc6020Mapping.REVISION, 0, MAX)
-            .add(Rfc6020Mapping.RPC, 0, MAX)
-            .add(Rfc6020Mapping.TYPEDEF, 0, MAX)
-            .add(Rfc6020Mapping.USES, 0, MAX)
-            .add(Rfc6020Mapping.YANG_VERSION, 0, 1)
-            .add(SupportedExtensionsMapping.SEMANTIC_VERSION, 0, 1)
+            .addAny(Rfc6020Mapping.ANYXML)
+            .addAny(Rfc6020Mapping.AUGMENT)
+            .addAny(Rfc6020Mapping.CHOICE)
+            .addOptional(Rfc6020Mapping.CONTACT)
+            .addAny(Rfc6020Mapping.CONTAINER)
+            .addOptional(Rfc6020Mapping.DESCRIPTION)
+            .addAny(Rfc6020Mapping.DEVIATION)
+            .addAny(Rfc6020Mapping.EXTENSION)
+            .addAny(Rfc6020Mapping.FEATURE)
+            .addAny(Rfc6020Mapping.GROUPING)
+            .addAny(Rfc6020Mapping.IDENTITY)
+            .addAny(Rfc6020Mapping.IMPORT)
+            .addAny(Rfc6020Mapping.INCLUDE)
+            .addAny(Rfc6020Mapping.LEAF)
+            .addAny(Rfc6020Mapping.LEAF_LIST)
+            .addAny(Rfc6020Mapping.LIST)
+            .addMandatory(Rfc6020Mapping.NAMESPACE)
+            .addAny(Rfc6020Mapping.NOTIFICATION)
+            .addOptional(Rfc6020Mapping.ORGANIZATION)
+            .addMandatory(Rfc6020Mapping.PREFIX)
+            .addOptional(Rfc6020Mapping.REFERENCE)
+            .addAny(Rfc6020Mapping.REVISION)
+            .addAny(Rfc6020Mapping.RPC)
+            .addAny(Rfc6020Mapping.TYPEDEF)
+            .addAny(Rfc6020Mapping.USES)
+            .addOptional(Rfc6020Mapping.YANG_VERSION)
+            .addOptional(SupportedExtensionsMapping.SEMANTIC_VERSION)
             .build();
 
     public ModuleStatementSupport() {
@@ -102,7 +101,7 @@ public class ModuleStatementSupport extends
     }
 
     @Override
-    public void onPreLinkageDeclared(Mutable<String, ModuleStatement, EffectiveStatement<String, ModuleStatement>> stmt) {
+    public void onPreLinkageDeclared(final Mutable<String, ModuleStatement, EffectiveStatement<String, ModuleStatement>> stmt) {
         final String moduleName = stmt.getStatementArgument();
 
         final URI moduleNs = firstAttributeOf(stmt.declaredSubstatements(),
@@ -173,7 +172,7 @@ public class ModuleStatementSupport extends
         NavigableMap<SemVer, StmtContext<?, ?, ?>> modulesMap = stmt.getFromNamespace(
                 SemanticVersionModuleNamespace.class, moduleName);
         if (modulesMap == null) {
-            modulesMap = new TreeMap<SemVer, StmtContext<?, ?, ?>>();
+            modulesMap = new TreeMap<>();
         }
         SemVer moduleSemVer = stmt.getFromNamespace(SemanticVersionNamespace.class, stmt);
         if(moduleSemVer == null) {
index 26dff129953b9442111ace898890fb99875a689a..a36c858fe4e4563e92866ad0a5534113ff8a27d7 100644 (file)
@@ -26,10 +26,10 @@ import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.MustEffecti
 public class MustStatementImpl extends AbstractDeclaredStatement<RevisionAwareXPath> implements MustStatement {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(Rfc6020Mapping
             .MUST)
-            .add(Rfc6020Mapping.DESCRIPTION, 0, 1)
-            .add(Rfc6020Mapping.ERROR_APP_TAG, 0, 1)
-            .add(Rfc6020Mapping.ERROR_MESSAGE, 0, 1)
-            .add(Rfc6020Mapping.REFERENCE, 0, 1)
+            .addOptional(Rfc6020Mapping.DESCRIPTION)
+            .addOptional(Rfc6020Mapping.ERROR_APP_TAG)
+            .addOptional(Rfc6020Mapping.ERROR_MESSAGE)
+            .addOptional(Rfc6020Mapping.REFERENCE)
             .build();
 
     protected MustStatementImpl(final StmtContext<RevisionAwareXPath, MustStatement, ?> context) {
@@ -60,7 +60,7 @@ public class MustStatementImpl extends AbstractDeclaredStatement<RevisionAwareXP
         }
 
         @Override
-        public void onFullDefinitionDeclared(StmtContext.Mutable<RevisionAwareXPath, MustStatement,
+        public void onFullDefinitionDeclared(final StmtContext.Mutable<RevisionAwareXPath, MustStatement,
                 EffectiveStatement<RevisionAwareXPath, MustStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
             SUBSTATEMENT_VALIDATOR.validate(stmt);
index 2000d198ca99a90d1d837e34c32d617b44e1c8aa..c5b5cff234cdacf3e190aa6e77f7a0bf5435a6fb 100644 (file)
@@ -7,8 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.parser.stmt.rfc6020;
 
-import static org.opendaylight.yangtools.yang.parser.spi.SubstatementValidator.MAX;
-
 import java.util.Collection;
 import javax.annotation.Nullable;
 import org.opendaylight.yangtools.yang.common.QName;
@@ -32,23 +30,23 @@ public class NotificationStatementImpl extends AbstractDeclaredStatement<QName>
         implements NotificationStatement {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(Rfc6020Mapping
             .NOTIFICATION)
-            .add(Rfc6020Mapping.ANYXML, 0, MAX)
-            .add(Rfc6020Mapping.CHOICE, 0, MAX)
-            .add(Rfc6020Mapping.CONTAINER, 0, MAX)
-            .add(Rfc6020Mapping.DESCRIPTION, 0, 1)
-            .add(Rfc6020Mapping.GROUPING, 0, MAX)
-            .add(Rfc6020Mapping.IF_FEATURE, 0, MAX)
-            .add(Rfc6020Mapping.LEAF, 0, MAX)
-            .add(Rfc6020Mapping.LEAF_LIST, 0, MAX)
-            .add(Rfc6020Mapping.LIST, 0, MAX)
-            .add(Rfc6020Mapping.REFERENCE, 0, 1)
-            .add(Rfc6020Mapping.STATUS, 0, 1)
-            .add(Rfc6020Mapping.TYPEDEF, 0, MAX)
-            .add(Rfc6020Mapping.USES, 0, MAX)
+            .addAny(Rfc6020Mapping.ANYXML)
+            .addAny(Rfc6020Mapping.CHOICE)
+            .addAny(Rfc6020Mapping.CONTAINER)
+            .addOptional(Rfc6020Mapping.DESCRIPTION)
+            .addAny(Rfc6020Mapping.GROUPING)
+            .addAny(Rfc6020Mapping.IF_FEATURE)
+            .addAny(Rfc6020Mapping.LEAF)
+            .addAny(Rfc6020Mapping.LEAF_LIST)
+            .addAny(Rfc6020Mapping.LIST)
+            .addOptional(Rfc6020Mapping.REFERENCE)
+            .addOptional(Rfc6020Mapping.STATUS)
+            .addAny(Rfc6020Mapping.TYPEDEF)
+            .addAny(Rfc6020Mapping.USES)
             .build();
 
     protected NotificationStatementImpl(
-            StmtContext<QName, NotificationStatement, ?> context) {
+            final StmtContext<QName, NotificationStatement, ?> context) {
         super(context);
     }
 
@@ -61,30 +59,30 @@ public class NotificationStatementImpl extends AbstractDeclaredStatement<QName>
         }
 
         @Override
-        public QName parseArgumentValue(StmtContext<?, ?, ?> ctx, String value) {
+        public QName parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
             return Utils.qNameFromArgument(ctx, value);
         }
 
         @Override
         public void onStatementAdded(
-                Mutable<QName, NotificationStatement, EffectiveStatement<QName, NotificationStatement>> stmt) {
+                final Mutable<QName, NotificationStatement, EffectiveStatement<QName, NotificationStatement>> stmt) {
             stmt.getParentContext().addToNs(ChildSchemaNodes.class, stmt.getStatementArgument(), stmt);
         }
 
         @Override
         public NotificationStatement createDeclared(
-                StmtContext<QName, NotificationStatement, ?> ctx) {
+                final StmtContext<QName, NotificationStatement, ?> ctx) {
             return new NotificationStatementImpl(ctx);
         }
 
         @Override
         public EffectiveStatement<QName, NotificationStatement> createEffective(
-                StmtContext<QName, NotificationStatement, EffectiveStatement<QName, NotificationStatement>> ctx) {
+                final StmtContext<QName, NotificationStatement, EffectiveStatement<QName, NotificationStatement>> ctx) {
             return new NotificationEffectiveStatementImpl(ctx);
         }
 
         @Override
-        public void onFullDefinitionDeclared(Mutable<QName, NotificationStatement,
+        public void onFullDefinitionDeclared(final Mutable<QName, NotificationStatement,
                 EffectiveStatement<QName, NotificationStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
             SUBSTATEMENT_VALIDATOR.validate(stmt);
index 0fe45c64dc7f035e76c396d1401c6c39a42c1391..5e8421a3a1929ce40344de8a34f3bf91864a9153 100644 (file)
@@ -21,7 +21,7 @@ public class NumericalRestrictionsImpl extends AbstractDeclaredStatement<String>
         TypeStatement.NumericalRestrictions {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(Rfc6020Mapping
             .TYPE)
-            .add(Rfc6020Mapping.RANGE, 1, 1)
+            .addMandatory(Rfc6020Mapping.RANGE)
             .build();
 
     protected NumericalRestrictionsImpl(final StmtContext<String, TypeStatement.NumericalRestrictions, ?> context) {
@@ -53,7 +53,7 @@ public class NumericalRestrictionsImpl extends AbstractDeclaredStatement<String>
         }
 
         @Override
-        public void onFullDefinitionDeclared(StmtContext.Mutable<String, NumericalRestrictions,
+        public void onFullDefinitionDeclared(final StmtContext.Mutable<String, NumericalRestrictions,
                 EffectiveStatement<String, NumericalRestrictions>> stmt) {
             super.onFullDefinitionDeclared(stmt);
             SUBSTATEMENT_VALIDATOR.validate(stmt);
index 2da48c83912ecff02fa68e3837383c906d806fec..150d08412adbfdfe7664a529b38b27bbdd15d777 100644 (file)
@@ -7,8 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.parser.stmt.rfc6020;
 
-import static org.opendaylight.yangtools.yang.parser.spi.SubstatementValidator.MAX;
-
 import java.util.Collection;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.Rfc6020Mapping;
@@ -27,15 +25,15 @@ import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.OutputEffec
 public class OutputStatementImpl extends AbstractDeclaredStatement<QName> implements OutputStatement {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(Rfc6020Mapping
             .OUTPUT)
-            .add(Rfc6020Mapping.ANYXML, 0, MAX)
-            .add(Rfc6020Mapping.CHOICE, 0, MAX)
-            .add(Rfc6020Mapping.CONTAINER, 0, MAX)
-            .add(Rfc6020Mapping.GROUPING, 0, MAX)
-            .add(Rfc6020Mapping.LEAF, 0, MAX)
-            .add(Rfc6020Mapping.LEAF_LIST, 0, MAX)
-            .add(Rfc6020Mapping.LIST, 0, MAX)
-            .add(Rfc6020Mapping.TYPEDEF, 0, MAX)
-            .add(Rfc6020Mapping.USES, 0, MAX)
+            .addAny(Rfc6020Mapping.ANYXML)
+            .addAny(Rfc6020Mapping.CHOICE)
+            .addAny(Rfc6020Mapping.CONTAINER)
+            .addAny(Rfc6020Mapping.GROUPING)
+            .addAny(Rfc6020Mapping.LEAF)
+            .addAny(Rfc6020Mapping.LEAF_LIST)
+            .addAny(Rfc6020Mapping.LIST)
+            .addAny(Rfc6020Mapping.TYPEDEF)
+            .addAny(Rfc6020Mapping.USES)
             .build();
 
     protected OutputStatementImpl(final StmtContext<QName, OutputStatement, ?> context) {
@@ -71,7 +69,7 @@ public class OutputStatementImpl extends AbstractDeclaredStatement<QName> implem
         }
 
         @Override
-        public void onFullDefinitionDeclared(Mutable<QName, OutputStatement,
+        public void onFullDefinitionDeclared(final Mutable<QName, OutputStatement,
                 EffectiveStatement<QName, OutputStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
             SUBSTATEMENT_VALIDATOR.validate(stmt);
index 8e43278b36c3c131fbf90ffaf6e2ddc1143c9ecd..65508fa7626309a15a76146d61ab48166fa6f80f 100644 (file)
@@ -30,10 +30,10 @@ import org.slf4j.LoggerFactory;
 public class PatternStatementImpl extends AbstractDeclaredStatement<PatternConstraint> implements PatternStatement {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(Rfc6020Mapping
             .PATTERN)
-            .add(Rfc6020Mapping.DESCRIPTION, 0, 1)
-            .add(Rfc6020Mapping.ERROR_APP_TAG, 0, 1)
-            .add(Rfc6020Mapping.ERROR_MESSAGE, 0, 1)
-            .add(Rfc6020Mapping.REFERENCE, 0, 1)
+            .addOptional(Rfc6020Mapping.DESCRIPTION)
+            .addOptional(Rfc6020Mapping.ERROR_APP_TAG)
+            .addOptional(Rfc6020Mapping.ERROR_MESSAGE)
+            .addOptional(Rfc6020Mapping.REFERENCE)
             .build();
     private static final Logger LOG = LoggerFactory.getLogger(PatternStatementImpl.class);
 
@@ -75,7 +75,7 @@ public class PatternStatementImpl extends AbstractDeclaredStatement<PatternConst
         }
 
         @Override
-        public void onFullDefinitionDeclared(StmtContext.Mutable<PatternConstraint, PatternStatement,
+        public void onFullDefinitionDeclared(final StmtContext.Mutable<PatternConstraint, PatternStatement,
                 EffectiveStatement<PatternConstraint, PatternStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
             SUBSTATEMENT_VALIDATOR.validate(stmt);
index ef7c0c8e2cca18d798a2f699a3816783ac6d73b6..c91395b00802894be8bb33c12934d130a85f0a71 100644 (file)
@@ -26,10 +26,10 @@ import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.type.RangeE
 public class RangeStatementImpl extends AbstractDeclaredStatement<List<RangeConstraint>> implements RangeStatement {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(Rfc6020Mapping
             .RANGE)
-            .add(Rfc6020Mapping.DESCRIPTION, 0, 1)
-            .add(Rfc6020Mapping.ERROR_APP_TAG, 0, 1)
-            .add(Rfc6020Mapping.ERROR_MESSAGE, 0, 1)
-            .add(Rfc6020Mapping.REFERENCE, 0, 1)
+            .addOptional(Rfc6020Mapping.DESCRIPTION)
+            .addOptional(Rfc6020Mapping.ERROR_APP_TAG)
+            .addOptional(Rfc6020Mapping.ERROR_MESSAGE)
+            .addOptional(Rfc6020Mapping.REFERENCE)
             .build();
 
     // these objects are to compare whether range has MAX or MIN value
@@ -37,7 +37,7 @@ public class RangeStatementImpl extends AbstractDeclaredStatement<List<RangeCons
     public static final BigDecimal YANG_MIN_NUM = BigDecimal.valueOf(-Double.MAX_VALUE);
     public static final BigDecimal YANG_MAX_NUM = BigDecimal.valueOf(Double.MAX_VALUE);
 
-    protected RangeStatementImpl(StmtContext<List<RangeConstraint>, RangeStatement, ?> context) {
+    protected RangeStatementImpl(final StmtContext<List<RangeConstraint>, RangeStatement, ?> context) {
         super(context);
     }
 
@@ -49,24 +49,24 @@ public class RangeStatementImpl extends AbstractDeclaredStatement<List<RangeCons
         }
 
         @Override
-        public List<RangeConstraint> parseArgumentValue(StmtContext<?, ?, ?> ctx, String value) {
+        public List<RangeConstraint> parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
             return TypeUtils.parseRangeListFromString(ctx, value);
         }
 
         @Override
-        public RangeStatement createDeclared(StmtContext<List<RangeConstraint>, RangeStatement, ?> ctx) {
+        public RangeStatement createDeclared(final StmtContext<List<RangeConstraint>, RangeStatement, ?> ctx) {
             return new RangeStatementImpl(ctx);
         }
 
         @Override
         public EffectiveStatement<List<RangeConstraint>, RangeStatement> createEffective(
-                StmtContext<List<RangeConstraint>, RangeStatement, EffectiveStatement<List<RangeConstraint>,
+                final StmtContext<List<RangeConstraint>, RangeStatement, EffectiveStatement<List<RangeConstraint>,
                         RangeStatement>> ctx) {
             return new RangeEffectiveStatementImpl(ctx);
         }
 
         @Override
-        public void onFullDefinitionDeclared(StmtContext.Mutable<List<RangeConstraint>, RangeStatement,
+        public void onFullDefinitionDeclared(final StmtContext.Mutable<List<RangeConstraint>, RangeStatement,
                 EffectiveStatement<List<RangeConstraint>, RangeStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
             SUBSTATEMENT_VALIDATOR.validate(stmt);
index e7c2668f77edb2b10d19b77d1ecfafeca42cb48f..cd474df4afb7c44253cd400767f56c645a603216 100644 (file)
@@ -8,8 +8,6 @@
 
 package org.opendaylight.yangtools.yang.parser.stmt.rfc6020;
 
-import static org.opendaylight.yangtools.yang.parser.spi.SubstatementValidator.MAX;
-
 import javax.annotation.Nullable;
 import org.opendaylight.yangtools.yang.model.api.Rfc6020Mapping;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
@@ -26,15 +24,15 @@ import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.RefineEffec
 public class RefineStatementImpl extends AbstractDeclaredStatement<SchemaNodeIdentifier> implements RefineStatement {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(Rfc6020Mapping
             .REFINE)
-            .add(Rfc6020Mapping.DEFAULT, 0, 1)
-            .add(Rfc6020Mapping.DESCRIPTION, 0, 1)
-            .add(Rfc6020Mapping.REFERENCE, 0, 1)
-            .add(Rfc6020Mapping.CONFIG, 0, 1)
-            .add(Rfc6020Mapping.MANDATORY, 0, 1)
-            .add(Rfc6020Mapping.PRESENCE, 0, 1)
-            .add(Rfc6020Mapping.MUST, 0, MAX)
-            .add(Rfc6020Mapping.MIN_ELEMENTS, 0, 1)
-            .add(Rfc6020Mapping.MAX_ELEMENTS, 0, 1)
+            .addOptional(Rfc6020Mapping.DEFAULT)
+            .addOptional(Rfc6020Mapping.DESCRIPTION)
+            .addOptional(Rfc6020Mapping.REFERENCE)
+            .addOptional(Rfc6020Mapping.CONFIG)
+            .addOptional(Rfc6020Mapping.MANDATORY)
+            .addOptional(Rfc6020Mapping.PRESENCE)
+            .addAny(Rfc6020Mapping.MUST)
+            .addOptional(Rfc6020Mapping.MIN_ELEMENTS)
+            .addOptional(Rfc6020Mapping.MAX_ELEMENTS)
             .build();
 
     protected RefineStatementImpl(final StmtContext<SchemaNodeIdentifier, RefineStatement, ?> context) {
@@ -65,7 +63,7 @@ public class RefineStatementImpl extends AbstractDeclaredStatement<SchemaNodeIde
         }
 
         @Override
-        public void onFullDefinitionDeclared(StmtContext.Mutable<SchemaNodeIdentifier, RefineStatement,
+        public void onFullDefinitionDeclared(final StmtContext.Mutable<SchemaNodeIdentifier, RefineStatement,
                 EffectiveStatement<SchemaNodeIdentifier, RefineStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
             SUBSTATEMENT_VALIDATOR.validate(stmt);
index 5ac76435214e14a0495d203eaa7ea7f1d053f772..ffa0765aec3fcd345e9d9fbea538cd77e0529c37 100644 (file)
@@ -27,7 +27,9 @@ public class RevisionStatementImpl extends AbstractDeclaredStatement<Date>
         implements RevisionStatement {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(
         Rfc6020Mapping.REVISION)
-            .add(Rfc6020Mapping.DESCRIPTION, 0, 1).add(Rfc6020Mapping.REFERENCE, 0, 1).build();
+            .addOptional(Rfc6020Mapping.DESCRIPTION)
+            .addOptional(Rfc6020Mapping.REFERENCE)
+            .build();
 
     protected RevisionStatementImpl(final StmtContext<Date, RevisionStatement, ?> context) {
         super(context);
index 1a3006a6e24a8fc8229bf2e6b41045f39fa4410c..e43908b6d7f73a8f9de131c16476698c3deb89eb 100644 (file)
@@ -7,8 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.parser.stmt.rfc6020;
 
-import static org.opendaylight.yangtools.yang.parser.spi.SubstatementValidator.MAX;
-
 import java.util.Collection;
 import javax.annotation.Nullable;
 import org.opendaylight.yangtools.yang.common.QName;
@@ -34,17 +32,17 @@ public class RpcStatementImpl extends AbstractDeclaredStatement<QName>
         implements RpcStatement {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(Rfc6020Mapping
             .RPC)
-            .add(Rfc6020Mapping.DESCRIPTION, 0, 1)
-            .add(Rfc6020Mapping.GROUPING, 0, MAX)
-            .add(Rfc6020Mapping.IF_FEATURE, 0, MAX)
-            .add(Rfc6020Mapping.INPUT, 0, 1)
-            .add(Rfc6020Mapping.OUTPUT, 0, 1)
-            .add(Rfc6020Mapping.REFERENCE, 0, 1)
-            .add(Rfc6020Mapping.STATUS, 0, 1)
-            .add(Rfc6020Mapping.TYPEDEF, 0, MAX)
+            .addOptional(Rfc6020Mapping.DESCRIPTION)
+            .addAny(Rfc6020Mapping.GROUPING)
+            .addAny(Rfc6020Mapping.IF_FEATURE)
+            .addOptional(Rfc6020Mapping.INPUT)
+            .addOptional(Rfc6020Mapping.OUTPUT)
+            .addOptional(Rfc6020Mapping.REFERENCE)
+            .addOptional(Rfc6020Mapping.STATUS)
+            .addAny(Rfc6020Mapping.TYPEDEF)
             .build();
 
-    protected RpcStatementImpl(StmtContext<QName, RpcStatement, ?> context) {
+    protected RpcStatementImpl(final StmtContext<QName, RpcStatement, ?> context) {
         super(context);
     }
 
@@ -57,29 +55,29 @@ public class RpcStatementImpl extends AbstractDeclaredStatement<QName>
         }
 
         @Override
-        public QName parseArgumentValue(StmtContext<?, ?, ?> ctx, String value) {
+        public QName parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
             return Utils.qNameFromArgument(ctx, value);
         }
 
         @Override
-        public void onStatementAdded(Mutable<QName, RpcStatement, EffectiveStatement<QName, RpcStatement>> stmt) {
+        public void onStatementAdded(final Mutable<QName, RpcStatement, EffectiveStatement<QName, RpcStatement>> stmt) {
             stmt.getParentContext().addToNs(ChildSchemaNodes.class, stmt.getStatementArgument(), stmt);
         }
 
         @Override
         public RpcStatement createDeclared(
-                StmtContext<QName, RpcStatement, ?> ctx) {
+                final StmtContext<QName, RpcStatement, ?> ctx) {
             return new RpcStatementImpl(ctx);
         }
 
         @Override
         public EffectiveStatement<QName, RpcStatement> createEffective(
-                StmtContext<QName, RpcStatement, EffectiveStatement<QName, RpcStatement>> ctx) {
+                final StmtContext<QName, RpcStatement, EffectiveStatement<QName, RpcStatement>> ctx) {
             return new RpcEffectiveStatementImpl(ctx);
         }
 
         @Override
-        public void onFullDefinitionDeclared(Mutable<QName, RpcStatement, EffectiveStatement<QName, RpcStatement>> stmt) {
+        public void onFullDefinitionDeclared(final Mutable<QName, RpcStatement, EffectiveStatement<QName, RpcStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
             SUBSTATEMENT_VALIDATOR.validate(stmt);
         }
index 58a55cd70a500b72cf7c052de9bf1d541c618aec..b57bf59c80e29b91e719d4e8587e7db9becefd3a 100644 (file)
@@ -7,8 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.parser.stmt.rfc6020;
 
-import static org.opendaylight.yangtools.yang.parser.spi.SubstatementValidator.MAX;
-
 import java.util.Collection;
 import org.opendaylight.yangtools.yang.model.api.Rfc6020Mapping;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
@@ -25,11 +23,11 @@ public class StringRestrictionsImpl extends AbstractDeclaredStatement<String> im
         TypeStatement.StringRestrictions {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(Rfc6020Mapping
             .TYPE)
-            .add(Rfc6020Mapping.LENGTH, 0, 1)
-            .add(Rfc6020Mapping.PATTERN, 0, MAX)
+            .addOptional(Rfc6020Mapping.LENGTH)
+            .addAny(Rfc6020Mapping.PATTERN)
             .build();
 
-    protected StringRestrictionsImpl(StmtContext<String, TypeStatement.StringRestrictions, ?> context) {
+    protected StringRestrictionsImpl(final StmtContext<String, TypeStatement.StringRestrictions, ?> context) {
         super(context);
     }
 
@@ -42,24 +40,24 @@ public class StringRestrictionsImpl extends AbstractDeclaredStatement<String> im
         }
 
         @Override
-        public String parseArgumentValue(StmtContext<?, ?, ?> ctx, String value) {
+        public String parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
             return value;
         }
 
         @Override
         public TypeStatement.StringRestrictions createDeclared(
-                StmtContext<String, TypeStatement.StringRestrictions, ?> ctx) {
+                final StmtContext<String, TypeStatement.StringRestrictions, ?> ctx) {
             return new StringRestrictionsImpl(ctx);
         }
 
         @Override
         public EffectiveStatement<String, TypeStatement.StringRestrictions> createEffective(
-                StmtContext<String, TypeStatement.StringRestrictions, EffectiveStatement<String, TypeStatement.StringRestrictions>> ctx) {
+                final StmtContext<String, TypeStatement.StringRestrictions, EffectiveStatement<String, TypeStatement.StringRestrictions>> ctx) {
             return new StringRestrictionsEffectiveStatementImpl(ctx);
         }
 
         @Override
-        public void onFullDefinitionDeclared(StmtContext.Mutable<String, StringRestrictions,
+        public void onFullDefinitionDeclared(final StmtContext.Mutable<String, StringRestrictions,
                 EffectiveStatement<String, StringRestrictions>> stmt) {
             super.onFullDefinitionDeclared(stmt);
             SUBSTATEMENT_VALIDATOR.validate(stmt);
index df31b95d4d3fa5743544aea91c49592f0a46d921..c009a7fe6c5c27cb022d5d08d074ec504c7a397e 100644 (file)
@@ -7,9 +7,9 @@
  */
 package org.opendaylight.yangtools.yang.parser.stmt.rfc6020;
 
-import static org.opendaylight.yangtools.yang.parser.spi.SubstatementValidator.MAX;
 import static org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils.findFirstDeclaredSubstatement;
 import static org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils.firstAttributeOf;
+
 import com.google.common.base.Optional;
 import java.util.Date;
 import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
@@ -33,31 +33,31 @@ import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.SubmoduleEf
 public class SubmoduleStatementImpl extends AbstractRootStatement<SubmoduleStatement> implements SubmoduleStatement {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(Rfc6020Mapping
             .SUBMODULE)
-            .add(Rfc6020Mapping.ANYXML, 0, MAX)
-            .add(Rfc6020Mapping.AUGMENT, 0, MAX)
-            .add(Rfc6020Mapping.BELONGS_TO, 1, 1)
-            .add(Rfc6020Mapping.CHOICE, 0, MAX)
-            .add(Rfc6020Mapping.CONTACT, 0, 1)
-            .add(Rfc6020Mapping.CONTAINER, 0, MAX)
-            .add(Rfc6020Mapping.DESCRIPTION, 0, 1)
-            .add(Rfc6020Mapping.DEVIATION, 0, MAX)
-            .add(Rfc6020Mapping.EXTENSION, 0, MAX)
-            .add(Rfc6020Mapping.FEATURE, 0, MAX)
-            .add(Rfc6020Mapping.GROUPING, 0, MAX)
-            .add(Rfc6020Mapping.IDENTITY, 0, MAX)
-            .add(Rfc6020Mapping.IMPORT, 0, MAX)
-            .add(Rfc6020Mapping.INCLUDE, 0, MAX)
-            .add(Rfc6020Mapping.LEAF, 0, MAX)
-            .add(Rfc6020Mapping.LEAF_LIST, 0, MAX)
-            .add(Rfc6020Mapping.LIST, 0, MAX)
-            .add(Rfc6020Mapping.NOTIFICATION, 0, MAX)
-            .add(Rfc6020Mapping.ORGANIZATION, 0, 1)
-            .add(Rfc6020Mapping.REFERENCE, 0, 1)
-            .add(Rfc6020Mapping.REVISION, 0, MAX)
-            .add(Rfc6020Mapping.RPC, 0, MAX)
-            .add(Rfc6020Mapping.TYPEDEF, 0, MAX)
-            .add(Rfc6020Mapping.USES, 0, MAX)
-            .add(Rfc6020Mapping.YANG_VERSION, 0, 1)
+            .addAny(Rfc6020Mapping.ANYXML)
+            .addAny(Rfc6020Mapping.AUGMENT)
+            .addMandatory(Rfc6020Mapping.BELONGS_TO)
+            .addAny(Rfc6020Mapping.CHOICE)
+            .addOptional(Rfc6020Mapping.CONTACT)
+            .addAny(Rfc6020Mapping.CONTAINER)
+            .addOptional(Rfc6020Mapping.DESCRIPTION)
+            .addAny(Rfc6020Mapping.DEVIATION)
+            .addAny(Rfc6020Mapping.EXTENSION)
+            .addAny(Rfc6020Mapping.FEATURE)
+            .addAny(Rfc6020Mapping.GROUPING)
+            .addAny(Rfc6020Mapping.IDENTITY)
+            .addAny(Rfc6020Mapping.IMPORT)
+            .addAny(Rfc6020Mapping.INCLUDE)
+            .addAny(Rfc6020Mapping.LEAF)
+            .addAny(Rfc6020Mapping.LEAF_LIST)
+            .addAny(Rfc6020Mapping.LIST)
+            .addAny(Rfc6020Mapping.NOTIFICATION)
+            .addOptional(Rfc6020Mapping.ORGANIZATION)
+            .addOptional(Rfc6020Mapping.REFERENCE)
+            .addAny(Rfc6020Mapping.REVISION)
+            .addAny(Rfc6020Mapping.RPC)
+            .addAny(Rfc6020Mapping.TYPEDEF)
+            .addAny(Rfc6020Mapping.USES)
+            .addOptional(Rfc6020Mapping.YANG_VERSION)
             .build();
     private static final Optional<Date> DEFAULT_REVISION = Optional.of(SimpleDateFormatUtil.DEFAULT_DATE_REV);
 
index ba3bbb982e0a64e5fc88316df9480b42b17598ea..758f6c1343f2bbe0b6779fdc38ee36b13477c99d 100644 (file)
@@ -7,7 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.parser.stmt.rfc6020;
 
-import static org.opendaylight.yangtools.yang.parser.spi.SubstatementValidator.MAX;
 import com.google.common.base.Verify;
 import java.util.Collection;
 import javax.annotation.Nonnull;
@@ -64,16 +63,16 @@ public class TypeStatementImpl extends AbstractDeclaredStatement<String>
         implements TypeStatement {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(Rfc6020Mapping
             .TYPE)
-            .add(Rfc6020Mapping.BASE, 0, 1)
-            .add(Rfc6020Mapping.BIT, 0, MAX)
-            .add(Rfc6020Mapping.ENUM, 0, MAX)
-            .add(Rfc6020Mapping.FRACTION_DIGITS, 0, 1)
-            .add(Rfc6020Mapping.LENGTH, 0, 1)
-            .add(Rfc6020Mapping.PATH, 0, 1)
-            .add(Rfc6020Mapping.PATTERN, 0, MAX)
-            .add(Rfc6020Mapping.RANGE, 0, 1)
-            .add(Rfc6020Mapping.REQUIRE_INSTANCE, 0, 1)
-            .add(Rfc6020Mapping.TYPE, 0, MAX)
+            .addOptional(Rfc6020Mapping.BASE)
+            .addAny(Rfc6020Mapping.BIT)
+            .addAny(Rfc6020Mapping.ENUM)
+            .addOptional(Rfc6020Mapping.FRACTION_DIGITS)
+            .addOptional(Rfc6020Mapping.LENGTH)
+            .addOptional(Rfc6020Mapping.PATH)
+            .addAny(Rfc6020Mapping.PATTERN)
+            .addOptional(Rfc6020Mapping.RANGE)
+            .addOptional(Rfc6020Mapping.REQUIRE_INSTANCE)
+            .addAny(Rfc6020Mapping.TYPE)
             .build();
 
     protected TypeStatementImpl(final StmtContext<String, TypeStatement, ?> context) {
index 0d845ca773c19d579d3a7b703c59bf2f9cf181b9..726214bbd000439f82d98b5ded893161f65cce93 100644 (file)
@@ -29,12 +29,12 @@ import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.TypeDefEffe
 public class TypedefStatementImpl extends AbstractDeclaredStatement<QName> implements TypedefStatement {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(Rfc6020Mapping
             .TYPEDEF)
-            .add(Rfc6020Mapping.DEFAULT, 0, 1)
-            .add(Rfc6020Mapping.DESCRIPTION, 0, 1)
-            .add(Rfc6020Mapping.REFERENCE, 0, 1)
-            .add(Rfc6020Mapping.STATUS, 0, 1)
-            .add(Rfc6020Mapping.TYPE, 1, 1)
-            .add(Rfc6020Mapping.UNITS, 0, 1)
+            .addOptional(Rfc6020Mapping.DEFAULT)
+            .addOptional(Rfc6020Mapping.DESCRIPTION)
+            .addOptional(Rfc6020Mapping.REFERENCE)
+            .addOptional(Rfc6020Mapping.STATUS)
+            .addMandatory(Rfc6020Mapping.TYPE)
+            .addOptional(Rfc6020Mapping.UNITS)
             .build();
 
     protected TypedefStatementImpl(final StmtContext<QName, TypedefStatement, ?> context) {
index a3c501b79124e89d4409342dd8f5b67add0d3d4f..d9a51f9793f16235a383ddda21ac24391a028684 100644 (file)
@@ -7,8 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.parser.stmt.rfc6020;
 
-import static org.opendaylight.yangtools.yang.parser.spi.SubstatementValidator.MAX;
-
 import java.util.Collection;
 import org.opendaylight.yangtools.yang.model.api.Rfc6020Mapping;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
@@ -23,11 +21,11 @@ public class UnionSpecificationImpl extends AbstractDeclaredStatement<String>
         implements TypeStatement.UnionSpecification {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(Rfc6020Mapping
             .TYPE)
-            .add(Rfc6020Mapping.TYPE, 1, MAX)
+            .addMultiple(Rfc6020Mapping.TYPE)
             .build();
 
     protected UnionSpecificationImpl(
-            StmtContext<String, TypeStatement.UnionSpecification, ?> context) {
+            final StmtContext<String, TypeStatement.UnionSpecification, ?> context) {
         super(context);
     }
 
@@ -38,24 +36,24 @@ public class UnionSpecificationImpl extends AbstractDeclaredStatement<String>
         }
 
         @Override
-        public String parseArgumentValue(StmtContext<?, ?, ?> ctx, String value) {
+        public String parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
             return value;
         }
 
         @Override
         public TypeStatement.UnionSpecification createDeclared(
-                StmtContext<String, TypeStatement.UnionSpecification, ?> ctx) {
+                final StmtContext<String, TypeStatement.UnionSpecification, ?> ctx) {
             return new UnionSpecificationImpl(ctx);
         }
 
         @Override
         public EffectiveStatement<String, TypeStatement.UnionSpecification> createEffective(
-                StmtContext<String, TypeStatement.UnionSpecification, EffectiveStatement<String, TypeStatement.UnionSpecification>> ctx) {
+                final StmtContext<String, TypeStatement.UnionSpecification, EffectiveStatement<String, TypeStatement.UnionSpecification>> ctx) {
             return new UnionSpecificationEffectiveStatementImpl(ctx);
         }
 
         @Override
-        public void onFullDefinitionDeclared(StmtContext.Mutable<String, UnionSpecification, EffectiveStatement<String, UnionSpecification>> stmt) {
+        public void onFullDefinitionDeclared(final StmtContext.Mutable<String, UnionSpecification, EffectiveStatement<String, UnionSpecification>> stmt) {
             super.onFullDefinitionDeclared(stmt);
             SUBSTATEMENT_VALIDATOR.validate(stmt);
         }
index 92083c435ec472f1d68e4ab9bb321ad6604a3cb2..7ad0114de9f3d08decb1e2b0ef13bb5ef3c0c096 100644 (file)
@@ -7,7 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.parser.stmt.rfc6020;
 
-import static org.opendaylight.yangtools.yang.parser.spi.SubstatementValidator.MAX;
 import java.util.Collection;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.Rfc6020Mapping;
@@ -41,13 +40,13 @@ import org.slf4j.LoggerFactory;
 public class UsesStatementImpl extends AbstractDeclaredStatement<QName> implements UsesStatement {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(Rfc6020Mapping
             .USES)
-            .add(Rfc6020Mapping.AUGMENT, 0, MAX)
-            .add(Rfc6020Mapping.DESCRIPTION, 0, 1)
-            .add(Rfc6020Mapping.IF_FEATURE, 0, MAX)
-            .add(Rfc6020Mapping.REFINE, 0, MAX)
-            .add(Rfc6020Mapping.REFERENCE, 0, 1)
-            .add(Rfc6020Mapping.STATUS, 0, 1)
-            .add(Rfc6020Mapping.WHEN, 0, 1)
+            .addAny(Rfc6020Mapping.AUGMENT)
+            .addOptional(Rfc6020Mapping.DESCRIPTION)
+            .addAny(Rfc6020Mapping.IF_FEATURE)
+            .addAny(Rfc6020Mapping.REFINE)
+            .addOptional(Rfc6020Mapping.REFERENCE)
+            .addOptional(Rfc6020Mapping.STATUS)
+            .addOptional(Rfc6020Mapping.WHEN)
             .build();
 
     private static final Logger LOG = LoggerFactory.getLogger(UsesStatementImpl.class);
index 573ef225b32666dc9513bfc8e47b29790101a247..6521c56eb10cf3ed98a8460411b6f2dceb628bcf 100644 (file)
@@ -24,8 +24,8 @@ import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.WhenEffecti
 public class WhenStatementImpl extends AbstractDeclaredStatement<RevisionAwareXPath> implements WhenStatement {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(Rfc6020Mapping
             .WHEN)
-            .add(Rfc6020Mapping.DESCRIPTION, 0, 1)
-            .add(Rfc6020Mapping.REFERENCE, 0, 1)
+            .addOptional(Rfc6020Mapping.DESCRIPTION)
+            .addOptional(Rfc6020Mapping.REFERENCE)
             .build();
 
     protected WhenStatementImpl(final StmtContext<RevisionAwareXPath, WhenStatement, ?> context) {
@@ -56,7 +56,7 @@ public class WhenStatementImpl extends AbstractDeclaredStatement<RevisionAwareXP
         }
 
         @Override
-        public void onFullDefinitionDeclared(StmtContext.Mutable<RevisionAwareXPath, WhenStatement,
+        public void onFullDefinitionDeclared(final StmtContext.Mutable<RevisionAwareXPath, WhenStatement,
                 EffectiveStatement<RevisionAwareXPath, WhenStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
             SUBSTATEMENT_VALIDATOR.validate(stmt);