package org.camunda.bpm.extension.osgi.itest.el; import static org.junit.Assert.fail; import static org.ops4j.pax.exam.CoreOptions.mavenBundle; import static org.ops4j.pax.exam.CoreOptions.options; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.util.Hashtable; import javax.sql.DataSource; import org.camunda.bpm.engine.ProcessEngine; import org.camunda.bpm.engine.impl.cfg.StandaloneProcessEngineConfiguration; import org.camunda.bpm.engine.repository.DeploymentBuilder; import org.camunda.bpm.extension.osgi.el.OSGiExpressionManager; import org.camunda.bpm.extension.osgi.engine.ProcessEngineFactory; import org.camunda.bpm.extension.osgi.itest.OSGiTestEnvironment; import org.h2.jdbcx.JdbcDataSource; import org.junit.After; import org.junit.Before; import org.ops4j.pax.exam.Configuration; import org.ops4j.pax.exam.Option; import org.ops4j.pax.exam.OptionUtils; public abstract class AbstractOSGiELResolverIntegrationTest extends OSGiTestEnvironment { protected ProcessEngine processEngine; public AbstractOSGiELResolverIntegrationTest() { super(); } @Override @Configuration public Option[] createConfiguration() { Option[] beanUtils = options( mavenBundle().groupId("commons-beanutils") .artifactId("commons-beanutils").version("1.9.1"), mavenBundle().groupId("commons-collections") .artifactId("commons-collections").version("3.2.2")); return OptionUtils.combine(beanUtils, super.createConfiguration()); } @Before public void setUpAbstractDeploymentListenerTest() { createProcessEngine(); deployProcessDefinition(); } @After public void tearDownAbstractDeploymentListenerTest() { processEngine.close(); } private void createProcessEngine() { StandaloneProcessEngineConfiguration configuration = new StandaloneProcessEngineConfiguration(); configuration.setDatabaseSchemaUpdate("create-drop") .setDataSource(createDatasource()) .setJobExecutorActivate(false); configuration.setExpressionManager(new OSGiExpressionManager()); ProcessEngineFactory processEngineFactory = new ProcessEngineFactory(); processEngineFactory.setProcessEngineConfiguration(configuration); processEngineFactory .setBundle(getBundle("org.camunda.bpm.extension.osgi")); try { processEngineFactory.init(); processEngine = processEngineFactory.getObject(); ctx.registerService(ProcessEngine.class.getName(), processEngine, new Hashtable<String, String>()); } catch (Exception e) { fail(e.toString()); } } private void deployProcessDefinition() { File processDef = getProcessDefinition(); DeploymentBuilder builder = processEngine.getRepositoryService() .createDeployment(); builder.name(getClass().getName()); try { builder.addInputStream(processDef.getName(), new FileInputStream(processDef)).deploy(); } catch (FileNotFoundException e) { throw new RuntimeException(e); } } protected abstract File getProcessDefinition(); }