aboutsummaryrefslogtreecommitdiffstats
path: root/integrity-monitor/src/main/java/org/onap/policy/common/im/StateManagement.java
diff options
context:
space:
mode:
Diffstat (limited to 'integrity-monitor/src/main/java/org/onap/policy/common/im/StateManagement.java')
-rw-r--r--integrity-monitor/src/main/java/org/onap/policy/common/im/StateManagement.java27
1 files changed, 23 insertions, 4 deletions
diff --git a/integrity-monitor/src/main/java/org/onap/policy/common/im/StateManagement.java b/integrity-monitor/src/main/java/org/onap/policy/common/im/StateManagement.java
index 68ad3bc6..7a018ef9 100644
--- a/integrity-monitor/src/main/java/org/onap/policy/common/im/StateManagement.java
+++ b/integrity-monitor/src/main/java/org/onap/policy/common/im/StateManagement.java
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* Integrity Monitor
* ================================================================================
- * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-2020 AT&T Intellectual Property. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -20,8 +20,9 @@
package org.onap.policy.common.im;
+import java.util.Collection;
import java.util.List;
-import java.util.Observable;
+import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Consumer;
import javax.persistence.EntityManager;
@@ -43,7 +44,7 @@ import org.slf4j.LoggerFactory;
* notified.
*
*/
-public class StateManagement extends Observable {
+public class StateManagement {
private static final String RESOURCE_NAME = "resource";
private static final String GET_STATE_MANAGEMENT_ENTITY_QUERY =
"Select p from StateManagementEntity p where p.resourceName=:" + RESOURCE_NAME;
@@ -97,6 +98,11 @@ public class StateManagement extends Observable {
private static final Object FLUSHLOCK = new Object();
/**
+ * Observers to be notified when this object changes state.
+ */
+ private final Collection<StateChangeNotifier> observers = new ConcurrentLinkedQueue<>();
+
+ /**
* StateManagement constructor.
*
* @param entityManagerFactory the entity manager factory
@@ -162,7 +168,6 @@ public class StateManagement extends Observable {
et.commit();
if (changed != null) {
- setChanged();
notifyObservers(changed);
}
@@ -175,6 +180,20 @@ public class StateManagement extends Observable {
}
}
+ /**
+ * Adds an observer to list of those to be notified when this changes.
+ * @param observer observer to be added
+ */
+ public void addObserver(StateChangeNotifier observer) {
+ observers.add(observer);
+ }
+
+ private void notifyObservers(String changed) {
+ for (StateChangeNotifier obs : observers) {
+ obs.update(this, changed);
+ }
+ }
+
private void setStateUsingTable(String actionName, String resourceName, String changeName)
throws StateManagementException {