override fun fillModel()

in src/main/kotlin/jetbrains/buildServer/server/querylang/ui/SearchAdminPage.kt [52:106]


    override fun fillModel(model: MutableMap<String, Any>, request: HttpServletRequest) {
        val form = FormUtil.getOrCreateForm(
            request,
            SearchAdminForm::class.java
        ) { SearchAdminForm() }!!
        FormUtil.bindFromRequest(request, form)

        var limit = TeamCityProperties.getInteger(RESULTS_CNT_LIMIT_NAME, RESULTS_CNT_DEFAULT)
        request.getParameter("limit")?.let {
            limit = it.toIntOrNull() ?: limit
        }

        val bean = SearchAdminBean(form, projectManager, pluginDescriptor)
        val executor = executorServices.normalExecutorService

        var task: Future<QueryResult?>? = null
        try {
            val result = bean.getQuery()?.let {
                val queryTimelimit = TeamCityProperties.getIntervalMilliseconds(TIMELIMIT_PARAM_NAME, DEFAULT_TIMELIMIT)
                val authHolder = securityContext.authorityHolder
                task = executor.submit<QueryResult?> {
                    val res = try {
                        securityContext.runAs<QueryResult>(authHolder) { return@runAs requestClient.process(it, limit) }
                    } catch (e: InterruptedException) {
                        null
                    }
                    return@submit res
                }
                task!!.get(queryTimelimit, TimeUnit.MILLISECONDS)
            }
            bean.buildResultList(result)
        } catch (e: TimeoutException) {
            bean.setWrongQueryMessage("Timeout")
        } catch (e: ExecutionException) {
            val innere = e.cause
            if (innere is ParsingException) {
                bean.setWrongQueryMessage("Wrong query: ${innere.message}")
            } else {
                bean.setWrongQueryMessage("Java ${e.javaClass.name} exception: ${innere?.message}")
            }
        }
        catch (e: Exception) {
            bean.setWrongQueryMessage("Java exception: ${e.message}")
        }
        finally {
            try {
                task?.cancel(true)
            }
            catch (e: Exception) {}
        }


        model["searchForm"] = bean
        CameFromSupport.setupCameFromUrl(model, request)
    }