You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2018/06/11 07:57:06 UTC
[incubator-servicecomb-java-chassis] branch master updated:
[SCB-656]edge service should return back the providers error code
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 <ba...@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
liubao@apache.org.