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);
}