diff --git a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/AbstractInheritingFragment.xtend b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/AbstractInheritingFragment.xtend new file mode 100644 index 000000000..e7a4fff28 --- /dev/null +++ b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/AbstractInheritingFragment.xtend @@ -0,0 +1,15 @@ +/******************************************************************************* + * 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 org.eclipse.xtext.xtext.generator.AbstractStubGeneratingFragment +import org.eclipse.xtend.lib.annotations.Accessors + +abstract class AbstractInheritingFragment extends AbstractStubGeneratingFragment { + @Accessors boolean inheritImplementation = true +} \ No newline at end of file diff --git a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/IGeneratesStub.xtend b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/AbstractStubGeneratingFragment.xtend similarity index 67% rename from plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/IGeneratesStub.xtend rename to plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/AbstractStubGeneratingFragment.xtend index e5bfdb22f..78c26105d 100644 --- a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/IGeneratesStub.xtend +++ b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/AbstractStubGeneratingFragment.xtend @@ -7,10 +7,9 @@ *******************************************************************************/ package org.eclipse.xtext.xtext.generator -/** - * @noimplement - */ -interface IGeneratesStub { - def boolean isGenerateStub() - def void setGenerateStub(boolean generateStub) +import org.eclipse.xtext.xtext.generator.AbstractXtextGeneratorFragment +import org.eclipse.xtend.lib.annotations.Accessors + +abstract class AbstractStubGeneratingFragment extends AbstractXtextGeneratorFragment { + @Accessors boolean generateStub = true } \ No newline at end of file diff --git a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/formatting/Formatter2Fragment2.xtend b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/formatting/Formatter2Fragment2.xtend index 6c5c237f0..6063769be 100644 --- a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/formatting/Formatter2Fragment2.xtend +++ b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/formatting/Formatter2Fragment2.xtend @@ -24,6 +24,7 @@ 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.AbstractStubGeneratingFragment import org.eclipse.xtext.xtext.generator.XtextGeneratorNaming import org.eclipse.xtext.xtext.generator.grammarAccess.GrammarAccessExtensions import org.eclipse.xtext.xtext.generator.model.FileAccessFactory @@ -35,19 +36,14 @@ import org.eclipse.xtext.xtext.generator.util.GenModelUtil2 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 -import org.eclipse.xtext.xtext.generator.IGeneratesStub -class Formatter2Fragment2 extends AbstractXtextGeneratorFragment implements IGeneratesStub { +class Formatter2Fragment2 extends AbstractStubGeneratingFragment { @Inject FileAccessFactory fileAccessFactory @Inject extension XtextGeneratorNaming @Inject extension GrammarAccessExtensions - - @Accessors boolean generateStub = true - + protected def TypeReference getFormatter2Stub(Grammar grammar) { new TypeReference(grammar.runtimeBasePackage + '.formatting2.' + getSimpleName(grammar) + 'Formatter') } diff --git a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/generator/GeneratorFragment2.xtend b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/generator/GeneratorFragment2.xtend index ebfa9cb28..7338e3bd6 100644 --- a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/generator/GeneratorFragment2.xtend +++ b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/generator/GeneratorFragment2.xtend @@ -26,6 +26,7 @@ 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.AbstractStubGeneratingFragment import org.eclipse.xtext.xtext.generator.CodeConfig import org.eclipse.xtext.xtext.generator.Issues import org.eclipse.xtext.xtext.generator.XtextGeneratorNaming @@ -35,10 +36,8 @@ 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 -import org.eclipse.xtext.xtext.generator.IGeneratesStub -class GeneratorFragment2 extends AbstractXtextGeneratorFragment implements IGeneratesStub { +class GeneratorFragment2 extends AbstractStubGeneratingFragment { @Inject CodeConfig codeConfig @@ -56,11 +55,8 @@ class GeneratorFragment2 extends AbstractXtextGeneratorFragment implements IGene @Accessors(PUBLIC_SETTER) boolean generateXtendMain = false - @Accessors(PUBLIC_SETTER) - boolean generateStub = true - override boolean isGenerateStub() { - !grammar.inheritsXbase && generateStub + !grammar.inheritsXbase && super.generateStub } def boolean isGenerateJavaMain() { diff --git a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/scoping/ImportNamespacesScopingFragment2.xtend b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/scoping/ImportNamespacesScopingFragment2.xtend index 3d5686f05..060593776 100644 --- a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/scoping/ImportNamespacesScopingFragment2.xtend +++ b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/scoping/ImportNamespacesScopingFragment2.xtend @@ -18,6 +18,7 @@ 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.AbstractInheritingFragment import org.eclipse.xtext.xtext.generator.CodeConfig import org.eclipse.xtext.xtext.generator.XtextGeneratorNaming import org.eclipse.xtext.xtext.generator.model.FileAccessFactory @@ -29,25 +30,17 @@ 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 -import org.eclipse.xtext.xtext.generator.IGeneratesStub -class ImportNamespacesScopingFragment2 extends AbstractXtextGeneratorFragment implements IGeneratesStub { +class ImportNamespacesScopingFragment2 extends AbstractInheritingFragment { @Inject extension XtextGeneratorNaming @Inject extension XbaseUsageDetector @Inject CodeConfig codeConfig @Inject FileAccessFactory fileAccessFactory - - @Accessors - boolean generateStub = true - + @Accessors boolean ignoreCase = false - @Accessors - boolean inheritImplementation = true - protected def TypeReference getScopeProviderClass(Grammar grammar) { if (grammar.name == 'org.eclipse.xtext.xbase.Xbase') return 'org.eclipse.xtext.xbase.scoping.batch.XbaseBatchScopeProvider'.typeRef diff --git a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/serializer/SerializerFragment2.xtend b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/serializer/SerializerFragment2.xtend index 97cbb0781..9797c2117 100644 --- a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/serializer/SerializerFragment2.xtend +++ b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/serializer/SerializerFragment2.xtend @@ -53,9 +53,8 @@ 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.AbstractXtextGeneratorFragment +import org.eclipse.xtext.xtext.generator.AbstractStubGeneratingFragment import org.eclipse.xtext.xtext.generator.CodeConfig -import org.eclipse.xtext.xtext.generator.IGeneratesStub import org.eclipse.xtext.xtext.generator.XtextGeneratorNaming import org.eclipse.xtext.xtext.generator.grammarAccess.GrammarAccessExtensions import org.eclipse.xtext.xtext.generator.model.FileAccessFactory @@ -69,7 +68,7 @@ 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.* -class SerializerFragment2 extends AbstractXtextGeneratorFragment implements IGeneratesStub { +class SerializerFragment2 extends AbstractStubGeneratingFragment { private static def Map toMap(Iterable> items) { val result = newLinkedHashMap @@ -90,7 +89,6 @@ class SerializerFragment2 extends AbstractXtextGeneratorFragment implements IGen @Inject CodeConfig codeConfig @Accessors boolean generateDebugData = false - @Accessors boolean generateStub = true @Accessors boolean generateSupportForDeprecatedContextObject = false boolean detectSyntheticTerminals = true diff --git a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/ui/contentAssist/ContentAssistFragment2.xtend b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/ui/contentAssist/ContentAssistFragment2.xtend index ac459577c..a0479002f 100644 --- a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/ui/contentAssist/ContentAssistFragment2.xtend +++ b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/ui/contentAssist/ContentAssistFragment2.xtend @@ -10,7 +10,6 @@ package org.eclipse.xtext.xtext.generator.ui.contentAssist import com.google.common.collect.Sets import com.google.inject.Inject import org.eclipse.emf.ecore.EObject -import org.eclipse.xtend.lib.annotations.Accessors import org.eclipse.xtend2.lib.StringConcatenationClient import org.eclipse.xtext.AbstractElement import org.eclipse.xtext.AbstractRule @@ -19,6 +18,7 @@ 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.AbstractInheritingFragment import org.eclipse.xtext.xtext.generator.CodeConfig import org.eclipse.xtext.xtext.generator.XtextGeneratorNaming import org.eclipse.xtext.xtext.generator.model.FileAccessFactory @@ -27,8 +27,6 @@ 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 -import org.eclipse.xtext.xtext.generator.IGeneratesStub /** * Contributes the 'Abstract...ProposalProvider' and '...ProposalProvider' stub, @@ -36,7 +34,7 @@ import org.eclipse.xtext.xtext.generator.IGeneratesStub * * @author Christian Schneider - Initial contribution and API */ -class ContentAssistFragment2 extends AbstractXtextGeneratorFragment implements IGeneratesStub { +class ContentAssistFragment2 extends AbstractInheritingFragment { @Inject extension XtextGeneratorNaming @@ -47,12 +45,6 @@ class ContentAssistFragment2 extends AbstractXtextGeneratorFragment implements I @Inject FileAccessFactory fileAccessFactory - @Accessors - boolean generateStub = true; - - @Accessors - boolean inheritImplementation = true - def protected TypeReference getProposalProviderClass(Grammar g) { return new TypeReference( g.eclipsePluginBasePackage + ".contentassist." + g.simpleName + "ProposalProvider" diff --git a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/ui/labeling/LabelProviderFragment2.xtend b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/ui/labeling/LabelProviderFragment2.xtend index fea7a2d0c..bf4aff8d7 100644 --- a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/ui/labeling/LabelProviderFragment2.xtend +++ b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/ui/labeling/LabelProviderFragment2.xtend @@ -8,8 +8,8 @@ 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.AbstractStubGeneratingFragment import org.eclipse.xtext.xtext.generator.CodeConfig import org.eclipse.xtext.xtext.generator.XtextGeneratorNaming import org.eclipse.xtext.xtext.generator.model.FileAccessFactory @@ -18,15 +18,13 @@ 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 -import org.eclipse.xtext.xtext.generator.IGeneratesStub /** * Contributes the Labeling provider stub, either in Xtend or Java language. * * @author Christian Schneider - Initial contribution and API */ -class LabelProviderFragment2 extends AbstractXtextGeneratorFragment implements IGeneratesStub { +class LabelProviderFragment2 extends AbstractStubGeneratingFragment { private static val XBASE_LABEL_PROVIDER = "org.eclipse.xtext.xbase.ui.labeling.XbaseLabelProvider" @@ -46,9 +44,6 @@ class LabelProviderFragment2 extends AbstractXtextGeneratorFragment implements I @Inject FileAccessFactory fileAccessFactory - @Accessors - private boolean generateStub = true; - def protected TypeReference getEObjectLabelProviderClass(Grammar g) { return new TypeReference( g.eclipsePluginBasePackage + ".labeling." + g.simpleName + "LabelProvider" diff --git a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/ui/outline/OutlineTreeProviderFragment2.xtend b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/ui/outline/OutlineTreeProviderFragment2.xtend index d0388ed17..a21988d00 100644 --- a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/ui/outline/OutlineTreeProviderFragment2.xtend +++ b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/ui/outline/OutlineTreeProviderFragment2.xtend @@ -8,30 +8,26 @@ package org.eclipse.xtext.xtext.generator.ui.outline 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.AbstractStubGeneratingFragment +import org.eclipse.xtext.xtext.generator.CodeConfig 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 -import org.eclipse.xtext.xtext.generator.IGeneratesStub /** * @author Christian Schneider - Initial contribution and API */ -class OutlineTreeProviderFragment2 extends AbstractXtextGeneratorFragment implements IGeneratesStub { +class OutlineTreeProviderFragment2 extends AbstractStubGeneratingFragment { @Inject CodeConfig codeConfig @Inject FileAccessFactory fileAccessFactory @Inject extension XtextGeneratorNaming - @Accessors - boolean generateStub = true; - protected def TypeReference getOutlineTreeProviderClass(Grammar grammar) { new TypeReference(grammar.eclipsePluginBasePackage + ".outline." + GrammarUtil.getSimpleName(grammar) + "OutlineTreeProvider" diff --git a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/ui/quickfix/QuickfixProviderFragment2.xtend b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/ui/quickfix/QuickfixProviderFragment2.xtend index 643f6af09..43b870fd6 100644 --- a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/ui/quickfix/QuickfixProviderFragment2.xtend +++ b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/ui/quickfix/QuickfixProviderFragment2.xtend @@ -8,8 +8,8 @@ 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.AbstractInheritingFragment import org.eclipse.xtext.xtext.generator.CodeConfig import org.eclipse.xtext.xtext.generator.XtextGeneratorNaming import org.eclipse.xtext.xtext.generator.model.FileAccessFactory @@ -19,15 +19,13 @@ 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 -import org.eclipse.xtext.xtext.generator.IGeneratesStub /** * Contributes the Quickfix provider stub, either in Xtend or Java language. * * @author Christian Schneider - Initial contribution and API */ -class QuickfixProviderFragment2 extends AbstractXtextGeneratorFragment implements IGeneratesStub { +class QuickfixProviderFragment2 extends AbstractInheritingFragment { @Inject extension XtextGeneratorNaming @@ -41,12 +39,6 @@ class QuickfixProviderFragment2 extends AbstractXtextGeneratorFragment implement @Inject FileAccessFactory fileAccessFactory - @Accessors - private boolean generateStub = true; - - @Accessors - private boolean inheritImplementation; - def protected TypeReference getQuickfixProviderClass(Grammar g) { return new TypeReference( g.eclipsePluginBasePackage + ".quickfix." + g.simpleName + "QuickfixProvider" diff --git a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/validation/ValidatorFragment2.xtend b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/validation/ValidatorFragment2.xtend index 6dc3f10be..3465d671b 100644 --- a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/validation/ValidatorFragment2.xtend +++ b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/validation/ValidatorFragment2.xtend @@ -11,11 +11,11 @@ import com.google.inject.Inject import java.util.ArrayList import java.util.List import org.eclipse.emf.ecore.EPackage -import org.eclipse.xtend.lib.annotations.Accessors 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.AbstractInheritingFragment import org.eclipse.xtext.xtext.generator.CodeConfig import org.eclipse.xtext.xtext.generator.XtextGeneratorNaming import org.eclipse.xtext.xtext.generator.model.FileAccessFactory @@ -26,22 +26,14 @@ 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 -import org.eclipse.xtext.xtext.generator.IGeneratesStub -class ValidatorFragment2 extends AbstractXtextGeneratorFragment implements IGeneratesStub { +class ValidatorFragment2 extends AbstractInheritingFragment { @Inject extension ValidatorNaming @Inject extension XtextGeneratorNaming @Inject FileAccessFactory fileAccessFactory @Inject CodeConfig codeConfig - @Accessors - boolean generateStub = true - - @Accessors - boolean inheritImplementation = true - val List composedChecks = newArrayList /**