mirror of
https://github.com/sigmasternchen/xtext-core
synced 2025-03-16 16:58:56 +00:00
Merge branch 'master' into me/serializer
This commit is contained in:
commit
24845d80a5
68 changed files with 614 additions and 413 deletions
|
@ -23,16 +23,17 @@ Require-Bundle: org.eclipse.xtext;x-installation:=greedy,
|
|||
Import-Package: com.ibm.icu.text;version="4.0.0",
|
||||
org.apache.log4j;version="1.2.15"
|
||||
Export-Package: org.eclipse.xtext.xtext.generator,
|
||||
org.eclipse.xtext.xtext.generator.builder,
|
||||
org.eclipse.xtext.xtext.generator.ecore,
|
||||
org.eclipse.xtext.xtext.generator.exporting,
|
||||
org.eclipse.xtext.xtext.generator.formatting,
|
||||
org.eclipse.xtext.xtext.generator.generator,
|
||||
org.eclipse.xtext.xtext.generator.grammarAccess,
|
||||
org.eclipse.xtext.xtext.generator.idea,
|
||||
org.eclipse.xtext.xtext.generator.idea.parser.antlr,
|
||||
org.eclipse.xtext.xtext.generator.model,
|
||||
org.eclipse.xtext.xtext.generator.parser.antlr,
|
||||
org.eclipse.xtext.xtext.generator.builder;x-internal:=true,
|
||||
org.eclipse.xtext.xtext.generator.ecore;x-internal:=true,
|
||||
org.eclipse.xtext.xtext.generator.exporting;x-internal:=true,
|
||||
org.eclipse.xtext.xtext.generator.formatting;x-internal:=true,
|
||||
org.eclipse.xtext.xtext.generator.generator;x-internal:=true,
|
||||
org.eclipse.xtext.xtext.generator.grammarAccess;x-internal:=true,
|
||||
org.eclipse.xtext.xtext.generator.idea;x-internal:=true,
|
||||
org.eclipse.xtext.xtext.generator.idea.parser.antlr;x-internal:=true,
|
||||
org.eclipse.xtext.xtext.generator.model;x-internal:=true,
|
||||
org.eclipse.xtext.xtext.generator.model.project,
|
||||
org.eclipse.xtext.xtext.generator.parser.antlr;x-internal:=true,
|
||||
org.eclipse.xtext.xtext.generator.parser.antlr.splitting;x-friends:="org.eclipse.xtext.generator,org.eclipse.xtext.tests",
|
||||
org.eclipse.xtext.xtext.generator.parser.antlr.splitting.internal;x-friends:="org.eclipse.xtext.tests",
|
||||
org.eclipse.xtext.xtext.generator.parser.antlr.splitting.parser.antlr;x-internal:=true,
|
||||
|
@ -41,19 +42,19 @@ Export-Package: org.eclipse.xtext.xtext.generator,
|
|||
org.eclipse.xtext.xtext.generator.parser.antlr.splitting.simpleExpressions;x-internal:=true,
|
||||
org.eclipse.xtext.xtext.generator.parser.antlr.splitting.simpleExpressions.impl;x-internal:=true,
|
||||
org.eclipse.xtext.xtext.generator.parser.antlr.splitting.simpleExpressions.util;x-internal:=true,
|
||||
org.eclipse.xtext.xtext.generator.resourceFactory,
|
||||
org.eclipse.xtext.xtext.generator.scoping,
|
||||
org.eclipse.xtext.xtext.generator.serializer,
|
||||
org.eclipse.xtext.xtext.generator.types,
|
||||
org.eclipse.xtext.xtext.generator.ui.compare,
|
||||
org.eclipse.xtext.xtext.generator.ui.contentAssist,
|
||||
org.eclipse.xtext.xtext.generator.ui.labeling,
|
||||
org.eclipse.xtext.xtext.generator.ui.outline,
|
||||
org.eclipse.xtext.xtext.generator.ui.quickfix,
|
||||
org.eclipse.xtext.xtext.generator.ui.refactoring,
|
||||
org.eclipse.xtext.xtext.generator.ui.templates,
|
||||
org.eclipse.xtext.xtext.generator.util,
|
||||
org.eclipse.xtext.xtext.generator.validation,
|
||||
org.eclipse.xtext.xtext.generator.web,
|
||||
org.eclipse.xtext.xtext.generator.xbase
|
||||
org.eclipse.xtext.xtext.generator.resourceFactory;x-internal:=true,
|
||||
org.eclipse.xtext.xtext.generator.scoping;x-internal:=true,
|
||||
org.eclipse.xtext.xtext.generator.serializer;x-internal:=true,
|
||||
org.eclipse.xtext.xtext.generator.types;x-internal:=true,
|
||||
org.eclipse.xtext.xtext.generator.ui.compare;x-internal:=true,
|
||||
org.eclipse.xtext.xtext.generator.ui.contentAssist;x-internal:=true,
|
||||
org.eclipse.xtext.xtext.generator.ui.labeling;x-internal:=true,
|
||||
org.eclipse.xtext.xtext.generator.ui.outline;x-internal:=true,
|
||||
org.eclipse.xtext.xtext.generator.ui.quickfix;x-internal:=true,
|
||||
org.eclipse.xtext.xtext.generator.ui.refactoring;x-internal:=true,
|
||||
org.eclipse.xtext.xtext.generator.ui.templates;x-internal:=true,
|
||||
org.eclipse.xtext.xtext.generator.util;x-internal:=true,
|
||||
org.eclipse.xtext.xtext.generator.validation;x-internal:=true,
|
||||
org.eclipse.xtext.xtext.generator.web;x-internal:=true,
|
||||
org.eclipse.xtext.xtext.generator.xbase;x-internal:=true
|
||||
|
||||
|
|
|
@ -11,14 +11,15 @@ import com.google.inject.Inject
|
|||
import com.google.inject.Injector
|
||||
import org.eclipse.xtend.lib.annotations.Accessors
|
||||
import org.eclipse.xtext.Grammar
|
||||
import org.eclipse.xtext.xtext.generator.model.project.IXtextProjectConfig
|
||||
|
||||
abstract class AbstractGeneratorFragment2 implements IGeneratorFragment2 {
|
||||
abstract class AbstractXtextGeneratorFragment implements IXtextGeneratorFragment {
|
||||
|
||||
@Accessors(PROTECTED_GETTER)
|
||||
@Inject IXtextProjectConfig projectConfig
|
||||
|
||||
@Accessors(PROTECTED_GETTER)
|
||||
@Inject ILanguageConfig language
|
||||
@Inject IXtextGeneratorLanguage language
|
||||
|
||||
@Accessors(PROTECTED_GETTER)
|
||||
@Inject Grammar grammar
|
|
@ -18,6 +18,7 @@ import org.eclipse.xtext.xtext.generator.model.annotations.IClassAnnotation
|
|||
|
||||
/**
|
||||
* Configuration object for generated code.
|
||||
* @noextend
|
||||
*/
|
||||
class CodeConfig implements IGuiceAwareGeneratorComponent {
|
||||
|
||||
|
|
|
@ -1,47 +0,0 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2015 itemis AG (http://www.itemis.eu) and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*******************************************************************************/
|
||||
package org.eclipse.xtext.xtext.generator
|
||||
|
||||
import com.google.inject.Injector
|
||||
import java.util.List
|
||||
import org.eclipse.xtend.lib.annotations.Accessors
|
||||
|
||||
/**
|
||||
* A composite generator fragment delegates to its contained fragments.
|
||||
*/
|
||||
class CompositeGeneratorFragment2 implements IGeneratorFragment2 {
|
||||
|
||||
@Accessors(PROTECTED_GETTER)
|
||||
val List<IGeneratorFragment2> fragments = newArrayList
|
||||
|
||||
def void addFragment(IGeneratorFragment2 fragment) {
|
||||
if (fragment === this)
|
||||
throw new IllegalArgumentException
|
||||
this.fragments.add(fragment)
|
||||
}
|
||||
|
||||
override checkConfiguration(Issues issues) {
|
||||
for (fragment : fragments) {
|
||||
fragment.checkConfiguration(issues)
|
||||
}
|
||||
}
|
||||
|
||||
override initialize(Injector injector) {
|
||||
injector.injectMembers(this)
|
||||
for (fragment : fragments) {
|
||||
fragment.initialize(injector)
|
||||
}
|
||||
}
|
||||
|
||||
override generate() {
|
||||
for (fragment : fragments) {
|
||||
fragment.generate()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -10,14 +10,21 @@ package org.eclipse.xtext.xtext.generator
|
|||
import com.google.inject.Binder
|
||||
import org.eclipse.emf.ecore.resource.ResourceSet
|
||||
import org.eclipse.xtend.lib.annotations.Accessors
|
||||
import org.eclipse.xtext.formatting.ILineSeparatorInformation
|
||||
import org.eclipse.xtext.parser.IEncodingProvider
|
||||
import org.eclipse.xtext.resource.XtextResourceSet
|
||||
import org.eclipse.xtext.service.AbstractGenericModule
|
||||
import org.eclipse.xtext.xtext.generator.model.project.IXtextProjectConfig
|
||||
import org.eclipse.xtext.xtext.generator.model.project.StandardProjectConfig
|
||||
import org.eclipse.xtext.xtext.generator.model.project.XtextProjectConfig
|
||||
|
||||
/**
|
||||
* @noextend
|
||||
*/
|
||||
class DefaultGeneratorModule extends AbstractGenericModule {
|
||||
|
||||
@Accessors
|
||||
XtextProjectConfig project = new WizardConfig
|
||||
XtextProjectConfig project = new StandardProjectConfig
|
||||
|
||||
@Accessors
|
||||
CodeConfig code = new CodeConfig
|
||||
|
@ -38,6 +45,10 @@ class DefaultGeneratorModule extends AbstractGenericModule {
|
|||
binder.bind(ResourceSet).to(XtextResourceSet)
|
||||
}
|
||||
|
||||
def void configureLineSeparatorInformation(Binder binder) {
|
||||
binder.bind(ILineSeparatorInformation).toInstance[code.lineDelimiter]
|
||||
}
|
||||
|
||||
def void configureIEncodingProvider(Binder binder) {
|
||||
binder.bind(IEncodingProvider).toInstance(new IEncodingProvider.Runtime => [
|
||||
defaultEncoding = code.encoding
|
||||
|
|
|
@ -9,6 +9,9 @@ package org.eclipse.xtext.xtext.generator
|
|||
|
||||
import com.google.inject.Injector
|
||||
|
||||
/**
|
||||
* @noreference
|
||||
*/
|
||||
interface IGuiceAwareGeneratorComponent {
|
||||
|
||||
def void initialize(Injector injector)
|
||||
|
|
|
@ -9,8 +9,9 @@ package org.eclipse.xtext.xtext.generator
|
|||
|
||||
/**
|
||||
* A fragment that contributes to the {@link XtextGenerator}.
|
||||
* @noimplement
|
||||
*/
|
||||
interface IGeneratorFragment2 extends IGuiceAwareGeneratorComponent {
|
||||
interface IXtextGeneratorFragment extends IGuiceAwareGeneratorComponent {
|
||||
|
||||
def void checkConfiguration(Issues issues)
|
||||
|
|
@ -13,7 +13,10 @@ import org.eclipse.xtext.Grammar
|
|||
import org.eclipse.xtext.xtext.generator.model.GuiceModuleAccess
|
||||
import org.eclipse.xtext.xtext.generator.model.StandaloneSetupAccess
|
||||
|
||||
interface ILanguageConfig {
|
||||
/**
|
||||
* @noimplement
|
||||
*/
|
||||
interface IXtextGeneratorLanguage {
|
||||
|
||||
def Grammar getGrammar()
|
||||
|
|
@ -17,7 +17,7 @@ import org.eclipse.xtext.xtext.generator.xbase.XbaseUsageDetector
|
|||
import static extension org.eclipse.xtext.GrammarUtil.*
|
||||
import static extension org.eclipse.xtext.xtext.generator.model.TypeReference.*
|
||||
|
||||
package class ImplicitFragment extends AbstractGeneratorFragment2 {
|
||||
package class ImplicitFragment extends AbstractXtextGeneratorFragment {
|
||||
|
||||
@Inject extension XbaseUsageDetector
|
||||
|
||||
|
|
|
@ -7,6 +7,9 @@
|
|||
*******************************************************************************/
|
||||
package org.eclipse.xtext.xtext.generator
|
||||
|
||||
/**
|
||||
* @noreference
|
||||
*/
|
||||
interface Issues {
|
||||
def void addError(String message)
|
||||
def void addError(String message, Object source)
|
||||
|
|
|
@ -14,12 +14,12 @@ import org.eclipse.xtext.service.AbstractGenericModule
|
|||
import org.eclipse.xtext.xtext.RuleNames
|
||||
|
||||
@FinalFieldsConstructor
|
||||
class LanguageModule extends AbstractGenericModule {
|
||||
package class LanguageModule extends AbstractGenericModule {
|
||||
|
||||
val LanguageConfig2 language
|
||||
val XtextGeneratorLanguage language
|
||||
|
||||
def configureLanguage(Binder binder) {
|
||||
binder.bind(ILanguageConfig).toInstance(language)
|
||||
binder.bind(IXtextGeneratorLanguage).toInstance(language)
|
||||
}
|
||||
|
||||
def configureGrammar(Binder binder) {
|
||||
|
|
|
@ -7,9 +7,12 @@
|
|||
*******************************************************************************/
|
||||
package org.eclipse.xtext.xtext.generator
|
||||
|
||||
import org.eclipse.xtend.lib.annotations.FinalFieldsConstructor
|
||||
import org.eclipse.xtend.lib.annotations.Accessors
|
||||
import org.eclipse.xtend.lib.annotations.FinalFieldsConstructor
|
||||
|
||||
/**
|
||||
* @noreference
|
||||
*/
|
||||
@FinalFieldsConstructor
|
||||
class MweIssues implements Issues {
|
||||
|
||||
|
|
|
@ -39,9 +39,10 @@ import org.eclipse.xtext.xtext.generator.xbase.XtypeGeneratorFragment2
|
|||
|
||||
/**
|
||||
* @author Sven Efftinge - Initial contribution and API
|
||||
* @noextend
|
||||
*/
|
||||
@Accessors(PUBLIC_SETTER)
|
||||
@Log class StandardLanguage extends LanguageConfig2 {
|
||||
@Log class StandardLanguage extends XtextGeneratorLanguage {
|
||||
|
||||
GrammarAccessFragment2 grammarAccess = new GrammarAccessFragment2
|
||||
|
||||
|
|
|
@ -1,192 +0,0 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2015 itemis AG (http://www.itemis.eu) and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*******************************************************************************/
|
||||
package org.eclipse.xtext.xtext.generator
|
||||
|
||||
import com.google.common.base.CharMatcher
|
||||
import com.google.inject.Injector
|
||||
import org.eclipse.xtend.lib.annotations.Accessors
|
||||
import org.eclipse.xtext.xtext.generator.model.IXtextGeneratorFileSystemAccess
|
||||
import org.eclipse.xtext.xtext.generator.model.ManifestAccess
|
||||
import org.eclipse.xtext.xtext.generator.model.PluginXmlAccess
|
||||
import com.google.inject.Inject
|
||||
|
||||
interface ISubProjectConfig extends IGuiceAwareGeneratorComponent {
|
||||
def boolean isEnabled()
|
||||
def String getName()
|
||||
def IXtextGeneratorFileSystemAccess getRoot()
|
||||
def IXtextGeneratorFileSystemAccess getMetaInf()
|
||||
def IXtextGeneratorFileSystemAccess getSrc()
|
||||
def IXtextGeneratorFileSystemAccess getSrcGen()
|
||||
}
|
||||
|
||||
interface IBundleProjectConfig extends ISubProjectConfig {
|
||||
def ManifestAccess getManifest()
|
||||
def PluginXmlAccess getPluginXml()
|
||||
}
|
||||
|
||||
interface IRuntimeProjectConfig extends IBundleProjectConfig {
|
||||
def IXtextGeneratorFileSystemAccess getEcoreModel()
|
||||
def String getEcoreModelFolder()
|
||||
}
|
||||
|
||||
interface IWebProjectConfig extends ISubProjectConfig {
|
||||
def IXtextGeneratorFileSystemAccess getAssets()
|
||||
}
|
||||
|
||||
class SubProjectConfig implements ISubProjectConfig {
|
||||
@Inject
|
||||
@Accessors(PUBLIC_GETTER)
|
||||
XtextProjectConfig owner
|
||||
|
||||
@Accessors
|
||||
boolean enabled
|
||||
|
||||
@Accessors
|
||||
String name
|
||||
|
||||
@Accessors(PUBLIC_GETTER)
|
||||
String rootPath
|
||||
|
||||
@Accessors(PUBLIC_GETTER)
|
||||
IXtextGeneratorFileSystemAccess root
|
||||
|
||||
@Accessors(PUBLIC_GETTER)
|
||||
String metaInfPath
|
||||
|
||||
@Accessors(PUBLIC_GETTER)
|
||||
IXtextGeneratorFileSystemAccess metaInf
|
||||
|
||||
@Accessors(PUBLIC_GETTER)
|
||||
String srcPath
|
||||
|
||||
@Accessors(PUBLIC_GETTER)
|
||||
IXtextGeneratorFileSystemAccess src
|
||||
|
||||
@Accessors(PUBLIC_GETTER)
|
||||
String srcGenPath
|
||||
|
||||
@Accessors(PUBLIC_GETTER)
|
||||
IXtextGeneratorFileSystemAccess srcGen
|
||||
|
||||
def void setRoot(String path) {
|
||||
rootPath = path
|
||||
}
|
||||
|
||||
def void setMetaInf(String path) {
|
||||
metaInfPath = path
|
||||
}
|
||||
|
||||
def void setSrc(String path) {
|
||||
srcPath = path
|
||||
}
|
||||
|
||||
def void setSrcGen(String path) {
|
||||
srcGenPath = path
|
||||
}
|
||||
|
||||
def void checkConfiguration(Issues issues) {
|
||||
}
|
||||
|
||||
override initialize(Injector injector) {
|
||||
injector.injectMembers(this)
|
||||
if (rootPath !== null) {
|
||||
root = owner.newFileSystemAccess(rootPath, true)
|
||||
root.initialize(injector)
|
||||
}
|
||||
if (metaInfPath !== null) {
|
||||
metaInf = owner.newFileSystemAccess(metaInfPath, true)
|
||||
metaInf.initialize(injector)
|
||||
}
|
||||
if (srcPath !== null) {
|
||||
src = owner.newFileSystemAccess(srcPath, false)
|
||||
src.initialize(injector)
|
||||
}
|
||||
if (srcGenPath !== null) {
|
||||
srcGen = owner.newFileSystemAccess(srcGenPath, true)
|
||||
srcGen.initialize(injector)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Accessors
|
||||
class BundleProjectConfig extends SubProjectConfig implements IBundleProjectConfig{
|
||||
ManifestAccess manifest
|
||||
PluginXmlAccess pluginXml
|
||||
|
||||
override initialize(Injector injector) {
|
||||
super.initialize(injector)
|
||||
manifest?.initialize(injector)
|
||||
pluginXml?.initialize(injector)
|
||||
}
|
||||
|
||||
override checkConfiguration(Issues issues) {
|
||||
super.checkConfiguration(issues)
|
||||
if (manifest !== null && metaInf === null) {
|
||||
issues.addError("The 'metaInf' outlet must be configured for projects with a manifest", this)
|
||||
}
|
||||
if (pluginXml !== null && root === null) {
|
||||
issues.addError("The 'root' outlet must be configured for projects with a plugin.xml", this)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
class RuntimeProjectConfig extends BundleProjectConfig implements IRuntimeProjectConfig {
|
||||
@Accessors(PUBLIC_GETTER)
|
||||
String ecoreModelPath
|
||||
@Accessors(PUBLIC_GETTER)
|
||||
IXtextGeneratorFileSystemAccess ecoreModel
|
||||
|
||||
def void setEcoreModel(String path) {
|
||||
ecoreModelPath = path
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the root-relative path of the folder where the generated .ecore and .genmodel can be found.
|
||||
* The path is delimited by '/', but does not begin or end with a separator.
|
||||
*/
|
||||
override String getEcoreModelFolder() {
|
||||
if (ecoreModel.path.startsWith(root.path)) {
|
||||
val relativePath = ecoreModel.path.substring(root.path.length).replace('\\', '/')
|
||||
return CharMatcher.is('/').trimFrom(relativePath)
|
||||
}
|
||||
throw new RuntimeException('Could not derive the Ecore model folder from the project configuration. Please make sure that \'root\' is a prefix of \'ecoreModel\'.')
|
||||
}
|
||||
|
||||
override initialize(Injector injector) {
|
||||
super.initialize(injector)
|
||||
if (ecoreModelPath !== null) {
|
||||
ecoreModel = owner.newFileSystemAccess(ecoreModelPath, true)
|
||||
ecoreModel.initialize(injector)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class WebProjectConfig extends SubProjectConfig implements IWebProjectConfig {
|
||||
@Accessors(PUBLIC_GETTER)
|
||||
String assetsPath
|
||||
@Accessors(PUBLIC_GETTER)
|
||||
IXtextGeneratorFileSystemAccess assets
|
||||
|
||||
def void setAssets(String path) {
|
||||
assetsPath = path
|
||||
}
|
||||
|
||||
override initialize(Injector injector) {
|
||||
super.initialize(injector)
|
||||
if (assetsPath !== null) {
|
||||
assets = owner.newFileSystemAccess(assetsPath, true)
|
||||
assets.initialize(injector)
|
||||
}
|
||||
}
|
||||
}
|
|
@ -9,11 +9,15 @@ package org.eclipse.xtext.xtext.generator
|
|||
|
||||
import com.google.inject.Inject
|
||||
import com.google.inject.Injector
|
||||
import java.io.File
|
||||
import java.util.List
|
||||
import org.eclipse.emf.mwe.utils.DirectoryCleaner
|
||||
import org.eclipse.xtend.lib.annotations.Accessors
|
||||
import java.io.File
|
||||
import org.eclipse.xtext.xtext.generator.model.project.IXtextProjectConfig
|
||||
|
||||
/**
|
||||
* @noextend
|
||||
*/
|
||||
class XtextDirectoryCleaner implements IGuiceAwareGeneratorComponent {
|
||||
@Inject IXtextProjectConfig config
|
||||
|
||||
|
|
|
@ -32,12 +32,14 @@ import org.eclipse.xtext.util.internal.Log
|
|||
import org.eclipse.xtext.xtext.generator.model.IXtextGeneratorFileSystemAccess
|
||||
import org.eclipse.xtext.xtext.generator.model.ManifestAccess
|
||||
import org.eclipse.xtext.xtext.generator.model.PluginXmlAccess
|
||||
import org.eclipse.xtext.xtext.generator.model.project.BundleProjectConfig
|
||||
import org.eclipse.xtext.xtext.generator.model.project.IXtextProjectConfig
|
||||
|
||||
/**
|
||||
* The Xtext language infrastructure generator. Can be configured with {@link IGeneratorFragment2}
|
||||
* The Xtext language infrastructure generator. Can be configured with {@link IXtextGeneratorFragment}
|
||||
* instances as well as with some properties declared via setter or adder methods.
|
||||
*
|
||||
* <p><b>NOTE: This is a reimplementation of org.eclipse.xtext.generator.Generator</b></p>
|
||||
* @noextend
|
||||
*/
|
||||
//TODO make Generator independent of mwe and add a thin wrapper (GeneratorComponent)
|
||||
//TODO only implement mwe2.IWorkflowComponent, get rid of "Issues", just logging/exceptions?
|
||||
|
@ -48,7 +50,7 @@ class XtextGenerator extends AbstractWorkflowComponent2 {
|
|||
DefaultGeneratorModule configuration = new DefaultGeneratorModule
|
||||
|
||||
@Accessors
|
||||
val List<LanguageConfig2> languageConfigs = newArrayList
|
||||
val List<XtextGeneratorLanguage> languageConfigs = newArrayList
|
||||
|
||||
@Accessors
|
||||
XtextDirectoryCleaner cleaner = new XtextDirectoryCleaner
|
||||
|
@ -71,7 +73,7 @@ class XtextGenerator extends AbstractWorkflowComponent2 {
|
|||
/**
|
||||
* Add a language configuration to be included in the code generation process.
|
||||
*/
|
||||
def void addLanguage(LanguageConfig2 language) {
|
||||
def void addLanguage(XtextGeneratorLanguage language) {
|
||||
this.languageConfigs.add(language)
|
||||
}
|
||||
|
||||
|
@ -115,7 +117,7 @@ class XtextGenerator extends AbstractWorkflowComponent2 {
|
|||
Guice.createInjector(configuration)
|
||||
}
|
||||
|
||||
protected def Injector createLanguageInjector(Injector parent, LanguageConfig2 language) {
|
||||
protected def Injector createLanguageInjector(Injector parent, XtextGeneratorLanguage language) {
|
||||
parent.createChildInjector(new LanguageModule(language))
|
||||
}
|
||||
|
||||
|
@ -135,13 +137,13 @@ class XtextGenerator extends AbstractWorkflowComponent2 {
|
|||
generateActivator
|
||||
}
|
||||
|
||||
protected def generateSetups(ILanguageConfig language) {
|
||||
protected def generateSetups(IXtextGeneratorLanguage language) {
|
||||
templates.createRuntimeGenSetup(language).writeTo(projectConfig.runtime.srcGen)
|
||||
templates.createRuntimeSetup(language).writeTo(projectConfig.runtime.src)
|
||||
templates.createWebSetup(language).writeTo(projectConfig.web.src)
|
||||
}
|
||||
|
||||
protected def generateModules(ILanguageConfig language) {
|
||||
protected def generateModules(IXtextGeneratorLanguage language) {
|
||||
templates.createRuntimeGenModule(language).writeTo(projectConfig.runtime.srcGen)
|
||||
templates.createRuntimeModule(language).writeTo(projectConfig.runtime.src)
|
||||
templates.createEclipsePluginGenModule(language).writeTo(projectConfig.eclipsePlugin.srcGen)
|
||||
|
@ -152,7 +154,7 @@ class XtextGenerator extends AbstractWorkflowComponent2 {
|
|||
templates.createWebModule(language).writeTo(projectConfig.web.src)
|
||||
}
|
||||
|
||||
protected def generateExecutableExtensionFactory(ILanguageConfig language) {
|
||||
protected def generateExecutableExtensionFactory(IXtextGeneratorLanguage language) {
|
||||
if (projectConfig.eclipsePlugin.srcGen !== null)
|
||||
templates.createEclipsePluginExecutableExtensionFactory(language, languageConfigs.head).writeTo(projectConfig.eclipsePlugin.srcGen)
|
||||
}
|
||||
|
|
|
@ -13,6 +13,7 @@ import com.google.inject.Inject
|
|||
import com.google.inject.Injector
|
||||
import com.google.inject.Module
|
||||
import com.google.inject.Provider
|
||||
import java.io.File
|
||||
import java.util.Collections
|
||||
import java.util.HashMap
|
||||
import java.util.List
|
||||
|
@ -36,10 +37,13 @@ import org.eclipse.xtext.util.internal.Log
|
|||
import org.eclipse.xtext.xtext.RuleNames
|
||||
import org.eclipse.xtext.xtext.generator.model.GuiceModuleAccess
|
||||
import org.eclipse.xtext.xtext.generator.model.StandaloneSetupAccess
|
||||
import java.io.File
|
||||
import org.eclipse.xtext.xtext.generator.model.project.IXtextProjectConfig
|
||||
|
||||
/**
|
||||
* @noextend
|
||||
*/
|
||||
@Log
|
||||
class LanguageConfig2 extends CompositeGeneratorFragment2 implements ILanguageConfig {
|
||||
class XtextGeneratorLanguage implements IXtextGeneratorFragment, IXtextGeneratorLanguage {
|
||||
|
||||
String grammarUri
|
||||
|
||||
|
@ -78,6 +82,9 @@ class LanguageConfig2 extends CompositeGeneratorFragment2 implements ILanguageCo
|
|||
@Accessors
|
||||
val webGenModule = new GuiceModuleAccess
|
||||
|
||||
@Accessors(PROTECTED_GETTER)
|
||||
val List<IXtextGeneratorFragment> fragments = newArrayList
|
||||
|
||||
@Inject Provider<ResourceSet> resourceSetProvider
|
||||
|
||||
@Inject IXtextProjectConfig projectConfig
|
||||
|
@ -106,9 +113,27 @@ class LanguageConfig2 extends CompositeGeneratorFragment2 implements ILanguageCo
|
|||
return fileExtensions
|
||||
}
|
||||
|
||||
def void addFragment(IXtextGeneratorFragment fragment) {
|
||||
if (fragment === this)
|
||||
throw new IllegalArgumentException
|
||||
this.fragments.add(fragment)
|
||||
}
|
||||
|
||||
override checkConfiguration(Issues issues) {
|
||||
for (fragment : fragments) {
|
||||
fragment.checkConfiguration(issues)
|
||||
}
|
||||
}
|
||||
|
||||
override generate() {
|
||||
for (fragment : fragments) {
|
||||
fragment.generate()
|
||||
}
|
||||
}
|
||||
|
||||
override initialize(Injector injector) {
|
||||
fragments.add(0, new ImplicitFragment)
|
||||
injector.injectMembers(this)
|
||||
injector.injectMembers(XtextGeneratorLanguage)
|
||||
if (resourceSet === null)
|
||||
resourceSet = resourceSetProvider.get()
|
||||
standaloneSetup.initialize(injector)
|
||||
|
@ -118,9 +143,9 @@ class LanguageConfig2 extends CompositeGeneratorFragment2 implements ILanguageCo
|
|||
for (var i = 0, var size = resourceSet.resources.size; i < size; i++) {
|
||||
val res = resourceSet.resources.get(i)
|
||||
if (res.getContents().isEmpty())
|
||||
LOG.error("Error loading '" + res.getURI() + "'")
|
||||
XtextGeneratorLanguage.LOG.error("Error loading '" + res.getURI() + "'")
|
||||
else if (!res.getErrors().isEmpty())
|
||||
LOG.error("Error loading '" + res.getURI() + "':\n" + Joiner.on('\n').join(res.getErrors()))
|
||||
XtextGeneratorLanguage.LOG.error("Error loading '" + res.getURI() + "':\n" + Joiner.on('\n').join(res.getErrors()))
|
||||
}
|
||||
EcoreUtil.resolveAll(resourceSet)
|
||||
}
|
||||
|
@ -132,7 +157,7 @@ class LanguageConfig2 extends CompositeGeneratorFragment2 implements ILanguageCo
|
|||
throw new IllegalArgumentException("Couldn't load grammar for '" + getGrammarUri + "'.")
|
||||
}
|
||||
if (!resource.errors.isEmpty) {
|
||||
LOG.error(resource.errors)
|
||||
XtextGeneratorLanguage.LOG.error(resource.errors)
|
||||
throw new IllegalStateException("Problem parsing '" + getGrammarUri + "':\n" + Joiner.on('\n').join(resource.getErrors()))
|
||||
}
|
||||
|
|
@ -12,6 +12,9 @@ import org.eclipse.xtext.xtext.generator.model.TypeReference
|
|||
|
||||
import static org.eclipse.xtext.GrammarUtil.*
|
||||
|
||||
/**
|
||||
* @noreference
|
||||
*/
|
||||
class XtextGeneratorNaming {
|
||||
|
||||
def getRuntimeBasePackage(Grammar grammar) {
|
||||
|
|
|
@ -13,7 +13,11 @@ import org.eclipse.emf.mwe.utils.ProjectMapping
|
|||
import org.eclipse.emf.mwe.utils.StandaloneSetup
|
||||
import org.eclipse.xtend.lib.annotations.Accessors
|
||||
import org.eclipse.xtext.util.internal.Log
|
||||
import org.eclipse.xtext.xtext.generator.model.project.IXtextProjectConfig
|
||||
|
||||
/**
|
||||
* @noextend
|
||||
*/
|
||||
@Log
|
||||
class XtextGeneratorStandaloneSetup implements IGuiceAwareGeneratorComponent {
|
||||
@Inject IXtextProjectConfig projectConfig
|
||||
|
|
|
@ -39,6 +39,9 @@ import org.eclipse.xtext.xtext.generator.model.annotations.SuppressWarningsAnnot
|
|||
|
||||
import static extension org.eclipse.xtext.xtext.generator.model.TypeReference.*
|
||||
|
||||
/**
|
||||
* @noreference
|
||||
*/
|
||||
@Singleton
|
||||
class XtextGeneratorTemplates {
|
||||
|
||||
|
@ -46,7 +49,7 @@ class XtextGeneratorTemplates {
|
|||
|
||||
@Inject extension XtextGeneratorNaming naming
|
||||
|
||||
def JavaFileAccess createRuntimeSetup(ILanguageConfig langConfig) {
|
||||
def JavaFileAccess createRuntimeSetup(IXtextGeneratorLanguage langConfig) {
|
||||
val it = langConfig.grammar
|
||||
return fileAccessFactory.createXtendFile(runtimeSetup,'''
|
||||
/**
|
||||
|
@ -62,7 +65,7 @@ class XtextGeneratorTemplates {
|
|||
''')
|
||||
}
|
||||
|
||||
def JavaFileAccess createRuntimeGenSetup(ILanguageConfig langConfig) {
|
||||
def JavaFileAccess createRuntimeGenSetup(IXtextGeneratorLanguage langConfig) {
|
||||
val it = langConfig.grammar
|
||||
val file = fileAccessFactory.createGeneratedJavaFile(runtimeGenSetup)
|
||||
// The following imports are added for backwards-compatibility
|
||||
|
@ -152,7 +155,7 @@ class XtextGeneratorTemplates {
|
|||
«ENDIF»
|
||||
'''
|
||||
|
||||
def JavaFileAccess createRuntimeModule(ILanguageConfig langConfig) {
|
||||
def JavaFileAccess createRuntimeModule(IXtextGeneratorLanguage langConfig) {
|
||||
val it = langConfig.grammar
|
||||
return fileAccessFactory.createXtendFile(runtimeModule,'''
|
||||
/**
|
||||
|
@ -163,7 +166,7 @@ class XtextGeneratorTemplates {
|
|||
''')
|
||||
}
|
||||
|
||||
def JavaFileAccess createRuntimeGenModule(ILanguageConfig langConfig) {
|
||||
def JavaFileAccess createRuntimeGenModule(IXtextGeneratorLanguage langConfig) {
|
||||
val it = langConfig.grammar
|
||||
val superClass = langConfig.runtimeGenModule.superClass ?: runtimeDefaultModule
|
||||
val file = fileAccessFactory.createGeneratedJavaFile(runtimeGenModule)
|
||||
|
@ -205,7 +208,7 @@ class XtextGeneratorTemplates {
|
|||
return file
|
||||
}
|
||||
|
||||
def JavaFileAccess createEclipsePluginModule(ILanguageConfig langConfig) {
|
||||
def JavaFileAccess createEclipsePluginModule(IXtextGeneratorLanguage langConfig) {
|
||||
val it = langConfig.grammar
|
||||
return fileAccessFactory.createXtendFile(eclipsePluginModule,'''
|
||||
/**
|
||||
|
@ -216,7 +219,7 @@ class XtextGeneratorTemplates {
|
|||
''')
|
||||
}
|
||||
|
||||
def JavaFileAccess createEclipsePluginGenModule(ILanguageConfig langConfig) {
|
||||
def JavaFileAccess createEclipsePluginGenModule(IXtextGeneratorLanguage langConfig) {
|
||||
val it = langConfig.grammar
|
||||
val superClass = langConfig.eclipsePluginGenModule.superClass ?: eclipsePluginDefaultModule
|
||||
val file = fileAccessFactory.createGeneratedJavaFile(eclipsePluginGenModule)
|
||||
|
@ -245,7 +248,7 @@ class XtextGeneratorTemplates {
|
|||
return file
|
||||
}
|
||||
|
||||
def JavaFileAccess createIdeaModule(ILanguageConfig langConfig) {
|
||||
def JavaFileAccess createIdeaModule(IXtextGeneratorLanguage langConfig) {
|
||||
val it = langConfig.grammar
|
||||
return fileAccessFactory.createXtendFile(ideaModule,'''
|
||||
/**
|
||||
|
@ -256,7 +259,7 @@ class XtextGeneratorTemplates {
|
|||
''')
|
||||
}
|
||||
|
||||
def JavaFileAccess createIdeaGenModule(ILanguageConfig langConfig) {
|
||||
def JavaFileAccess createIdeaGenModule(IXtextGeneratorLanguage langConfig) {
|
||||
val it = langConfig.grammar
|
||||
val superClass = langConfig.ideaGenModule.superClass ?: ideaDefaultModule
|
||||
val file = fileAccessFactory.createGeneratedJavaFile(ideaGenModule)
|
||||
|
@ -280,7 +283,7 @@ class XtextGeneratorTemplates {
|
|||
return file
|
||||
}
|
||||
|
||||
def JavaFileAccess createWebModule(ILanguageConfig langConfig) {
|
||||
def JavaFileAccess createWebModule(IXtextGeneratorLanguage langConfig) {
|
||||
val it = langConfig.grammar
|
||||
return fileAccessFactory.createXtendFile(webModule,'''
|
||||
/**
|
||||
|
@ -291,7 +294,7 @@ class XtextGeneratorTemplates {
|
|||
''')
|
||||
}
|
||||
|
||||
def JavaFileAccess createWebGenModule(ILanguageConfig langConfig) {
|
||||
def JavaFileAccess createWebGenModule(IXtextGeneratorLanguage langConfig) {
|
||||
val it = langConfig.grammar
|
||||
val superClass = langConfig.webGenModule.superClass ?: webDefaultModule
|
||||
val file = fileAccessFactory.createGeneratedJavaFile(webGenModule)
|
||||
|
@ -319,7 +322,7 @@ class XtextGeneratorTemplates {
|
|||
return file
|
||||
}
|
||||
|
||||
def JavaFileAccess createWebSetup(ILanguageConfig langConfig) {
|
||||
def JavaFileAccess createWebSetup(IXtextGeneratorLanguage langConfig) {
|
||||
val it = langConfig.grammar
|
||||
return fileAccessFactory.createXtendFile(webSetup, '''
|
||||
/**
|
||||
|
@ -340,7 +343,7 @@ class XtextGeneratorTemplates {
|
|||
}
|
||||
|
||||
|
||||
def JavaFileAccess createEclipsePluginExecutableExtensionFactory(ILanguageConfig langConfig, ILanguageConfig activatorLanguage) {
|
||||
def JavaFileAccess createEclipsePluginExecutableExtensionFactory(IXtextGeneratorLanguage langConfig, IXtextGeneratorLanguage activatorLanguage) {
|
||||
val grammar = langConfig.grammar
|
||||
val activatorGrammar = activatorLanguage.grammar
|
||||
val file = fileAccessFactory.createGeneratedJavaFile(grammar.eclipsePluginExecutableExtensionFactory)
|
||||
|
@ -368,7 +371,7 @@ class XtextGeneratorTemplates {
|
|||
return file
|
||||
}
|
||||
|
||||
def JavaFileAccess createEclipsePluginActivator(List<? extends ILanguageConfig> langConfigs) {
|
||||
def JavaFileAccess createEclipsePluginActivator(List<? extends IXtextGeneratorLanguage> langConfigs) {
|
||||
val activator = getEclipsePluginActivator(langConfigs.head.grammar)
|
||||
val file = fileAccessFactory.createGeneratedJavaFile(activator)
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
*******************************************************************************/
|
||||
package org.eclipse.xtext.xtext.generator
|
||||
|
||||
import com.google.inject.Inject
|
||||
import com.google.inject.Injector
|
||||
import java.util.List
|
||||
import org.eclipse.emf.codegen.ecore.genmodel.GenModel
|
||||
|
@ -21,13 +22,15 @@ import org.eclipse.xtend.lib.annotations.Accessors
|
|||
import org.eclipse.xtext.ecore.EcoreSupportStandaloneSetup
|
||||
import org.eclipse.xtext.resource.IResourceServiceProvider
|
||||
import org.eclipse.xtext.util.internal.Log
|
||||
import com.google.inject.Inject
|
||||
|
||||
/**
|
||||
* @noextend
|
||||
*/
|
||||
@Log
|
||||
class XtextLanguageStandaloneSetup implements IGuiceAwareGeneratorComponent {
|
||||
@Accessors List<String> loadedResources = newArrayList
|
||||
|
||||
@Inject ILanguageConfig language
|
||||
@Inject IXtextGeneratorLanguage language
|
||||
|
||||
def void addLoadedResource(String uri) {
|
||||
loadedResources += uri
|
||||
|
|
|
@ -16,12 +16,12 @@ import org.eclipse.xtext.resource.containers.ResourceSetBasedAllContainersStateP
|
|||
import org.eclipse.xtext.resource.containers.StateBasedContainerManager
|
||||
import org.eclipse.xtext.resource.impl.ResourceDescriptionsProvider
|
||||
import org.eclipse.xtext.resource.impl.ResourceSetBasedResourceDescriptions
|
||||
import org.eclipse.xtext.xtext.generator.AbstractGeneratorFragment2
|
||||
import org.eclipse.xtext.xtext.generator.model.GuiceModuleAccess
|
||||
|
||||
import static extension org.eclipse.xtext.xtext.generator.model.TypeReference.*
|
||||
import org.eclipse.xtext.xtext.generator.AbstractXtextGeneratorFragment
|
||||
|
||||
class BuilderIntegrationFragment2 extends AbstractGeneratorFragment2 {
|
||||
class BuilderIntegrationFragment2 extends AbstractXtextGeneratorFragment {
|
||||
|
||||
override generate() {
|
||||
addRuntimeGuiceBindings
|
||||
|
|
|
@ -64,16 +64,16 @@ import org.eclipse.xtext.resource.XtextResourceSet
|
|||
import org.eclipse.xtext.util.StringInputStream
|
||||
import org.eclipse.xtext.util.Strings
|
||||
import org.eclipse.xtext.util.internal.Log
|
||||
import org.eclipse.xtext.xtext.generator.AbstractGeneratorFragment2
|
||||
import org.eclipse.xtext.xtext.generator.CodeConfig
|
||||
import org.eclipse.xtext.xtext.generator.model.TypeReference
|
||||
|
||||
import static org.eclipse.xtext.GrammarUtil.*
|
||||
|
||||
import static extension org.eclipse.xtext.xtext.generator.util.GenModelUtil2.*
|
||||
import org.eclipse.xtext.xtext.generator.AbstractXtextGeneratorFragment
|
||||
|
||||
@Log
|
||||
class EMFGeneratorFragment2 extends AbstractGeneratorFragment2 {
|
||||
class EMFGeneratorFragment2 extends AbstractXtextGeneratorFragment {
|
||||
|
||||
@Inject CodeConfig codeConfig
|
||||
|
||||
|
|
|
@ -9,12 +9,12 @@ package org.eclipse.xtext.xtext.generator.exporting
|
|||
|
||||
import org.eclipse.xtext.naming.DefaultDeclarativeQualifiedNameProvider
|
||||
import org.eclipse.xtext.naming.IQualifiedNameProvider
|
||||
import org.eclipse.xtext.xtext.generator.AbstractGeneratorFragment2
|
||||
import org.eclipse.xtext.xtext.generator.model.GuiceModuleAccess
|
||||
|
||||
import static extension org.eclipse.xtext.xtext.generator.model.TypeReference.*
|
||||
import org.eclipse.xtext.xtext.generator.AbstractXtextGeneratorFragment
|
||||
|
||||
class QualifiedNamesFragment2 extends AbstractGeneratorFragment2 {
|
||||
class QualifiedNamesFragment2 extends AbstractXtextGeneratorFragment {
|
||||
|
||||
override generate() {
|
||||
new GuiceModuleAccess.BindingFactory()
|
||||
|
|
|
@ -9,12 +9,12 @@ package org.eclipse.xtext.xtext.generator.exporting
|
|||
|
||||
import org.eclipse.xtext.naming.IQualifiedNameProvider
|
||||
import org.eclipse.xtext.naming.SimpleNameProvider
|
||||
import org.eclipse.xtext.xtext.generator.AbstractGeneratorFragment2
|
||||
import org.eclipse.xtext.xtext.generator.model.GuiceModuleAccess
|
||||
|
||||
import static extension org.eclipse.xtext.xtext.generator.model.TypeReference.*
|
||||
import org.eclipse.xtext.xtext.generator.AbstractXtextGeneratorFragment
|
||||
|
||||
class SimpleNamesFragment2 extends AbstractGeneratorFragment2 {
|
||||
class SimpleNamesFragment2 extends AbstractXtextGeneratorFragment {
|
||||
|
||||
override generate() {
|
||||
new GuiceModuleAccess.BindingFactory()
|
||||
|
|
|
@ -24,7 +24,6 @@ import org.eclipse.xtext.formatting2.FormatterPreferences
|
|||
import org.eclipse.xtext.formatting2.IFormattableDocument
|
||||
import org.eclipse.xtext.formatting2.IFormatter2
|
||||
import org.eclipse.xtext.preferences.IPreferenceValuesProvider
|
||||
import org.eclipse.xtext.xtext.generator.AbstractGeneratorFragment2
|
||||
import org.eclipse.xtext.xtext.generator.XtextGeneratorNaming
|
||||
import org.eclipse.xtext.xtext.generator.grammarAccess.GrammarAccessExtensions
|
||||
import org.eclipse.xtext.xtext.generator.model.FileAccessFactory
|
||||
|
@ -37,8 +36,9 @@ import static extension org.eclipse.xtext.GrammarUtil.*
|
|||
import static extension org.eclipse.xtext.xtext.generator.model.TypeReference.*
|
||||
import static extension org.eclipse.xtext.xtext.generator.util.GrammarUtil2.*
|
||||
import org.eclipse.xtend.lib.annotations.Accessors
|
||||
import org.eclipse.xtext.xtext.generator.AbstractXtextGeneratorFragment
|
||||
|
||||
class Formatter2Fragment2 extends AbstractGeneratorFragment2 {
|
||||
class Formatter2Fragment2 extends AbstractXtextGeneratorFragment {
|
||||
|
||||
@Inject FileAccessFactory fileAccessFactory
|
||||
|
||||
|
|
|
@ -26,7 +26,6 @@ import org.eclipse.xtext.util.CancelIndicator
|
|||
import org.eclipse.xtext.validation.CheckMode
|
||||
import org.eclipse.xtext.validation.IResourceValidator
|
||||
import org.eclipse.xtext.validation.Issue
|
||||
import org.eclipse.xtext.xtext.generator.AbstractGeneratorFragment2
|
||||
import org.eclipse.xtext.xtext.generator.CodeConfig
|
||||
import org.eclipse.xtext.xtext.generator.Issues
|
||||
import org.eclipse.xtext.xtext.generator.XtextGeneratorNaming
|
||||
|
@ -36,8 +35,9 @@ import org.eclipse.xtext.xtext.generator.model.TypeReference
|
|||
import org.eclipse.xtext.xtext.generator.xbase.XbaseUsageDetector
|
||||
|
||||
import static extension org.eclipse.xtext.xtext.generator.model.TypeReference.*
|
||||
import org.eclipse.xtext.xtext.generator.AbstractXtextGeneratorFragment
|
||||
|
||||
class GeneratorFragment2 extends AbstractGeneratorFragment2 {
|
||||
class GeneratorFragment2 extends AbstractXtextGeneratorFragment {
|
||||
|
||||
@Inject CodeConfig codeConfig
|
||||
|
||||
|
|
|
@ -38,7 +38,6 @@ import org.eclipse.xtext.service.AbstractElementFinder.AbstractParserRuleElement
|
|||
import org.eclipse.xtext.service.GrammarProvider
|
||||
import org.eclipse.xtext.util.Wrapper
|
||||
import org.eclipse.xtext.util.internal.Log
|
||||
import org.eclipse.xtext.xtext.generator.AbstractGeneratorFragment2
|
||||
import org.eclipse.xtext.xtext.generator.XtextGeneratorNaming
|
||||
import org.eclipse.xtext.xtext.generator.model.FileAccessFactory
|
||||
import org.eclipse.xtext.xtext.generator.model.GuiceModuleAccess
|
||||
|
@ -46,9 +45,10 @@ import org.eclipse.xtext.xtext.generator.model.annotations.SingletonClassAnnotat
|
|||
|
||||
import static extension org.eclipse.xtext.GrammarUtil.*
|
||||
import static extension org.eclipse.xtext.xtext.generator.model.TypeReference.*
|
||||
import org.eclipse.xtext.xtext.generator.AbstractXtextGeneratorFragment
|
||||
|
||||
@Log
|
||||
class GrammarAccessFragment2 extends AbstractGeneratorFragment2 {
|
||||
class GrammarAccessFragment2 extends AbstractXtextGeneratorFragment {
|
||||
|
||||
@Accessors
|
||||
String xmlVersion
|
||||
|
|
|
@ -34,7 +34,6 @@ import org.eclipse.xtext.parser.antlr.Lexer
|
|||
import org.eclipse.xtext.parser.antlr.LexerBindings
|
||||
import org.eclipse.xtext.service.LanguageSpecific
|
||||
import org.eclipse.xtext.util.Modules2
|
||||
import org.eclipse.xtext.xtext.generator.AbstractGeneratorFragment2
|
||||
import org.eclipse.xtext.xtext.generator.XtextGeneratorNaming
|
||||
import org.eclipse.xtext.xtext.generator.grammarAccess.GrammarAccessExtensions
|
||||
import org.eclipse.xtext.xtext.generator.model.FileAccessFactory
|
||||
|
@ -47,8 +46,9 @@ import org.eclipse.xtext.xtext.generator.xbase.XbaseUsageDetector
|
|||
|
||||
import static extension org.eclipse.xtext.GrammarUtil.*
|
||||
import static extension org.eclipse.xtext.xtext.generator.model.TypeReference.*
|
||||
import org.eclipse.xtext.xtext.generator.AbstractXtextGeneratorFragment
|
||||
|
||||
class IdeaPluginGenerator extends AbstractGeneratorFragment2 {
|
||||
class IdeaPluginGenerator extends AbstractXtextGeneratorFragment {
|
||||
@Inject extension XtextGeneratorNaming
|
||||
@Inject extension XbaseUsageDetector
|
||||
@Inject ContentAssistGrammarNaming caNaming
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package org.eclipse.xtext.xtext.generator.junit
|
||||
|
||||
import org.eclipse.xtext.xtext.generator.AbstractGeneratorFragment2
|
||||
import com.google.inject.Inject
|
||||
import org.eclipse.xtext.xtext.generator.XtextGeneratorNaming
|
||||
import org.eclipse.xtext.xtext.generator.model.JavaFileAccess
|
||||
|
@ -9,8 +8,9 @@ import org.eclipse.xtext.xtext.generator.model.TypeReference
|
|||
import com.google.inject.Injector
|
||||
import static extension org.eclipse.xtext.GrammarUtil.*
|
||||
import org.eclipse.xtext.xtext.generator.util.GenModelUtil2
|
||||
import org.eclipse.xtext.xtext.generator.AbstractXtextGeneratorFragment
|
||||
|
||||
class Junit4Fragment2 extends AbstractGeneratorFragment2 {
|
||||
class Junit4Fragment2 extends AbstractXtextGeneratorFragment {
|
||||
@Inject extension XtextGeneratorNaming
|
||||
@Inject FileAccessFactory fileAccessFactory
|
||||
|
||||
|
|
|
@ -15,8 +15,8 @@ import org.eclipse.emf.ecore.EPackage
|
|||
import org.eclipse.emf.ecore.resource.ResourceSet
|
||||
import org.eclipse.xtend.lib.annotations.Accessors
|
||||
import org.eclipse.xtend.lib.annotations.EqualsHashCode
|
||||
import org.eclipse.xtext.xtext.generator.ILanguageConfig
|
||||
import org.eclipse.xtext.xtext.generator.util.GenModelUtil2
|
||||
import org.eclipse.xtext.xtext.generator.IXtextGeneratorLanguage
|
||||
|
||||
@Accessors
|
||||
@EqualsHashCode
|
||||
|
@ -30,15 +30,15 @@ class TypeReference {
|
|||
new TypeReference(clazz, arguments)
|
||||
}
|
||||
|
||||
static def TypeReference typeRef(EClass clazz, ILanguageConfig language) {
|
||||
static def TypeReference typeRef(EClass clazz, IXtextGeneratorLanguage language) {
|
||||
new TypeReference(clazz, language.resourceSet)
|
||||
}
|
||||
|
||||
static def TypeReference typeRef(EPackage epackage, ILanguageConfig language) {
|
||||
static def TypeReference typeRef(EPackage epackage, IXtextGeneratorLanguage language) {
|
||||
new TypeReference(epackage, language.resourceSet)
|
||||
}
|
||||
|
||||
static val PACKAGE_MATCHER = Pattern.compile('[a-z][a-zA-Z0-9_]*(\\.[a-z][a-zA-Z0-9_]*)*')
|
||||
static val PACKAGE_MATCHER = Pattern.compile('([a-z][a-zA-Z0-9_]*(\\.[a-z][a-zA-Z0-9_]*)*)?')
|
||||
static val CLASS_MATCHER = Pattern.compile('[A-Z][a-zA-Z0-9_]*(\\.[A-Z][a-zA-Z0-9_]*)*')
|
||||
|
||||
val String packageName
|
||||
|
@ -108,6 +108,7 @@ class TypeReference {
|
|||
packageEnd = i
|
||||
}
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
private static def getClassName(String qualifiedName) {
|
||||
|
@ -120,6 +121,7 @@ class TypeReference {
|
|||
classStart = i + 1
|
||||
}
|
||||
}
|
||||
return qualifiedName
|
||||
}
|
||||
|
||||
private static def getQualifiedName(EClass clazz, ResourceSet resourceSet) {
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2015 itemis AG (http://www.itemis.eu) and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*******************************************************************************/
|
||||
package org.eclipse.xtext.xtext.generator.model.project
|
||||
|
||||
import com.google.inject.Injector
|
||||
import org.eclipse.xtend.lib.annotations.Accessors
|
||||
import org.eclipse.xtext.xtext.generator.Issues
|
||||
import org.eclipse.xtext.xtext.generator.model.ManifestAccess
|
||||
import org.eclipse.xtext.xtext.generator.model.PluginXmlAccess
|
||||
|
||||
/**
|
||||
* @noextend
|
||||
*/
|
||||
@Accessors
|
||||
class BundleProjectConfig extends SubProjectConfig implements IBundleProjectConfig{
|
||||
ManifestAccess manifest
|
||||
PluginXmlAccess pluginXml
|
||||
|
||||
override initialize(Injector injector) {
|
||||
super.initialize(injector)
|
||||
manifest?.initialize(injector)
|
||||
pluginXml?.initialize(injector)
|
||||
}
|
||||
|
||||
override checkConfiguration(Issues issues) {
|
||||
super.checkConfiguration(issues)
|
||||
if (manifest !== null && metaInf === null) {
|
||||
issues.addError("The 'metaInf' outlet must be configured for projects with a manifest", this)
|
||||
}
|
||||
if (pluginXml !== null && root === null) {
|
||||
issues.addError("The 'root' outlet must be configured for projects with a plugin.xml", this)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2015 itemis AG (http://www.itemis.eu) and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*******************************************************************************/
|
||||
package org.eclipse.xtext.xtext.generator.model.project
|
||||
|
||||
import org.eclipse.xtext.xtext.generator.model.ManifestAccess
|
||||
import org.eclipse.xtext.xtext.generator.model.PluginXmlAccess
|
||||
|
||||
/**
|
||||
* @noimplement
|
||||
*/
|
||||
interface IBundleProjectConfig extends ISubProjectConfig {
|
||||
def ManifestAccess getManifest()
|
||||
def PluginXmlAccess getPluginXml()
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2015 itemis AG (http://www.itemis.eu) and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*******************************************************************************/
|
||||
package org.eclipse.xtext.xtext.generator.model.project
|
||||
|
||||
import org.eclipse.xtext.xtext.generator.model.IXtextGeneratorFileSystemAccess
|
||||
|
||||
/**
|
||||
* @noimplement
|
||||
*/
|
||||
interface IRuntimeProjectConfig extends IBundleProjectConfig {
|
||||
def IXtextGeneratorFileSystemAccess getEcoreModel()
|
||||
def String getEcoreModelFolder()
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2015 itemis AG (http://www.itemis.eu) and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*******************************************************************************/
|
||||
package org.eclipse.xtext.xtext.generator.model.project
|
||||
|
||||
import org.eclipse.xtext.xtext.generator.IGuiceAwareGeneratorComponent
|
||||
import org.eclipse.xtext.xtext.generator.model.IXtextGeneratorFileSystemAccess
|
||||
|
||||
/**
|
||||
* @noimplement
|
||||
*/
|
||||
interface ISubProjectConfig extends IGuiceAwareGeneratorComponent {
|
||||
def boolean isEnabled()
|
||||
def String getName()
|
||||
def IXtextGeneratorFileSystemAccess getRoot()
|
||||
def IXtextGeneratorFileSystemAccess getMetaInf()
|
||||
def IXtextGeneratorFileSystemAccess getSrc()
|
||||
def IXtextGeneratorFileSystemAccess getSrcGen()
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2015 itemis AG (http://www.itemis.eu) and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*******************************************************************************/
|
||||
package org.eclipse.xtext.xtext.generator.model.project
|
||||
|
||||
import org.eclipse.xtext.xtext.generator.model.IXtextGeneratorFileSystemAccess
|
||||
|
||||
/**
|
||||
* @noimplement
|
||||
*/
|
||||
interface IWebProjectConfig extends ISubProjectConfig {
|
||||
def IXtextGeneratorFileSystemAccess getAssets()
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2015 itemis AG (http://www.itemis.eu) and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*******************************************************************************/
|
||||
package org.eclipse.xtext.xtext.generator.model.project
|
||||
|
||||
import java.util.List
|
||||
import org.eclipse.xtext.xtext.generator.IGuiceAwareGeneratorComponent
|
||||
|
||||
/**
|
||||
* @noimplement
|
||||
*/
|
||||
interface IXtextProjectConfig extends IGuiceAwareGeneratorComponent {
|
||||
def IRuntimeProjectConfig getRuntime()
|
||||
def IBundleProjectConfig getRuntimeTest()
|
||||
def IBundleProjectConfig getGenericIde()
|
||||
def IBundleProjectConfig getEclipsePlugin()
|
||||
def IBundleProjectConfig getEclipsePluginTest()
|
||||
def ISubProjectConfig getIdeaPlugin()
|
||||
def IWebProjectConfig getWeb()
|
||||
def List<? extends ISubProjectConfig> getEnabledProjects()
|
||||
def List<? extends ISubProjectConfig> getTestProjects()
|
||||
}
|
|
@ -0,0 +1,48 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2015 itemis AG (http://www.itemis.eu) and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*******************************************************************************/
|
||||
package org.eclipse.xtext.xtext.generator.model.project
|
||||
|
||||
import com.google.common.base.CharMatcher
|
||||
import com.google.inject.Injector
|
||||
import org.eclipse.xtend.lib.annotations.Accessors
|
||||
import org.eclipse.xtext.xtext.generator.model.IXtextGeneratorFileSystemAccess
|
||||
|
||||
/**
|
||||
* @noextend
|
||||
*/
|
||||
class RuntimeProjectConfig extends BundleProjectConfig implements IRuntimeProjectConfig {
|
||||
@Accessors(PUBLIC_GETTER)
|
||||
String ecoreModelPath
|
||||
@Accessors(PUBLIC_GETTER)
|
||||
IXtextGeneratorFileSystemAccess ecoreModel
|
||||
|
||||
def void setEcoreModel(String path) {
|
||||
ecoreModelPath = path
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the root-relative path of the folder where the generated .ecore and .genmodel can be found.
|
||||
* The path is delimited by '/', but does not begin or end with a separator.
|
||||
*/
|
||||
override String getEcoreModelFolder() {
|
||||
if (ecoreModel.path.startsWith(root.path)) {
|
||||
val relativePath = ecoreModel.path.substring(root.path.length).replace('\\', '/')
|
||||
return CharMatcher.is('/').trimFrom(relativePath)
|
||||
}
|
||||
throw new RuntimeException('Could not derive the Ecore model folder from the project configuration. Please make sure that \'root\' is a prefix of \'ecoreModel\'.')
|
||||
}
|
||||
|
||||
override initialize(Injector injector) {
|
||||
super.initialize(injector)
|
||||
if (ecoreModelPath !== null) {
|
||||
ecoreModel = owner.newFileSystemAccess(ecoreModelPath, true)
|
||||
ecoreModel.initialize(injector)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -5,13 +5,17 @@
|
|||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*******************************************************************************/
|
||||
package org.eclipse.xtext.xtext.generator
|
||||
package org.eclipse.xtext.xtext.generator.model.project
|
||||
|
||||
import org.eclipse.emf.mwe2.runtime.Mandatory
|
||||
import org.eclipse.xtend.lib.annotations.Accessors
|
||||
import org.eclipse.xtext.xtext.generator.Issues
|
||||
|
||||
/**
|
||||
* @noextend
|
||||
*/
|
||||
@Accessors
|
||||
class WizardConfig extends XtextProjectConfig {
|
||||
class StandardProjectConfig extends XtextProjectConfig {
|
||||
|
||||
boolean mavenLayout
|
||||
boolean createEclipseMetaData
|
||||
|
@ -108,4 +112,5 @@ class WizardConfig extends XtextProjectConfig {
|
|||
if(testProjects.contains(project)) 'test' else 'main'
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,93 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2015 itemis AG (http://www.itemis.eu) and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*******************************************************************************/
|
||||
package org.eclipse.xtext.xtext.generator.model.project
|
||||
|
||||
import com.google.inject.Inject
|
||||
import com.google.inject.Injector
|
||||
import org.eclipse.xtend.lib.annotations.Accessors
|
||||
import org.eclipse.xtext.xtext.generator.Issues
|
||||
import org.eclipse.xtext.xtext.generator.model.IXtextGeneratorFileSystemAccess
|
||||
|
||||
/**
|
||||
* @noextend
|
||||
*/
|
||||
class SubProjectConfig implements ISubProjectConfig {
|
||||
@Inject
|
||||
@Accessors(PUBLIC_GETTER)
|
||||
XtextProjectConfig owner
|
||||
|
||||
@Accessors
|
||||
boolean enabled
|
||||
|
||||
@Accessors
|
||||
String name
|
||||
|
||||
@Accessors(PUBLIC_GETTER)
|
||||
String rootPath
|
||||
|
||||
@Accessors(PUBLIC_GETTER)
|
||||
IXtextGeneratorFileSystemAccess root
|
||||
|
||||
@Accessors(PUBLIC_GETTER)
|
||||
String metaInfPath
|
||||
|
||||
@Accessors(PUBLIC_GETTER)
|
||||
IXtextGeneratorFileSystemAccess metaInf
|
||||
|
||||
@Accessors(PUBLIC_GETTER)
|
||||
String srcPath
|
||||
|
||||
@Accessors(PUBLIC_GETTER)
|
||||
IXtextGeneratorFileSystemAccess src
|
||||
|
||||
@Accessors(PUBLIC_GETTER)
|
||||
String srcGenPath
|
||||
|
||||
@Accessors(PUBLIC_GETTER)
|
||||
IXtextGeneratorFileSystemAccess srcGen
|
||||
|
||||
def void setRoot(String path) {
|
||||
rootPath = path
|
||||
}
|
||||
|
||||
def void setMetaInf(String path) {
|
||||
metaInfPath = path
|
||||
}
|
||||
|
||||
def void setSrc(String path) {
|
||||
srcPath = path
|
||||
}
|
||||
|
||||
def void setSrcGen(String path) {
|
||||
srcGenPath = path
|
||||
}
|
||||
|
||||
def void checkConfiguration(Issues issues) {
|
||||
}
|
||||
|
||||
override initialize(Injector injector) {
|
||||
injector.injectMembers(this)
|
||||
if (rootPath !== null) {
|
||||
root = owner.newFileSystemAccess(rootPath, true)
|
||||
root.initialize(injector)
|
||||
}
|
||||
if (metaInfPath !== null) {
|
||||
metaInf = owner.newFileSystemAccess(metaInfPath, true)
|
||||
metaInf.initialize(injector)
|
||||
}
|
||||
if (srcPath !== null) {
|
||||
src = owner.newFileSystemAccess(srcPath, false)
|
||||
src.initialize(injector)
|
||||
}
|
||||
if (srcGenPath !== null) {
|
||||
srcGen = owner.newFileSystemAccess(srcGenPath, true)
|
||||
srcGen.initialize(injector)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2015 itemis AG (http://www.itemis.eu) and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*******************************************************************************/
|
||||
package org.eclipse.xtext.xtext.generator.model.project
|
||||
|
||||
import com.google.inject.Injector
|
||||
import org.eclipse.xtend.lib.annotations.Accessors
|
||||
import org.eclipse.xtext.xtext.generator.model.IXtextGeneratorFileSystemAccess
|
||||
|
||||
/**
|
||||
* @noextend
|
||||
*/
|
||||
class WebProjectConfig extends SubProjectConfig implements IWebProjectConfig {
|
||||
@Accessors(PUBLIC_GETTER)
|
||||
String assetsPath
|
||||
@Accessors(PUBLIC_GETTER)
|
||||
IXtextGeneratorFileSystemAccess assets
|
||||
|
||||
def void setAssets(String path) {
|
||||
assetsPath = path
|
||||
}
|
||||
|
||||
override initialize(Injector injector) {
|
||||
super.initialize(injector)
|
||||
if (assetsPath !== null) {
|
||||
assets = owner.newFileSystemAccess(assetsPath, true)
|
||||
assets.initialize(injector)
|
||||
}
|
||||
}
|
||||
}
|
|
@ -5,27 +5,19 @@
|
|||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*******************************************************************************/
|
||||
package org.eclipse.xtext.xtext.generator
|
||||
package org.eclipse.xtext.xtext.generator.model.project
|
||||
|
||||
import com.google.inject.Injector
|
||||
import java.util.List
|
||||
import org.eclipse.xtend.lib.annotations.Accessors
|
||||
import org.eclipse.xtext.xtext.generator.Issues
|
||||
import org.eclipse.xtext.xtext.generator.model.ManifestAccess
|
||||
import org.eclipse.xtext.xtext.generator.model.PluginXmlAccess
|
||||
import org.eclipse.xtext.xtext.generator.model.XtextGeneratorFileSystemAccess
|
||||
|
||||
interface IXtextProjectConfig extends IGuiceAwareGeneratorComponent {
|
||||
def IRuntimeProjectConfig getRuntime()
|
||||
def IBundleProjectConfig getRuntimeTest()
|
||||
def IBundleProjectConfig getGenericIde()
|
||||
def IBundleProjectConfig getEclipsePlugin()
|
||||
def IBundleProjectConfig getEclipsePluginTest()
|
||||
def ISubProjectConfig getIdeaPlugin()
|
||||
def IWebProjectConfig getWeb()
|
||||
def List<? extends ISubProjectConfig> getEnabledProjects()
|
||||
def List<? extends ISubProjectConfig> getTestProjects()
|
||||
}
|
||||
|
||||
/**
|
||||
* @noextend
|
||||
*/
|
||||
@Accessors
|
||||
class XtextProjectConfig implements IXtextProjectConfig {
|
||||
RuntimeProjectConfig runtime = new RuntimeProjectConfig
|
|
@ -22,7 +22,6 @@ import org.eclipse.xtext.ParserRule
|
|||
import org.eclipse.xtext.UnorderedGroup
|
||||
import org.eclipse.xtext.generator.LineSeparatorHarmonizer
|
||||
import org.eclipse.xtext.util.Strings
|
||||
import org.eclipse.xtext.xtext.generator.AbstractGeneratorFragment2
|
||||
import org.eclipse.xtext.xtext.generator.CodeConfig
|
||||
import org.eclipse.xtext.xtext.generator.Issues
|
||||
import org.eclipse.xtext.xtext.generator.model.IXtextGeneratorFileSystemAccess
|
||||
|
@ -36,8 +35,9 @@ import org.eclipse.xtext.xtext.generator.parser.antlr.splitting.PartialClassExtr
|
|||
import org.eclipse.xtext.xtext.generator.parser.antlr.splitting.SyntacticPredicateFixup
|
||||
import org.eclipse.xtext.xtext.generator.parser.antlr.splitting.UnorderedGroupsSplitter
|
||||
import org.eclipse.xtext.xtext.generator.parser.antlr.splitting.BacktrackingGuardRemover
|
||||
import org.eclipse.xtext.xtext.generator.AbstractXtextGeneratorFragment
|
||||
|
||||
abstract class AbstractAntlrGeneratorFragment2 extends AbstractGeneratorFragment2 {
|
||||
abstract class AbstractAntlrGeneratorFragment2 extends AbstractXtextGeneratorFragment {
|
||||
@Inject @Accessors(PROTECTED_GETTER) AntlrToolFacade antlrTool
|
||||
@Inject @Accessors(PROTECTED_GETTER) AntlrCodeQualityHelper codeQualityHelper
|
||||
@Inject @Accessors(PROTECTED_GETTER) LineSeparatorHarmonizer newLineNormalizer
|
||||
|
|
|
@ -7,12 +7,12 @@
|
|||
*******************************************************************************/
|
||||
package org.eclipse.xtext.xtext.generator.resourceFactory
|
||||
|
||||
import org.eclipse.xtext.xtext.generator.AbstractGeneratorFragment2
|
||||
import com.google.inject.Inject
|
||||
import org.eclipse.xtext.xtext.generator.XtextGeneratorNaming
|
||||
import org.eclipse.xtext.resource.IResourceFactory
|
||||
import org.eclipse.emf.ecore.resource.Resource
|
||||
import org.eclipse.xtext.resource.IResourceServiceProvider
|
||||
import org.eclipse.xtext.xtext.generator.AbstractXtextGeneratorFragment
|
||||
|
||||
/**
|
||||
* Contributes the registration <code>org.eclipse.emf.ecore.extension_parser</code>
|
||||
|
@ -22,7 +22,7 @@ import org.eclipse.xtext.resource.IResourceServiceProvider
|
|||
*
|
||||
* @author Christian Schneider - Initial contribution and API
|
||||
*/
|
||||
class ResourceFactoryFragment2 extends AbstractGeneratorFragment2 {
|
||||
class ResourceFactoryFragment2 extends AbstractXtextGeneratorFragment {
|
||||
|
||||
@Inject
|
||||
extension XtextGeneratorNaming
|
||||
|
|
|
@ -18,7 +18,6 @@ import org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider
|
|||
import org.eclipse.xtext.scoping.impl.DefaultGlobalScopeProvider
|
||||
import org.eclipse.xtext.scoping.impl.DelegatingScopeProvider
|
||||
import org.eclipse.xtext.scoping.impl.ImportedNamespaceAwareLocalScopeProvider
|
||||
import org.eclipse.xtext.xtext.generator.AbstractGeneratorFragment2
|
||||
import org.eclipse.xtext.xtext.generator.CodeConfig
|
||||
import org.eclipse.xtext.xtext.generator.XtextGeneratorNaming
|
||||
import org.eclipse.xtext.xtext.generator.model.FileAccessFactory
|
||||
|
@ -30,8 +29,9 @@ import static org.eclipse.xtext.GrammarUtil.*
|
|||
|
||||
import static extension org.eclipse.xtext.xtext.generator.model.TypeReference.*
|
||||
import static extension org.eclipse.xtext.xtext.generator.util.GrammarUtil2.*
|
||||
import org.eclipse.xtext.xtext.generator.AbstractXtextGeneratorFragment
|
||||
|
||||
class ImportNamespacesScopingFragment2 extends AbstractGeneratorFragment2 {
|
||||
class ImportNamespacesScopingFragment2 extends AbstractXtextGeneratorFragment {
|
||||
|
||||
@Inject extension XtextGeneratorNaming
|
||||
@Inject extension XbaseUsageDetector
|
||||
|
|
|
@ -50,7 +50,6 @@ import org.eclipse.xtext.serializer.sequencer.ISemanticSequencer
|
|||
import org.eclipse.xtext.serializer.sequencer.ISyntacticSequencer
|
||||
import org.eclipse.xtext.serializer.sequencer.ITransientValueService
|
||||
import org.eclipse.xtext.util.Strings
|
||||
import org.eclipse.xtext.xtext.generator.AbstractGeneratorFragment2
|
||||
import org.eclipse.xtext.xtext.generator.CodeConfig
|
||||
import org.eclipse.xtext.xtext.generator.XtextGeneratorNaming
|
||||
import org.eclipse.xtext.xtext.generator.grammarAccess.GrammarAccessExtensions
|
||||
|
@ -65,8 +64,9 @@ import static extension org.eclipse.xtext.serializer.analysis.SerializationConte
|
|||
import static extension org.eclipse.xtext.xtext.generator.model.TypeReference.*
|
||||
import static extension org.eclipse.xtext.xtext.generator.util.GenModelUtil2.*
|
||||
import org.eclipse.xtext.serializer.analysis.SerializationContext
|
||||
import org.eclipse.xtext.xtext.generator.AbstractXtextGeneratorFragment
|
||||
|
||||
class SerializerFragment2 extends AbstractGeneratorFragment2 {
|
||||
class SerializerFragment2 extends AbstractXtextGeneratorFragment {
|
||||
|
||||
private static def <K, V> Map<K, V> toMap(Iterable<Pair<K, V>> items) {
|
||||
val result = newLinkedHashMap
|
||||
|
|
|
@ -8,15 +8,15 @@
|
|||
package org.eclipse.xtext.xtext.generator.types
|
||||
|
||||
import org.eclipse.xtext.scoping.IGlobalScopeProvider
|
||||
import org.eclipse.xtext.xtext.generator.AbstractGeneratorFragment2
|
||||
import org.eclipse.xtext.xtext.generator.model.GuiceModuleAccess
|
||||
|
||||
import static extension org.eclipse.xtext.xtext.generator.model.TypeReference.*
|
||||
import org.eclipse.xtext.xtext.generator.xbase.XbaseUsageDetector
|
||||
import com.google.inject.Inject
|
||||
import org.eclipse.xtend.lib.annotations.Accessors
|
||||
import org.eclipse.xtext.xtext.generator.AbstractXtextGeneratorFragment
|
||||
|
||||
class TypesGeneratorFragment2 extends AbstractGeneratorFragment2 {
|
||||
class TypesGeneratorFragment2 extends AbstractXtextGeneratorFragment {
|
||||
|
||||
@Inject XbaseUsageDetector xbaseUsageDetector
|
||||
|
||||
|
|
|
@ -8,19 +8,19 @@
|
|||
package org.eclipse.xtext.xtext.generator.ui.compare
|
||||
|
||||
import com.google.inject.Inject
|
||||
import org.eclipse.xtext.xtext.generator.AbstractGeneratorFragment2
|
||||
import org.eclipse.xtext.xtext.generator.XtextGeneratorNaming
|
||||
import org.eclipse.xtext.xtext.generator.model.GuiceModuleAccess
|
||||
import org.eclipse.xtext.xtext.generator.model.TypeReference
|
||||
|
||||
import static extension org.eclipse.xtext.GrammarUtil.*
|
||||
import org.eclipse.xtext.xtext.generator.AbstractXtextGeneratorFragment
|
||||
|
||||
/**
|
||||
* Contributes the registration of compare infrastructure.
|
||||
*
|
||||
* @author Christian Schneider - Initial contribution and API
|
||||
*/
|
||||
class CompareFragment2 extends AbstractGeneratorFragment2 {
|
||||
class CompareFragment2 extends AbstractXtextGeneratorFragment {
|
||||
|
||||
@Inject
|
||||
extension XtextGeneratorNaming
|
||||
|
|
|
@ -19,7 +19,6 @@ import org.eclipse.xtext.Assignment
|
|||
import org.eclipse.xtext.CrossReference
|
||||
import org.eclipse.xtext.Grammar
|
||||
import org.eclipse.xtext.RuleCall
|
||||
import org.eclipse.xtext.xtext.generator.AbstractGeneratorFragment2
|
||||
import org.eclipse.xtext.xtext.generator.CodeConfig
|
||||
import org.eclipse.xtext.xtext.generator.XtextGeneratorNaming
|
||||
import org.eclipse.xtext.xtext.generator.model.FileAccessFactory
|
||||
|
@ -28,6 +27,7 @@ import org.eclipse.xtext.xtext.generator.model.TypeReference
|
|||
|
||||
import static extension org.eclipse.xtext.GrammarUtil.*
|
||||
import static extension org.eclipse.xtext.xtext.generator.util.GrammarUtil2.*
|
||||
import org.eclipse.xtext.xtext.generator.AbstractXtextGeneratorFragment
|
||||
|
||||
/**
|
||||
* Contributes the 'Abstract...ProposalProvider' and '...ProposalProvider' stub,
|
||||
|
@ -35,7 +35,7 @@ import static extension org.eclipse.xtext.xtext.generator.util.GrammarUtil2.*
|
|||
*
|
||||
* @author Christian Schneider - Initial contribution and API
|
||||
*/
|
||||
class ContentAssistFragment2 extends AbstractGeneratorFragment2 {
|
||||
class ContentAssistFragment2 extends AbstractXtextGeneratorFragment {
|
||||
|
||||
@Inject
|
||||
extension XtextGeneratorNaming
|
||||
|
|
|
@ -10,7 +10,6 @@ package org.eclipse.xtext.xtext.generator.ui.labeling
|
|||
import com.google.inject.Inject
|
||||
import org.eclipse.xtend.lib.annotations.Accessors
|
||||
import org.eclipse.xtext.Grammar
|
||||
import org.eclipse.xtext.xtext.generator.AbstractGeneratorFragment2
|
||||
import org.eclipse.xtext.xtext.generator.CodeConfig
|
||||
import org.eclipse.xtext.xtext.generator.XtextGeneratorNaming
|
||||
import org.eclipse.xtext.xtext.generator.model.FileAccessFactory
|
||||
|
@ -19,13 +18,14 @@ import org.eclipse.xtext.xtext.generator.model.TypeReference
|
|||
import org.eclipse.xtext.xtext.generator.xbase.XbaseUsageDetector
|
||||
|
||||
import static extension org.eclipse.xtext.GrammarUtil.*
|
||||
import org.eclipse.xtext.xtext.generator.AbstractXtextGeneratorFragment
|
||||
|
||||
/**
|
||||
* Contributes the Labeling provider stub, either in Xtend or Java language.
|
||||
*
|
||||
* @author Christian Schneider - Initial contribution and API
|
||||
*/
|
||||
class LabelProviderFragment2 extends AbstractGeneratorFragment2 {
|
||||
class LabelProviderFragment2 extends AbstractXtextGeneratorFragment {
|
||||
|
||||
private static val XBASE_LABEL_PROVIDER =
|
||||
"org.eclipse.xtext.xbase.ui.labeling.XbaseLabelProvider"
|
||||
|
|
|
@ -11,18 +11,18 @@ import com.google.inject.Inject
|
|||
import org.eclipse.xtend.lib.annotations.Accessors
|
||||
import org.eclipse.xtext.Grammar
|
||||
import org.eclipse.xtext.GrammarUtil
|
||||
import org.eclipse.xtext.xtext.generator.AbstractGeneratorFragment2
|
||||
import org.eclipse.xtext.xtext.generator.XtextGeneratorNaming
|
||||
import org.eclipse.xtext.xtext.generator.model.FileAccessFactory
|
||||
import org.eclipse.xtext.xtext.generator.model.GuiceModuleAccess
|
||||
import org.eclipse.xtext.xtext.generator.model.TypeReference
|
||||
import static extension org.eclipse.xtext.xtext.generator.model.TypeReference.typeRef
|
||||
import org.eclipse.xtext.xtext.generator.CodeConfig
|
||||
import org.eclipse.xtext.xtext.generator.AbstractXtextGeneratorFragment
|
||||
|
||||
/**
|
||||
* @author Christian Schneider - Initial contribution and API
|
||||
*/
|
||||
class OutlineTreeProviderFragment2 extends AbstractGeneratorFragment2 {
|
||||
class OutlineTreeProviderFragment2 extends AbstractXtextGeneratorFragment {
|
||||
|
||||
@Inject CodeConfig codeConfig
|
||||
@Inject FileAccessFactory fileAccessFactory
|
||||
|
|
|
@ -8,15 +8,15 @@
|
|||
package org.eclipse.xtext.xtext.generator.ui.outline
|
||||
|
||||
import com.google.inject.Inject
|
||||
import org.eclipse.xtext.xtext.generator.AbstractGeneratorFragment2
|
||||
import org.eclipse.xtext.xtext.generator.XtextGeneratorNaming
|
||||
import org.eclipse.xtext.xtext.generator.AbstractXtextGeneratorFragment
|
||||
|
||||
/**
|
||||
* Contributes the 'Quick Outline' entry to the language editor's context menu.
|
||||
*
|
||||
* @author Christian Schneider - Initial contribution and API
|
||||
*/
|
||||
class QuickOutlineFragment2 extends AbstractGeneratorFragment2 {
|
||||
class QuickOutlineFragment2 extends AbstractXtextGeneratorFragment {
|
||||
|
||||
@Inject
|
||||
extension XtextGeneratorNaming
|
||||
|
|
|
@ -10,7 +10,6 @@ package org.eclipse.xtext.xtext.generator.ui.quickfix
|
|||
import javax.inject.Inject
|
||||
import org.eclipse.xtend.lib.annotations.Accessors
|
||||
import org.eclipse.xtext.Grammar
|
||||
import org.eclipse.xtext.xtext.generator.AbstractGeneratorFragment2
|
||||
import org.eclipse.xtext.xtext.generator.CodeConfig
|
||||
import org.eclipse.xtext.xtext.generator.XtextGeneratorNaming
|
||||
import org.eclipse.xtext.xtext.generator.model.FileAccessFactory
|
||||
|
@ -20,13 +19,14 @@ import org.eclipse.xtext.xtext.generator.validation.ValidatorNaming
|
|||
|
||||
import static extension org.eclipse.xtext.GrammarUtil.*
|
||||
import static extension org.eclipse.xtext.xtext.generator.util.GrammarUtil2.*
|
||||
import org.eclipse.xtext.xtext.generator.AbstractXtextGeneratorFragment
|
||||
|
||||
/**
|
||||
* Contributes the Quickfix provider stub, either in Xtend or Java language.
|
||||
*
|
||||
* @author Christian Schneider - Initial contribution and API
|
||||
*/
|
||||
class QuickfixProviderFragment2 extends AbstractGeneratorFragment2 {
|
||||
class QuickfixProviderFragment2 extends AbstractXtextGeneratorFragment {
|
||||
|
||||
@Inject
|
||||
extension XtextGeneratorNaming
|
||||
|
|
|
@ -11,20 +11,20 @@ import com.google.inject.Inject
|
|||
import com.google.inject.name.Names
|
||||
import org.eclipse.xtend.lib.annotations.Accessors
|
||||
import org.eclipse.xtext.Grammar
|
||||
import org.eclipse.xtext.xtext.generator.AbstractGeneratorFragment2
|
||||
import org.eclipse.xtext.xtext.generator.XtextGeneratorNaming
|
||||
import org.eclipse.xtext.xtext.generator.model.GuiceModuleAccess
|
||||
import org.eclipse.xtext.xtext.generator.xbase.XbaseUsageDetector
|
||||
|
||||
import static extension org.eclipse.xtext.GrammarUtil.*
|
||||
import static extension org.eclipse.xtext.xtext.generator.model.TypeReference.*
|
||||
import org.eclipse.xtext.xtext.generator.AbstractXtextGeneratorFragment
|
||||
|
||||
/**
|
||||
* Contributes the registration of element renaming infrastructure.
|
||||
*
|
||||
* @author Christian Schneider - Initial contribution and API
|
||||
*/
|
||||
class RefactorElementNameFragment2 extends AbstractGeneratorFragment2 {
|
||||
class RefactorElementNameFragment2 extends AbstractXtextGeneratorFragment {
|
||||
|
||||
@Inject
|
||||
extension XtextGeneratorNaming
|
||||
|
|
|
@ -14,7 +14,6 @@ import org.eclipse.xtend2.lib.StringConcatenationClient
|
|||
import org.eclipse.xtext.AbstractRule
|
||||
import org.eclipse.xtext.Grammar
|
||||
import org.eclipse.xtext.util.PolymorphicDispatcher
|
||||
import org.eclipse.xtext.xtext.generator.AbstractGeneratorFragment2
|
||||
import org.eclipse.xtext.xtext.generator.XtextGeneratorNaming
|
||||
import org.eclipse.xtext.xtext.generator.model.FileAccessFactory
|
||||
import org.eclipse.xtext.xtext.generator.model.GuiceModuleAccess
|
||||
|
@ -23,6 +22,7 @@ import org.eclipse.xtext.xtext.generator.model.TypeReference
|
|||
import static extension org.eclipse.xtext.GrammarUtil.*
|
||||
import static extension org.eclipse.xtext.xtext.generator.model.TypeReference.typeRef
|
||||
import org.eclipse.xtext.xtext.generator.parser.antlr.ContentAssistGrammarNaming
|
||||
import org.eclipse.xtext.xtext.generator.AbstractXtextGeneratorFragment
|
||||
|
||||
/**
|
||||
* Contributes the 'Partial...ContentAssisParser' and performs further
|
||||
|
@ -31,7 +31,7 @@ import org.eclipse.xtext.xtext.generator.parser.antlr.ContentAssistGrammarNaming
|
|||
*
|
||||
* @author Christian Schneider - Initial contribution and API
|
||||
*/
|
||||
class CodetemplatesGeneratorFragment2 extends AbstractGeneratorFragment2 {
|
||||
class CodetemplatesGeneratorFragment2 extends AbstractXtextGeneratorFragment {
|
||||
|
||||
@Inject
|
||||
ContentAssistGrammarNaming caNaming
|
||||
|
|
|
@ -16,7 +16,6 @@ import org.eclipse.xtext.GeneratedMetamodel
|
|||
import org.eclipse.xtext.Grammar
|
||||
import org.eclipse.xtext.validation.AbstractDeclarativeValidator
|
||||
import org.eclipse.xtext.validation.ComposedChecks
|
||||
import org.eclipse.xtext.xtext.generator.AbstractGeneratorFragment2
|
||||
import org.eclipse.xtext.xtext.generator.CodeConfig
|
||||
import org.eclipse.xtext.xtext.generator.XtextGeneratorNaming
|
||||
import org.eclipse.xtext.xtext.generator.model.FileAccessFactory
|
||||
|
@ -27,8 +26,9 @@ import static org.eclipse.xtext.GrammarUtil.*
|
|||
|
||||
import static extension org.eclipse.xtext.xtext.generator.model.TypeReference.*
|
||||
import static extension org.eclipse.xtext.xtext.generator.util.GrammarUtil2.*
|
||||
import org.eclipse.xtext.xtext.generator.AbstractXtextGeneratorFragment
|
||||
|
||||
class ValidatorFragment2 extends AbstractGeneratorFragment2 {
|
||||
class ValidatorFragment2 extends AbstractXtextGeneratorFragment {
|
||||
|
||||
@Inject extension ValidatorNaming
|
||||
@Inject extension XtextGeneratorNaming
|
||||
|
@ -90,8 +90,6 @@ class ValidatorFragment2 extends AbstractGeneratorFragment2 {
|
|||
|
||||
protected def generateXtendValidatorStub() {
|
||||
fileAccessFactory.createXtendFile(grammar.validatorClass, '''
|
||||
//import org.eclipse.xtext.validation.Check
|
||||
|
||||
/**
|
||||
* This class contains custom validation rules.
|
||||
*
|
||||
|
@ -116,8 +114,6 @@ class ValidatorFragment2 extends AbstractGeneratorFragment2 {
|
|||
|
||||
protected def generateJavaValidatorStub() {
|
||||
fileAccessFactory.createJavaFile(grammar.validatorClass, '''
|
||||
//import org.eclipse.xtext.validation.Check;
|
||||
|
||||
/**
|
||||
* This class contains custom validation rules.
|
||||
*
|
||||
|
|
|
@ -26,7 +26,6 @@ import org.eclipse.xtend.lib.annotations.Accessors
|
|||
import org.eclipse.xtend2.lib.StringConcatenationClient
|
||||
import org.eclipse.xtext.Grammar
|
||||
import org.eclipse.xtext.GrammarUtil
|
||||
import org.eclipse.xtext.xtext.generator.AbstractGeneratorFragment2
|
||||
import org.eclipse.xtext.xtext.generator.CodeConfig
|
||||
import org.eclipse.xtext.xtext.generator.Issues
|
||||
import org.eclipse.xtext.xtext.generator.XtextGeneratorNaming
|
||||
|
@ -40,11 +39,12 @@ import static extension org.eclipse.xtext.GrammarUtil.*
|
|||
import static extension org.eclipse.xtext.xtext.generator.model.TypeReference.*
|
||||
import static extension org.eclipse.xtext.xtext.generator.util.GrammarUtil2.*
|
||||
import static extension org.eclipse.xtext.xtext.generator.web.RegexpExtensions.*
|
||||
import org.eclipse.xtext.xtext.generator.AbstractXtextGeneratorFragment
|
||||
|
||||
/**
|
||||
* Main generator fragment for web integration.
|
||||
*/
|
||||
class WebIntegrationFragment extends AbstractGeneratorFragment2 {
|
||||
class WebIntegrationFragment extends AbstractXtextGeneratorFragment {
|
||||
|
||||
private static enum Framework {
|
||||
ORION, ACE, CODEMIRROR
|
||||
|
|
|
@ -15,7 +15,6 @@ import org.eclipse.xtext.naming.IQualifiedNameProvider
|
|||
import org.eclipse.xtext.resource.ILocationInFileProvider
|
||||
import org.eclipse.xtext.scoping.IGlobalScopeProvider
|
||||
import org.eclipse.xtext.validation.IResourceValidator
|
||||
import org.eclipse.xtext.xtext.generator.AbstractGeneratorFragment2
|
||||
import org.eclipse.xtext.xtext.generator.XtextGeneratorNaming
|
||||
import org.eclipse.xtext.xtext.generator.model.FileAccessFactory
|
||||
import org.eclipse.xtext.xtext.generator.model.GuiceModuleAccess
|
||||
|
@ -23,8 +22,9 @@ import org.eclipse.xtext.xtext.generator.model.TypeReference
|
|||
|
||||
import static extension org.eclipse.xtext.xtext.generator.model.TypeReference.*
|
||||
import static extension org.eclipse.xtext.xtext.generator.util.GenModelUtil2.*
|
||||
import org.eclipse.xtext.xtext.generator.AbstractXtextGeneratorFragment
|
||||
|
||||
class XbaseGeneratorFragment2 extends AbstractGeneratorFragment2 {
|
||||
class XbaseGeneratorFragment2 extends AbstractXtextGeneratorFragment {
|
||||
|
||||
@Accessors(PUBLIC_SETTER)
|
||||
boolean generateXtendInferrer = true
|
||||
|
|
|
@ -8,9 +8,9 @@
|
|||
package org.eclipse.xtext.xtext.generator.xbase
|
||||
|
||||
import com.google.inject.Inject
|
||||
import org.eclipse.xtext.xtext.generator.AbstractGeneratorFragment2
|
||||
import org.eclipse.xtext.xtext.generator.AbstractXtextGeneratorFragment
|
||||
|
||||
class XtypeGeneratorFragment2 extends AbstractGeneratorFragment2 {
|
||||
class XtypeGeneratorFragment2 extends AbstractXtextGeneratorFragment {
|
||||
|
||||
@Inject extension XbaseUsageDetector
|
||||
|
||||
|
|
|
@ -150,10 +150,8 @@ class RuntimeProjectDescriptor extends TestedProjectDescriptor {
|
|||
'''
|
||||
module «(config.language.basePackagePath+"/Generate"+config.language.simpleName).replaceAll("/", ".")»
|
||||
|
||||
import org.eclipse.emf.mwe.utils.*
|
||||
import org.eclipse.xtext.xtext.generator.*
|
||||
import org.eclipse.xtext.generator.*
|
||||
import org.eclipse.xtext.ui.generator.*
|
||||
import org.eclipse.xtext.xtext.generator.model.project.*
|
||||
|
||||
var rootPath = ".."
|
||||
|
||||
|
@ -161,7 +159,7 @@ class RuntimeProjectDescriptor extends TestedProjectDescriptor {
|
|||
|
||||
component = XtextGenerator {
|
||||
configuration = {
|
||||
project = WizardConfig {
|
||||
project = StandardProjectConfig {
|
||||
baseName = "«name»"
|
||||
rootPath = rootPath
|
||||
«IF testProject.enabled»
|
||||
|
|
|
@ -7,14 +7,18 @@
|
|||
*******************************************************************************/
|
||||
package org.eclipse.xtext.workspace
|
||||
|
||||
import org.eclipse.xtext.util.internal.EmfAdaptable
|
||||
import org.eclipse.xtend.lib.annotations.Data
|
||||
import org.eclipse.emf.ecore.resource.ResourceSet
|
||||
import org.eclipse.xtend.lib.annotations.Accessors
|
||||
import org.eclipse.xtext.util.internal.EmfAdaptable
|
||||
|
||||
@EmfAdaptable
|
||||
@Data
|
||||
@Accessors
|
||||
class ProjectConfigAdapter {
|
||||
IProjectConfig projectConfig
|
||||
val IProjectConfig projectConfig
|
||||
|
||||
protected new (IProjectConfig projectConfig) {
|
||||
this.projectConfig = projectConfig
|
||||
}
|
||||
|
||||
def static void install(ResourceSet resourceSet, IProjectConfig config) {
|
||||
new ProjectConfigAdapter(config).attachToEmfObject(resourceSet)
|
||||
|
|
|
@ -0,0 +1,62 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2015 itemis AG (http://www.itemis.eu) and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*******************************************************************************/
|
||||
package org.eclipse.xtext.generator
|
||||
|
||||
import org.junit.Test
|
||||
|
||||
import static org.junit.Assert.*
|
||||
|
||||
import static extension org.eclipse.xtext.xtext.generator.model.TypeReference.*
|
||||
|
||||
class TypeReferenceTest {
|
||||
|
||||
/*
|
||||
* See https://bugs.eclipse.org/bugs/show_bug.cgi?id=480196
|
||||
*/
|
||||
@Test
|
||||
def void testDefaultPackage() {
|
||||
val ref = "EString".typeRef
|
||||
assertEquals("", ref.packageName)
|
||||
assertEquals("EString", ref.simpleName)
|
||||
}
|
||||
|
||||
@Test
|
||||
def void testPackageName() {
|
||||
val ref = "org.example.MyType".typeRef
|
||||
assertEquals("MyType", ref.simpleName)
|
||||
assertEquals("org.example", ref.packageName)
|
||||
}
|
||||
|
||||
@Test
|
||||
def void testParametrizedType() {
|
||||
val ref = "java.util.List".typeRef("String".typeRef)
|
||||
assertEquals("List", ref.simpleName)
|
||||
assertEquals("java.util", ref.packageName)
|
||||
assertEquals("String", ref.typeArguments.head.simpleName)
|
||||
}
|
||||
|
||||
@Test
|
||||
def void testNestedType() {
|
||||
val ref = "java.util.Map.Entry".typeRef
|
||||
assertEquals("java.util", ref.packageName)
|
||||
assertEquals("Entry", ref.simpleName)
|
||||
assertEquals(#["Map", "Entry"], ref.simpleNames)
|
||||
}
|
||||
|
||||
@Test
|
||||
def void testJavaPath() {
|
||||
val ref = "org.example.MyType".typeRef
|
||||
assertEquals("org/example/MyType.java", ref.javaPath)
|
||||
}
|
||||
|
||||
@Test
|
||||
def void testXtendPath() {
|
||||
val ref = "org.example.MyType".typeRef
|
||||
assertEquals("org/example/MyType.xtend", ref.xtendPath)
|
||||
}
|
||||
}
|
|
@ -7,11 +7,12 @@
|
|||
*******************************************************************************/
|
||||
package org.eclipse.xtext.xtext.generator
|
||||
|
||||
import org.junit.Test
|
||||
import org.junit.Before
|
||||
import com.google.inject.Guice
|
||||
import com.google.inject.Injector
|
||||
import org.eclipse.xtext.xtext.generator.model.project.StandardProjectConfig
|
||||
import org.junit.Assert
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
|
||||
/**
|
||||
* @author Sebastian Zarnekow - Initial contribution and API
|
||||
|
@ -25,7 +26,7 @@ class WizardConfigTest {
|
|||
}
|
||||
|
||||
@Test def void testMavenProjectNames() {
|
||||
val cfg = new WizardConfig() => [
|
||||
val cfg = new StandardProjectConfig() => [
|
||||
baseName = 'com.acme'
|
||||
mavenLayout = true
|
||||
runtimeTest.enabled = true
|
||||
|
@ -38,7 +39,7 @@ class WizardConfigTest {
|
|||
}
|
||||
|
||||
@Test def void testPlainProjectNames() {
|
||||
val cfg = new WizardConfig() => [
|
||||
val cfg = new StandardProjectConfig() => [
|
||||
baseName = 'com.acme'
|
||||
runtimeTest.enabled = true
|
||||
eclipsePlugin.enabled = true
|
||||
|
|
|
@ -1,9 +1,7 @@
|
|||
module org.xtext.example.mydsl.GenerateMyDsl
|
||||
|
||||
import org.eclipse.emf.mwe.utils.*
|
||||
import org.eclipse.xtext.xtext.generator.*
|
||||
import org.eclipse.xtext.generator.*
|
||||
import org.eclipse.xtext.ui.generator.*
|
||||
import org.eclipse.xtext.xtext.generator.model.project.*
|
||||
|
||||
var rootPath = ".."
|
||||
|
||||
|
@ -11,7 +9,7 @@ Workflow {
|
|||
|
||||
component = XtextGenerator {
|
||||
configuration = {
|
||||
project = WizardConfig {
|
||||
project = StandardProjectConfig {
|
||||
baseName = "org.xtext.example.eclipsePlugin"
|
||||
rootPath = rootPath
|
||||
runtimeTest = {
|
||||
|
|
|
@ -1,9 +1,7 @@
|
|||
module org.xtext.example.mydsl.GenerateMyDsl
|
||||
|
||||
import org.eclipse.emf.mwe.utils.*
|
||||
import org.eclipse.xtext.xtext.generator.*
|
||||
import org.eclipse.xtext.generator.*
|
||||
import org.eclipse.xtext.ui.generator.*
|
||||
import org.eclipse.xtext.xtext.generator.model.project.*
|
||||
|
||||
var rootPath = ".."
|
||||
|
||||
|
@ -11,7 +9,7 @@ Workflow {
|
|||
|
||||
component = XtextGenerator {
|
||||
configuration = {
|
||||
project = WizardConfig {
|
||||
project = StandardProjectConfig {
|
||||
baseName = "org.xtext.example.full"
|
||||
rootPath = rootPath
|
||||
runtimeTest = {
|
||||
|
|
|
@ -1,9 +1,7 @@
|
|||
module org.xtext.example.mydsl.GenerateMyDsl
|
||||
|
||||
import org.eclipse.emf.mwe.utils.*
|
||||
import org.eclipse.xtext.xtext.generator.*
|
||||
import org.eclipse.xtext.generator.*
|
||||
import org.eclipse.xtext.ui.generator.*
|
||||
import org.eclipse.xtext.xtext.generator.model.project.*
|
||||
|
||||
var rootPath = ".."
|
||||
|
||||
|
@ -11,7 +9,7 @@ Workflow {
|
|||
|
||||
component = XtextGenerator {
|
||||
configuration = {
|
||||
project = WizardConfig {
|
||||
project = StandardProjectConfig {
|
||||
baseName = "org.xtext.example.gradle"
|
||||
rootPath = rootPath
|
||||
runtimeTest = {
|
||||
|
|
|
@ -1,9 +1,7 @@
|
|||
module org.xtext.example.mydsl.GenerateMyDsl
|
||||
|
||||
import org.eclipse.emf.mwe.utils.*
|
||||
import org.eclipse.xtext.xtext.generator.*
|
||||
import org.eclipse.xtext.generator.*
|
||||
import org.eclipse.xtext.ui.generator.*
|
||||
import org.eclipse.xtext.xtext.generator.model.project.*
|
||||
|
||||
var rootPath = ".."
|
||||
|
||||
|
@ -11,7 +9,7 @@ Workflow {
|
|||
|
||||
component = XtextGenerator {
|
||||
configuration = {
|
||||
project = WizardConfig {
|
||||
project = StandardProjectConfig {
|
||||
baseName = "org.xtext.example.mavenTycho"
|
||||
rootPath = rootPath
|
||||
runtimeTest = {
|
||||
|
|
|
@ -1,9 +1,7 @@
|
|||
module org.xtext.example.mydsl.GenerateMyDsl
|
||||
|
||||
import org.eclipse.emf.mwe.utils.*
|
||||
import org.eclipse.xtext.xtext.generator.*
|
||||
import org.eclipse.xtext.generator.*
|
||||
import org.eclipse.xtext.ui.generator.*
|
||||
import org.eclipse.xtext.xtext.generator.model.project.*
|
||||
|
||||
var rootPath = ".."
|
||||
|
||||
|
@ -11,7 +9,7 @@ Workflow {
|
|||
|
||||
component = XtextGenerator {
|
||||
configuration = {
|
||||
project = WizardConfig {
|
||||
project = StandardProjectConfig {
|
||||
baseName = "org.xtext.example.plainMaven"
|
||||
rootPath = rootPath
|
||||
runtimeTest = {
|
||||
|
|
Loading…
Reference in a new issue