override fun doHandle()

in src/main/kotlin/org/jetbrains/teamcity/github/controllers/SuitableRepositoriesPopup.kt [32:55]


    override fun doHandle(request: HttpServletRequest, response: HttpServletResponse): ModelAndView {
        val projectId = request.getParameter("projectId")
        val project = myProjectManager.findProjectByExternalId(projectId) ?: return SimpleView.createTextView("Project with id: $projectId does not exist")

        val hasConnections = myOauthConnectionManager.getAvailableConnections(project).isNotEmpty()
        val repos: SortedMap<GitHubRepositoryInfo, OAuthConnectionDescriptor> = TreeMap(GitHubRepositoryInfo.LexicographicalComparator)

        if (hasConnections) {
            val vcsRoots = Util.getVcsRootsWhereHookCanBeInstalled(project, myOauthConnectionManager)
            vcsRoots.mapNotNull { Util.getGitHubInfo(it) }
                    .toSet()
                    .forEach { info ->
                        val connections = Util.findConnections(myOauthConnectionManager, project, info.server)
                        if (connections.isNotEmpty()) repos[info] = connections.first()
                    }

        }

        val mv = ModelAndView(myViewPath)
        mv.model["repositoriesMap"] = repos
        mv.model["hasConnections"] = hasConnections
        mv.model["project"] = project
        return mv
    }