package com.sap.furcas.runtime.parser.incremental.testbase; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.fail; import java.io.IOException; import java.io.InputStream; import java.util.Set; import org.antlr.runtime.Lexer; import org.eclipse.emf.common.util.URI; 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.parser.tcs.TCSParserFactory; import com.sap.furcas.runtime.common.exceptions.ParserInstantiationException; import com.sap.furcas.runtime.parser.ParserFactory; import com.sap.furcas.runtime.parser.impl.ObservableInjectingParser; import com.sap.furcas.runtime.parser.testbase.MockPartitionAssignmentHandler; import com.sap.furcas.test.testutils.ResourceTestHelper; import com.sap.ide.cts.parser.incremental.IncrementalParserFacade; public class TcsTestHelper { public static String getStreamContents(InputStream in) { assertNotNull(in); try { StringBuffer out = new StringBuffer(); byte[] b = new byte[4096]; for (int n; (n = in.read(b)) != -1;) { out.append(new String(b, 0, n)); } return out.toString(); } catch (IOException e) { e.printStackTrace(); fail("error reading fixture"); return null; } } public static IncrementalParserFacade createTCSIncrementalParserFacade() throws ParserInstantiationException { ResourceSet resourceSet = ResourceTestHelper.createResourceSet(); Resource transientParsingResource = ResourceTestHelper.createTransientResource(resourceSet); ECrossReferenceAdapter crossRefAdapter = new ECrossReferenceAdapter(); resourceSet.eAdapters().add(crossRefAdapter); crossRefAdapter.setTarget(resourceSet); ParserFactory<? extends ObservableInjectingParser, ? extends Lexer> parserFactory = new TCSParserFactory() { /** * We must be able to reference the metamodels to which the different TCS * languages that we parse refer to. In this case this is TCS itself. */ @Override public Set<URI> getAdditionalQueryScope() { return this.getMetamodelURIs(); } }; return new IncrementalParserFacade(parserFactory, resourceSet, new MockPartitionAssignmentHandler(transientParsingResource)); } }