@Override
protected OperationResult doExecute(final OperationContext operationHandlerContext, final Operation operation,
final OperationHandler operationHandler, final ResultHandler resultHandler,
final PathAddress address, final OperationControllerContext operationControllerContext) throws OperationFailedException {
ControllerTransactionContext transaction = operationControllerContext.getControllerTransactionContext();
if (transaction == null) {
return super.doExecute(operationHandlerContext, operation, operationHandler, resultHandler, address, operationControllerContext);
}
try {
ModelNode opNode = operation.getOperation();
final OperationResult result = operationHandler.execute(operationHandlerContext, opNode, resultHandler);
ControllerResource txResource = getControllerResource(operationHandlerContext, opNode, operationHandler, resultHandler,
address, operationControllerContext);
if (txResource != null) {
transaction.registerResource(txResource);
}
return result;
} catch (OperationFailedException e) {
transaction.setRollbackOnly();
throw e;
}
}