List<InputStream> getInputStreams() { final OperationAttachments attachments = getAttachments(); if(attachments == null) { return Collections.emptyList(); } return attachments.getInputStreams(); }
@Override public void handleRequest(final DataInput input, final ActiveOperation.ResultHandler<ModelNode> resultHandler, final ManagementRequestContext<ExecuteRequestContext> context) throws IOException { expectHeader(input, ModelControllerProtocol.PARAM_MESSAGE_SEVERITY); final MessageSeverity severity = Enum.valueOf(MessageSeverity.class, input.readUTF()); expectHeader(input, ModelControllerProtocol.PARAM_MESSAGE); final String message = input.readUTF(); expectHeader(input, ManagementProtocol.REQUEST_END); final ExecuteRequestContext requestContext = context.getAttachment(); // perhaps execute async final OperationMessageHandler handler = requestContext.getMessageHandler(); handler.handleReport(severity, message); }
final ExecuteRequestContext executeRequestContext = context.getAttachment(); if(prepared) { executeRequestContext.operationPrepared(new ModelController.OperationTransaction() { } else { executeRequestContext.operationFailed(response); resultHandler.done(response);
final ExecuteRequestContext executeRequestContext = context.getAttachment(); if(prepared) { executeRequestContext.operationPrepared(new ModelController.OperationTransaction() { } else { executeRequestContext.operationFailed(response); resultHandler.done(OperationResponse.Factory.createSimple(response));
final ExecuteRequestContext executeRequestContext = context.getAttachment(); if(prepared) { executeRequestContext.operationPrepared(new ModelController.OperationTransaction() { } else { executeRequestContext.operationFailed(response); resultHandler.done(response);
@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 protected void sendRequest(final ActiveOperation.ResultHandler<OperationResponse> resultHandler, final ManagementRequestContext<ExecuteRequestContext> context, final FlushableDataOutput output) throws IOException { ControllerLogger.MGMT_OP_LOGGER.tracef("transmitting ExecuteRequest for %d", context.getOperationId()); // Write the operation final ExecuteRequestContext executionContext = context.getAttachment(); final List<InputStream> streams = executionContext.getInputStreams(); final ModelNode operation = executionContext.getOperation(); int inputStreamLength = 0; if (streams != null) { inputStreamLength = streams.size(); } output.write(ModelControllerProtocol.PARAM_OPERATION); operation.writeExternal(output); output.write(ModelControllerProtocol.PARAM_INPUTSTREAMS_LENGTH); output.writeInt(inputStreamLength); final Boolean sendIdentity = channelAssociation.getAttachments().getAttachment(SEND_IDENTITY); if (sendIdentity != null && sendIdentity) { ExecuteRequestContext attachment = context.getAttachment(); write(output, attachment.getSecurityIdentity(), attachment.getRemoteAddress()); } final Boolean sendInVm = channelAssociation.getAttachments().getAttachment(SEND_IN_VM); if (sendInVm != null && sendInVm) { ExecuteRequestContext attachment = context.getAttachment(); output.writeByte(ModelControllerProtocol.PARAM_IN_VM_CALL); output.writeBoolean(attachment.isInVmCall()); } }
@Override protected void sendRequest(final ActiveOperation.ResultHandler<OperationResponse> resultHandler, final ManagementRequestContext<ExecuteRequestContext> context, final FlushableDataOutput output) throws IOException { ControllerLogger.MGMT_OP_LOGGER.tracef("transmitting ExecuteRequest for %d", context.getOperationId()); // Write the operation final ExecuteRequestContext executionContext = context.getAttachment(); final List<InputStream> streams = executionContext.getInputStreams(); final ModelNode operation = executionContext.getOperation(); int inputStreamLength = 0; if (streams != null) { inputStreamLength = streams.size(); } output.write(ModelControllerProtocol.PARAM_OPERATION); operation.writeExternal(output); output.write(ModelControllerProtocol.PARAM_INPUTSTREAMS_LENGTH); output.writeInt(inputStreamLength); final Boolean sendIdentity = channelAssociation.getAttachments().getAttachment(SEND_IDENTITY); if (sendIdentity != null && sendIdentity) { ExecuteRequestContext attachment = context.getAttachment(); write(output, attachment.getSecurityIdentity(), attachment.getRemoteAddress()); } final Boolean sendInVm = channelAssociation.getAttachments().getAttachment(SEND_IN_VM); if (sendInVm != null && sendInVm) { ExecuteRequestContext attachment = context.getAttachment(); output.writeByte(ModelControllerProtocol.PARAM_IN_VM_CALL); output.writeBoolean(attachment.isInVmCall()); } }
@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 protected void sendRequest(final ActiveOperation.ResultHandler<ModelNode> resultHandler, final ManagementRequestContext<ExecuteRequestContext> context, final FlushableDataOutput output) throws IOException { // Write the operation final ExecuteRequestContext executionContext = context.getAttachment(); final List<InputStream> streams = executionContext.getInputStreams(); final ModelNode operation = executionContext.getOperation(); int inputStreamLength = 0; if (streams != null) { inputStreamLength = streams.size(); } output.write(ModelControllerProtocol.PARAM_OPERATION); operation.writeExternal(output); output.write(ModelControllerProtocol.PARAM_INPUTSTREAMS_LENGTH); output.writeInt(inputStreamLength); final Boolean sendSubject = channelAssociation.getAttachments().getAttachment(SEND_SUBJECT); if (sendSubject != null && sendSubject) { final Subject subject = context.getAttachment().getSerializableSubject(); writeSubject(output, subject); } }
final ExecuteRequestContext executeRequestContext = context.getAttachment(); if(prepared) { executeRequestContext.operationPrepared(new ModelController.OperationTransaction() { } else { executeRequestContext.operationFailed(response); resultHandler.done(OperationResponse.Factory.createSimple(response));
@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; }
@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 protected void sendRequest(final ActiveOperation.ResultHandler<ModelNode> resultHandler, final ManagementRequestContext<ExecuteRequestContext> context, final FlushableDataOutput output) throws IOException { // Write the operation final ExecuteRequestContext executionContext = context.getAttachment(); final List<InputStream> streams = executionContext.getInputStreams(); final ModelNode operation = executionContext.getOperation(); int inputStreamLength = 0; if (streams != null) { inputStreamLength = streams.size(); } output.write(ModelControllerProtocol.PARAM_OPERATION); operation.writeExternal(output); output.write(ModelControllerProtocol.PARAM_INPUTSTREAMS_LENGTH); output.writeInt(inputStreamLength); }
@Override public void cancelled() { operationFailed(getResponse(CANCELLED)); }
@Override public void failed(Exception e) { operationFailed(getFailureResponse(FAILED, e.getMessage())); }
@Override public void cancelled() { operationFailed(getResponse(CANCELLED)); }
@Override public void cancelled() { operationFailed(getResponse(CANCELLED)); }
@Override public void failed(Exception e) { operationFailed(getFailureResponse(FAILED, e.getMessage())); }
@Override public void cancelled() { operationFailed(getResponse(CANCELLED)); }