package org.ovirt.engine.core.dal; import org.ovirt.engine.core.compat.LogCompat; import org.ovirt.engine.core.compat.LogFactoryCompat; import org.ovirt.engine.core.utils.log.Logged; import org.ovirt.engine.core.utils.log.Logged.LogLevel; import org.ovirt.engine.core.utils.log.LoggedUtils; import org.ovirt.engine.core.utils.transaction.RollbackHandler; import org.ovirt.engine.core.utils.transaction.TransactionSupport; @Logged(errorLevel = LogLevel.WARN) public abstract class VdcCommandBase implements RollbackHandler { private boolean getTransactive() { // Object[] attributes = new Object[] {}; //FIXED // getClass().GetCustomAttributes(TransactiveAttribute.class, true); TransactiveAttribute annotation = getClass().getAnnotation(TransactiveAttribute.class); return annotation != null; } protected String getCommandName() { return getClass().getSimpleName().replace("Command", ""); } public Object getReturnValue() { return null; } public void setReturnValue(Object value) { } public void Execute() { String logId = LoggedUtils.getObjectId(this); LoggedUtils.logEntry(log, logId, this); if (getTransactive() && TransactionSupport.current() != null) { TransactionSupport.registerRollbackHandler(this); } try { ExecuteCommand(); LoggedUtils.logReturn(log, logId, this, getReturnValue()); } catch (Exception e) { LoggedUtils.logError(log, logId, this, e); // throw e; IllegalStateException ise = new IllegalStateException(); ise.setStackTrace(e.getStackTrace()); throw ise; } } @Override public String toString() { return getClass().getSimpleName(); } protected abstract void ExecuteCommand(); public Object ExecuteWithReturnValue() { Execute(); return getReturnValue(); } @Override public void Rollback() { log.errorFormat("Command {1} Rollbacked", getCommandName()); } protected LogCompat log = LogFactoryCompat.getLog(getClass()); }