@Override public ServiceResponse<ExecutionResults> executeCommandsWithResults(String id, Command<?> cmd) { if( config.isRest() ) { return makeHttpPostRequestAndCreateServiceResponse( loadBalancer.getUrl() + "/containers/instances/" + id, cmd, (Class)ExecutionResultImpl.class, getHeaders(cmd) ); } else { CommandScript script = new CommandScript( Collections.singletonList( (KieServerCommand) new CallContainerCommand( id, serialize(cmd) ) ) ); ServiceResponse response = executeJmsCommand( script, cmd.getClass().getName(), null, id ).getResponses().get( 0 ); if (shouldReturnWithNullResponse(response)) { return null; } if (response.getResult() instanceof String) { response.setResult(deserialize((String) response.getResult(), (Class) ExecutionResultImpl.class)); } return response; } }
protected <T> ServiceResponse<T> makeBackwardCompatibleHttpPostRequestAndCreateServiceResponse(String uri, String body, Class<T> resultType) { logger.debug("About to send POST request to '{}' with payload '{}'", uri, body); KieServerHttpRequest request = newRequest( uri ).body( body ).post(); KieServerHttpResponse response = request.response(); owner.setConversationId(response.header(KieServerConstants.KIE_CONVERSATION_ID_TYPE_HEADER)); if ( response.code() == Response.Status.OK.getStatusCode() ) { ServiceResponse serviceResponse = deserialize( response.body(), ServiceResponse.class ); // serialize it back to string to make it backward compatible serviceResponse.setResult(serialize(serviceResponse.getResult())); checkResultType(serviceResponse, resultType); return serviceResponse; } else { throw createExceptionForUnexpectedResponseCode( request, response ); } }
@Override public ServiceResponse<ExecutionResults> executeCommandsWithResults(String id, String payload) { if( config.isRest() ) { return makeHttpPostRequestAndCreateServiceResponse( loadBalancer.getUrl() + "/containers/instances/" + id, payload, (Class) ExecutionResultImpl.class); } else { CommandScript script = new CommandScript( Collections.singletonList((KieServerCommand) new CallContainerCommand(id, payload)) ); ServiceResponse response = executeJmsCommand( script, null, null, id ).getResponses().get( 0 ); if (shouldReturnWithNullResponse(response)) { return null; } if (response.getResult() instanceof String) { response.setResult(deserialize((String) response.getResult(), (Class) ExecutionResultImpl.class)); } return response; } }
protected <T> ServiceResponse<T> makeBackwardCompatibleHttpPostRequestAndCreateServiceResponse(String uri, Object body, Class<T> resultType, Map<String, String> headers) { logger.debug("About to send POST request to '{}' with payload '{}'", uri, body); KieServerHttpRequest request = newRequest( uri ).headers(headers).body(serialize( body )).post(); KieServerHttpResponse response = request.response(); owner.setConversationId(response.header(KieServerConstants.KIE_CONVERSATION_ID_TYPE_HEADER)); if ( response.code() == Response.Status.OK.getStatusCode() ) { ServiceResponse serviceResponse = deserialize( response.body(), ServiceResponse.class ); // serialize it back to string to make it backward compatible serviceResponse.setResult(serialize(serviceResponse.getResult())); checkResultType(serviceResponse, resultType); return serviceResponse; } else { throw createExceptionForUnexpectedResponseCode( request, response ); } }
info.setCapabilities(capabilities); ServiceResponse<KieServerInfo> response = new ServiceResponse<KieServerInfo>(ResponseType.SUCCESS, "Kie Server info"); response.setResult(info);