2017-07-12 49 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

回答

相關問題