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