@Override public <T extends Operation> AsyncFuture<OperationResponse> execute(TransactionalOperationListener<T> listener, T operation) throws IOException { AccessAuditContext accessAuditContext = WildFlySecurityManager.isChecking() ? doPrivileged((PrivilegedAction<AccessAuditContext>) AccessAuditContext::currentAccessAuditContext) : AccessAuditContext.currentAccessAuditContext(); final ExecuteRequestContext context = new ExecuteRequestContext(new OperationWrapper<>(listener, operation), accessAuditContext != null ? accessAuditContext.getSecurityIdentity() : null, accessAuditContext != null ? accessAuditContext.getRemoteAddress() : null, tempDir, InVmAccess.isInVmCall()); final ActiveOperation<OperationResponse, ExecuteRequestContext> op = channelAssociation.initializeOperation(context, context); final AtomicBoolean cancelSent = new AtomicBoolean(); final AsyncFuture<OperationResponse> result = new AbstractDelegatingAsyncFuture<OperationResponse>(op.getResult()) { @Override public synchronized void asyncCancel(boolean interruptionDesired) { if (!cancelSent.get()) { try { // Execute channelAssociation.executeRequest(op, new CompleteTxRequest(ModelControllerProtocol.PARAM_ROLLBACK, channelAssociation)); cancelSent.set(true); } catch (IOException e) { throw new RuntimeException(e); } } } }; context.initialize(result); channelAssociation.executeRequest(op, new ExecuteRequest()); return result; }
@Override public <T extends Operation> AsyncFuture<OperationResponse> execute(TransactionalOperationListener<T> listener, T operation) throws IOException { AccessAuditContext accessAuditContext = WildFlySecurityManager.isChecking() ? doPrivileged((PrivilegedAction<AccessAuditContext>) AccessAuditContext::currentAccessAuditContext) : AccessAuditContext.currentAccessAuditContext(); final ExecuteRequestContext context = new ExecuteRequestContext(new OperationWrapper<>(listener, operation), accessAuditContext != null ? accessAuditContext.getSecurityIdentity() : null, accessAuditContext != null ? accessAuditContext.getRemoteAddress() : null, tempDir, InVmAccess.isInVmCall()); final ActiveOperation<OperationResponse, ExecuteRequestContext> op = channelAssociation.initializeOperation(context, context); final AtomicBoolean cancelSent = new AtomicBoolean(); final AsyncFuture<OperationResponse> result = new AbstractDelegatingAsyncFuture<OperationResponse>(op.getResult()) { @Override public synchronized void asyncCancel(boolean interruptionDesired) { if (!cancelSent.get()) { try { // Execute channelAssociation.executeRequest(op, new CompleteTxRequest(ModelControllerProtocol.PARAM_ROLLBACK, channelAssociation)); cancelSent.set(true); } catch (IOException e) { throw new RuntimeException(e); } } } }; context.initialize(result); channelAssociation.executeRequest(op, new ExecuteRequest()); return result; }
@Override public <T extends Operation> AsyncFuture<ModelNode> execute(TransactionalOperationListener<T> listener, T operation) throws IOException { final Subject subject = SecurityActions.getSubject(); final ExecuteRequestContext context = new ExecuteRequestContext(new OperationWrapper<T>(listener, operation), subject); final ActiveOperation<ModelNode, ExecuteRequestContext> op = channelAssociation.initializeOperation(context, context); final AsyncFuture<ModelNode> result = new AbstractDelegatingAsyncFuture<ModelNode>(op.getResult()) { @Override public void asyncCancel(boolean interruptionDesired) { try { // Execute channelAssociation.executeRequest(op, new CompleteTxRequest(ModelControllerProtocol.PARAM_ROLLBACK)); } catch (Exception e) { throw new RuntimeException(e); } } }; context.initialize(result); channelAssociation.executeRequest(op, new ExecuteRequest()); return result; }
@Override public <T extends Operation> AsyncFuture<ModelNode> execute(TransactionalOperationListener<T> listener, T operation) throws IOException { final ExecuteRequestContext context = new ExecuteRequestContext(new OperationWrapper<T>(listener, operation)); final ActiveOperation<ModelNode, ExecuteRequestContext> op = channelAssociation.initializeOperation(context, context); final AsyncFuture<ModelNode> result = new AbstractDelegatingAsyncFuture<ModelNode>(op.getResult()) { @Override public void asyncCancel(boolean interruptionDesired) { try { // Execute channelAssociation.executeRequest(op, new CompleteTxRequest(ModelControllerProtocol.PARAM_ROLLBACK)); } catch (Exception e) { throw new RuntimeException(e); } } }; context.initialize(result); channelAssociation.executeRequest(op, new ExecuteRequest()); return result; }