Synchronize updates to xacml-pdp state
[policy/xacml-pdp.git] / main / src / main / java / org / onap / policy / pdpx / main / XacmlState.java
index db83b71..b040eb7 100644 (file)
@@ -33,11 +33,15 @@ import org.onap.policy.models.pdp.enums.PdpResponseStatus;
 import org.onap.policy.models.pdp.enums.PdpState;
 import org.onap.policy.pdpx.main.rest.XacmlPdpApplicationManager;
 import org.onap.policy.pdpx.main.startstop.XacmlPdpActivator;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Current state of this XACML PDP.
  */
 public class XacmlState {
+    private static final Logger LOGGER = LoggerFactory.getLogger(XacmlState.class);
+
     /**
      * The application manager.
      */
@@ -69,7 +73,7 @@ public class XacmlState {
      * @return {@code true} if this PDP should handle the message, {@code false} otherwise
      */
     public boolean shouldHandle(PdpMessage message) {
-        return message.appliesTo(status.getName(), status.getPdpGroup(), status.getPdpSubgroup());
+        return message.appliesTo(status.getName(), status.getPdpGroup(), status.getPdpType());
     }
 
     /**
@@ -77,7 +81,7 @@ public class XacmlState {
      *
      * @return a new heart beat message
      */
-    public PdpStatus genHeartbeat() {
+    public synchronized PdpStatus genHeartbeat() {
         // first, update status fields
         status.setHealthy(XacmlPdpActivator.getCurrent().isAlive() ? PdpHealthStatus.HEALTHY
                         : PdpHealthStatus.NOT_HEALTHY);
@@ -91,7 +95,8 @@ public class XacmlState {
      * @param message message from which to update the internal state
      * @return a response to the message
      */
-    public PdpStatus updateInternalState(PdpStateChange message) {
+    public synchronized PdpStatus updateInternalState(PdpStateChange message) {
+        LOGGER.info("set state of {} to {}", this, message.getState());
         status.setState(message.getState());
 
         /*
@@ -115,7 +120,7 @@ public class XacmlState {
      * @param message message from which to update the internal state
      * @return a response to the message
      */
-    public PdpStatus updateInternalState(PdpUpdate message, String errMessage) {
+    public synchronized PdpStatus updateInternalState(PdpUpdate message, String errMessage) {
         status.setPdpSubgroup(message.getPdpSubgroup());
         status.setPolicies(appManager.getToscaPolicyIdentifiers());
 
@@ -127,7 +132,8 @@ public class XacmlState {
      *
      * @return the current PdpStatus with Terminated state
      */
-    public PdpStatus terminatePdpMessage() {
+    public synchronized PdpStatus terminatePdpMessage() {
+        LOGGER.info("set state of {} to {}", this, PdpState.TERMINATED);
         status.setState(PdpState.TERMINATED);
         return new PdpStatus(status);
     }