Search in sources :

Example 1 with ProduceProcessor

use of org.apache.servicecomb.common.rest.codec.produce.ProduceProcessor in project incubator-servicecomb-java-chassis by apache.

the class TestRestOperationMeta method testCreateProduceProcessorsNull.

@Test
public void testCreateProduceProcessorsNull() {
    operationMeta.createProduceProcessors();
    Assert.assertSame(ProduceProcessorManager.DEFAULT_PROCESSOR, operationMeta.ensureFindProduceProcessor((String) null));
    Assert.assertSame(ProduceProcessorManager.DEFAULT_PROCESSOR, operationMeta.ensureFindProduceProcessor("*/*"));
    Assert.assertSame(ProduceProcessorManager.DEFAULT_PROCESSOR, operationMeta.ensureFindProduceProcessor(ProduceProcessorManager.DEFAULT_TYPE));
    for (String produce : ProduceProcessorManager.INSTANCE.keys()) {
        ProduceProcessor expected = ProduceProcessorManager.INSTANCE.findValue(produce);
        Assert.assertSame(expected, operationMeta.findProduceProcessor(produce));
    }
}
Also used : ProduceProcessor(org.apache.servicecomb.common.rest.codec.produce.ProduceProcessor) Test(org.junit.Test)

Example 2 with ProduceProcessor

use of org.apache.servicecomb.common.rest.codec.produce.ProduceProcessor in project incubator-servicecomb-java-chassis by apache.

the class DefaultHttpClientFilter method afterReceiveResponse.

@Override
public Response afterReceiveResponse(Invocation invocation, HttpServletResponseEx responseEx) {
    OperationMeta operationMeta = invocation.getOperationMeta();
    ResponseMeta responseMeta = operationMeta.findResponseMeta(responseEx.getStatus());
    RestOperationMeta swaggerRestOperation = operationMeta.getExtData(RestConst.SWAGGER_REST_OPERATION);
    ProduceProcessor produceProcessor = findProduceProcessor(swaggerRestOperation, responseEx);
    if (produceProcessor == null) {
        String msg = String.format("method %s, path %s, statusCode %d, reasonPhrase %s, response content-type %s is not supported", swaggerRestOperation.getHttpMethod(), swaggerRestOperation.getAbsolutePath(), responseEx.getStatus(), responseEx.getStatusType().getReasonPhrase(), responseEx.getHeader(HttpHeaders.CONTENT_TYPE));
        Exception exception = ExceptionFactory.createConsumerException(new CommonExceptionData(msg));
        return Response.consumerFailResp(exception);
    }
    Object result = null;
    try {
        result = produceProcessor.decodeResponse(responseEx.getBodyBuffer(), responseMeta.getJavaType());
    } catch (Exception e) {
        return Response.consumerFailResp(e);
    }
    Response response = Response.create(responseEx.getStatusType(), result);
    for (String headerName : responseEx.getHeaderNames()) {
        Collection<String> headerValues = responseEx.getHeaders(headerName);
        for (String headerValue : headerValues) {
            response.getHeaders().addHeader(headerName, headerValue);
        }
    }
    return response;
}
Also used : Response(org.apache.servicecomb.swagger.invocation.Response) ProduceProcessor(org.apache.servicecomb.common.rest.codec.produce.ProduceProcessor) RestOperationMeta(org.apache.servicecomb.common.rest.definition.RestOperationMeta) ResponseMeta(org.apache.servicecomb.swagger.invocation.response.ResponseMeta) CommonExceptionData(org.apache.servicecomb.swagger.invocation.exception.CommonExceptionData) OperationMeta(org.apache.servicecomb.core.definition.OperationMeta) RestOperationMeta(org.apache.servicecomb.common.rest.definition.RestOperationMeta)

Example 3 with ProduceProcessor

use of org.apache.servicecomb.common.rest.codec.produce.ProduceProcessor in project incubator-servicecomb-java-chassis by apache.

the class TestVertxHttpMethod method testHandleResponse.

@Test
public void testHandleResponse() {
    boolean status = false;
    try {
        Invocation invocation = mock(Invocation.class);
        AsyncResponse asyncResp = mock(AsyncResponse.class);
        HttpClientResponse httpResponse = mock(HttpClientResponse.class);
        OperationMeta operationMeta = mock(OperationMeta.class);
        RestOperationMeta swaggerRestOperation = mock(RestOperationMeta.class);
        Endpoint endpoint = mock(Endpoint.class);
        when(invocation.getOperationMeta()).thenReturn(operationMeta);
        URLPathBuilder urlPathBuilder = mock(URLPathBuilder.class);
        when(swaggerRestOperation.getPathBuilder()).thenReturn(urlPathBuilder);
        operationMeta.getExtData(RestConst.SWAGGER_REST_OPERATION);
        when(operationMeta.getExtData(RestConst.SWAGGER_REST_OPERATION)).thenReturn(swaggerRestOperation);
        when(invocation.getEndpoint()).thenReturn(endpoint);
        String contentType = httpResponse.getHeader("Content-Type");
        ProduceProcessor produceProcessor = mock(ProduceProcessor.class);
        when(swaggerRestOperation.findProduceProcessor(contentType)).thenReturn(produceProcessor);
        this.handleResponse(invocation, httpResponse, asyncResp);
    } catch (Exception ex) {
        status = true;
    }
    Assert.assertFalse(status);
}
Also used : ProduceProcessor(org.apache.servicecomb.common.rest.codec.produce.ProduceProcessor) Invocation(org.apache.servicecomb.core.Invocation) Endpoint(org.apache.servicecomb.core.Endpoint) RestOperationMeta(org.apache.servicecomb.common.rest.definition.RestOperationMeta) HttpClientResponse(io.vertx.core.http.HttpClientResponse) URLPathBuilder(org.apache.servicecomb.common.rest.definition.path.URLPathBuilder) OperationMeta(org.apache.servicecomb.core.definition.OperationMeta) RestOperationMeta(org.apache.servicecomb.common.rest.definition.RestOperationMeta) AsyncResponse(org.apache.servicecomb.swagger.invocation.AsyncResponse) Test(org.junit.Test)

