Class ServerContext
Управляет коллекцией всех документов проекта, метаданными конфигурации 1С, обеспечивает доступ к контекстам отдельных документов и их синхронизацию.
-
Constructor Summary
ConstructorsConstructorDescriptionServerContext(ObjectProvider<DocumentContext> documentContextProvider, WorkDoneProgressHelper workDoneProgressHelper, LanguageServerConfiguration languageServerConfiguration) -
Method Summary
Modifier and TypeMethodDescriptionaddDocument(URI uri) Добавить документ в контекст.voidclear()voidcloseDocument(DocumentContext documentContext) Закрыть документ и очистить его содержимое.getDocument(String mdoRef, ModuleType moduleType) getDocument(URI uri) Получить документ по URI.getDocumentLock(URI uri) Получить блокировку для выполнения операций над документом по URI.getDocumentNoLock(URI uri) Получить документ по URI без захвата блокировки.getDocuments(String mdoRef) getDocumentUnsafe(String uri) Получить документ по строковому URI с нормализацией.getDocumentUnsafe(URI uri) Получить документ по URI с нормализацией.booleanisDocumentOpened(DocumentContext documentContext) Проверяет, открыт ли документ в редакторе.voidopenDocument(DocumentContext documentContext, String content, Integer version) Помечает документ как открытый и перестраивает его содержимоеvoidvoidpopulateContext(List<File> files) voidrebuildDocument(DocumentContext documentContext) Перестроить документ.voidrebuildDocument(DocumentContext documentContext, String content, Integer version) Перестроить документ, используя новое содержимое.voidremoveDocument(URI uri) Удалить документ из контекста.voidsetConfigurationRoot(@Nullable Path configurationRoot) voidtryClearDocument(DocumentContext documentContext) Попытаться очистить документ, если он не открыт.
-
Constructor Details
-
ServerContext
@ConstructorProperties({"documentContextProvider","workDoneProgressHelper","languageServerConfiguration"}) public ServerContext(ObjectProvider<DocumentContext> documentContextProvider, WorkDoneProgressHelper workDoneProgressHelper, LanguageServerConfiguration languageServerConfiguration)
-
-
Method Details
-
populateContext
public void populateContext() -
populateContext
-
getDocuments
-
getDocument
-
getDocument
Получить документ по URI.URI должен быть уже нормализован (например, получен из DocumentContext или через Absolute.uri).
- Parameters:
uri- нормализованный URI документа- Returns:
- Контекст документа или
null, если документ не найден
-
getDocumentNoLock
Получить документ по URI без захвата блокировки.Этот метод предоставляет прямой доступ к хранилищу документов без синхронизации. Используйте его только в случаях, когда:
- блокировка уже захвачена вызывающим кодом;
- операция только на чтение и допускается eventual consistency;
- критична производительность и накладные расходы на блокировку недопустимы.
Внимание: использование этого метода без внешней синхронизации может привести к состояниям гонки, если другой поток одновременно модифицирует документ или коллекцию.
- Parameters:
uri- нормализованный URI документа- Returns:
- Контекст документа или
null, если документ не найден - See Also:
-
getDocumentUnsafe
Получить документ по URI с нормализацией.Используется для внешних вызовов (CLI, Service), где URI может быть не нормализован.
- Parameters:
uri- URI документа (будет нормализован)- Returns:
- Контекст документа или
null, если документ не найден
-
getDocumentUnsafe
Получить документ по строковому URI с нормализацией.Используется для внешних вызовов (CLI, Service), где URI может быть не нормализован.
- Parameters:
uri- строковый URI документа- Returns:
- Контекст документа или
null, если документ не найден
-
getDocuments
-
addDocument
Добавить документ в контекст.URI должен быть уже нормализован.
- Parameters:
uri- нормализованный URI документа- Returns:
- Контекст документа
-
removeDocument
Удалить документ из контекста.URI должен быть уже нормализован.
- Parameters:
uri- нормализованный URI документа
-
clear
public void clear() -
getDocumentLock
Получить блокировку для выполнения операций над документом по URI.Может использоваться для операций, требующих долгосрочной установки блокировки на изменение объекта.
- Parameters:
uri- URI документа- Returns:
- блокировка, связанная с URI документа.
-
openDocument
Помечает документ как открытый и перестраивает его содержимоеДокументы, помеченные как открытые, не будут удаляться из контекста сервера при вызове
removeDocument(URI), а так же не будут очищаться при вызовеtryClearDocument(DocumentContext).Если вспомогательные данные документа был в "замороженном" состоянии, то перед перестроением документа они будут разморожены.
- Parameters:
documentContext- документ, который необходимо открыть.content- новое содержимое документа.version- версия документа.
-
isDocumentOpened
Проверяет, открыт ли документ в редакторе.Открытые документы управляются клиентом через события textDocument/didOpen, textDocument/didChange и textDocument/didClose. Для таких документов содержимое хранится в памяти сервера и может отличаться от содержимого файла на диске.
Открытые документы не будут удалены при вызове
removeDocument(URI)и не будут очищены при вызовеtryClearDocument(DocumentContext).- Parameters:
documentContext- документ для проверки- Returns:
true, если документ открыт в редакторе,falseв противном случае
-
rebuildDocument
Перестроить документ. В качестве содержимого будут использоваться данные, прочитанные из файла, с которым связан документ.- Parameters:
documentContext- документ, который необходимо перестроить.
-
rebuildDocument
Перестроить документ, используя новое содержимое.- Parameters:
documentContext- документ, который необходимо перестроить.content- новое содержимое документа.version- версия документа.
-
tryClearDocument
Попытаться очистить документ, если он не открыт.- Parameters:
documentContext- документ, который необходимо попытаться закрыть.
-
closeDocument
Закрыть документ и очистить его содержимое.- Parameters:
documentContext- документ, который необходимо закрыть.
-
getConfiguration
-
setConfigurationRoot
-
getConfigurationRoot
-