public BuildAgentsDiffBean calculateDiff()

in server/src/jetbrains/buildServer/agentsDiff/BuildAgentsDiffCalculator.java [24:50]


  public BuildAgentsDiffBean calculateDiff(@NotNull final AgentDescription agentA, @NotNull final AgentDescription agentB) {
    final Map<String, String> configParamsA = simplifyParameters(agentA.getAvailableParameters());
    final Map<String, String> configParamsB = simplifyParameters(agentB.getAvailableParameters());

    final List<BuildAgentsDiffEntry> entries = new LinkedList<>();

    final MapDifference<String, String> mapDifference = Maps.difference(configParamsA, configParamsB);
    if(!mapDifference.areEqual()){
      final Map<String, MapDifference.ValueDifference<String>> stringValueDifferenceMap = mapDifference.entriesDiffering();
      for(String key : stringValueDifferenceMap.keySet()){
        final MapDifference.ValueDifference<String> stringValueDifference = stringValueDifferenceMap.get(key);
        entries.add(new BuildAgentsDiffEntry(BuildAgentsDiffEntryType.PARAMETER_VALUE, key, stringValueDifference.leftValue(), stringValueDifference.rightValue()));
      }

      Map<String, String> map = mapDifference.entriesOnlyOnLeft();
      for(String key : map.keySet()){
        entries.add(new BuildAgentsDiffEntry(BuildAgentsDiffEntryType.PARAMETER_NAME, key, map.get(key), null));
      }

      map = mapDifference.entriesOnlyOnRight();
      for(String key : map.keySet()){
        entries.add(new BuildAgentsDiffEntry(BuildAgentsDiffEntryType.PARAMETER_NAME, key, null, map.get(key)));
      }
    }
    entries.sort((o1, o2) -> o1.getPropertyName().compareToIgnoreCase(o2.getPropertyName()));
    return new BuildAgentsDiffBean(agentA, agentB, entries);
  }