Example 4 with ProduceProcessor

use of org.apache.servicecomb.common.rest.codec.produce.ProduceProcessor in project incubator-servicecomb-java-chassis by apache.

the class TestVertxHttpMethod method testSetCseContext.

@Test
public void testSetCseContext() {
    boolean status = false;
    try {
        Invocation invocation = mock(Invocation.class);
        HttpClientResponse httpResponse = mock(HttpClientResponse.class);
        OperationMeta operationMeta = mock(OperationMeta.class);
        RestOperationMeta swaggerRestOperation = mock(RestOperationMeta.class);
        HttpClientRequest request = mock(HttpClientRequest.class);
        Endpoint endpoint = mock(Endpoint.class);
        when(invocation.getOperationMeta()).thenReturn(operationMeta);
        URLPathBuilder urlPathBuilder = mock(URLPathBuilder.class);
        when(swaggerRestOperation.getPathBuilder()).thenReturn(urlPathBuilder);
        operationMeta.getExtData(RestConst.SWAGGER_REST_OPERATION);
        when(operationMeta.getExtData(RestConst.SWAGGER_REST_OPERATION)).thenReturn(swaggerRestOperation);
        when(invocation.getEndpoint()).thenReturn(endpoint);
        String contentType = httpResponse.getHeader("Content-Type");
        ProduceProcessor produceProcessor = mock(ProduceProcessor.class);
        when(swaggerRestOperation.findProduceProcessor(contentType)).thenReturn(produceProcessor);
        this.setCseContext(invocation, request);
    } catch (Exception ex) {
        status = true;
    }
    Assert.assertFalse(status);
}
Also used : HttpClientRequest(io.vertx.core.http.HttpClientRequest) ProduceProcessor(org.apache.servicecomb.common.rest.codec.produce.ProduceProcessor) Invocation(org.apache.servicecomb.core.Invocation) Endpoint(org.apache.servicecomb.core.Endpoint) RestOperationMeta(org.apache.servicecomb.common.rest.definition.RestOperationMeta) HttpClientResponse(io.vertx.core.http.HttpClientResponse) URLPathBuilder(org.apache.servicecomb.common.rest.definition.path.URLPathBuilder) OperationMeta(org.apache.servicecomb.core.definition.OperationMeta) RestOperationMeta(org.apache.servicecomb.common.rest.definition.RestOperationMeta) Test(org.junit.Test)

Example 5 with ProduceProcessor

use of org.apache.servicecomb.common.rest.codec.produce.ProduceProcessor in project incubator-servicecomb-java-chassis by apache.

the class TestRestOperationMeta method testCreateProduceProcessorsEmpty.

@Test
public void testCreateProduceProcessorsEmpty() {
    operationMeta.produces = Arrays.asList();
    operationMeta.createProduceProcessors();
    Assert.assertSame(ProduceProcessorManager.DEFAULT_PROCESSOR, operationMeta.ensureFindProduceProcessor((String) null));
    Assert.assertSame(ProduceProcessorManager.DEFAULT_PROCESSOR, operationMeta.ensureFindProduceProcessor("*/*"));
    Assert.assertSame(ProduceProcessorManager.DEFAULT_PROCESSOR, operationMeta.ensureFindProduceProcessor(ProduceProcessorManager.DEFAULT_TYPE));
    for (String produce : ProduceProcessorManager.INSTANCE.keys()) {
        ProduceProcessor expected = ProduceProcessorManager.INSTANCE.findValue(produce);
        Assert.assertSame(expected, operationMeta.findProduceProcessor(produce));
    }
}
Also used : ProduceProcessor(org.apache.servicecomb.common.rest.codec.produce.ProduceProcessor) Test(org.junit.Test)

Aggregations

ProduceProcessor (org.apache.servicecomb.common.rest.codec.produce.ProduceProcessor)7 Test (org.junit.Test)4 RestOperationMeta (org.apache.servicecomb.common.rest.definition.RestOperationMeta)3 OperationMeta (org.apache.servicecomb.core.definition.OperationMeta)3 HttpClientResponse (io.vertx.core.http.HttpClientResponse)2 URLPathBuilder (org.apache.servicecomb.common.rest.definition.path.URLPathBuilder)2 Endpoint (org.apache.servicecomb.core.Endpoint)2 Invocation (org.apache.servicecomb.core.Invocation)2 Response (org.apache.servicecomb.swagger.invocation.Response)2 HttpClientRequest (io.vertx.core.http.HttpClientRequest)1 BufferOutputStream (org.apache.servicecomb.foundation.vertx.stream.BufferOutputStream)1 AsyncResponse (org.apache.servicecomb.swagger.invocation.AsyncResponse)1 CommonExceptionData (org.apache.servicecomb.swagger.invocation.exception.CommonExceptionData)1 ResponseMeta (org.apache.servicecomb.swagger.invocation.response.ResponseMeta)1