package org.ovirt.engine.core.bll; import javax.inject.Inject; import javax.inject.Singleton; import org.ovirt.engine.core.bll.context.CommandContext; import org.ovirt.engine.core.bll.job.ExecutionHandler; import org.ovirt.engine.core.common.action.VdcActionParametersBase; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.utils.CorrelationIdTracker; @Singleton public class NestedCommandFactory { @Inject private ExecutionHandler executionHandler; public CommandBase<?> createWrappedCommand(CommandContext commandContext, VdcActionType actionType, VdcActionParametersBase parameter, boolean isInternal) { CommandBase<?> command = isInternal ? CommandsFactory.createCommand(actionType, parameter, commandContext != null ? commandContext.clone().withoutCompensationContext() : null) : CommandsFactory.createCommand(actionType, parameter); command.setInternalExecution(isInternal); return command; } public void prepareCommandForMonitoring(CommandContext commandContext, CommandBase<?> command) { CorrelationIdTracker.setCorrelationId(command.getCorrelationId()); if (commandContext == null || commandContext.getExecutionContext() == null || commandContext.getExecutionContext().isMonitored()) { executionHandler.prepareCommandForMonitoring(command, command.getActionType(), command.isInternalExecution()); } } }