Use pattern match in JsonParserStream 02/112102/2
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 12 Jun 2024 12:00:58 +0000 (14:00 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Wed, 12 Jun 2024 16:51:55 +0000 (18:51 +0200)
Rather than doing an if/else, use a switch with patterns to adapt the
parent node.

Change-Id: I69791ccb2441a1a3d3ff6f50e086dd4955734d3e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
codec/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JsonParserStream.java

index d9d2fd1d0c1ce8bae87c309ab0dd9d7bb738bdce..674fbcbbca8776ea4fec64ae2fb08982eb7a0002 100644 (file)
@@ -47,7 +47,6 @@ import org.opendaylight.yangtools.yang.model.api.EffectiveStatementInference;
 import org.opendaylight.yangtools.yang.model.api.NotificationDefinition;
 import org.opendaylight.yangtools.yang.model.api.OperationDefinition;
 import org.opendaylight.yangtools.yang.model.api.TypedDataSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -81,18 +80,14 @@ public final class JsonParserStream implements Closeable, Flushable {
         this.lenient = lenient;
 
         if (!stack.isEmpty()) {
-            final EffectiveStatement<?, ?> parent = stack.currentStatement();
-            if (parent instanceof DataSchemaNode data) {
-                parentNode = data;
-            } else if (parent instanceof OperationDefinition oper) {
-                parentNode = oper.toContainerLike();
-            } else if (parent instanceof NotificationDefinition notif) {
-                parentNode = notif.toContainerLike();
-            } else if (parent instanceof YangDataSchemaNode yangData) {
-                parentNode = yangData.toContainerLike();
-            } else {
-                throw new IllegalArgumentException("Illegal parent node " + parent);
-            }
+            final var parent = stack.currentStatement();
+            parentNode = switch (parent) {
+                case DataSchemaNode data -> data;
+                case OperationDefinition oper -> oper.toContainerLike();
+                case NotificationDefinition notif -> notif.toContainerLike();
+                case YangDataSchemaNode yangData -> yangData.toContainerLike();
+                default -> throw new IllegalArgumentException("Illegal parent node " + parent);
+            };
         } else {
             parentNode = stack.modelContext();
         }