Fix config files to remove outdated configuration for hibernate
[policy/models.git] / models-sim / policy-models-simulators / src / main / java / org / onap / policy / models / simulators / Main.java
index f82423c..1951ea3 100644 (file)
@@ -1,7 +1,8 @@
 /*-
  * ============LICENSE_START=======================================================
- * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2020 Bell Canada. All rights reserved.
+ * Copyright (C) 2020-2021 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2020-2021 Bell Canada. All rights reserved.
+ * Modifications Copyright 2023-2024 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -23,20 +24,13 @@ package org.onap.policy.models.simulators;
 
 import java.io.FileNotFoundException;
 import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
 import java.util.Properties;
 import java.util.concurrent.atomic.AtomicReference;
 import lombok.AccessLevel;
 import lombok.Getter;
-import org.onap.policy.common.endpoints.event.comm.TopicEndpointManager;
-import org.onap.policy.common.endpoints.event.comm.TopicSink;
-import org.onap.policy.common.endpoints.event.comm.TopicSource;
+import org.apache.commons.lang3.StringUtils;
 import org.onap.policy.common.endpoints.http.server.HttpServletServer;
 import org.onap.policy.common.endpoints.http.server.HttpServletServerFactoryInstance;
-import org.onap.policy.common.endpoints.parameters.TopicParameters;
 import org.onap.policy.common.endpoints.properties.PolicyEndPointProperties;
 import org.onap.policy.common.gson.GsonMessageBodyHandler;
 import org.onap.policy.common.parameters.BeanValidationResult;
@@ -45,13 +39,9 @@ import org.onap.policy.common.utils.coder.CoderException;
 import org.onap.policy.common.utils.coder.StandardCoder;
 import org.onap.policy.common.utils.network.NetworkUtil;
 import org.onap.policy.common.utils.resources.ResourceUtils;
+import org.onap.policy.common.utils.services.Registry;
 import org.onap.policy.common.utils.services.ServiceManagerContainer;
-import org.onap.policy.models.sim.dmaap.parameters.DmaapSimParameterGroup;
-import org.onap.policy.models.sim.dmaap.provider.DmaapSimProvider;
-import org.onap.policy.models.sim.dmaap.rest.CambriaMessageBodyHandler;
-import org.onap.policy.models.sim.dmaap.rest.TextMessageBodyHandler;
 import org.onap.policy.simulators.CdsSimulator;
-import org.onap.policy.simulators.TopicServer;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -76,21 +66,6 @@ public class Main extends ServiceManagerContainer {
         super(Main.class.getPackage().getName());
 
         SimulatorParameters params = readParameters(paramFile);
-        BeanValidationResult result = params.validate("simulators");
-        if (!result.isValid()) {
-            logger.error("invalid parameters:\n{}", result.getResult());
-            throw new IllegalArgumentException("invalid simulator parameters");
-        }
-
-        DmaapSimParameterGroup dmaapProv = params.getDmaapProvider();
-        String dmaapName = (dmaapProv != null ? dmaapProv.getName() : null);
-
-        // dmaap provider
-        if (dmaapProv != null) {
-            String provName = dmaapName.replace("simulator", "provider");
-            AtomicReference<DmaapSimProvider> provRef = new AtomicReference<>();
-            addAction(provName, () -> provRef.set(buildDmaapProvider(dmaapProv)), () -> provRef.get().shutdown());
-        }
 
         CdsServerParameters cdsServer = params.getGrpcServer();
 
@@ -104,36 +79,14 @@ public class Main extends ServiceManagerContainer {
         // @formatter:off
         for (ClassRestServerParameters restsim : params.getRestServers()) {
             AtomicReference<HttpServletServer> ref = new AtomicReference<>();
+            if (StringUtils.isNotBlank(restsim.getResourceLocation())) {
+                String resourceLocationId = restsim.getProviderClass() + "_RESOURCE_LOCATION";
+                addAction(resourceLocationId,
+                    () -> Registry.register(resourceLocationId, restsim.getResourceLocation()),
+                    () -> Registry.unregister(resourceLocationId));
+            }
             addAction(restsim.getName(),
-                () -> ref.set(buildRestServer(dmaapName, restsim)),
-                () -> ref.get().shutdown());
-        }
-
-        // NOTE: topics must be started AFTER the (dmaap) rest servers
-
-        // topic sinks
-        Map<String, TopicSink> sinks = new HashMap<>();
-        for (TopicParameters topicParams : params.getTopicSinks()) {
-            String topic = topicParams.getTopic();
-            addAction("Sink " + topic,
-                () -> sinks.put(topic, startSink(topicParams)),
-                () -> sinks.get(topic).shutdown());
-        }
-
-        // topic sources
-        Map<String, TopicSource> sources = new HashMap<>();
-        for (TopicParameters topicParams : params.getTopicSources()) {
-            String topic = topicParams.getTopic();
-            addAction("Source " + topic,
-                () -> sources.put(topic, startSource(topicParams)),
-                () -> sources.get(topic).shutdown());
-        }
-
-        // topic server simulators
-        for (TopicServerParameters topicsim : params.getTopicServers()) {
-            AtomicReference<TopicServer<?>> ref = new AtomicReference<>();
-            addAction(topicsim.getName(),
-                () -> ref.set(buildTopicServer(topicsim, sinks, sources)),
+                () -> ref.set(buildRestServer(restsim)),
                 () -> ref.get().shutdown());
         }
         // @formatter:on
@@ -165,7 +118,7 @@ public class Main extends ServiceManagerContainer {
 
     private SimulatorParameters readParameters(String paramFile) {
         try {
-            String paramsJson = getResourceAsString(paramFile);
+            var paramsJson = getResourceAsString(paramFile);
             if (paramsJson == null) {
                 throw new IllegalArgumentException(new FileNotFoundException(paramFile));
             }
@@ -182,36 +135,17 @@ public class Main extends ServiceManagerContainer {
         }
     }
 
-    private DmaapSimProvider buildDmaapProvider(DmaapSimParameterGroup params) {
-        DmaapSimProvider prov = new DmaapSimProvider(params);
-        DmaapSimProvider.setInstance(prov);
-        prov.start();
-        return prov;
-    }
-
     private CdsSimulator buildCdsSimulator(CdsServerParameters params) throws IOException {
-        CdsSimulator cdsSimulator = new CdsSimulator(params.getHost(), params.getPort(), params.getResourceLocation(),
+        var cdsSimulator = new CdsSimulator(params.getHost(), params.getPort(), params.getResourceLocation(),
             params.getSuccessRepeatCount(), params.getRequestedResponseDelayMs());
         cdsSimulator.start();
         return cdsSimulator;
     }
 
 
-    private TopicSink startSink(TopicParameters params) {
-        TopicSink sink = TopicEndpointManager.getManager().addTopicSinks(List.of(params)).get(0);
-        sink.start();
-        return sink;
-    }
-
-    private TopicSource startSource(TopicParameters params) {
-        TopicSource source = TopicEndpointManager.getManager().addTopicSources(List.of(params)).get(0);
-        source.start();
-        return source;
-    }
-
-    private HttpServletServer buildRestServer(String dmaapName, ClassRestServerParameters params) {
+    private HttpServletServer buildRestServer(ClassRestServerParameters params) {
         try {
-            Properties props = getServerProperties(dmaapName, params);
+            var props = getServerProperties(params);
             HttpServletServer testServer = makeServer(props);
             testServer.waitedStart(5000);
 
@@ -230,40 +164,16 @@ public class Main extends ServiceManagerContainer {
         }
     }
 
-    private TopicServer<?> buildTopicServer(TopicServerParameters params, Map<String, TopicSink> sinks,
-                    Map<String, TopicSource> sources) {
-        try {
-            // find the desired sink
-            TopicSink sink = sinks.get(params.getSink());
-            if (sink == null) {
-                throw new IllegalArgumentException("invalid sink topic " + params.getSink());
-            }
-
-            // find the desired source
-            TopicSource source = sources.get(params.getSource());
-            if (source == null) {
-                throw new IllegalArgumentException("invalid source topic " + params.getSource());
-            }
-
-            // create the topic server
-            return (TopicServer<?>) Class.forName(params.getProviderClass())
-                            .getDeclaredConstructor(TopicSink.class, TopicSource.class).newInstance(sink, source);
-
-        } catch (InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException
-                        | SecurityException | ClassNotFoundException e) {
-            throw new IllegalArgumentException("cannot create TopicServer: " + params.getName(), e);
-        }
-    }
 
     /**
      * Creates a set of properties, suitable for building a REST server, from the
      * parameters.
      *
      * @param params parameters from which to build the properties
-     * @return a set of properties representing the given parameters
+     * @return a Map of properties representing the given parameters
      */
