package com.sap.ide.cts.parser.incremental; import java.util.Arrays; import ngpm.NgpmPackage; import org.junit.BeforeClass; import textblocks.AbstractToken; import textblocks.LexedToken; import textblocks.TextBlock; import textblocks.VersionEnum; import com.sap.mi.textual.moin.standalone.StandaloneConnectionFactoryFacade; import com.sap.mi.textual.parsing.textblocks.TestTextBlocksModelElementFactory; import com.sap.mi.textual.parsing.textblocks.TestTextBlocksModelElementMoinFactory; import com.sap.tc.moin.repository.Connection; import com.sap.tc.moin.repository.Moin; /** * Base class for TextBlock related test cases. Sets up a common fixture model * and makes all elements available through protected members. * * @author D052602 * */ public class NGPMTextBlockTest { protected static TestTextBlocksModelElementFactory modelFactory; protected static Connection connection; private static final String[] MMJars = new String[]{"mmbuild/ngpm.zip", "mmbuild/tcs.zip"}; private static boolean warningDone; /** * @param content * @return */ protected LexedToken createToken(String content) { LexedToken contentToken = modelFactory.createLexedToken(); contentToken.setValue(content); contentToken.setLength(content.length()); contentToken.setEndColumn(content.length()); contentToken.setType(0); contentToken.setVersion(VersionEnum.REFERENCE); return contentToken; } public static Connection getTestConnection(String[] jarpaths) { if (connection == null || !connection.isAlive()) { if (! warningDone) { System.out.println("Getting standalone MOIN connection using jarpath: " + Arrays.toString(jarpaths)); System.out.println("NullPointer or ClassNotFound or JMIExeptions in later following code may be due to outdated jar file."); } warningDone = true; //"C:\\japro\\moin_dev\\local\\moin.imoin\\CoreDev_stream\\src\\SCs\\sap.com\\TCSMeta\\DCs\\sap.com\\tcsmeta\\_comp\\gen\\default\\public\\def_assmbl\\lib\\moin\\demo.sap.com~tcsmeta~def_assmbl.zip"; // StandaloneArgumentsBean bean = new StandaloneArgumentsBean(); //// path to jar file as created by build // bean.setMetamodelJars(new String[]{"C:\\japro\\moin_dev\\local\\moin.imoin\\CoreDev_stream\\src\\SCs\\sap.com\\TCSMeta\\DCs\\sap.com\\tcsmeta\\_comp\\gen\\default\\public\\def_assmbl\\lib\\moin\\demo.sap.com~tcsmeta~def_assmbl.zip"}); //// path to eclipse wrapper project // bean.setSourcePath( "C:\\japro\\moin_dev\\local\\moin.test\\CoreDev_stream\\src\\_com.sap.demo.tcsmeta.mm.eclips2e"); Connection co = StandaloneConnectionFactoryFacade.getMetaModelConnection(jarpaths); NgpmPackage pack = co.getPackage(NgpmPackage.PACKAGE_DESCRIPTOR); if (pack == null) { throw new IllegalStateException("Connection could not resolve NGPM root package, check paths : " + Arrays.toString(jarpaths)); } connection = co; } return connection; } public static Moin getBuildMoin() { String[] jarpaths = MMJars; return StandaloneConnectionFactoryFacade.getMoin(jarpaths); } @BeforeClass public static void setModelFactory() { connection = getTestConnection(MMJars); modelFactory = new TestTextBlocksModelElementMoinFactory(connection); } public static TextBlock initialiseTextBlocksWithContentToken(AbstractToken contentToken) { TextBlock rootBlock; rootBlock = modelFactory.createTextBlock(); // ((Partitionable) rootObject).get___Partition()); // rootBlock.getCorrespondingModelElements().add((RefObject) rootObject); rootBlock.getTokens().add(modelFactory.createBostoken()); AbstractToken eosToken =modelFactory.createEostoken(); if (contentToken != null) { rootBlock.getTokens().add(contentToken); rootBlock.setLength(contentToken.getLength()); rootBlock.setComplete(true); rootBlock.setEndColumn(contentToken.getLength()); rootBlock.setCachedString(contentToken.getValue()); eosToken.setOffset(contentToken.getLength()); } rootBlock.getTokens().add( eosToken); rootBlock.setVersion(VersionEnum.REFERENCE); //TODO: make this paramterizable: either assign to same or separate partiotion // ((Partitionable)rootObject).get___Partition().assignElement(rootBlock); return rootBlock; } }