summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--main/src/main/java/org/onap/policy/pdpx/main/XacmlState.java10
-rw-r--r--main/src/main/java/org/onap/policy/pdpx/main/startstop/XacmlPdpActivator.java21
2 files changed, 29 insertions, 2 deletions
diff --git a/main/src/main/java/org/onap/policy/pdpx/main/XacmlState.java b/main/src/main/java/org/onap/policy/pdpx/main/XacmlState.java
index 521413c8..f672ccdd 100644
--- a/main/src/main/java/org/onap/policy/pdpx/main/XacmlState.java
+++ b/main/src/main/java/org/onap/policy/pdpx/main/XacmlState.java
@@ -125,6 +125,16 @@ public class XacmlState {
}
/**
+ * Updates the internal state to Terminated.
+ *
+ * @return the current PdpStatus with Terminated state
+ */
+ public PdpStatus terminatePdpMessage() {
+ status.setState(PdpState.TERMINATED);
+ return status;
+ }
+
+ /**
* Makes a response to the given message, based on the current state.
*
* @param message message for which the response should be made
diff --git a/main/src/main/java/org/onap/policy/pdpx/main/startstop/XacmlPdpActivator.java b/main/src/main/java/org/onap/policy/pdpx/main/startstop/XacmlPdpActivator.java
index 2a881d45..e7633674 100644
--- a/main/src/main/java/org/onap/policy/pdpx/main/startstop/XacmlPdpActivator.java
+++ b/main/src/main/java/org/onap/policy/pdpx/main/startstop/XacmlPdpActivator.java
@@ -22,6 +22,7 @@ package org.onap.policy.pdpx.main.startstop;
import java.nio.file.Paths;
import java.util.Arrays;
+import java.util.Collections;
import java.util.Properties;
import lombok.Getter;
import lombok.Setter;
@@ -31,9 +32,11 @@ import org.onap.policy.common.endpoints.event.comm.client.TopicSinkClient;
import org.onap.policy.common.endpoints.event.comm.client.TopicSinkClientException;
import org.onap.policy.common.endpoints.listeners.MessageTypeDispatcher;
import org.onap.policy.common.parameters.ParameterService;
+import org.onap.policy.common.utils.network.NetworkUtil;
import org.onap.policy.common.utils.services.ServiceManagerContainer;
import org.onap.policy.models.pdp.concepts.PdpStatus;
import org.onap.policy.models.pdp.enums.PdpMessageType;
+import org.onap.policy.models.pdp.enums.PdpState;
import org.onap.policy.pdpx.main.PolicyXacmlPdpRuntimeException;
import org.onap.policy.pdpx.main.XacmlState;
import org.onap.policy.pdpx.main.comm.XacmlPdpHearbeatPublisher;
@@ -89,6 +92,8 @@ public class XacmlPdpActivator extends ServiceManagerContainer {
TopicEndpoint.manager.addTopicSources(topicProperties);
XacmlPdpHearbeatPublisher heartbeat;
+ TopicSinkClient sinkClient;
+ final XacmlState state;
try {
XacmlPdpApplicationManager appmgr =
@@ -99,12 +104,12 @@ public class XacmlPdpActivator extends ServiceManagerContainer {
XacmlPdpStatisticsManager.setCurrent(stats);
stats.setTotalPolicyTypesCount(appmgr.getPolicyTypeCount());
- XacmlState state = new XacmlState(appmgr);
+ state = new XacmlState(appmgr);
this.xacmlPdpParameterGroup = xacmlPdpParameterGroup;
this.msgDispatcher = new MessageTypeDispatcher(MSG_TYPE_NAMES);
- TopicSinkClient sinkClient = new TopicSinkClient(TOPIC);
+ sinkClient = new TopicSinkClient(TOPIC);
heartbeat = new XacmlPdpHearbeatPublisher(sinkClient, state);
/*
@@ -135,6 +140,9 @@ public class XacmlPdpActivator extends ServiceManagerContainer {
TopicEndpoint.manager::start,
TopicEndpoint.manager::shutdown);
+ addAction("Terminate PDP",
+ () -> { },
+ () -> sendTerminateMessage(sinkClient, state));
// initial heart beats act as registration messages
addAction("Heartbeat Publisher",
heartbeat::start,
@@ -147,9 +155,18 @@ public class XacmlPdpActivator extends ServiceManagerContainer {
addAction("REST server",
() -> restServer.start(),
() -> restServer.stop());
+
// @formatter:on
}
+ /*
+ * Method used to send a terminate message to the PAP.
+ */
+ private void sendTerminateMessage(TopicSinkClient sinkClient, XacmlState state) {
+ PdpStatus terminateStatus = state.terminatePdpMessage();
+ sinkClient.send(terminateStatus);
+ }
+
/**
* Get the parameters used by the activator.
*