diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/plugins/api/MavenPluginConfigurationLanguageInjector.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/plugins/api/MavenPluginConfigurationLanguageInjector.java index 304d05d3db37..9d2692aac16b 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/plugins/api/MavenPluginConfigurationLanguageInjector.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/plugins/api/MavenPluginConfigurationLanguageInjector.java @@ -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; diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/plugins/api/MavenPluginDescriptor.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/plugins/api/MavenPluginDescriptor.java index f3973b570095..88607dd531d5 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/plugins/api/MavenPluginDescriptor.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/plugins/api/MavenPluginDescriptor.java @@ -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 parsePluginId(String mavenId) { diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/plugins/api/MavenPluginParamInfo.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/plugins/api/MavenPluginParamInfo.java index a58458ad5fb4..a5a754185ddb 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/plugins/api/MavenPluginParamInfo.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/plugins/api/MavenPluginParamInfo.java @@ -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);