Modernize yang-parser-reactor 41/101341/4
authorRobert Varga <robert.varga@pantheon.tech>
Sun, 29 May 2022 20:41:52 +0000 (22:41 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Sun, 29 May 2022 21:36:27 +0000 (23:36 +0200)
Use switch expressions and pattern match on instanceof to improve code
density.

Change-Id: Ia49f28782258986393e8932403a8468210b84856
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/BuildGlobalContext.java
parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/ReactorStmtCtx.java
parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/SourceSpecificContext.java
parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementContextBase.java
parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementDefinitionContext.java

index a38e5ec5205ce32f7f1790de40118ccef332986a..4a123f944eddd9b822cbf635d5d960b52dfc8054 100644 (file)
@@ -163,11 +163,9 @@ final class BuildGlobalContext extends NamespaceStorageSupport implements Regist
     @SuppressWarnings({ "unchecked", "rawtypes" })
     private <K, V, N extends ParserNamespace<K, V>> NamespaceBehaviourWithListeners<K, V, N> createNamespaceContext(
             final NamespaceBehaviour<K, V, N> potentialRaw) {
-        if (potentialRaw instanceof DerivedNamespaceBehaviour) {
-            final VirtualNamespaceContext derivedContext = new VirtualNamespaceContext(
-                    (DerivedNamespaceBehaviour) potentialRaw);
-            getNamespaceBehaviour(((DerivedNamespaceBehaviour) potentialRaw).getDerivedFrom()).addDerivedNamespace(
-                    derivedContext);
+        if (potentialRaw instanceof DerivedNamespaceBehaviour derived) {
+            final VirtualNamespaceContext derivedContext = new VirtualNamespaceContext(derived);
+            getNamespaceBehaviour(derived.getDerivedFrom()).addDerivedNamespace(derivedContext);
             return derivedContext;
         }
         return new SimpleNamespaceContext<>(potentialRaw);
index f2a33e9f74734d631569f2b56760e7a9af73b7f5..dd89e878f2f6a577aa1d1a4aaf3e7afee6075dfe 100644 (file)
@@ -299,16 +299,12 @@ abstract class ReactorStmtCtx<A, D extends DeclaredStatement<A>, E extends Effec
 
     private String refString() {
         final int current = refcount;
-        switch (current) {
-            case REFCOUNT_DEFUNCT:
-                return "DEFUNCT";
-            case REFCOUNT_SWEEPING:
-                return "SWEEPING";
-            case REFCOUNT_SWEPT:
-                return "SWEPT";
-            default:
-                return String.valueOf(refcount);
-        }
+        return switch (current) {
+            case REFCOUNT_DEFUNCT -> "DEFUNCT";
+            case REFCOUNT_SWEEPING -> "SWEEPING";
+            case REFCOUNT_SWEPT -> "SWEPT";
+            default -> String.valueOf(refcount);
+        };
     }
 
     /**
@@ -657,17 +653,17 @@ abstract class ReactorStmtCtx<A, D extends DeclaredStatement<A>, E extends Effec
         }
 
         final Object argument = argument();
-        if (argument instanceof QName) {
-            return ((QName) argument).getModule();
+        if (argument instanceof QName qname) {
+            return qname.getModule();
         }
-        if (argument instanceof String) {
+        if (argument instanceof String str) {
             // FIXME: This may yield illegal argument exceptions
-            return StmtContextUtils.qnameFromArgument(getOriginalCtx().orElse(this), (String) argument).getModule();
+            return StmtContextUtils.qnameFromArgument(getOriginalCtx().orElse(this), str).getModule();
         }
-        if (argument instanceof SchemaNodeIdentifier
+        if (argument instanceof SchemaNodeIdentifier sni
                 && (producesDeclared(AugmentStatement.class) || producesDeclared(RefineStatement.class)
                         || producesDeclared(DeviationStatement.class))) {
-            return ((SchemaNodeIdentifier) argument).lastNodeIdentifier().getModule();
+            return sni.lastNodeIdentifier().getModule();
         }
 
         return coerceParent().effectiveNamespace();
index 4626f24fc10b44a25a643b4f2526c4f5e8e88668..676966472a3c7eb8099e3892686830269caed099 100644 (file)
@@ -390,17 +390,16 @@ final class SourceSpecificContext implements NamespaceStorageNode, NamespaceBeha
             }
         }
 
-        switch (exceptions.size()) {
-            case 0:
-                return Optional.empty();
-            case 1:
-                return Optional.of(exceptions.get(0));
-            default:
+        return switch (exceptions.size()) {
+            case 0 -> Optional.empty();
+            case 1 -> Optional.of(exceptions.get(0));
+            default -> {
                 final String message = String.format("Yang model processing phase %s failed", identifier);
                 final InferenceException ex = new InferenceException(message, root, exceptions.get(0));
                 exceptions.listIterator(1).forEachRemaining(ex::addSuppressed);
-                return Optional.of(ex);
-        }
+                yield Optional.of(ex);
+            }
+        };
     }
 
     void loadStatements() {
index 3ee005a363e0105327c909a1c9b33f2f6967c186..81adc400687ae0cf961e2923f34ac30ffe2dbc1a 100644 (file)
@@ -338,8 +338,8 @@ abstract class StatementContextBase<A, D extends DeclaredStatement<A>, E extends
 
     static final void afterAddEffectiveSubstatement(final Mutable<?, ?, ?> substatement) {
         // Undeclared statements still need to have 'onDeclarationFinished()' triggered
-        if (substatement instanceof UndeclaredStmtCtx) {
-            finishDeclaration((UndeclaredStmtCtx<?, ?, ?>) substatement);
+        if (substatement instanceof UndeclaredStmtCtx<?, ?, ?> undeclared) {
+            finishDeclaration(undeclared);
         }
     }
 
@@ -424,8 +424,8 @@ abstract class StatementContextBase<A, D extends DeclaredStatement<A>, E extends
     @Override
     final E createEffective() {
         final E result = createEffective(definition.getFactory());
-        if (result instanceof MutableStatement) {
-            getRoot().addMutableStmtToSeal((MutableStatement) result);
+        if (result instanceof MutableStatement mutable) {
+            getRoot().addMutableStmtToSeal(mutable);
         }
         return result;
     }
@@ -779,10 +779,10 @@ abstract class StatementContextBase<A, D extends DeclaredStatement<A>, E extends
     public final Mutable<?, ?, ?> childCopyOf(final StmtContext<?, ?, ?> stmt, final CopyType type,
             final QNameModule targetModule) {
         checkEffectiveModelCompleted(stmt);
-        if (stmt instanceof StatementContextBase) {
-            return childCopyOf((StatementContextBase<?, ?, ?>) stmt, type, targetModule);
-        } else if (stmt instanceof ReplicaStatementContext) {
-            return ((ReplicaStatementContext<?, ?, ?>) stmt).replicaAsChildOf(this);
+        if (stmt instanceof StatementContextBase<?, ?, ?> base) {
+            return childCopyOf(base, type, targetModule);
+        } else if (stmt instanceof ReplicaStatementContext<?, ?, ?> replica) {
+            return replica.replicaAsChildOf(this);
         } else {
             throw new IllegalArgumentException("Unsupported statement " + stmt);
         }
index 64d30e8fe3c9a2043d26da88b4dea154fdd6f507..fc77ce9e619952a7f878dc79bdb593f2be53c598 100644 (file)
@@ -58,9 +58,8 @@ final class StatementDefinitionContext<A, D extends DeclaredStatement<A>, E exte
 
     Optional<StatementSupport<?, ?, ?>> getImplicitParentFor(final NamespaceStmtCtx parent,
             final StatementDefinition stmtDef) {
-        return support instanceof ImplicitParentAwareStatementSupport
-                ? ((ImplicitParentAwareStatementSupport) support).getImplicitParentFor(parent, stmtDef)
-                    : Optional.empty();
+        return support instanceof ImplicitParentAwareStatementSupport implicit
+                ? implicit.getImplicitParentFor(parent, stmtDef) : Optional.empty();
     }
 
     void onStatementAdded(final Mutable<A, D, E> stmt) {