pull generateStub/inheritImplementation to super classes

This commit is contained in:
Stefan Oehme 2015-10-21 11:27:30 +02:00
parent b2060c6151
commit 9f4a7ff41a
11 changed files with 43 additions and 79 deletions

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -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 <K, V> Map<K, V> toMap(Iterable<Pair<K, V>> 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

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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<String> composedChecks = newArrayList
/**