Ravi Nori has uploaded a new change for review.

Change subject: engine : Introduction of DecoratedCommand
......................................................................

engine : Introduction of DecoratedCommand

This patch introduces the DecoratedCommand class
that intercepts calls to endAction and calls
handleEndActionResult

Change-Id: Ie18e28110799fa2ad023e7c22cb811496fe80df8
Signed-off-by: Ravi Nori <rn...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/Command.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/CommandCoordinatorImpl.java
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/DecoratedCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/EntityAsyncTask.java
5 files changed, 52 insertions(+), 4 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/77/14077/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java
index dd18425..252e87f 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java
@@ -31,6 +31,7 @@
 import org.ovirt.engine.core.bll.quota.QuotaStorageDependent;
 import org.ovirt.engine.core.bll.quota.QuotaVdsDependent;
 import org.ovirt.engine.core.bll.session.SessionDataContainer;
+import org.ovirt.engine.core.bll.tasks.Command;
 import org.ovirt.engine.core.bll.tasks.SPMAsyncTaskHandler;
 import org.ovirt.engine.core.bll.tasks.TaskManagerUtil;
 import org.ovirt.engine.core.bll.tasks.interfaces.SPMTask;
@@ -95,7 +96,7 @@
 
 @SuppressWarnings("serial")
 public abstract class CommandBase<T extends VdcActionParametersBase> extends 
AuditLogableBase implements
-        RollbackHandler, TransactionMethod<Object> {
+        RollbackHandler, TransactionMethod<Object>, Command<T> {
     /**
      * Multiplier used to convert GB to bytes or vice versa.
      */
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/Command.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/Command.java
new file mode 100644
index 0000000..56a9f7a
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/Command.java
@@ -0,0 +1,9 @@
+package org.ovirt.engine.core.bll.tasks;
+
+import org.ovirt.engine.core.common.action.VdcActionParametersBase;
+import org.ovirt.engine.core.common.action.VdcReturnValueBase;
+
+public interface Command<T extends VdcActionParametersBase> {
+    VdcReturnValueBase endAction();
+    T getParameters();
+}
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 6fec449..1a325ca 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
@@ -83,8 +83,7 @@
             }
             CommandBase<?> command = 
CommandsFactory.getInstance().CreateCommand(actionType, parameters);
             command.setContext(new CommandContext(context));
-            return command.endAction();
-//            return new DecoratedCommand(command, dbAsyncTask).endAction();
+            return new DecoratedCommand(command, dbAsyncTask).endAction();
         } finally {
             commandEntityDAO.remove(stepId);
         }
@@ -351,6 +350,7 @@
         return AsyncTaskFactory.Construct(this, taskType, asyncTaskParams, 
duringInit);
     }
 
+    @Override
     public void handleEndActionResult(
             EntityMultiAsyncTasks entityInfo,
             VdcReturnValueBase vdcReturnValue,
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/DecoratedCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/DecoratedCommand.java
new file mode 100644
index 0000000..259f4d2
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/DecoratedCommand.java
@@ -0,0 +1,39 @@
+package org.ovirt.engine.core.bll.tasks;
+
+import org.ovirt.engine.core.common.action.VdcActionParametersBase;
+import org.ovirt.engine.core.common.action.VdcReturnValueBase;
+import org.ovirt.engine.core.common.businessentities.AsyncTasks;
+import org.ovirt.engine.core.utils.log.Log;
+import org.ovirt.engine.core.utils.log.LogFactory;
+
+public class DecoratedCommand<T extends VdcActionParametersBase> implements 
Command {
+
+    private Command command;
+    private AsyncTasks dbAsyncTask;
+    private static final Log log = LogFactory.getLog(DecoratedCommand.class);
+
+    public DecoratedCommand(Command command, AsyncTasks dbAsyncTask) {
+        this.command = command;
+        this.dbAsyncTask = dbAsyncTask;
+    }
+
+    @Override
+    public VdcReturnValueBase endAction() {
+        VdcReturnValueBase vdcReturnValue = command.endAction();
+        CommandCoordinatorImpl coco = CommandCoordinatorImpl.getInstance();
+        CommandCoordinatorImpl.getInstance().handleEndActionResult(
+                coco.getEntityMultiAsyncTasks(command),
+                vdcReturnValue,
+                dbAsyncTask);
+        return vdcReturnValue;
+    }
+
+    @Override
+    public VdcActionParametersBase getParameters() {
+        return command.getParameters();
+    }
+
+    private Object getContainerId() {
+        return getParameters().getEntityId();
+    }
+}
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/EntityAsyncTask.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/EntityAsyncTask.java
index 3762172..3945f62 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/EntityAsyncTask.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/tasks/EntityAsyncTask.java
@@ -164,7 +164,6 @@
         }
 
         finally {
-            coco.handleEndActionResult(entityInfo, vdcReturnValue, 
dbAsyncTask);
             _endActionsInProgress.decrementAndGet();
         }
     }


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

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