Class WorkspaceContextHolder
java.lang.Object
com.github._1c_syntax.bsl.languageserver.infrastructure.WorkspaceContextHolder
ThreadLocal-хранилище текущего workspace URI и имени.
Используется
WorkspaceScope для определения ключа scope,
а также для именования потоков в per-workspace ForkJoinPool.
URI должен быть нормализован вызывающим кодом перед передачей в set().
Предпочтительный способ использования — через try-with-resources:
try (var ctx = WorkspaceContextHolder.forUri(workspaceUri)) {
// workspace-scoped proxy beans resolve здесь
}
или через wrap-методы:
WorkspaceContextHolder.run(workspaceUri, () -> {
// workspace-scoped proxy beans resolve здесь
});
var result = WorkspaceContextHolder.call(workspaceUri, () -> computeResult());
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final classAutoCloseable-обёртка для workspace-контекста. -
Method Summary
Modifier and TypeMethodDescriptionstatic <T> TВычислить значение в контексте workspace с URI и именем.static <T> TВычислить значение в контексте workspace с URI.static voidclear()Создать AutoCloseable-контекст workspace с URI.Создать AutoCloseable-контекст workspace с URI и именем.static URIget()static StringgetName()static booleanisRegistered(URI workspaceUri) Проверить, зарегистрирован ли workspace.static voidregisterWorkspace(URI workspaceUri, String name) Зарегистрировать имя workspace для данного URI.static voidВыполнить действие в контексте workspace с URI.static voidВыполнить действие в контексте workspace с URI и именем.static voidУстановить workspace URI.static voidУстановить workspace URI и имя.static voidunregisterWorkspace(URI workspaceUri) Удалить регистрацию workspace.
-
Method Details
-
registerWorkspace
Зарегистрировать имя workspace для данного URI. После регистрации вызовыforUri(URI)будут использовать это имя. -
unregisterWorkspace
Удалить регистрацию workspace. -
isRegistered
Проверить, зарегистрирован ли workspace. -
forUri
public static WorkspaceContextHolder.WorkspaceContext forUri(URI workspaceUri, String workspaceName) Создать AutoCloseable-контекст workspace с URI и именем. При закрытии восстанавливает предыдущее значение ThreadLocal. -
forUri
Создать AutoCloseable-контекст workspace с URI. Имя извлекается из последнего сегмента пути URI. При закрытии восстанавливает предыдущее значение ThreadLocal. -
run
-
run
-
call
-
call
-
set
-
set
Установить workspace URI. Имя берётся из реестра зарегистрированных workspace. URI должен быть уже нормализован и зарегистрирован черезregisterWorkspace(URI, String).- Throws:
IllegalStateException- если workspace не зарегистрирован
-
get
-
getName
-
clear
public static void clear()
-