package com.sap.furcas.ide.editor.contentassist.parsinghandler; import java.io.IOException; import java.io.InputStream; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; import com.sap.furcas.ide.editor.contentassist.CtsContentAssistParsingHandler; import com.sap.furcas.ide.editor.contentassist.TestCtsContentAssistParsingHandler; import com.sap.furcas.ide.editor.contentassist.modeladapter.StubModelAdapter; import com.sap.furcas.metamodel.FURCAS.TCS.ConcreteSyntax; import com.sap.furcas.parser.tcs.TCSParserFactory; import com.sap.furcas.runtime.parser.IModelAdapter; import com.sap.furcas.runtime.parser.ParserFacade; import com.sap.furcas.runtime.parser.exceptions.InvalidParserImplementationException; import com.sap.furcas.runtime.parser.exceptions.UnknownProductionRuleException; import com.sap.furcas.runtime.parser.impl.DelegationParsingObserver; import com.sap.furcas.runtime.parser.testbase.GeneratedParserBasedTest; import com.sap.furcas.runtime.parser.textblocks.TextBlocksAwareModelAdapter; import com.sap.furcas.runtime.tcs.TcsUtil; public abstract class CtsContentAssistParsingHandlerTestBase extends GeneratedParserBasedTest { protected static CtsContentAssistParsingHandler observer; protected void observeFixture(String path) throws InvalidParserImplementationException, IOException, UnknownProductionRuleException { TCSParserFactory factory = new TCSParserFactory(); ParserFacade facade = new ParserFacade(factory.getParserClass(), factory.getLexerClass(), factory.getLanguageId()); InputStream in = TestCtsContentAssistParsingHandler.class.getResourceAsStream(path + ".dsl"); IModelAdapter modelHandler = new TextBlocksAwareModelAdapter(new StubModelAdapter()); ResourceSet resourceSet = new ResourceSetImpl(); ConcreteSyntax syntax = (ConcreteSyntax) resourceSet.getEObject(URI.createURI(factory.getSyntaxUUID()), /*load*/true); // use delegator to monitor exceptions DelegationParsingObserver delegator = new DelegationParsingObserver(); observer = new CtsContentAssistParsingHandler(resourceSet, TcsUtil.createClassTemplateMap(syntax), TcsUtil.createOperatorTemplateMap(syntax)); delegator.addParsingObserver(observer); facade.parseProductionRule(in, modelHandler, null, null, delegator); } }