Skip to content
Snippets Groups Projects
Commit cf3326e3 authored by Leonardo Montecchi's avatar Leonardo Montecchi
Browse files

Adding Xtext example for the Quiz metamodel

Note: The project for the Quiz metamodel is in the main "examples" repository.
parent 5daca5f3
Branches master
No related tags found
No related merge requests found
Showing
with 18185 additions and 0 deletions
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="src-gen"/>
<classpathentry kind="src" path="xtend-gen"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="output" path="bin"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>no.hal.quiz.xtext.ide</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.ManifestBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.SchemaBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.pde.PluginNature</nature>
</natures>
</projectDescription>
Manifest-Version: 1.0
Automatic-Module-Name: no.hal.quiz.xtext.ide
Bundle-ManifestVersion: 2
Bundle-Name: no.hal.quiz.xtext.ide
Bundle-Vendor: My Company
Bundle-Version: 1.0.0.qualifier
Bundle-SymbolicName: no.hal.quiz.xtext.ide; singleton:=true
Bundle-ActivationPolicy: lazy
Require-Bundle: no.hal.quiz.xtext,
no.hal.quiz.model,
org.eclipse.xtext.ide,
org.eclipse.xtext.xbase.ide,
org.antlr.runtime;bundle-version="[3.2.0,3.2.1)"
Bundle-RequiredExecutionEnvironment: JavaSE-11
Export-Package: no.hal.quiz.xtext.ide.contentassist.antlr,
no.hal.quiz.xtext.ide.contentassist.antlr.internal
source.. = src/,\
src-gen/,\
xtend-gen/
bin.includes = .,\
META-INF/
bin.excludes = **/*.xtend
no.hal.quiz.xtext.ide.QuizDSLIdeSetup
/*
* generated by Xtext 2.27.0
*/
package no.hal.quiz.xtext.ide;
import com.google.inject.Binder;
import com.google.inject.name.Names;
import no.hal.quiz.xtext.ide.contentassist.antlr.QuizDSLParser;
import no.hal.quiz.xtext.ide.contentassist.antlr.internal.InternalQuizDSLLexer;
import org.eclipse.xtext.ide.DefaultIdeModule;
import org.eclipse.xtext.ide.LexerIdeBindings;
import org.eclipse.xtext.ide.editor.contentassist.FQNPrefixMatcher;
import org.eclipse.xtext.ide.editor.contentassist.IPrefixMatcher;
import org.eclipse.xtext.ide.editor.contentassist.IProposalConflictHelper;
import org.eclipse.xtext.ide.editor.contentassist.antlr.AntlrProposalConflictHelper;
import org.eclipse.xtext.ide.editor.contentassist.antlr.IContentAssistParser;
import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.Lexer;
import org.eclipse.xtext.ide.refactoring.IRenameStrategy2;
import org.eclipse.xtext.ide.server.rename.IRenameService2;
import org.eclipse.xtext.ide.server.rename.RenameService2;
/**
* Manual modifications go to {@link QuizDSLIdeModule}.
*/
@SuppressWarnings("all")
public abstract class AbstractQuizDSLIdeModule extends DefaultIdeModule {
// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
public void configureContentAssistLexer(Binder binder) {
binder.bind(Lexer.class)
.annotatedWith(Names.named(LexerIdeBindings.CONTENT_ASSIST))
.to(InternalQuizDSLLexer.class);
}
// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
public Class<? extends IContentAssistParser> bindIContentAssistParser() {
return QuizDSLParser.class;
}
// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
public Class<? extends IProposalConflictHelper> bindIProposalConflictHelper() {
return AntlrProposalConflictHelper.class;
}
// contributed by org.eclipse.xtext.xtext.generator.exporting.QualifiedNamesFragment2
public Class<? extends IPrefixMatcher> bindIPrefixMatcher() {
return FQNPrefixMatcher.class;
}
// contributed by org.eclipse.xtext.xtext.generator.ui.refactoring.RefactorElementNameFragment2
public Class<? extends IRenameService2> bindIRenameService2() {
return RenameService2.class;
}
// contributed by org.eclipse.xtext.xtext.generator.ui.refactoring.RefactorElementNameFragment2
public Class<? extends IRenameStrategy2> bindIRenameStrategy2() {
return IRenameStrategy2.DefaultImpl.class;
}
}
/*
* generated by Xtext 2.27.0
*/
package no.hal.quiz.xtext.ide.contentassist.antlr;
import java.util.Collection;
import java.util.Collections;
import org.eclipse.xtext.AbstractRule;
import org.eclipse.xtext.ide.editor.contentassist.antlr.FollowElement;
import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
import org.eclipse.xtext.util.PolymorphicDispatcher;
public class PartialQuizDSLContentAssistParser extends QuizDSLParser {
private AbstractRule rule;
@Override
public void initializeFor(AbstractRule rule) {
this.rule = rule;
}
@Override
protected Collection<FollowElement> getFollowElements(AbstractInternalContentAssistParser parser) {
if (rule == null || rule.eIsProxy())
return Collections.emptyList();
String methodName = "entryRule" + rule.getName();
PolymorphicDispatcher<Collection<FollowElement>> dispatcher =
new PolymorphicDispatcher<Collection<FollowElement>>(methodName, 0, 0, Collections.singletonList(parser));
dispatcher.invoke();
return parser.getFollowElements();
}
}
/*
* generated by Xtext 2.27.0
*/
package no.hal.quiz.xtext.ide.contentassist.antlr;
import com.google.common.collect.ImmutableMap;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.util.Map;
import no.hal.quiz.xtext.ide.contentassist.antlr.internal.InternalQuizDSLParser;
import no.hal.quiz.xtext.services.QuizDSLGrammarAccess;
import org.eclipse.xtext.AbstractElement;
import org.eclipse.xtext.ide.editor.contentassist.antlr.AbstractContentAssistParser;
public class QuizDSLParser extends AbstractContentAssistParser {
@Singleton
public static final class NameMappings {
private final Map<AbstractElement, String> mappings;
@Inject
public NameMappings(QuizDSLGrammarAccess grammarAccess) {
ImmutableMap.Builder<AbstractElement, String> builder = ImmutableMap.builder();
init(builder, grammarAccess);
this.mappings = builder.build();
}
public String getRuleName(AbstractElement element) {
return mappings.get(element);
}
private static void init(ImmutableMap.Builder<AbstractElement, String> builder, QuizDSLGrammarAccess grammarAccess) {
builder.put(grammarAccess.getQuizAccess().getAlternatives_2(), "rule__Quiz__Alternatives_2");
builder.put(grammarAccess.getAbstractQuizPartAccess().getAlternatives(), "rule__AbstractQuizPart__Alternatives");
builder.put(grammarAccess.getAbstractQAAccess().getAlternatives(), "rule__AbstractQA__Alternatives");
builder.put(grammarAccess.getQuestionAccess().getAlternatives(), "rule__Question__Alternatives");
builder.put(grammarAccess.getAnswerAccess().getAlternatives(), "rule__Answer__Alternatives");
builder.put(grammarAccess.getOptionAnswerAccess().getAlternatives(), "rule__OptionAnswer__Alternatives");
builder.put(grammarAccess.getSimpleAnswerAccess().getAlternatives(), "rule__SimpleAnswer__Alternatives");
builder.put(grammarAccess.getBooleanAnswerAccess().getAlternatives_1(), "rule__BooleanAnswer__Alternatives_1");
builder.put(grammarAccess.getBooleanAnswerAccess().getValueAlternatives_1_0_0(), "rule__BooleanAnswer__ValueAlternatives_1_0_0");
builder.put(grammarAccess.getBooleanAnswerAccess().getAlternatives_1_1(), "rule__BooleanAnswer__Alternatives_1_1");
builder.put(grammarAccess.getOptionsAnswerAccess().getAlternatives(), "rule__OptionsAnswer__Alternatives");
builder.put(grammarAccess.getSingleOptionsAnswerAccess().getAlternatives(), "rule__SingleOptionsAnswer__Alternatives");
builder.put(grammarAccess.getSingleListOptionAccess().getAlternatives_0(), "rule__SingleListOption__Alternatives_0");
builder.put(grammarAccess.getSingleListOptionAccess().getAlternatives_0_0(), "rule__SingleListOption__Alternatives_0_0");
builder.put(grammarAccess.getXmlElementAccess().getAlternatives(), "rule__XmlElement__Alternatives");
builder.put(grammarAccess.getXmlTagElementAccess().getAlternatives_1(), "rule__XmlTagElement__Alternatives_1");
builder.put(grammarAccess.getQuizAccess().getGroup(), "rule__Quiz__Group__0");
builder.put(grammarAccess.getQuizAccess().getGroup_2_0(), "rule__Quiz__Group_2_0__0");
builder.put(grammarAccess.getQNameAccess().getGroup(), "rule__QName__Group__0");
builder.put(grammarAccess.getQNameAccess().getGroup_1(), "rule__QName__Group_1__0");
builder.put(grammarAccess.getQuizPartAccess().getGroup(), "rule__QuizPart__Group__0");
builder.put(grammarAccess.getQuizPartRefAccess().getGroup(), "rule__QuizPartRef__Group__0");
builder.put(grammarAccess.getAnonymousQuizPartAccess().getGroup(), "rule__AnonymousQuizPart__Group__0");
builder.put(grammarAccess.getQARefAccess().getGroup(), "rule__QARef__Group__0");
builder.put(grammarAccess.getQAAccess().getGroup(), "rule__QA__Group__0");
builder.put(grammarAccess.getStringAnswerAccess().getGroup(), "rule__StringAnswer__Group__0");
builder.put(grammarAccess.getRegexAnswerAccess().getGroup(), "rule__RegexAnswer__Group__0");
builder.put(grammarAccess.getNumberAnswerAccess().getGroup(), "rule__NumberAnswer__Group__0");
builder.put(grammarAccess.getNumberAnswerAccess().getGroup_1(), "rule__NumberAnswer__Group_1__0");
builder.put(grammarAccess.getEDoubleObjectAccess().getGroup(), "rule__EDoubleObject__Group__0");
builder.put(grammarAccess.getEDoubleObjectAccess().getGroup_1(), "rule__EDoubleObject__Group_1__0");
builder.put(grammarAccess.getBooleanAnswerAccess().getGroup(), "rule__BooleanAnswer__Group__0");
builder.put(grammarAccess.getSingleBoxOptionAccess().getGroup(), "rule__SingleBoxOption__Group__0");
builder.put(grammarAccess.getSingleListOptionAccess().getGroup(), "rule__SingleListOption__Group__0");
builder.put(grammarAccess.getManyOptionAccess().getGroup(), "rule__ManyOption__Group__0");
builder.put(grammarAccess.getXmlAccess().getGroup(), "rule__Xml__Group__0");
builder.put(grammarAccess.getXmlContentsAccess().getGroup(), "rule__XmlContents__Group__0");
builder.put(grammarAccess.getXmlPIAnswerElementAccess().getGroup(), "rule__XmlPIAnswerElement__Group__0");
builder.put(grammarAccess.getXmlTagElementAccess().getGroup(), "rule__XmlTagElement__Group__0");
builder.put(grammarAccess.getXmlTagElementAccess().getGroup_1_1(), "rule__XmlTagElement__Group_1_1__0");
builder.put(grammarAccess.getXmlTagElementAccess().getGroup_1_1_2(), "rule__XmlTagElement__Group_1_1_2__0");
builder.put(grammarAccess.getXmlTagAccess().getGroup(), "rule__XmlTag__Group__0");
builder.put(grammarAccess.getXmlAttributeAccess().getGroup(), "rule__XmlAttribute__Group__0");
builder.put(grammarAccess.getQuizAccess().getNameAssignment_2_0_0(), "rule__Quiz__NameAssignment_2_0_0");
builder.put(grammarAccess.getQuizAccess().getTitleAssignment_2_0_1(), "rule__Quiz__TitleAssignment_2_0_1");
builder.put(grammarAccess.getQuizAccess().getPartsAssignment_2_0_2(), "rule__Quiz__PartsAssignment_2_0_2");
builder.put(grammarAccess.getQuizAccess().getPartsAssignment_2_1(), "rule__Quiz__PartsAssignment_2_1");
builder.put(grammarAccess.getQuizPartAccess().getNameAssignment_1(), "rule__QuizPart__NameAssignment_1");
builder.put(grammarAccess.getQuizPartAccess().getTitleAssignment_2(), "rule__QuizPart__TitleAssignment_2");
builder.put(grammarAccess.getQuizPartAccess().getQuestionsAssignment_3(), "rule__QuizPart__QuestionsAssignment_3");
builder.put(grammarAccess.getQuizPartRefAccess().getPartRefAssignment_2(), "rule__QuizPartRef__PartRefAssignment_2");
builder.put(grammarAccess.getAnonymousQuizPartAccess().getQuestionsAssignment_1(), "rule__AnonymousQuizPart__QuestionsAssignment_1");
builder.put(grammarAccess.getQARefAccess().getQaRefAssignment_1(), "rule__QARef__QaRefAssignment_1");
builder.put(grammarAccess.getQAAccess().getNameAssignment_0(), "rule__QA__NameAssignment_0");
builder.put(grammarAccess.getQAAccess().getQAssignment_1(), "rule__QA__QAssignment_1");
builder.put(grammarAccess.getQAAccess().getAAssignment_2(), "rule__QA__AAssignment_2");
builder.put(grammarAccess.getStringQuestionAccess().getQuestionAssignment(), "rule__StringQuestion__QuestionAssignment");
builder.put(grammarAccess.getXmlQuestionAccess().getXmlAssignment(), "rule__XmlQuestion__XmlAssignment");
builder.put(grammarAccess.getStringAnswerAccess().getValueAssignment_0(), "rule__StringAnswer__ValueAssignment_0");
builder.put(grammarAccess.getStringAnswerAccess().getIgnoreCaseAssignment_1(), "rule__StringAnswer__IgnoreCaseAssignment_1");
builder.put(grammarAccess.getRegexAnswerAccess().getRegexpAssignment_0(), "rule__RegexAnswer__RegexpAssignment_0");
builder.put(grammarAccess.getRegexAnswerAccess().getValueAssignment_1(), "rule__RegexAnswer__ValueAssignment_1");
builder.put(grammarAccess.getRegexAnswerAccess().getIgnoreCaseAssignment_3(), "rule__RegexAnswer__IgnoreCaseAssignment_3");
builder.put(grammarAccess.getNumberAnswerAccess().getValueAssignment_0(), "rule__NumberAnswer__ValueAssignment_0");
builder.put(grammarAccess.getNumberAnswerAccess().getErrorMarginAssignment_1_1(), "rule__NumberAnswer__ErrorMarginAssignment_1_1");
builder.put(grammarAccess.getBooleanAnswerAccess().getValueAssignment_1_0(), "rule__BooleanAnswer__ValueAssignment_1_0");
builder.put(grammarAccess.getXmlAnswerAccess().getXmlAssignment(), "rule__XmlAnswer__XmlAssignment");
builder.put(grammarAccess.getSingleBoxOptionsAnswerAccess().getOptionsAssignment(), "rule__SingleBoxOptionsAnswer__OptionsAssignment");
builder.put(grammarAccess.getSingleBoxOptionAccess().getCorrectAssignment_1(), "rule__SingleBoxOption__CorrectAssignment_1");
builder.put(grammarAccess.getSingleBoxOptionAccess().getOptionAssignment_3(), "rule__SingleBoxOption__OptionAssignment_3");
builder.put(grammarAccess.getSingleListOptionsAnswerAccess().getOptionsAssignment(), "rule__SingleListOptionsAnswer__OptionsAssignment");
builder.put(grammarAccess.getSingleListOptionAccess().getCorrectAssignment_0_1(), "rule__SingleListOption__CorrectAssignment_0_1");
builder.put(grammarAccess.getSingleListOptionAccess().getOptionAssignment_1(), "rule__SingleListOption__OptionAssignment_1");
builder.put(grammarAccess.getManyOptionsAnswerAccess().getOptionsAssignment(), "rule__ManyOptionsAnswer__OptionsAssignment");
builder.put(grammarAccess.getManyOptionAccess().getCorrectAssignment_1(), "rule__ManyOption__CorrectAssignment_1");
builder.put(grammarAccess.getManyOptionAccess().getOptionAssignment_3(), "rule__ManyOption__OptionAssignment_3");
builder.put(grammarAccess.getXmlAccess().getElementAssignment_1(), "rule__Xml__ElementAssignment_1");
builder.put(grammarAccess.getXmlContentsAccess().getElementAssignment_0(), "rule__XmlContents__ElementAssignment_0");
builder.put(grammarAccess.getXmlContentsAccess().getPostAssignment_1(), "rule__XmlContents__PostAssignment_1");
builder.put(grammarAccess.getXmlPIAnswerElementAccess().getAnswerAssignment_1(), "rule__XmlPIAnswerElement__AnswerAssignment_1");
builder.put(grammarAccess.getXmlTagElementAccess().getStartTagAssignment_0(), "rule__XmlTagElement__StartTagAssignment_0");
builder.put(grammarAccess.getXmlTagElementAccess().getPreAssignment_1_1_0(), "rule__XmlTagElement__PreAssignment_1_1_0");
builder.put(grammarAccess.getXmlTagElementAccess().getContentsAssignment_1_1_1(), "rule__XmlTagElement__ContentsAssignment_1_1_1");
builder.put(grammarAccess.getXmlTagElementAccess().getEndTagAssignment_1_1_2_1(), "rule__XmlTagElement__EndTagAssignment_1_1_2_1");
builder.put(grammarAccess.getXmlTagAccess().getNameAssignment_0(), "rule__XmlTag__NameAssignment_0");
builder.put(grammarAccess.getXmlTagAccess().getAttributesAssignment_1(), "rule__XmlTag__AttributesAssignment_1");
builder.put(grammarAccess.getXmlAttributeAccess().getNameAssignment_0(), "rule__XmlAttribute__NameAssignment_0");
builder.put(grammarAccess.getXmlAttributeAccess().getValueAssignment_2(), "rule__XmlAttribute__ValueAssignment_2");
}
}
@Inject
private NameMappings nameMappings;
@Inject
private QuizDSLGrammarAccess grammarAccess;
@Override
protected InternalQuizDSLParser createParser() {
InternalQuizDSLParser result = new InternalQuizDSLParser(null);
result.setGrammarAccess(grammarAccess);
return result;
}
@Override
protected String getRuleName(AbstractElement element) {
return nameMappings.getRuleName(element);
}
@Override
protected String[] getInitialHiddenTokens() {
return new String[] { "RULE_WS", "RULE_ML_COMMENT", "RULE_SL_COMMENT" };
}
public QuizDSLGrammarAccess getGrammarAccess() {
return this.grammarAccess;
}
public void setGrammarAccess(QuizDSLGrammarAccess grammarAccess) {
this.grammarAccess = grammarAccess;
}
public NameMappings getNameMappings() {
return nameMappings;
}
public void setNameMappings(NameMappings nameMappings) {
this.nameMappings = nameMappings;
}
}
'('=24
')'=25
'+-'=23
'-'=16
'.'=20
'/'=18
'<<'=28
'='=31
'>>'=29
'?'=30
'['=26
']'=27
'false'=15
'no'=14
'part'=21
'quiz'=19
'ref'=22
'true'=13
'v'=33
'x'=17
'yes'=12
'~'=32
RULE_ANY_OTHER=11
RULE_ID=4
RULE_INT=5
RULE_ML_COMMENT=8
RULE_SL_COMMENT=9
RULE_STRING=6
RULE_WS=10
RULE_XML_TEXT=7
T__12=12
T__13=13
T__14=14
T__15=15
T__16=16
T__17=17
T__18=18
T__19=19
T__20=20
T__21=21
T__22=22
T__23=23
T__24=24
T__25=25
T__26=26
T__27=27
T__28=28
T__29=29
T__30=30
T__31=31
T__32=32
T__33=33
/*
* generated by Xtext 2.27.0
*/
package no.hal.quiz.xtext.ide;
/**
* Use this class to register ide components.
*/
public class QuizDSLIdeModule extends AbstractQuizDSLIdeModule {
}
/*
* generated by Xtext 2.27.0
*/
package no.hal.quiz.xtext.ide;
import com.google.inject.Guice;
import com.google.inject.Injector;
import no.hal.quiz.xtext.QuizDSLRuntimeModule;
import no.hal.quiz.xtext.QuizDSLStandaloneSetup;
import org.eclipse.xtext.util.Modules2;
/**
* Initialization support for running Xtext languages as language servers.
*/
public class QuizDSLIdeSetup extends QuizDSLStandaloneSetup {
@Override
public Injector createInjector() {
return Guice.createInjector(Modules2.mixin(new QuizDSLRuntimeModule(), new QuizDSLIdeModule()));
}
}
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="test-bin" path="src">
<attributes>
<attribute name="test" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="test-bin" path="src-gen">
<attributes>
<attribute name="test" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="test-bin" path="xtend-gen">
<attributes>
<attribute name="test" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/5">
<attributes>
<attribute name="test" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="output" path="bin"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>no.hal.quiz.xtext.tests</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.ManifestBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.SchemaBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.pde.PluginNature</nature>
</natures>
</projectDescription>
Manifest-Version: 1.0
Automatic-Module-Name: no.hal.quiz.xtext.tests
Bundle-ManifestVersion: 2
Bundle-Name: no.hal.quiz.xtext.tests
Bundle-Vendor: My Company
Bundle-Version: 1.0.0.qualifier
Bundle-SymbolicName: no.hal.quiz.xtext.tests; singleton:=true
Bundle-ActivationPolicy: lazy
Require-Bundle: no.hal.quiz.xtext,
no.hal.quiz.model,
org.junit.jupiter.api;bundle-version="[5.1.0,6.0.0)",
org.eclipse.xtext.testing,
org.eclipse.xtext.xbase.testing,
org.eclipse.xtext.xbase.lib;bundle-version="2.14.0"
Bundle-RequiredExecutionEnvironment: JavaSE-11
Export-Package: no.hal.quiz.xtext.tests;x-internal=true
source.. = src/,\
src-gen/,\
xtend-gen/
bin.includes = .,\
META-INF/
bin.excludes = **/*.xtend
/*
* generated by Xtext 2.27.0
*/
package no.hal.quiz.xtext.tests;
import com.google.inject.Guice;
import com.google.inject.Injector;
import no.hal.quiz.xtext.QuizDSLRuntimeModule;
import no.hal.quiz.xtext.QuizDSLStandaloneSetup;
import org.eclipse.xtext.testing.GlobalRegistries;
import org.eclipse.xtext.testing.GlobalRegistries.GlobalStateMemento;
import org.eclipse.xtext.testing.IInjectorProvider;
import org.eclipse.xtext.testing.IRegistryConfigurator;
public class QuizDSLInjectorProvider implements IInjectorProvider, IRegistryConfigurator {
protected GlobalStateMemento stateBeforeInjectorCreation;
protected GlobalStateMemento stateAfterInjectorCreation;
protected Injector injector;
static {
GlobalRegistries.initializeDefaults();
}
@Override
public Injector getInjector() {
if (injector == null) {
this.injector = internalCreateInjector();
stateAfterInjectorCreation = GlobalRegistries.makeCopyOfGlobalState();
}
return injector;
}
protected Injector internalCreateInjector() {
return new QuizDSLStandaloneSetup() {
@Override
public Injector createInjector() {
return Guice.createInjector(createRuntimeModule());
}
}.createInjectorAndDoEMFRegistration();
}
protected QuizDSLRuntimeModule createRuntimeModule() {
// make it work also with Maven/Tycho and OSGI
// see https://bugs.eclipse.org/bugs/show_bug.cgi?id=493672
return new QuizDSLRuntimeModule() {
@Override
public ClassLoader bindClassLoaderToInstance() {
return QuizDSLInjectorProvider.class
.getClassLoader();
}
};
}
@Override
public void restoreRegistry() {
stateBeforeInjectorCreation.restoreGlobalState();
stateBeforeInjectorCreation = null;
}
@Override
public void setupRegistry() {
stateBeforeInjectorCreation = GlobalRegistries.makeCopyOfGlobalState();
if (injector == null) {
getInjector();
}
stateAfterInjectorCreation.restoreGlobalState();
}
}
/*
* generated by Xtext 2.27.0
*/
package no.hal.quiz.xtext.tests
import com.google.inject.Inject
import no.hal.quiz.Quiz
import org.eclipse.xtext.testing.InjectWith
import org.eclipse.xtext.testing.extensions.InjectionExtension
import org.eclipse.xtext.testing.util.ParseHelper
import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.^extension.ExtendWith
@ExtendWith(InjectionExtension)
@InjectWith(QuizDSLInjectorProvider)
class QuizDSLParsingTest {
@Inject
ParseHelper<Quiz> parseHelper
@Test
def void loadModel() {
val result = parseHelper.parse('''
Hello Xtext!
''')
Assertions.assertNotNull(result)
val errors = result.eResource.errors
Assertions.assertTrue(errors.isEmpty, '''Unexpected errors: «errors.join(", ")»''')
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment