protected ModelAndView doHandle()

in commit-status-publisher-server/src/main/java/jetbrains/buildServer/commitPublisher/CommitStatusPublisherFeatureController.java [76:145]


  protected ModelAndView doHandle(@NotNull HttpServletRequest request, @NotNull HttpServletResponse response) {
    BasePropertiesBean props = (BasePropertiesBean) request.getAttribute("propertiesBean");
    String publisherId = props.getProperties().get(Constants.PUBLISHER_ID_PARAM);
    ModelAndView mv = publisherId != null ? createEditPublisherModel(publisherId) : createAddPublisherModel();
    CommitStatusPublisherSettings settings = null;
    if (publisherId != null) {
      settings = myPublisherManager.findSettings(publisherId);
      transformParameters(props, publisherId, mv);
    }
    mv.addObject("publisherSettingsUrl", myPublisherSettingsController.getUrl());
    mv.addObject("showMode", "popup");
    List<VcsRoot> vcsRoots = getVcsRoots(request);
    mv.addObject("vcsRoots", vcsRoots);
    Map <String, String> params = props.getProperties();

    if (params.containsKey(Constants.VCS_ROOT_ID_PARAM)) {
      Long internalId;
      String vcsRootId = params.get(Constants.VCS_ROOT_ID_PARAM);
      try {
        internalId = Long.valueOf(vcsRootId);
      } catch (NumberFormatException ex) {
        internalId = null;
      }
      SVcsRoot vcsRoot = null;
      for (VcsRoot vcs: vcsRoots) {
        if (!(vcs instanceof SVcsRoot)) continue;
        SVcsRoot candidate = (SVcsRoot) vcs;
        if (candidate.getExternalId().equals(vcsRootId)) {
          vcsRoot = candidate;
          String tokenId = vcsRoot.getProperty("tokenId");
          if (tokenId != null) {
            mv.addObject("tokenId", tokenId);
          }
          break;
        }
        if (null != internalId && internalId.equals(candidate.getId())) {
          props.setProperty(Constants.VCS_ROOT_ID_PARAM, candidate.getExternalId());
          vcsRoot = candidate;
          break;
        }
      }
      if(null == vcsRoot) {
        mv.addObject("hasMissingVcsRoot", true);
        if (null != internalId) {
          vcsRoot = myProjectManager.findVcsRootById(internalId);
        } else {
          vcsRoot = myProjectManager.findVcsRootByExternalId(vcsRootId);
        }
        if (null != vcsRoot) {
          mv.addObject("missingVcsRoot", vcsRoot);
        }
      }
    }
    SProject project = getProject(request);
    mv.addObject("project", project);
    mv.addObject("projectId", project.getExternalId());
    SUser user = SessionUser.getUser(request);
    List<OAuthConnectionDescriptor> oauthConnections = user == null || null == settings ?
                                                               null :
                                                               settings.getOAuthConnections(project, user);
    mv.addObject("oauthConnections", oauthConnections);
    mv.addObject("refreshTokenSupported", oauthConnections != null && oauthConnections.stream().anyMatch(c -> c.getOauthProvider().isTokenRefreshSupported()));
    mv.addObject("canEditProject", AuthUtil.hasPermissionToManageProject(mySecurityContext.getAuthorityHolder(), project.getProjectId()));

    if (settings != null) {
      settings.getSpecificAttributes(project, params).forEach(mv::addObject);
    }

    return mv;
  }