-    private static Properties getServerProperties(String dmaapName, ClassRestServerParameters params) {
-        final Properties props = new Properties();
+    private static Properties getServerProperties(ClassRestServerParameters params) {
+        final var props = new Properties();
         props.setProperty(PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES, params.getName());
 
         final String svcpfx = PolicyEndPointProperties.PROPERTY_HTTP_SERVER_SERVICES + "." + params.getName();
@@ -278,17 +188,12 @@ public class Main extends ServiceManagerContainer {
                         params.getProviderClass());
         props.setProperty(svcpfx + PolicyEndPointProperties.PROPERTY_MANAGED_SUFFIX, "false");
         props.setProperty(svcpfx + PolicyEndPointProperties.PROPERTY_HTTP_SWAGGER_SUFFIX, "false");
+        props.setProperty(svcpfx + PolicyEndPointProperties.PROPERTY_HTTP_SNI_HOST_CHECK_SUFFIX, "false");
         props.setProperty(svcpfx + PolicyEndPointProperties.PROPERTY_MANAGED_SUFFIX, "true");
 
-        if (dmaapName != null && dmaapName.equals(params.getName())) {
-            props.setProperty(svcpfx + PolicyEndPointProperties.PROPERTY_HTTP_SERIALIZATION_PROVIDER,
-                            String.join(",", CambriaMessageBodyHandler.class.getName(),
-                                            GsonMessageBodyHandler.class.getName(),
-                                            TextMessageBodyHandler.class.getName()));
-        } else {
-            props.setProperty(svcpfx + PolicyEndPointProperties.PROPERTY_HTTP_SERIALIZATION_PROVIDER, String.join(",",
+        props.setProperty(svcpfx + PolicyEndPointProperties.PROPERTY_HTTP_SERIALIZATION_PROVIDER, String.join(",",
                             GsonMessageBodyHandler.class.getName(), TextMessageBodyHandler.class.getName()));
-        }
+
 
         return props;
     }