2017-07-12 50 views
0

我有一个Tomcat 8(不是android),Java 8和Firebase Admin版本5.2.0的Java Web应用程序。 下面的代码工作正常,但我需要确保该任务完成并返回一个值。如何检查Java中的firebase任务是否完成?

@POST 
    @Path("/verifyToken") 
    @Produces(MediaType.APPLICATION_JSON) 
public Response verifyToken(@Context HttpHeaders headers,@Context HttpServletRequest request) { 
     try { 
      String auth = headers.getRequestHeader("authorization").get(0); 

      if (!auth.isEmpty()) { 
       System.out.println("logged auth token: " + auth); 
      } 

      // validate token 
      Task<FirebaseToken> task = FirebaseAuth.getInstance().verifyIdToken(auth) 

      .addOnSuccessListener(new OnSuccessListener<FirebaseToken>() { 
       @Override 

       public void onSuccess(FirebaseToken decoded) { 
        String uid = decoded.getUid(); 
        //do some stuff 

       } 
     }); 
      /* 
      The return statement below shouldn't run unless "task" is 
      complete. 
       task has method isComplete() 
      */ 
      return Response.status(200).entity(user).build(); 

     } catch (Exception e) { 
      e.printStackTrace(); 
      System.out.println("Login Exception " + e.getMessage()); 
      return Response.status(500).build(); 
     } 

    } 

任务对象(任务)有一个方法“isComplete()”。但是,可能需要多次调用它。如果在第一次任务不完成时,代码应该知道如何等待,并且稍后再次调用,并且这种方式一直持续到特定次数。

我被困在如何构建逻辑以正确等待并再次尝试,直到任务完成或事件退出条件。

怎么办?

+1

您正在寻找'Tasks.await()'。请参阅Doug'd的优秀博客文章:https://firebase.googleblog.com/2016/10/become-a-firebase-taskmaster-part-4.html –

+0

这正是我所期待的。谢谢你,弗兰克。 – blackjack

回答

相关问题