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