Remove JsonUtils from test-common 54/114954/3
authorGilles Thouenon <gilles.thouenon@orange.com>
Mon, 27 Jan 2025 10:45:31 +0000 (11:45 +0100)
committerGilles Thouenon <gilles.thouenon@orange.com>
Fri, 31 Jan 2025 08:41:55 +0000 (09:41 +0100)
This code now becomes redundant with the code for the new
JsonDataConverter. Migrate its few uses to JsonDataConverter and delete
JsonUtils which is then no longer used.

JIRA: TRNSPRTPCE-847
Change-Id: I37ec3c66b6d4c5093341a4e2e86d8dc23081bd16
Signed-off-by: Gilles Thouenon <gilles.thouenon@orange.com>
networkmodel/src/test/java/org/opendaylight/transportpce/networkmodel/util/OpenRoadmOtnTopologyTest.java
pce/src/test/java/org/opendaylight/transportpce/pce/gnpy/GnpyUtilitiesImplTest.java
pce/src/test/java/org/opendaylight/transportpce/pce/graph/PceGraphTest.java
pce/src/test/java/org/opendaylight/transportpce/pce/utils/PceTestUtils.java
test-common/src/main/java/org/opendaylight/transportpce/test/converter/JsonUtil.java [deleted file]

index 9383bee817e1707b4d4d9ed406146a633524b93e..df6a27ee3a867482c666c0d781f5629695a522e4 100644 (file)
@@ -21,7 +21,6 @@ import static org.junit.jupiter.api.Assertions.assertNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.junit.jupiter.api.Assertions.fail;
 
-import com.google.gson.stream.JsonReader;
 import java.io.FileReader;
 import java.io.IOException;
 import java.io.Reader;
@@ -34,7 +33,7 @@ import java.util.stream.Collectors;
 import org.junit.jupiter.api.Test;
 import org.opendaylight.transportpce.networkmodel.dto.TopologyShard;
 import org.opendaylight.transportpce.networkmodel.util.test.NetworkmodelTestUtil;
