aboutsummaryrefslogtreecommitdiffstats
path: root/tosca-controlloop/runtime/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/startstop/ClRuntimeActivator.java
diff options
context:
space:
mode:
Diffstat (limited to 'tosca-controlloop/runtime/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/startstop/ClRuntimeActivator.java')
-rw-r--r--tosca-controlloop/runtime/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/startstop/ClRuntimeActivator.java42
1 files changed, 42 insertions, 0 deletions
diff --git a/tosca-controlloop/runtime/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/startstop/ClRuntimeActivator.java b/tosca-controlloop/runtime/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/startstop/ClRuntimeActivator.java
index 8ac4d684d..d3a5c5810 100644
--- a/tosca-controlloop/runtime/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/startstop/ClRuntimeActivator.java
+++ b/tosca-controlloop/runtime/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/startstop/ClRuntimeActivator.java
@@ -21,11 +21,17 @@
package org.onap.policy.clamp.controlloop.runtime.main.startstop;
import java.util.List;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicReference;
import javax.ws.rs.core.Response.Status;
import org.onap.policy.clamp.controlloop.common.exception.ControlLoopRuntimeException;
+import org.onap.policy.clamp.controlloop.runtime.instantiation.InstantiationHandler;
import org.onap.policy.clamp.controlloop.runtime.main.parameters.ClRuntimeParameterGroup;
+import org.onap.policy.clamp.controlloop.runtime.main.rest.ControlLoopAafFilter;
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.onap.policy.common.endpoints.http.server.RestServer;
import org.onap.policy.common.endpoints.listeners.MessageTypeDispatcher;
import org.onap.policy.common.parameters.ParameterService;
import org.onap.policy.common.utils.services.ServiceManagerContainer;
@@ -41,6 +47,7 @@ public class ClRuntimeActivator extends ServiceManagerContainer {
private final ClRuntimeParameterGroup clRuntimeParameterGroup;
// Topics from which the application receives and to which the application sends messages
+ private List<TopicSink> topicSinks;
private List<TopicSource> topicSources;
/**
@@ -61,6 +68,9 @@ public class ClRuntimeActivator extends ServiceManagerContainer {
this.clRuntimeParameterGroup = clRuntimeParameterGroup;
+ topicSinks = TopicEndpointManager.getManager()
+ .addTopicSinks(clRuntimeParameterGroup.getTopicParameterGroup().getTopicSinks());
+
topicSources = TopicEndpointManager.getManager()
.addTopicSources(clRuntimeParameterGroup.getTopicParameterGroup().getTopicSources());
@@ -71,6 +81,9 @@ public class ClRuntimeActivator extends ServiceManagerContainer {
"topic message dispatcher failed to start", e);
}
+ final AtomicReference<InstantiationHandler> instantiationHandler = new AtomicReference<>();
+ final AtomicReference<RestServer> restServer = new AtomicReference<>();
+
// @formatter:off
addAction("Control loop runtime parameters",
() -> ParameterService.register(clRuntimeParameterGroup),
@@ -80,9 +93,38 @@ public class ClRuntimeActivator extends ServiceManagerContainer {
() -> TopicEndpointManager.getManager().start(),
() -> TopicEndpointManager.getManager().shutdown());
+ addAction("Instantiation Handler",
+ () -> instantiationHandler.set(new InstantiationHandler(clRuntimeParameterGroup)),
+ () -> instantiationHandler.get().close());
+
+ addAction("Providers",
+ () -> instantiationHandler.get().startProviders(),
+ () -> instantiationHandler.get().stopProviders());
+
+ addAction("Listeners",
+ () -> instantiationHandler.get().startAndRegisterListeners(msgDispatcher),
+ () -> instantiationHandler.get().stopAndUnregisterListeners(msgDispatcher));
+
+ addAction("Publishers",
+ () -> instantiationHandler.get().startAndRegisterPublishers(topicSinks),
+ () -> instantiationHandler.get().stopAndUnregisterPublishers());
+
addAction("Topic Message Dispatcher", this::registerMsgDispatcher, this::unregisterMsgDispatcher);
clRuntimeParameterGroup.getRestServerParameters().setName(clRuntimeParameterGroup.getName());
+
+ addAction("REST server",
+ () -> {
+ Set<Class<?>> providerClasses = instantiationHandler.get().getProviderClasses();
+
+ RestServer server = new RestServer(clRuntimeParameterGroup.getRestServerParameters(),
+ ControlLoopAafFilter.class,
+ providerClasses.toArray(new Class<?>[providerClasses.size()]));
+
+ restServer.set(server);
+ restServer.get().start();
+ },
+ () -> restServer.get().stop());
// @formatter:on
}