Class McpDocumentReader
java.lang.Object
com.github._1c_syntax.bsl.languageserver.mcp.McpDocumentReader
Доступ MCP-инструментов к документам через общий
ServerContextProvider —
тот же, что наполняет LSP-сессия (и analyze/format).
Никакого отдельного состояния: документ ищется в зарегистрированных рабочих
пространствах провайдера. Чтение выполняется в контексте рабочего пространства
(WorkspaceContextHolder) и под блокировкой документа — так же, как обработчики
LSP-запросов (см. BSLTextDocumentService#withFreshDocumentContext).
Доступ различается по тому, нужен ли инструменту свежий AST:
read(String, Function)— для вычисленных данных (дерево символов, индекс ссылок), которые переживают очистку AST: уже проиндексированный документ читается как есть, без повторного разбора;analyze(String, Function)— для диагностик: AST пересобирается из файла, после чтения освобождается (ServerContext.tryClearDocument(DocumentContext));- открытый в редакторе документ в обоих случаях читается «живым» под read-lock'ом и никогда не очищается.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription<T> Tanalyze(String path, Function<DocumentContext, T> action) Прочитать данные, требующие свежего AST (диагностики).<T> Tread(String path, Function<DocumentContext, T> action) Прочитать вычисленные данные документа (дерево символов, ссылки) без повторного разбора AST.
-
Constructor Details
-
McpDocumentReader
@ConstructorProperties("serverContextProvider") public McpDocumentReader(ServerContextProvider serverContextProvider)
-
-
Method Details
-
read
Прочитать вычисленные данные документа (дерево символов, ссылки) без повторного разбора AST.- Type Parameters:
T- Тип результата.- Parameters:
path- Путь к файлу (абсолютный или относительный).action- Действие над контекстом документа.- Returns:
- Результат действия.
-
analyze
Прочитать данные, требующие свежего AST (диагностики).Не открытый в редакторе документ пересобирается из файла, после чтения AST освобождается. Открытый в редакторе документ читается «живым» (как в LSP) — содержимое буфера может отличаться от файла на диске.
- Type Parameters:
T- Тип результата.- Parameters:
path- Путь к файлу (абсолютный или относительный).action- Действие над контекстом документа.- Returns:
- Результат действия.
-