Optimize Binding->NormalizedNode transforms 94/107394/1
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 5 Jul 2023 22:19:48 +0000 (00:19 +0200)
committerGilles Thouenon <gilles.thouenon@orange.com>
Fri, 11 Aug 2023 15:25:30 +0000 (17:25 +0200)
We are running serialization twice. Store the result in a local variable
and check against that.

Change-Id: Ifeb3fd35f2c0f066015c1f262deefb2667459372
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/util/test/JsonUtil.java
pce/src/test/java/org/opendaylight/transportpce/pce/utils/JsonUtil.java

index 714216face8091ee7e5e293cfc0d1dcbd1e94c3a..fdafae5db7499af913020de75ff8a6737ab3f5f2 100644 (file)
@@ -11,6 +11,7 @@ import com.google.gson.stream.JsonReader;
 import java.io.IOException;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Map.Entry;
 import java.util.ServiceLoader;
 import org.opendaylight.mdsal.binding.dom.adapter.CurrentAdapterSerializer;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
@@ -18,6 +19,7 @@ import org.opendaylight.mdsal.binding.dom.codec.impl.BindingCodecContext;
 import org.opendaylight.mdsal.binding.runtime.api.BindingRuntimeContext;
 import org.opendaylight.mdsal.binding.runtime.spi.BindingRuntimeHelpers;
 import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.binding.YangModelBindingProvider;
 import org.opendaylight.yangtools.yang.binding.YangModuleInfo;
 import org.opendaylight.yangtools.yang.common.QName;
@@ -68,11 +70,9 @@ public final class JsonUtil {
                         JSONCodecFactorySupplier.RFC7951.getShared(schemaCtx));) {
             jsonParser.parse(reader);
             YangInstanceIdentifier yangId = YangInstanceIdentifier.of(pathQname);
-            if (codecRegistry.fromNormalizedNode(yangId, result.getResult()) != null) {
-                return codecRegistry.fromNormalizedNode(yangId, result.getResult()).getValue();
-            } else {
-                return null;
-            }
+            Entry<InstanceIdentifier<?>, DataObject> entry =
+                codecRegistry.fromNormalizedNode(yangId, result.getResult());
+            return entry == null ? null : entry.getValue();
         } catch (IOException | IllegalArgumentException e) {
             LOG.error("Cannot deserialize JSON ", e);
             return null;
index be299d89bf3b1545cf23731424fcfc589f888606..1dc93f51cc42011342b34c00241d6809364559cc 100644 (file)
@@ -11,12 +11,14 @@ import com.google.gson.stream.JsonReader;
 import java.io.IOException;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Map.Entry;
 import java.util.ServiceLoader;
 import org.opendaylight.mdsal.binding.dom.codec.impl.BindingCodecContext;
 import org.opendaylight.mdsal.binding.dom.codec.spi.BindingDOMCodecServices;
 import org.opendaylight.mdsal.binding.runtime.api.BindingRuntimeContext;
 import org.opendaylight.mdsal.binding.runtime.spi.BindingRuntimeHelpers;
 import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.binding.YangModelBindingProvider;
 import org.opendaylight.yangtools.yang.binding.YangModuleInfo;
 import org.opendaylight.yangtools.yang.common.QName;
@@ -64,11 +66,9 @@ public final class JsonUtil {
                     JSONCodecFactorySupplier.RFC7951.getShared(schemaCtx));) {
             jsonParser.parse(reader);
             YangInstanceIdentifier yangId = YangInstanceIdentifier.of(pathQname);
-            if (bindingDOMCodecServices.fromNormalizedNode(yangId, result.getResult()) != null) {
-                return bindingDOMCodecServices.fromNormalizedNode(yangId, result.getResult()).getValue();
-            } else {
-                return null;
-            }
+            Entry<InstanceIdentifier<?>, DataObject> entry =
+                bindingDOMCodecServices.fromNormalizedNode(yangId, result.getResult());
+            return entry == null ? null : entry.getValue();
         } catch (IOException | IllegalArgumentException e) {
             LOG.error("Cannot deserialize JSON ", e);
             return null;