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