-import org.opendaylight.transportpce.test.converter.JsonUtil;
+import org.opendaylight.transportpce.test.converter.JsonDataConverter;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev240923.OtnLinkType;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev240315.Network;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev240315.mapping.Mapping;
@@ -83,10 +82,8 @@ public class OpenRoadmOtnTopologyTest {
     private Nodes portMappingBad;
 
     public OpenRoadmOtnTopologyTest() {
-        try (Reader reader = new FileReader("src/test/resources/portMapping.json", StandardCharsets.UTF_8);
-                JsonReader portMappingReader = new JsonReader(reader)) {
-            Network portMapping = (Network) JsonUtil.getInstance()
-                .getDataObjectFromJson(portMappingReader, Network.QNAME);
+        try (Reader reader = new FileReader("src/test/resources/portMapping.json", StandardCharsets.UTF_8)) {
+            Network portMapping = (Network) new JsonDataConverter(null).deserialize(reader, Network.QNAME);
             for (Nodes nodes : portMapping.nonnullNodes().values()) {
                 if (nodes.getNodeId().equals("XPDR-A1")) {
                     this.portMappingTpdr = nodes;
index 98a783d2a47a570a136241cd7fa750edab371013..8a5d817da6838ae2aff320cb27d84cf330fafa83 100644 (file)
@@ -20,7 +20,6 @@ import static org.junit.jupiter.api.Assertions.assertNull;
 import static org.junit.jupiter.api.Assertions.fail;
 
 import com.github.tomakehurst.wiremock.WireMockServer;
-import com.google.gson.stream.JsonReader;
 import java.io.FileNotFoundException;
 import java.io.FileReader;
 import java.io.IOException;
@@ -42,7 +41,7 @@ import org.opendaylight.transportpce.pce.gnpy.consumer.GnpyConsumer;
 import org.opendaylight.transportpce.pce.gnpy.consumer.GnpyConsumerImpl;
 import org.opendaylight.transportpce.pce.utils.PceTestData;
 import org.opendaylight.transportpce.test.AbstractTest;
-import org.opendaylight.transportpce.test.converter.JsonUtil;
+import org.opendaylight.transportpce.test.converter.JsonDataConverter;
 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.AToZDirectionBuilder;
 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.ZToADirectionBuilder;
 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.atoz.direction.AToZ;
@@ -90,40 +89,21 @@ class GnpyUtilitiesImplTest extends AbstractTest {
 
     GnpyUtilitiesImplTest() throws IOException {
         networkTransaction = new NetworkTransactionImpl(getDataBroker());
-        JsonReader networkReader = null;
-        JsonReader topoReader = null;
-
         try {
             // load openroadm-network
-            Reader gnpyNetwork = new FileReader("src/test/resources/gnpy/gnpy_network.json",
-                    StandardCharsets.UTF_8);
-
-            networkReader = new JsonReader(gnpyNetwork);
-            Networks networks = (Networks) JsonUtil.getInstance().getDataObjectFromJson(networkReader, Networks.QNAME);
+            Reader gnpyNetwork = new FileReader("src/test/resources/gnpy/gnpy_network.json", StandardCharsets.UTF_8);
+            Networks networks = (Networks) new JsonDataConverter(null).deserialize(gnpyNetwork, Networks.QNAME);
             saveOpenRoadmNetwork(networks.getNetwork().values().iterator().next(), StringConstants.OPENROADM_NETWORK);
             // load openroadm-topology
-            Reader gnpyTopo = new FileReader("src/test/resources/gnpy/gnpy_topology.json",
-                    StandardCharsets.UTF_8);
-            topoReader = new JsonReader(gnpyTopo);
-            networks = (Networks) JsonUtil.getInstance().getDataObjectFromJson(topoReader, Networks.QNAME);
+            Reader gnpyTopo = new FileReader("src/test/resources/gnpy/gnpy_topology.json", StandardCharsets.UTF_8);
+            networks = (Networks) new JsonDataConverter(null).deserialize(gnpyTopo, Networks.QNAME);
             saveOpenRoadmNetwork(networks.getNetwork().values().iterator().next(), StringConstants.OPENROADM_TOPOLOGY);
         } catch (FileNotFoundException | InterruptedException | ExecutionException e) {
             LOG.error("Cannot init test ", e);
             fail("Cannot init test ");
-
-        } finally {
-            try {
-                if (networkReader != null) {
-                    networkReader.close();
-                }
-                if (topoReader != null) {
-                    topoReader.close();
-                }
-            } catch (IOException e) {
-                LOG.warn("Cannot close reader ", e);
-            }
+        } catch (IOException e) {
+            LOG.warn("Cannot close reader ", e);
         }
-
     }
 
     @BeforeEach
index 8c90d6a65c62118d776bf8995fff2ff6506a64e6..33f7fdf16a60f0004c385bbfe3514e81cadba3ce 100644 (file)
@@ -14,7 +14,6 @@ import static org.junit.jupiter.api.Assertions.assertThrows;
 import static org.junit.jupiter.api.Assertions.fail;
 
 import com.google.common.collect.ImmutableMap;
-import com.google.gson.stream.JsonReader;
 import java.io.FileReader;
 import java.io.IOException;
 import java.io.Reader;
@@ -55,7 +54,7 @@ import org.opendaylight.transportpce.pce.utils.NodeUtils;
 import org.opendaylight.transportpce.test.AbstractTest;
 import org.opendaylight.transportpce.test.converter.DataObjectConverter;
 import org.opendaylight.transportpce.test.converter.JSONDataObjectConverter;
-import org.opendaylight.transportpce.test.converter.JsonUtil;
+import org.opendaylight.transportpce.test.converter.JsonDataConverter;
 import org.opendaylight.transportpce.test.stub.MountPointServiceStub;
 import org.opendaylight.transportpce.test.stub.MountPointStub;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestInput;
@@ -199,34 +198,19 @@ public class PceGraphTest extends AbstractTest {
 
         MockitoAnnotations.openMocks(this);
         // The topology (openROADM-Network and openROADM-topology layers) is loaded from a file
-        JsonReader networkReader = null;
-        JsonReader topoReader = null;
         try {
             // load openroadm-network
             Reader gnpyNetwork = new FileReader("src/test/resources/gnpy/gnpy_network.json", StandardCharsets.UTF_8);
-            networkReader = new JsonReader(gnpyNetwork);
-            Networks networks = (Networks) JsonUtil.getInstance().getDataObjectFromJson(networkReader, Networks.QNAME);
+            Networks networks = (Networks) new JsonDataConverter(null).deserialize(gnpyNetwork, Networks.QNAME);
             saveOpenRoadmNetwork(networks.getNetwork().values().iterator().next(), StringConstants.OPENROADM_NETWORK);
             // load openroadm-topology
             Reader gnpyTopo = new FileReader("src/test/resources/topologyData/or-base-topology.json",
                     StandardCharsets.UTF_8);
-            topoReader = new JsonReader(gnpyTopo);
-            networks = (Networks) JsonUtil.getInstance().getDataObjectFromJson(topoReader, Networks.QNAME);
+            networks = (Networks) new JsonDataConverter(null).deserialize(gnpyTopo, Networks.QNAME);
             saveOpenRoadmNetwork(networks.getNetwork().values().iterator().next(), StringConstants.OPENROADM_TOPOLOGY);
         } catch (IOException | InterruptedException | ExecutionException e) {
             LOG.error("Cannot init test ", e);
             fail("Cannot init test ");
-        } finally {
-            try {
-                if (networkReader != null) {
-                    networkReader.close();
-                }
-                if (topoReader != null) {
-                    topoReader.close();
-                }
-            } catch (IOException e) {
-                LOG.warn("Cannot close reader ", e);
-            }
         }
         // init PceHardContraints
         pceHardConstraints = new PceConstraints();
index 670a1897fa810c802b870cf8a662871517e91d8d..b248bf02547ca0cdf1b2b49814c60cc3b8122e56 100644 (file)
@@ -7,7 +7,6 @@
  */
 package org.opendaylight.transportpce.pce.utils;
 
-import com.google.gson.stream.JsonReader;
 import java.io.FileReader;
 import java.io.IOException;
 import java.io.InputStream;
@@ -27,7 +26,7 @@ import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.transportpce.common.StringConstants;
 import org.opendaylight.transportpce.test.DataStoreContext;
 import org.opendaylight.transportpce.test.converter.DataObjectConverter;
-import org.opendaylight.transportpce.test.converter.JsonUtil;
+import org.opendaylight.transportpce.test.converter.JsonDataConverter;
 import org.opendaylight.transportpce.test.converter.XMLDataObjectConverter;
 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestOutput;
 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.pathdescription.rev230501.path.description.atoz.direction.AToZ;
@@ -84,14 +83,12 @@ public final class PceTestUtils {
                 // load openroadm-topology
                 Reader gnpyTopo = new FileReader("src/test/resources/gnpy/gnpy_topology.json",
                         StandardCharsets.UTF_8);
-                JsonReader networkReader = new JsonReader(gnpyNetwork);
-                JsonReader topoReader = new JsonReader(gnpyTopo);
         ) {
 
-            Networks networks = (Networks) JsonUtil.getInstance().getDataObjectFromJson(networkReader, Networks.QNAME);
+            Networks networks = (Networks) new JsonDataConverter(null).deserialize(gnpyNetwork, Networks.QNAME);
             List<Network> networkMap = new ArrayList<>(networks.nonnullNetwork().values());
             saveOpenRoadmNetwork(networkMap.get(0), StringConstants.OPENROADM_NETWORK, dataBroker);
-            networks = (Networks) JsonUtil.getInstance().getDataObjectFromJson(topoReader,  Networks.QNAME);
+            networks = (Networks) new JsonDataConverter(null).deserialize(gnpyTopo,  Networks.QNAME);
             saveOpenRoadmNetwork(networkMap.get(0), StringConstants.OPENROADM_NETWORK, dataBroker);
         } catch (IOException | ExecutionException | InterruptedException e) {
             LOG.error("Cannot init test ", e);
diff --git a/test-common/src/main/java/org/opendaylight/transportpce/test/converter/JsonUtil.java b/test-common/src/main/java/org/opendaylight/transportpce/test/converter/JsonUtil.java
deleted file mode 100644 (file)
index b05e46a..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright © 2020 Orange Labs, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.transportpce.test.converter;
-
-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.yangtools.binding.DataObject;
-import org.opendaylight.yangtools.binding.DataObjectReference;
-import org.opendaylight.yangtools.binding.data.codec.api.BindingNormalizedNodeSerializer;
-import org.opendaylight.yangtools.binding.data.codec.impl.di.DefaultBindingDOMCodecFactory;
-import org.opendaylight.yangtools.binding.meta.YangModelBindingProvider;
-import org.opendaylight.yangtools.binding.meta.YangModuleInfo;
-import org.opendaylight.yangtools.binding.runtime.spi.BindingRuntimeHelpers;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
-import org.opendaylight.yangtools.yang.data.codec.gson.JSONCodecFactorySupplier;
-import org.opendaylight.yangtools.yang.data.codec.gson.JsonParserStream;
-import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter;
-import org.opendaylight.yangtools.yang.data.impl.schema.NormalizationResultHolder;
-import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public final class JsonUtil {
-    private static final Logger LOG = LoggerFactory.getLogger(JsonUtil.class);
-    private static JsonUtil instance;
-
-    private EffectiveModelContext schemaCtx;
-    private BindingNormalizedNodeSerializer codecRegistry;
-
-    private JsonUtil() {
-        List<YangModuleInfo> moduleInfos = new LinkedList<>();
-        ServiceLoader<YangModelBindingProvider> yangProviderLoader = ServiceLoader.load(YangModelBindingProvider.class);
-        for (YangModelBindingProvider yangModelBindingProvider : yangProviderLoader) {
-            moduleInfos.add(yangModelBindingProvider.getModuleInfo());
-        }
-        /* Create the schema context for loaded models */
-        schemaCtx = BindingRuntimeHelpers.createEffectiveModel(moduleInfos);
-        if (schemaCtx == null) {
-            throw new IllegalStateException("Failed to load schema context");
-        }
-        // Create the binding binding normalized node codec registry
-        codecRegistry = new CurrentAdapterSerializer(
-            new DefaultBindingDOMCodecFactory()
-                .createBindingDOMCodec(BindingRuntimeHelpers.createRuntimeContext()));
-    }
-
-    public static synchronized JsonUtil getInstance() {
-        if (instance == null) {
-            instance = new JsonUtil();
-        }
-        return instance;
-    }
-
-    public DataObject getDataObjectFromJson(JsonReader reader, QName pathQname) {
-        NormalizationResultHolder resultHolder = new NormalizationResultHolder();
-        try (NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(resultHolder);
-                JsonParserStream jsonParser = JsonParserStream.create(streamWriter,
-                        JSONCodecFactorySupplier.RFC7951.getShared(schemaCtx));) {
-            jsonParser.parse(reader);
-            YangInstanceIdentifier yangId = YangInstanceIdentifier.of(pathQname);
-            Entry<DataObjectReference<?>, DataObject> entry =
-                codecRegistry.fromNormalizedNode(yangId, resultHolder.getResult().data());
-            return entry == null ? null : entry.getValue();
-        } catch (IOException | IllegalArgumentException e) {
-            LOG.error("Cannot deserialize JSON ", e);
-            return null;
-        }
-    }
-}