This is an automated email from the ASF dual-hosted git repository. liubao pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-java-chassis.git
The following commit(s) were added to refs/heads/master by this push: new 4d11c63 [SCB-656]edge service should return back the providers error code 4d11c63 is described below commit 4d11c63541261b8d42285c32f5bc00718d12f5ed Author: liubao <bao....@huawei.com> AuthorDate: Mon Jun 11 11:06:16 2018 +0800 [SCB-656]edge service should return back the providers error code --- .../servicecomb/edge/core/AbstractEdgeDispatcher.java | 14 +++++++++++--- .../edge/core/TestAbstractEdgeDispatcher.java | 17 +++++++++++++++++ 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/AbstractEdgeDispatcher.java b/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/AbstractEdgeDispatcher.java index a1824fa..5c7ad05 100644 --- a/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/AbstractEdgeDispatcher.java +++ b/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/AbstractEdgeDispatcher.java @@ -19,6 +19,7 @@ package org.apache.servicecomb.edge.core; import javax.ws.rs.core.Response.Status; +import org.apache.servicecomb.swagger.invocation.exception.InvocationException; import org.apache.servicecomb.transport.rest.vertx.AbstractVertxHttpDispatcher; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -32,8 +33,15 @@ public abstract class AbstractEdgeDispatcher extends AbstractVertxHttpDispatcher protected void onFailure(RoutingContext context) { LOGGER.error("edge server failed.", context.failure()); HttpServerResponse response = context.response(); - response.setStatusCode(Status.BAD_GATEWAY.getStatusCode()); - response.setStatusMessage(Status.BAD_GATEWAY.getReasonPhrase()); - response.end(); + if (context.failure() instanceof InvocationException) { + InvocationException exception = (InvocationException) context.failure(); + response.setStatusCode(exception.getStatusCode()); + response.setStatusMessage(exception.getErrorData().toString()); + response.end(); + } else { + response.setStatusCode(Status.BAD_GATEWAY.getStatusCode()); + response.setStatusMessage(Status.BAD_GATEWAY.getReasonPhrase()); + response.end(); + } } } diff --git a/edge/edge-core/src/test/java/org/apache/servicecomb/edge/core/TestAbstractEdgeDispatcher.java b/edge/edge-core/src/test/java/org/apache/servicecomb/edge/core/TestAbstractEdgeDispatcher.java index cae30b3..b675045 100644 --- a/edge/edge-core/src/test/java/org/apache/servicecomb/edge/core/TestAbstractEdgeDispatcher.java +++ b/edge/edge-core/src/test/java/org/apache/servicecomb/edge/core/TestAbstractEdgeDispatcher.java @@ -20,6 +20,7 @@ package org.apache.servicecomb.edge.core; import java.util.HashMap; import java.util.Map; +import org.apache.servicecomb.swagger.invocation.exception.InvocationException; import org.junit.Assert; import org.junit.Test; @@ -75,5 +76,21 @@ public class TestAbstractEdgeDispatcher { Assert.assertEquals(502, map.get("code")); Assert.assertEquals("Bad Gateway", map.get("msg")); + + new Expectations() { + { + context.failure(); + returns(new InvocationException(401, "unauthorized", "unauthorized"), + new InvocationException(401, "unauthorized", "unauthorized")); + context.response(); + result = response; + } + }; + + dispatcher = new AbstractEdgeDispatcherForTest(); + dispatcher.onFailure(context); + + Assert.assertEquals(401, map.get("code")); + Assert.assertEquals("unauthorized", map.get("msg")); } } -- To stop receiving notification emails like this one, please contact liu...@apache.org.