It could cause some security issue if we just through the exception back to
the client.
In JAXRS there are exception mapping mechanism[1], maybe we can consider
add this kind of feature here.

[1]https://docs.oracle.com/javaee/7/api/javax/ws/rs/ext/ExceptionMapper.html


Willem Jiang

Twitter: willemjiang
Weibo: 姜宁willem

On Fri, Jul 20, 2018 at 11:41 AM, bismy <[email protected]> wrote:

> Currently we support the following interface definition, but there are
> some problem in handler. When error code is 400 or 500, handler taking this
> error code as error, and will throw exception. For example using bizkeeper
> handler we have this code. This code will give a cast case exeception since
> result is not Throwable.
>
>
> Any suggestions for this scenario? Change bizkeeper code to check if
> result if Throwable or change our logic to taking when Resonse.isFailed to
> be true?
>
>
> --bizkeeper code:
>           if (isFailedResponse(resp)) {
>             // e should implements toString
>             LOG.warn("bizkeeper command {} failed due to {}", invocation.
> getInvocationQualifiedName(),
>                 resp.getResult());
>             f.onError(resp.getResult());
>             FallbackPolicyManager.record(type, invocation, resp, false);
>           }
>
>
>
> ---service definition:
>     @Path("/usingCSEResponse2")
>     @POST
>     @ApiResponses({
>             @ApiResponse(code = 200, response = MultiResponse200.class,
> message = ""),
>             @ApiResponse(code = 400, response = MultiResponse400.class,
> message = ""),
>             @ApiResponse(code = 500, response = MultiResponse500.class,
> message = "")})
>     @ResponseHeaders({@ResponseHeader(name = "x-code", response =
> String.class)})
>     public Response usingCSEResponse2(MultiRequest request) {
>         Response response = new Response();
>         if (request.getCode() == 400) {
>             MultiResponse400 r = new MultiResponse400();
>             r.setName("400");
>             response.setStatus(javax.ws.rs.core.Response.Status.BAD_
> REQUEST);
>             response.setResult(r);
>             response.getHeaders().addHeader("x-code", "400");
>
>
>         } else if (request.getCode() == 500) {
>             MultiResponse500 r = new MultiResponse500();
>             r.setName("500");
>             response.setStatus(javax.ws.rs.core.Response.Status.BAD_
> REQUEST);
>             response.setResult(r);
>             response.getHeaders().addHeader("x-code", "500");
>         } else {
>             MultiResponse200 r = new MultiResponse200();
>             r.setName("200");
>             response.setStatus(javax.ws.rs.core.Response.Status.BAD_
> REQUEST);
>             response.setResult(r);
>             response.getHeaders().addHeader("x-code", "200");
>         }
>         return response;
>     }

Reply via email to