一种返回异步调用中获取的值的方法

时间:2016-11-17 18:31:37

标签: java jersey

我知道这是初学者的疑问,但我会尽量做到客观。

我想知道正确的方法让我的方法返回一个通过我自己的方法中的异步调用获得的值。 下面是我正在尝试的方式的简化代码。

对于澄清问题,我试图在我的webservice(jersey)的一个endpoits中这样做

@POST
@Path("authentication")
public String auth(String token) {

  Gson gson = new Gson();
  JsonResponse response = new JsonResponse();

  new AuthUserToken(token, AuthCallback() {
        @Override
        public void onSuccess(Token decodedToken) {
            String uID = decodedToken.getUid();
            String email = decodedToken.getEmail();

            User user = new UserDAO().find(uid, email);
            if ( usuario != null ){
                response.setCode(Response.Status.ACCEPTED.name());
                response.setMessage("User found");
                response.setPayload(gson.toJson(user));

            } else{
                response.setCode(Response.Status.ACCEPTED.name());
                response.setMessage("User not found");
                response.setPayload("");
            }
        }

        @Override
        public void onError(Exception e) {
            System.out.println("onFailure = "+ e.getMessage());
            response.setCode(Response.Status.UNAUTHORIZED.name());
            response.setMessage(e.getMessage());
            response.setPayload("");
        }
    });

    return new Gson().toJson(response);
}

0 个答案:

没有答案