Class McpDocumentReader

java.lang.Object
com.github._1c_syntax.bsl.languageserver.mcp.McpDocumentReader

@Component public class McpDocumentReader extends Object
Доступ MCP-инструментов к документам через общий ServerContextProvider — тот же, что наполняет LSP-сессия (и analyze/format).

Никакого отдельного состояния: документ ищется в зарегистрированных рабочих пространствах провайдера. Чтение выполняется в контексте рабочего пространства (WorkspaceContextHolder) и под блокировкой документа — так же, как обработчики LSP-запросов (см. BSLTextDocumentService#withFreshDocumentContext).

Доступ различается по тому, нужен ли инструменту свежий AST:

  • read(String, Function) — для вычисленных данных (дерево символов, индекс ссылок), которые переживают очистку AST: уже проиндексированный документ читается как есть, без повторного разбора;
  • analyze(String, Function) — для диагностик: AST пересобирается из файла, после чтения освобождается (ServerContext.tryClearDocument(DocumentContext));
  • открытый в редакторе документ в обоих случаях читается «живым» под read-lock'ом и никогда не очищается.
  • Constructor Details

  • Method Details

    • read

      public <T> T read(String path, Function<DocumentContext, T> action)
      Прочитать вычисленные данные документа (дерево символов, ссылки) без повторного разбора AST.
      Type Parameters:
      T - Тип результата.
      Parameters:
      path - Путь к файлу (абсолютный или относительный).
      action - Действие над контекстом документа.
      Returns:
      Результат действия.
    • analyze

      public <T> T analyze(String path, Function<DocumentContext, T> action)
      Прочитать данные, требующие свежего AST (диагностики).

      Не открытый в редакторе документ пересобирается из файла, после чтения AST освобождается. Открытый в редакторе документ читается «живым» (как в LSP) — содержимое буфера может отличаться от файла на диске.

      Type Parameters:
      T - Тип результата.
      Parameters:
      path - Путь к файлу (абсолютный или относительный).
      action - Действие над контекстом документа.
      Returns:
      Результат действия.