mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
injection tests: provide more convenient variant of InjectedLanguageManager.registerMultiHostInjector
It allows us to simplify a lot of code in tests and get rid of usages of deprecated method.
This commit is contained in:
@@ -190,14 +190,7 @@ public class MyTestInjector {
|
||||
return Arrays.asList(XmlAttributeValue.class);
|
||||
}
|
||||
};
|
||||
InjectedLanguageManager.getInstance(psiManager.getProject()).registerMultiHostInjector(myMultiHostInjector);
|
||||
Disposer.register(parent, new Disposable() {
|
||||
@Override
|
||||
public void dispose() {
|
||||
boolean b = InjectedLanguageManager.getInstance(psiManager.getProject()).unregisterMultiHostInjector(myMultiHostInjector);
|
||||
assert b;
|
||||
}
|
||||
});
|
||||
InjectedLanguageManager.getInstance(psiManager.getProject()).registerMultiHostInjector(myMultiHostInjector, parent);
|
||||
|
||||
final LanguageInjector myInjector = new LanguageInjector() {
|
||||
@Override
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
package com.intellij.lang.injection;
|
||||
|
||||
import com.intellij.injected.editor.DocumentWindow;
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.components.ServiceManager;
|
||||
import com.intellij.openapi.editor.Document;
|
||||
import com.intellij.openapi.extensions.ExtensionPointName;
|
||||
@@ -29,6 +30,7 @@ import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiLanguageInjectionHost;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.annotations.TestOnly;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -52,15 +54,18 @@ public abstract class InjectedLanguageManager {
|
||||
public abstract int injectedToHost(@NotNull PsiElement injectedContext, int injectedOffset);
|
||||
|
||||
/**
|
||||
* Test-only method.
|
||||
* @see com.intellij.lang.injection.MultiHostInjector#MULTIHOST_INJECTOR_EP_NAME
|
||||
* @deprecated use {@link com.intellij.lang.injection.MultiHostInjector#MULTIHOST_INJECTOR_EP_NAME extension point} for production and
|
||||
* {@link #registerMultiHostInjector(MultiHostInjector, Disposable)} for tests
|
||||
*/
|
||||
@Deprecated
|
||||
public abstract void registerMultiHostInjector(@NotNull MultiHostInjector injector);
|
||||
|
||||
@TestOnly
|
||||
public abstract void registerMultiHostInjector(@NotNull MultiHostInjector injector, @NotNull Disposable parentDisposable);
|
||||
|
||||
/**
|
||||
* Test-only method.
|
||||
* @see com.intellij.lang.injection.MultiHostInjector#MULTIHOST_INJECTOR_EP_NAME
|
||||
* @deprecated use {@link com.intellij.lang.injection.MultiHostInjector#MULTIHOST_INJECTOR_EP_NAME extension point} for production and
|
||||
* {@link #registerMultiHostInjector(MultiHostInjector, Disposable)} for tests
|
||||
*/
|
||||
@Deprecated
|
||||
public abstract boolean unregisterMultiHostInjector(@NotNull MultiHostInjector injector);
|
||||
|
||||
+7
@@ -40,6 +40,7 @@ import com.intellij.openapi.progress.ProgressIndicator;
|
||||
import com.intellij.openapi.progress.ProgressManager;
|
||||
import com.intellij.openapi.project.DumbService;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.openapi.util.Segment;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
@@ -251,6 +252,12 @@ public class InjectedLanguageManagerImpl extends InjectedLanguageManager impleme
|
||||
clearInjectorCache();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerMultiHostInjector(@NotNull MultiHostInjector injector, @NotNull Disposable parentDisposable) {
|
||||
registerMultiHostInjector(injector);
|
||||
Disposer.register(parentDisposable, () -> unregisterMultiHostInjector(injector));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean unregisterMultiHostInjector(@NotNull MultiHostInjector injector) {
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user