in src/main/java/jetbrains/buildServer/investigationsAutoAssigner/processing/BuildProblemsAssigner.java [48:90]
void assign(final HeuristicResult heuristicsResult,
final SProject sProject,
final SBuild sBuild,
final List<BuildProblem> buildProblems) {
if (heuristicsResult.isEmpty()) return;
HashMap<Responsibility, List<BuildProblemInfo>> responsibilityToBuildProblem = new HashMap<>();
for (BuildProblem buildProblem : buildProblems) {
Responsibility responsibility = heuristicsResult.getResponsibility(buildProblem);
responsibilityToBuildProblem.putIfAbsent(responsibility, new ArrayList<>());
List<BuildProblemInfo> buildProblemList = responsibilityToBuildProblem.get(responsibility);
buildProblemList.add(buildProblem);
}
SProject targetProject =
myTargetProjectFinder.getPreferredInvestigationProject(sProject, null);
if (targetProject == null) {
targetProject = sProject;
}
Set<Responsibility> uniqueResponsibilities = responsibilityToBuildProblem.keySet();
for (Responsibility responsibility : uniqueResponsibilities) {
if (responsibility != null) {
LOGGER.info(String.format("Automatically assigning investigation(s) to %s in %s because user %s",
responsibility.getUser().getUsername(),
targetProject.describe(false),
responsibility.getDescription()));
List<BuildProblemInfo> buildProblemList = responsibilityToBuildProblem.get(responsibility);
String linkToBuild = myWebLinks.getViewResultsUrl(sBuild);
myBuildProblemResponsibilityFacade.setBuildProblemResponsibility(
buildProblemList,
targetProject.getProjectId(),
new ResponsibilityEntryEx(
ResponsibilityEntry.State.TAKEN, responsibility.getUser(), null, Dates.now(),
responsibility.getAssignDescription(linkToBuild), getRemoveMethod(sBuild.getBuildType()))
);
myFavoriteBuildAssigner.markAsFavorite(sBuild, (SUser)responsibility.getUser());
myStatisticsReporter.reportAssignedInvestigations(buildProblemList.size(), responsibility);
}
}
}