Merge pull request #644 from eclipse/so_remove_naming_setters

[generator2] remove package setters from naming
This commit is contained in:
Stefan Oehme 2015-10-03 23:35:32 +02:00
commit 4d064aa885
6 changed files with 16 additions and 71 deletions

View file

@ -17,8 +17,6 @@ interface ILanguageConfig {
def Grammar getGrammar()
def XtextGeneratorNaming getNaming()
def List<String> getFileExtensions()
def StandaloneSetupAccess getRuntimeGenSetup()

View file

@ -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)
}

View file

@ -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]
}

View file

@ -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) {

View file

@ -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) {

View file

@ -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);