mirror of
https://github.com/sigmasternchen/xtext-core
synced 2025-03-16 16:58:56 +00:00
[generator2] remove package setters from naming
This commit is contained in:
parent
e58e4b4fb6
commit
ef5b19b6a3
6 changed files with 16 additions and 71 deletions
|
@ -17,8 +17,6 @@ interface ILanguageConfig {
|
|||
|
||||
def Grammar getGrammar()
|
||||
|
||||
def XtextGeneratorNaming getNaming()
|
||||
|
||||
def List<String> getFileExtensions()
|
||||
|
||||
def StandaloneSetupAccess getRuntimeGenSetup()
|
||||
|
|
|
@ -66,9 +66,6 @@ class LanguageConfig2 extends CompositeGeneratorFragment2 implements ILanguageCo
|
|||
@Accessors
|
||||
Module guiceModule = []
|
||||
|
||||
@Accessors
|
||||
extension XtextGeneratorNaming naming = new XtextGeneratorNaming
|
||||
|
||||
@Accessors
|
||||
val List<String> loadedResources = newArrayList
|
||||
|
||||
|
@ -93,6 +90,8 @@ class LanguageConfig2 extends CompositeGeneratorFragment2 implements ILanguageCo
|
|||
|
||||
@Inject extension XbaseUsageDetector
|
||||
|
||||
@Inject extension XtextGeneratorNaming naming
|
||||
|
||||
@Mandatory
|
||||
def void setUri(String uri) {
|
||||
this.uri = uri
|
||||
|
@ -193,7 +192,6 @@ class LanguageConfig2 extends CompositeGeneratorFragment2 implements ILanguageCo
|
|||
validateGrammar(grammar)
|
||||
this.grammar = grammar
|
||||
this.ruleNames = RuleNames.getRuleNames(grammar, true)
|
||||
this.naming.grammar = grammar
|
||||
for (fragment : fragments) {
|
||||
fragment.initialize(injector)
|
||||
}
|
||||
|
|
|
@ -22,10 +22,6 @@ class LanguageModule extends AbstractGenericModule {
|
|||
binder.bind(ILanguageConfig).toInstance(language)
|
||||
}
|
||||
|
||||
def configureNaming(Binder binder) {
|
||||
binder.bind(XtextGeneratorNaming).toInstance(language.naming)
|
||||
}
|
||||
|
||||
def configureGrammar(Binder binder) {
|
||||
binder.bind(Grammar).toProvider[language.grammar]
|
||||
}
|
||||
|
|
|
@ -55,6 +55,8 @@ class XtextGenerator extends AbstractWorkflowComponent2 {
|
|||
|
||||
@Inject XtextGeneratorTemplates templates
|
||||
|
||||
@Inject XtextGeneratorNaming naming
|
||||
|
||||
new() {
|
||||
new XtextStandaloneSetup().createInjectorAndDoEMFRegistration()
|
||||
}
|
||||
|
@ -188,7 +190,7 @@ class XtextGenerator extends AbstractWorkflowComponent2 {
|
|||
}
|
||||
if (manifest === projectConfig.eclipsePluginManifest) {
|
||||
val firstLanguage = languageConfigs.head
|
||||
manifest.activator = firstLanguage?.naming?.getEclipsePluginActivator(firstLanguage.grammar)
|
||||
manifest.activator = naming?.getEclipsePluginActivator(firstLanguage.grammar)
|
||||
}
|
||||
if (metaInf.isFile(manifest.path)) {
|
||||
if (manifest.merge) {
|
||||
|
|
|
@ -7,43 +7,15 @@
|
|||
*******************************************************************************/
|
||||
package org.eclipse.xtext.xtext.generator
|
||||
|
||||
import org.eclipse.xtend.lib.annotations.Accessors
|
||||
import org.eclipse.xtext.Grammar
|
||||
import org.eclipse.xtext.xtext.generator.model.TypeReference
|
||||
|
||||
import static org.eclipse.xtext.GrammarUtil.*
|
||||
|
||||
// TODO discuss API (remove setters?)
|
||||
class XtextGeneratorNaming {
|
||||
|
||||
@Accessors(PUBLIC_SETTER)
|
||||
String eclipsePluginActivator
|
||||
|
||||
@Accessors(PUBLIC_SETTER)
|
||||
String runtimeBasePackage
|
||||
|
||||
@Accessors(PUBLIC_SETTER)
|
||||
String eclipsePluginBasePackage
|
||||
|
||||
@Accessors(PUBLIC_SETTER)
|
||||
String genericIdeBasePackage
|
||||
|
||||
@Accessors(PUBLIC_SETTER)
|
||||
String ideaBasePackage
|
||||
|
||||
@Accessors(PUBLIC_SETTER)
|
||||
String webBasePackage
|
||||
|
||||
Grammar myGrammar
|
||||
|
||||
package def setGrammar(Grammar grammar) {
|
||||
myGrammar = grammar
|
||||
}
|
||||
|
||||
def getRuntimeBasePackage(Grammar grammar) {
|
||||
if (grammar != myGrammar || runtimeBasePackage === null)
|
||||
return getNamespace(grammar)
|
||||
return runtimeBasePackage
|
||||
return getNamespace(grammar)
|
||||
}
|
||||
|
||||
def getRuntimeTestBasePackage(Grammar grammar) {
|
||||
|
@ -71,9 +43,7 @@ class XtextGeneratorNaming {
|
|||
}
|
||||
|
||||
def getEclipsePluginBasePackage(Grammar grammar) {
|
||||
if (grammar != myGrammar || eclipsePluginBasePackage === null)
|
||||
return getNamespace(grammar) + '.ui'
|
||||
return eclipsePluginBasePackage
|
||||
return getNamespace(grammar) + '.ui'
|
||||
}
|
||||
|
||||
def getEclipsePluginTestBasePackage(Grammar grammar) {
|
||||
|
@ -97,16 +67,11 @@ class XtextGeneratorNaming {
|
|||
}
|
||||
|
||||
def getEclipsePluginActivator(Grammar grammar) {
|
||||
if (grammar != myGrammar || eclipsePluginActivator === null) {
|
||||
return new TypeReference(grammar.eclipsePluginBasePackage + '.internal',getSimpleName(grammar) + 'Activator')
|
||||
}
|
||||
return new TypeReference(eclipsePluginActivator)
|
||||
return new TypeReference(grammar.eclipsePluginBasePackage + '.internal',getSimpleName(grammar) + 'Activator')
|
||||
}
|
||||
|
||||
def getGenericIdeBasePackage(Grammar grammar) {
|
||||
if (grammar != myGrammar || genericIdeBasePackage === null)
|
||||
return getNamespace(grammar) + '.ide'
|
||||
return genericIdeBasePackage
|
||||
return getNamespace(grammar) + '.ide'
|
||||
}
|
||||
|
||||
def getGenericIdeModule(Grammar grammar) {
|
||||
|
@ -118,9 +83,7 @@ class XtextGeneratorNaming {
|
|||
}
|
||||
|
||||
def getIdeaBasePackage(Grammar grammar) {
|
||||
if (grammar != myGrammar || ideaBasePackage === null)
|
||||
return getNamespace(grammar) + ".idea"
|
||||
return ideaBasePackage
|
||||
return getNamespace(grammar) + ".idea"
|
||||
}
|
||||
|
||||
def getIdeaModule(Grammar grammar) {
|
||||
|
@ -140,9 +103,7 @@ class XtextGeneratorNaming {
|
|||
}
|
||||
|
||||
def getWebBasePackage(Grammar grammar) {
|
||||
if (grammar != myGrammar || webBasePackage === null)
|
||||
return getNamespace(grammar) + ".web"
|
||||
return webBasePackage
|
||||
return getNamespace(grammar) + ".web"
|
||||
}
|
||||
|
||||
def getWebModule(Grammar grammar) {
|
||||
|
|
|
@ -44,9 +44,10 @@ class XtextGeneratorTemplates {
|
|||
|
||||
@Inject FileAccessFactory fileAccessFactory
|
||||
|
||||
@Inject extension XtextGeneratorNaming naming
|
||||
|
||||
def JavaFileAccess createRuntimeSetup(ILanguageConfig langConfig) {
|
||||
val it = langConfig.grammar
|
||||
val extension naming = langConfig.naming
|
||||
return fileAccessFactory.createXtendFile(runtimeSetup,'''
|
||||
/**
|
||||
* Initialization support for running Xtext languages without Equinox extension registry.
|
||||
|
@ -63,7 +64,6 @@ class XtextGeneratorTemplates {
|
|||
|
||||
def JavaFileAccess createRuntimeGenSetup(ILanguageConfig langConfig) {
|
||||
val it = langConfig.grammar
|
||||
val extension naming = langConfig.naming
|
||||
val file = fileAccessFactory.createGeneratedJavaFile(runtimeGenSetup)
|
||||
// The following imports are added for backwards-compatibility
|
||||
for (type : langConfig.runtimeGenSetup.imports) {
|
||||
|
@ -154,7 +154,6 @@ class XtextGeneratorTemplates {
|
|||
|
||||
def JavaFileAccess createRuntimeModule(ILanguageConfig langConfig) {
|
||||
val it = langConfig.grammar
|
||||
val extension naming = langConfig.naming
|
||||
return fileAccessFactory.createXtendFile(runtimeModule,'''
|
||||
/**
|
||||
* Use this class to register components to be used at runtime / without the Equinox extension registry.
|
||||
|
@ -166,7 +165,6 @@ class XtextGeneratorTemplates {
|
|||
|
||||
def JavaFileAccess createRuntimeGenModule(ILanguageConfig langConfig) {
|
||||
val it = langConfig.grammar
|
||||
val extension naming = langConfig.naming
|
||||
val superClass = langConfig.runtimeGenModule.superClass ?: runtimeDefaultModule
|
||||
val file = fileAccessFactory.createGeneratedJavaFile(runtimeGenModule)
|
||||
file.importNestedTypeThreshold = JavaFileAccess.DONT_IMPORT_NESTED_TYPES
|
||||
|
@ -209,7 +207,6 @@ class XtextGeneratorTemplates {
|
|||
|
||||
def JavaFileAccess createEclipsePluginModule(ILanguageConfig langConfig) {
|
||||
val it = langConfig.grammar
|
||||
val extension naming = langConfig.naming
|
||||
return fileAccessFactory.createXtendFile(eclipsePluginModule,'''
|
||||
/**
|
||||
* Use this class to register components to be used within the Eclipse IDE.
|
||||
|
@ -221,7 +218,6 @@ class XtextGeneratorTemplates {
|
|||
|
||||
def JavaFileAccess createEclipsePluginGenModule(ILanguageConfig langConfig) {
|
||||
val it = langConfig.grammar
|
||||
val extension naming = langConfig.naming
|
||||
val superClass = langConfig.eclipsePluginGenModule.superClass ?: eclipsePluginDefaultModule
|
||||
val file = fileAccessFactory.createGeneratedJavaFile(eclipsePluginGenModule)
|
||||
file.importNestedTypeThreshold = JavaFileAccess.DONT_IMPORT_NESTED_TYPES
|
||||
|
@ -251,7 +247,6 @@ class XtextGeneratorTemplates {
|
|||
|
||||
def JavaFileAccess createIdeaModule(ILanguageConfig langConfig) {
|
||||
val it = langConfig.grammar
|
||||
val extension naming = langConfig.naming
|
||||
return fileAccessFactory.createXtendFile(ideaModule,'''
|
||||
/**
|
||||
* Use this class to register components to be used within IntelliJ IDEA.
|
||||
|
@ -263,7 +258,6 @@ class XtextGeneratorTemplates {
|
|||
|
||||
def JavaFileAccess createIdeaGenModule(ILanguageConfig langConfig) {
|
||||
val it = langConfig.grammar
|
||||
val extension naming = langConfig.naming
|
||||
val superClass = langConfig.ideaGenModule.superClass ?: ideaDefaultModule
|
||||
val file = fileAccessFactory.createGeneratedJavaFile(ideaGenModule)
|
||||
file.importNestedTypeThreshold = JavaFileAccess.DONT_IMPORT_NESTED_TYPES
|
||||
|
@ -288,7 +282,6 @@ class XtextGeneratorTemplates {
|
|||
|
||||
def JavaFileAccess createWebModule(ILanguageConfig langConfig) {
|
||||
val it = langConfig.grammar
|
||||
val extension naming = langConfig.naming
|
||||
return fileAccessFactory.createXtendFile(webModule,'''
|
||||
/**
|
||||
* Use this class to register additional components to be used within the web application.
|
||||
|
@ -300,7 +293,6 @@ class XtextGeneratorTemplates {
|
|||
|
||||
def JavaFileAccess createWebGenModule(ILanguageConfig langConfig) {
|
||||
val it = langConfig.grammar
|
||||
val extension naming = langConfig.naming
|
||||
val superClass = langConfig.webGenModule.superClass ?: webDefaultModule
|
||||
val file = fileAccessFactory.createGeneratedJavaFile(webGenModule)
|
||||
file.importNestedTypeThreshold = JavaFileAccess.DONT_IMPORT_NESTED_TYPES
|
||||
|
@ -329,7 +321,6 @@ class XtextGeneratorTemplates {
|
|||
|
||||
def JavaFileAccess createWebSetup(ILanguageConfig langConfig) {
|
||||
val it = langConfig.grammar
|
||||
val extension naming = langConfig.naming
|
||||
return fileAccessFactory.createXtendFile(webSetup, '''
|
||||
/**
|
||||
* Initialization support for running Xtext languages in web applications.
|
||||
|
@ -352,7 +343,6 @@ class XtextGeneratorTemplates {
|
|||
def JavaFileAccess createEclipsePluginExecutableExtensionFactory(ILanguageConfig langConfig, ILanguageConfig activatorLanguage) {
|
||||
val grammar = langConfig.grammar
|
||||
val activatorGrammar = activatorLanguage.grammar
|
||||
val extension naming = langConfig.naming
|
||||
val file = fileAccessFactory.createGeneratedJavaFile(grammar.eclipsePluginExecutableExtensionFactory)
|
||||
file.typeComment = '''
|
||||
/**
|
||||
|
@ -379,7 +369,7 @@ class XtextGeneratorTemplates {
|
|||
}
|
||||
|
||||
def JavaFileAccess createEclipsePluginActivator(List<? extends ILanguageConfig> langConfigs) {
|
||||
val activator = langConfigs.head.naming.getEclipsePluginActivator(langConfigs.head.grammar)
|
||||
val activator = getEclipsePluginActivator(langConfigs.head.grammar)
|
||||
val file = fileAccessFactory.createGeneratedJavaFile(activator)
|
||||
|
||||
file.typeComment = '''
|
||||
|
@ -445,7 +435,7 @@ class XtextGeneratorTemplates {
|
|||
protected Module getRuntimeModule(String grammar) {
|
||||
«FOR lang : langConfigs»
|
||||
if («lang.grammar.name.toUpperCase.replaceAll('\\.', '_')».equals(grammar)) {
|
||||
return new «lang.naming.getRuntimeModule(lang.grammar)»();
|
||||
return new «getRuntimeModule(lang.grammar)»();
|
||||
}
|
||||
«ENDFOR»
|
||||
throw new IllegalArgumentException(grammar);
|
||||
|
@ -454,7 +444,7 @@ class XtextGeneratorTemplates {
|
|||
protected «Module» getUiModule(String grammar) {
|
||||
«FOR lang : langConfigs»
|
||||
if («lang.grammar.name.toUpperCase.replaceAll('\\.', '_')».equals(grammar)) {
|
||||
return new «lang.naming.getEclipsePluginModule(lang.grammar)»(this);
|
||||
return new «getEclipsePluginModule(lang.grammar)»(this);
|
||||
}
|
||||
«ENDFOR»
|
||||
throw new IllegalArgumentException(grammar);
|
||||
|
|
Loading…
Reference in a new issue