private OperationResponse execute(ModelNode request, boolean useWaitCursor) throws IOException { if(request.get(Util.OPERATION).asString().equals(Util.COMPOSITE) && (!request.get(Util.STEPS).isDefined() || request.get(Util.STEPS).asList().isEmpty())) { return OperationResponse.Factory.createSimple(new ModelNode("WARN: no request was sent as there were no server-side operations to execute")); } try { if (useWaitCursor) { cliGuiCtx.getMainWindow().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); } return client.get().executeOperation(OperationBuilder.create(request).build(), OperationMessageHandler.DISCARD); } finally { if (useWaitCursor) { cliGuiCtx.getMainWindow().setCursor(Cursor.getDefaultCursor()); } } }
return OperationResponse.Factory.createSimple(responseNode); responseNode.get(OUTCOME).set(FAILED); responseNode.get(FAILURE_DESCRIPTION).set(ControllerLogger.ROOT_LOGGER.cannotGetControllerLock()); return OperationResponse.Factory.createSimple(responseNode); return OperationResponse.Factory.createSimple(responseNode); } else { return new OperationResponseImpl(responseNode, responseStreams);
return OperationResponse.Factory.createSimple(responseNode); responseNode.get(OUTCOME).set(FAILED); responseNode.get(FAILURE_DESCRIPTION).set(ControllerLogger.ROOT_LOGGER.cannotGetControllerLock()); return OperationResponse.Factory.createSimple(responseNode); return OperationResponse.Factory.createSimple(responseNode); } else { return new OperationResponseImpl(responseNode, responseStreams);
OperationResponse originalResponse = OperationResponse.Factory.createSimple(result); final Future<OperationResponse> future = executorService.submit(new ServerRequireRestartTask(identity, proxy, originalResponse, blockingTimeout));
OperationResponse originalResponse = OperationResponse.Factory.createSimple(result); final Future<OperationResponse> future = executorService.submit(new ServerRequireRestartTask(identity, proxy, originalResponse, blockingTimeout));
assert operation.getInputStreams().size() == 0; // we don't support associating streams with an active op ModelNode responseNode = executor.joinActiveOperation(operation.getOperation(), messageHandler, control, handler, domainControllerLockId); return OperationResponse.Factory.createSimple(responseNode); } else { return executor.executeAndAttemptLock(operation, messageHandler, control, new OperationStepHandler() {
assert operation.getInputStreams().size() == 0; // we don't support associating streams with an active op ModelNode responseNode = executor.joinActiveOperation(operation.getOperation(), messageHandler, control, handler, domainControllerLockId); return OperationResponse.Factory.createSimple(responseNode); } else { return executor.executeAndAttemptLock(operation, messageHandler, control, new OperationStepHandler() {
resultHandler.done(OperationResponse.Factory.createSimple(response));
resultHandler.done(OperationResponse.Factory.createSimple(response));
/** * Handles sending a failure response to the remote client. If operation has already been prepared * this method simply delegates to {@link #completed(OperationResponse)}. * @param response the failure response ModelNode to send */ synchronized void failed(final ModelNode response) { if(prepared) { // in case commit or rollback throws an exception, to conform with the API we still send an operation-completed message completed(OperationResponse.Factory.createSimple(response)); } else { // Failure before prepare. So send a response to the original request assert responseChannel != null; ControllerLogger.MGMT_OP_LOGGER.tracef("sending pre-prepare failed response for %d --- interrupted: %s", getOperationId(), (Object) Thread.currentThread().isInterrupted()); try { sendResponse(responseChannel, ModelControllerProtocol.PARAM_OPERATION_FAILED, response); responseChannel = null; // we've now sent a response to the original request, so we can't use this one further } catch (IOException e) { ControllerLogger.MGMT_OP_LOGGER.failedSendingFailedResponse(e, response, getOperationId()); } finally { getResultHandler().done(null); } } }
/** * Handles sending a failure response to the remote client. If operation has already been prepared * this method simply delegates to {@link #completed(OperationResponse)}. * @param response the failure response ModelNode to send */ synchronized void failed(final ModelNode response) { if(prepared) { // in case commit or rollback throws an exception, to conform with the API we still send an operation-completed message completed(OperationResponse.Factory.createSimple(response)); } else { // Failure before prepare. So send a response to the original request assert responseChannel != null; ControllerLogger.MGMT_OP_LOGGER.tracef("sending pre-prepare failed response for %d --- interrupted: %s", getOperationId(), (Object) Thread.currentThread().isInterrupted()); try { sendResponse(responseChannel, ModelControllerProtocol.PARAM_OPERATION_FAILED, response); responseChannel = null; // we've now sent a response to the original request, so we can't use this one further } catch (IOException e) { ControllerLogger.MGMT_OP_LOGGER.failedSendingFailedResponse(e, response, getOperationId()); } finally { getResultHandler().done(null); } } }
private OperationResponse execute(ModelNode request, boolean useWaitCursor) throws IOException { if(request.get(Util.OPERATION).asString().equals(Util.COMPOSITE) && (!request.get(Util.STEPS).isDefined() || request.get(Util.STEPS).asList().isEmpty())) { return OperationResponse.Factory.createSimple(new ModelNode("WARN: no request was sent as there were no server-side operations to execute")); } try { if (useWaitCursor) { cliGuiCtx.getMainWindow().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); } return client.get().executeOperation(OperationBuilder.create(request).build(), OperationMessageHandler.DISCARD); } finally { if (useWaitCursor) { cliGuiCtx.getMainWindow().setCursor(Cursor.getDefaultCursor()); } } }
@Override public OperationResponse executeOperation(Operation operation, OperationMessageHandler handler) throws IOException { return OperationResponse.Factory.createSimple(execute(operation)); }
@Override public void operationFailed(ModelNode response) { finalResultRef.set(OperationResponse.Factory.createSimple(response)); }
@Override public AsyncFuture<OperationResponse> getFinalResult() { return new CompletedFuture<>(OperationResponse.Factory.createSimple(finalResult)); }
private static OperationResponse createOperationResponse(ModelNode simpleResponse, ManagementChannelAssociation channelAssociation, int operationId) { final ModelNode streamHeader = simpleResponse.hasDefined(RESPONSE_HEADERS) && simpleResponse.get(RESPONSE_HEADERS).hasDefined(ATTACHED_STREAMS) ? simpleResponse.get(RESPONSE_HEADERS, ATTACHED_STREAMS) : null; if (streamHeader != null && streamHeader.asInt() > 0) { return OperationResponseProxy.create(simpleResponse, channelAssociation, operationId, streamHeader); } else { return OperationResponse.Factory.createSimple(simpleResponse); } }
private OperationResponse getCancelledResult() { ModelNode cancelled = new ModelNode(); cancelled.get(OUTCOME).set(CANCELLED); return OperationResponse.Factory.createSimple(cancelled); }
ExecutedHostRequest toFailedRequest(ModelNode finalResponse) { OperationResponse simpleResponse = OperationResponse.Factory.createSimple(finalResponse); return new ExecutedHostRequest(new CompletedFuture<>(simpleResponse), resultTransformer, rejectPolicy); } }
private OperationResponse getOperationResponse(final ModelNode simpleResponse, final int batchId) throws IOException { final ModelNode streamHeader = simpleResponse.hasDefined(RESPONSE_HEADERS) && simpleResponse.get(RESPONSE_HEADERS).hasDefined(ATTACHED_STREAMS) ? simpleResponse.get(RESPONSE_HEADERS, ATTACHED_STREAMS) : null; if (streamHeader != null && streamHeader.asInt() > 0) { return OperationResponseProxy.create(simpleResponse, getChannelAssociation(), batchId, streamHeader); } else { return OperationResponse.Factory.createSimple(simpleResponse); } }
static OperationResponse fromFailure(OperationFailedException ofe) { ModelNode responseNode = new ModelNode(); responseNode.get(OUTCOME).set(FAILED); responseNode.get(FAILURE_DESCRIPTION).set(ofe.getFailureDescription()); return OperationResponse.Factory.createSimple(responseNode); }