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; > }
