Clean up binding-model stuff a bit
[yangtools.git] / parser / yang-parser-rfc7950 / src / main / java / org / opendaylight / yangtools / yang / parser / rfc7950 / stmt / type / BitsSpecificationSupport.java
index 96dec62e10dd903a14f3f3dd26b246812b1279bf..4d5282d3fe17067bd0e7d2a3f20878bae5e443c5 100644 (file)
@@ -8,7 +8,6 @@
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.type;
 
 import com.google.common.collect.ImmutableList;
-import java.util.Optional;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.Uint32;
 import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
@@ -21,9 +20,9 @@ import org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition.Bit;
 import org.opendaylight.yangtools.yang.model.ri.type.BaseTypes;
 import org.opendaylight.yangtools.yang.model.ri.type.BitsTypeBuilder;
 import org.opendaylight.yangtools.yang.parser.api.YangParserConfiguration;
+import org.opendaylight.yangtools.yang.parser.spi.meta.BoundStmtCtx;
 import org.opendaylight.yangtools.yang.parser.spi.meta.CommonStmtCtx;
 import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
-import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
 import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
 
@@ -36,8 +35,8 @@ final class BitsSpecificationSupport extends AbstractTypeSupport<BitsSpecificati
     }
 
     @Override
-    protected BitsSpecification createDeclared(final StmtContext<QName, BitsSpecification, ?> ctx,
-            final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+    protected BitsSpecification createDeclared(final BoundStmtCtx<QName> ctx,
+            final ImmutableList<DeclaredStatement<?>> substatements) {
         if (substatements.isEmpty()) {
             throw noBits(ctx);
         }
@@ -60,11 +59,9 @@ final class BitsSpecificationSupport extends AbstractTypeSupport<BitsSpecificati
 
         final BitsTypeBuilder builder = BaseTypes.bitsTypeBuilder(stmt.argumentAsTypeQName());
         Uint32 highestPosition = null;
-        for (final EffectiveStatement<?, ?> subStmt : substatements) {
-            if (subStmt instanceof BitEffectiveStatement) {
-                final BitEffectiveStatement bitSubStmt = (BitEffectiveStatement) subStmt;
-
-                final Optional<Uint32> declaredPosition = bitSubStmt.getDeclaredPosition();
+        for (var subStmt : substatements) {
+            if (subStmt instanceof BitEffectiveStatement bitSubStmt) {
+                var declaredPosition = bitSubStmt.findDeclaredPosition();
                 final Uint32 effectivePos;
                 if (declaredPosition.isEmpty()) {
                     if (highestPosition != null) {
@@ -75,7 +72,7 @@ final class BitsSpecificationSupport extends AbstractTypeSupport<BitsSpecificati
                         effectivePos = Uint32.ZERO;
                     }
                 } else {
-                    effectivePos = declaredPosition.get();
+                    effectivePos = declaredPosition.orElseThrow();
                 }
 
                 final Bit bit = EffectiveTypeUtil.buildBit(bitSubStmt, effectivePos);
@@ -92,7 +89,7 @@ final class BitsSpecificationSupport extends AbstractTypeSupport<BitsSpecificati
 
     private static SourceException noBits(final CommonStmtCtx stmt) {
         /*
-         *  https://tools.ietf.org/html/rfc7950#section-9.7.4:
+         *  https://www.rfc-editor.org/rfc/rfc7950#section-9.7.4:
          *
          *     The "bit" statement, which is a substatement to the "type" statement,
          *     MUST be present if the type is "bits".