package com.sap.furcas.ide.editor.contentassist.processor;
import java.io.File;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.util.ECrossReferenceAdapter;
import com.sap.furcas.ide.editor.test.utils.ClassLookupImpl;
import com.sap.furcas.ide.editor.test.utils.StringReplacement;
import com.sap.furcas.parsergenerator.GrammarGenerationException;
import com.sap.furcas.parsergenerator.TCSSyntaxContainerBean;
import com.sap.furcas.runtime.common.exceptions.ParserGeneratorInvocationException;
import com.sap.furcas.runtime.common.exceptions.ParserInstantiationException;
import com.sap.furcas.runtime.common.exceptions.ParserInvokationException;
import com.sap.furcas.runtime.parser.incremental.testbase.GeneratedParserAndFactoryTestConfiguration;
import com.sap.furcas.runtime.parser.testbase.MockPartitionAssignmentHandler;
import com.sap.furcas.test.testutils.ResourceTestHelper;
import com.sap.ide.cts.parser.errorhandling.SemanticParserException;
import com.sap.ide.cts.parser.incremental.IncrementalParserFacade;
public abstract class CtsContentAssistProcessorEditorTestMetamodelTestBase extends CtsContentAssistProcessorTestBase {
private static final File[] METAMODELS = { new File("model/EditorTestMetamodel.ecore") };
private static IncrementalParserFacade incrementalParserFacade;
private static Resource transientParsingResource;
protected static void initMetamodelTestbase(String language) throws GrammarGenerationException,
ParserGeneratorInvocationException, ParserInstantiationException, InstantiationException, IllegalAccessException,
ParserInvokationException {
File tcs = new File("src/com/sap/furcas/ide/editor/contentassist/fixtures/syntax/" + language + ".tcs");
GeneratedParserAndFactoryTestConfiguration testConfig = new GeneratedParserAndFactoryTestConfiguration(
language, tcs, METAMODELS);
ResourceSet resourceSet = testConfig.getSourceConfiguration().getResourceSet();
TCSSyntaxContainerBean syntaxBean = parseSyntax(testConfig);
transientParsingResource = ResourceTestHelper.createTransientResource(resourceSet);
incrementalParserFacade = generateParserAndParserFactoryForLanguage(syntaxBean, testConfig, resourceSet,
new MockPartitionAssignmentHandler(transientParsingResource), new ClassLookupImpl());
ECrossReferenceAdapter crossRefAdapter = new ECrossReferenceAdapter();
resourceSet.eAdapters().add(crossRefAdapter);
crossRefAdapter.setTarget(resourceSet);
}
protected void initProcessorForPrefix(String prefix, StringReplacement postFixtureParseReplacement)
throws ParserInstantiationException, SemanticParserException {
initProcessorForFixture(prefix + "." + incrementalParserFacade.getParserFactory().getLanguageId(),
postFixtureParseReplacement, incrementalParserFacade);
}
protected void initProcessorForPrefix(String prefix) throws ParserInstantiationException, SemanticParserException {
initProcessorForPrefix(prefix, null);
}
}