Ravi Nori has uploaded a new change for review.

Change subject: core : Add extensions listener
......................................................................

core : Add extensions listener

Add lsitner interface to ExtensionsManager
that can register/unregister for changes
in extensions

Change-Id: Idd78e7a390c2a45062be1741548e370a205bfe24
Signed-off-by: Ravi Nori <rn...@redhat.com>
---
A 
backend/manager/modules/extensions-manager/src/main/java/org/ovirt/engine/core/extensions/mgr/ExtensionsListener.java
M 
backend/manager/modules/extensions-manager/src/main/java/org/ovirt/engine/core/extensions/mgr/ExtensionsManager.java
2 files changed, 36 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/02/27602/1

diff --git 
a/backend/manager/modules/extensions-manager/src/main/java/org/ovirt/engine/core/extensions/mgr/ExtensionsListener.java
 
b/backend/manager/modules/extensions-manager/src/main/java/org/ovirt/engine/core/extensions/mgr/ExtensionsListener.java
new file mode 100644
index 0000000..3094665
--- /dev/null
+++ 
b/backend/manager/modules/extensions-manager/src/main/java/org/ovirt/engine/core/extensions/mgr/ExtensionsListener.java
@@ -0,0 +1,5 @@
+package org.ovirt.engine.core.extensions.mgr;
+
+public interface ExtensionsListener {
+       public void extensionsChanged();
+}
diff --git 
a/backend/manager/modules/extensions-manager/src/main/java/org/ovirt/engine/core/extensions/mgr/ExtensionsManager.java
 
b/backend/manager/modules/extensions-manager/src/main/java/org/ovirt/engine/core/extensions/mgr/ExtensionsManager.java
index 1558134..72dcfcb 100644
--- 
a/backend/manager/modules/extensions-manager/src/main/java/org/ovirt/engine/core/extensions/mgr/ExtensionsManager.java
+++ 
b/backend/manager/modules/extensions-manager/src/main/java/org/ovirt/engine/core/extensions/mgr/ExtensionsManager.java
@@ -133,6 +133,36 @@
         return instance;
     }
 
+    private Map<String, List<ExtensionsListener>> listenersMap = new 
HashMap<>();
+
+    public void registerListener(String provides, ExtensionsListener listener) 
{
+        List<ExtensionsListener> listeners = listenersMap.get(provides);
+        if (listeners == null) {
+            listeners =  new ArrayList<>();
+        }
+        listeners.add(listener);
+        listenersMap.put(provides, listeners);
+    }
+
+    public void unregisterListener(String provides, ExtensionsListener 
listener) {
+        List<ExtensionsListener> listeners = listenersMap.get(provides);
+        if (listeners != null) {
+            listeners.remove(listener);
+        }
+    }
+
+    private void notifyListeners(ExtensionEntry entry) {
+        for (String provides : 
entry.extension.getContext().<List<String>>get(Base.ContextKeys.PROVIDES)) {
+            notifyListeners(provides);
+        }
+    }
+
+    private void notifyListeners(String provides) {
+        for (ExtensionsListener listener : listenersMap.get(provides)) {
+            listener.extensionsChanged();
+        }
+    }
+
     public List<ExtensionProxy> getProvidedExtensions(String provides) {
         List<ExtensionProxy> results = new ArrayList<>();
         for (ExtensionEntry entry : loadedEntries.values()) {
@@ -229,6 +259,7 @@
              ));
         }
         loadedEntries.put(entry.name, entry);
+        notifyListeners(entry);
         entry.enabled =
                 
EngineLocalConfig.getInstance().getBoolean(ENGINE_EXTENSION_ENABLED + 
entry.name, entry.enabled);
         //Activate the extension


-- 
To view, visit http://gerrit.ovirt.org/27602
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Idd78e7a390c2a45062be1741548e370a205bfe24
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Ravi Nori <rn...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to