public Long getOrResolveRoomId()

in server/src/jetbrains/buildServer/vsoRooms/notificator/VSOTeamRoomIdsCache.java [25:47]


  public Long getOrResolveRoomId(@NotNull String vsoAccount, @NotNull String teamRoomName, @NotNull VSOTeamRoomsAPIConnection apiConnection) {
    final String accountToLower = vsoAccount.toLowerCase();
    final String teamRoomNameToLower = teamRoomName.toLowerCase();
    final Pair<String, String> roomUUID = new Pair<String, String>(accountToLower, teamRoomNameToLower);
    if(!myNameToIdMap.containsKey(roomUUID)){
      synchronized (myNameToIdMap){
        if(!myNameToIdMap.containsKey(roomUUID)){
          LOG.debug(String.format("Team room ID for room name %s is not resolved yet. Calling VSO API to list all Team Rooms for account %s", teamRoomName, vsoAccount));
          try {
            for (TeamRoom teamRoom : apiConnection.getListOfRooms(vsoAccount)) {
              final Pair<String, String> resolvedRoomUUID = new Pair<String, String>(accountToLower, teamRoom.getName().toLowerCase());
              if(!myNameToIdMap.containsKey(resolvedRoomUUID)){
                myNameToIdMap.put(resolvedRoomUUID, teamRoom.getId());
              }
            }
          } catch (Exception e) {
            LOG.warn("Failed to list team rooms for account " + vsoAccount, e);
          }
        }
      }
    }
    return myNameToIdMap.get(roomUUID);
  }