Ravi Nori has uploaded a new change for review.

Change subject: engine : Add callback enabled commands to CommandExecutor 
callback map
......................................................................

engine : Add callback enabled commands to CommandExecutor callback map

Add ability to add oridinary commands to command executor's
call back map. The commands need to have callback enabled

Change-Id: I9765a947d3772fbc47a1adaa91cd54da9ba202bb
Bug-Url: https://bugzilla.redhat.com/1083769
Signed-off-by: Ravi Nori <rn...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/CommandCoordinatorImpl.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/CommandExecutor.java
2 files changed, 14 insertions(+), 4 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/24/28724/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/CommandCoordinatorImpl.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/CommandCoordinatorImpl.java
index 09de084..a6ee4ac 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/CommandCoordinatorImpl.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/CommandCoordinatorImpl.java
@@ -63,6 +63,9 @@
         commandsCache.put(cmdEntity);
         if (cmdEntity.isCallBackEnabled()) {
             buildCmdHierarchy(cmdEntity);
+            if (!cmdEntity.isCallBackNotified()) {
+                cmdExecutor.addToCallBackMap(cmdEntity);
+            }
         }
     }
 
@@ -180,7 +183,7 @@
     }
 
     private void buildCmdHierarchy(CommandEntity cmdEntity) {
-        if (!Guid.isNullOrEmpty(cmdEntity.getRootCommandId())) {
+        if (!Guid.isNullOrEmpty(cmdEntity.getRootCommandId()) && 
!cmdEntity.getId().equals(cmdEntity.getRootCommandId())) {
             childHierarchy.putIfAbsent(cmdEntity.getRootCommandId(), new 
ArrayList<Guid>());
             if 
(!childHierarchy.get(cmdEntity.getRootCommandId()).contains(cmdEntity.getId())) 
{
                 
childHierarchy.get(cmdEntity.getRootCommandId()).add(cmdEntity.getId());
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/CommandExecutor.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/CommandExecutor.java
index 7520a81..576006d 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/CommandExecutor.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/CommandExecutor.java
@@ -77,11 +77,9 @@
         if (!cmdExecutorInitialized) {
             synchronized(LOCK) {
                 if (!cmdExecutorInitialized) {
-                    CommandBase<?> cmd;
                     for (CommandEntity cmdEntity : 
coco.getCommandsWithCallBackEnabled()) {
                         if (!cmdEntity.isCallBackNotified()) {
-                            cmd = coco.retrieveCommand(cmdEntity.getId());
-                            cmdCallBackMap.put(cmdEntity.getId(), 
cmd.getCallBack());
+                            addToCallBackMap(cmdEntity);
                         }
                     }
                     cmdExecutorInitialized = true;
@@ -90,6 +88,15 @@
         }
     }
 
+    public void addToCallBackMap(CommandEntity cmdEntity) {
+        if (!cmdCallBackMap.containsKey(cmdEntity.getId())) {
+            CommandBase<?> cmd = coco.retrieveCommand(cmdEntity.getId());
+            if (cmd != null && cmd.getCallBack() != null) {
+                cmdCallBackMap.put(cmdEntity.getId(), cmd.getCallBack());
+            }
+        }
+    }
+
     public Future<VdcReturnValueBase> executeAsyncCommand(final VdcActionType 
actionType,
                                                           final 
VdcActionParametersBase parameters) {
         final CommandBase<?> command = 
CommandsFactory.createCommand(actionType, parameters);


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I9765a947d3772fbc47a1adaa91cd54da9ba202bb
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