protected ModelAndView doHandle()

in src/main/java/jetbrains/buildServer/investigationsAutoAssigner/representation/AutoAssignerDetailsController.java [66:127]


  protected ModelAndView doHandle(@NotNull final HttpServletRequest request,
                                  @NotNull final HttpServletResponse response) {
    final long buildId = Long.parseLong(request.getParameter("buildId"));
    final int testId = Integer.parseInt(request.getParameter("testId"));

    final SBuild build = myServer.findBuildInstanceById(buildId);
    if (build == null ||
        !userHasPermissions(build) ||
        !myCustomParameters.isDefaultSilentModeEnabled(build)) {
      return null;
    }

    @Nullable
    Branch branch = build.getBranch();
    boolean isDefaultBranch = branch == null || branch.isDefaultBranch();

    STestRun sTestRun = build.getBuildStatistics(ALL_TESTS_NO_DETAILS).findTestByTestRunId(testId);
    if (sTestRun == null) {
      return null;
    }

    boolean assignShouldNotBeShow = !isDefaultBranch ||
                                     myFlakyTestDetector.isFlaky(sTestRun.getTest().getTestNameId()) ||
                                     isUnderInvestigation(build, sTestRun.getTest());
    if (assignShouldNotBeShow &&
        !TeamCityProperties.getBoolean(SHOULD_PERSIST_FILTERED_TESTS_DESCRIPTION)) {
      return null;
    }

    final FirstFailedInFixedInCalculator.FFIData ffiData = myStatisticsProvider.calculateFFIData(sTestRun);

    @Nullable SBuild firstFailedBuild = myServer.findBuildInstanceById(ffiData.getFirstFailedInId());
    Responsibility responsibility = myAssignerArtifactDao.get(firstFailedBuild, sTestRun);
    if (responsibility != null) {
      final ModelAndView modelAndView = new ModelAndView(myDynamicTestDetailsExtensionPath);

      boolean isFilteredTestDescription = TeamCityProperties.getBoolean(SHOULD_PERSIST_FILTERED_TESTS_DESCRIPTION) &&
                                          responsibility.getDescription().startsWith(Constants.ASSIGNEE_FILTERED_DESCRIPTION_PREFIX);
      if (assignShouldNotBeShow && !isFilteredTestDescription) {
        return null;
      }

      modelAndView.getModel().put("isFilteredDescription", isFilteredTestDescription);
      modelAndView.getModel().put("userId", responsibility.getUser().getId());
      modelAndView.getModel().put("userName", responsibility.getUser().getDescriptiveName());
      String shownDescription = responsibility.getDescription();
      if (firstFailedBuild != null && firstFailedBuild.getBuildId() != buildId && shownDescription.endsWith("build")) {
        shownDescription = shownDescription + " with the first test failure";
      }
      modelAndView.getModel().put("shownDescription", shownDescription);
      modelAndView.getModel().put("investigationDescription", responsibility.getDescription());
      modelAndView.getModel().put("buildId", buildId);
      modelAndView.getModel().put("projectId", build.getProjectId());
      modelAndView.getModel().put("test", sTestRun.getTest());
      modelAndView.getModel().put("myCssPath", request.getContextPath() + myCssPath);
      myStatisticsReporter.reportShownButton();

      return modelAndView;
    }

    return null;
  }