mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Refactoring of language injection
This commit is contained in:
+1
-1
@@ -43,7 +43,7 @@ public final class MavenPluginConfigurationLanguageInjector implements LanguageI
|
||||
public boolean process(MavenPluginParamInfo.ParamInfo info, MavenDomConfiguration configuration) {
|
||||
Language language = info.getLanguage();
|
||||
if (language != null) {
|
||||
injectionPlacesRegistrar.addPlace(language, TextRange.from(0, host.getTextLength()), null, null);
|
||||
injectionPlacesRegistrar.addPlace(language, TextRange.from(0, host.getTextLength()), info.getLanguageInjectionPrefix(), info.getLanguageInjectionSuffix());
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
||||
+6
@@ -71,6 +71,12 @@ public class MavenPluginDescriptor extends AbstractExtensionPointBean {
|
||||
*/
|
||||
@Attribute("language")
|
||||
public String language;
|
||||
|
||||
@Attribute("languageInjectionPrefix")
|
||||
public String languageInjectionPrefix;
|
||||
|
||||
@Attribute("languageInjectionSuffix")
|
||||
public String languageInjectionSuffix;
|
||||
}
|
||||
|
||||
public static Pair<String, String> parsePluginId(String mavenId) {
|
||||
|
||||
+21
-21
@@ -168,50 +168,50 @@ public class MavenPluginParamInfo {
|
||||
public static class ParamInfo {
|
||||
private final ClassLoader myClassLoader;
|
||||
|
||||
private final String myProviderClass;
|
||||
private final MavenPluginDescriptor.Param myParam;
|
||||
|
||||
private volatile String myLanguageId;
|
||||
private volatile boolean myLanguageInitialized;
|
||||
private Language myLanguageInstance;
|
||||
|
||||
private volatile MavenParamReferenceProvider myProviderInstance;
|
||||
|
||||
private ParamInfo(ClassLoader classLoader, MavenPluginDescriptor.Param param) {
|
||||
myClassLoader = classLoader;
|
||||
myProviderClass = param.refProvider;
|
||||
myLanguageId = param.language;
|
||||
myParam = param;
|
||||
}
|
||||
|
||||
public Language getLanguage() {
|
||||
if (myLanguageInstance != null) {
|
||||
return myLanguageInstance;
|
||||
if (!myLanguageInitialized) {
|
||||
if (myParam.language != null) {
|
||||
myLanguageInstance = Language.findLanguageByID(myParam.language);
|
||||
}
|
||||
|
||||
myLanguageInitialized = true;
|
||||
}
|
||||
|
||||
String languageId = myLanguageId;
|
||||
if (languageId == null) return null;
|
||||
return myLanguageInstance;
|
||||
}
|
||||
|
||||
Language l = Language.findLanguageByID(languageId);
|
||||
if (l == null) { // May be plugin with language is disabled.
|
||||
myLanguageId = null;
|
||||
}
|
||||
else {
|
||||
myLanguageInstance = l;
|
||||
}
|
||||
public String getLanguageInjectionPrefix() {
|
||||
return myParam.languageInjectionPrefix;
|
||||
}
|
||||
|
||||
return l;
|
||||
public String getLanguageInjectionSuffix() {
|
||||
return myParam.languageInjectionSuffix;
|
||||
}
|
||||
|
||||
public MavenParamReferenceProvider getProviderInstance() {
|
||||
if (myProviderClass == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
MavenParamReferenceProvider res = myProviderInstance;
|
||||
|
||||
if (res == null) {
|
||||
if (myParam.refProvider == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
Object instance;
|
||||
|
||||
try {
|
||||
instance = myClassLoader.loadClass(myProviderClass).newInstance();
|
||||
instance = myClassLoader.loadClass(myParam.refProvider).newInstance();
|
||||
}
|
||||
catch (Exception e) {
|
||||
throw new RuntimeException("Failed to create reference provider instance", e);
|
||||
|
||||
Reference in New Issue
Block a user