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