提交 d4ccafe5 编写于 作者: D dsyer

Use Spring test features in SpringTest

上级 06621d70
......@@ -38,6 +38,11 @@
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
......
......@@ -13,27 +13,35 @@
package org.activiti.test.cfg.spring;
import org.activiti.DbProcessEngineBuilder;
import org.activiti.ProcessEngine;
import org.activiti.ProcessEngines;
import org.springframework.beans.factory.FactoryBean;
/**
* @author Dave Syer
*/
public class ProcessEngineFactoryBean implements FactoryBean {
public Object getObject() throws Exception {
ProcessEngines.init();
return ProcessEngines.getDefaultProcessEngine();
}
private String configurationResource = "activiti.properties";
public void setConfigurationResource(String configurationResource) {
this.configurationResource = configurationResource;
}
public Object getObject() throws Exception {
// ProcessEngines is not very friendly for configuration
// ProcessEngines.init();
// return ProcessEngines.getDefaultProcessEngine();
return new DbProcessEngineBuilder().configureFromPropertiesResource(
configurationResource).buildProcessEngine();
}
public Class<?> getObjectType() {
return ProcessEngine.class;
}
public Class<?> getObjectType() {
return ProcessEngine.class;
}
public boolean isSingleton() {
return true;
}
public boolean isSingleton() {
return true;
}
}
......@@ -12,103 +12,53 @@
*/
package org.activiti.test.cfg.spring;
import org.activiti.Deployment;
import org.activiti.ProcessEngine;
import org.activiti.ProcessService;
import org.activiti.impl.util.LogUtil;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.util.ClassUtils;
/**
* @author Tom Baeyens
* @author Dave Syer
*/
@ContextConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
public class SpringTest {
static {
LogUtil.readJavaUtilLoggingConfigFromClasspath();
}
@Autowired
private ProcessEngine processEngine;
@Test
public void testSpringApi() {
@Autowired
private UserBean userBean;
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("org/activiti/test/cfg/spring/applicationContext.xml");
UserBean userBean = (UserBean) applicationContext.getBean("userBean");
userBean.doTransactional();
applicationContext.close();
static {
LogUtil.readJavaUtilLoggingConfigFromClasspath();
}
}
@Test
public void testSpringApi() {
userBean.doTransactional();
}
// Temp test to try out some Spring stuff
@Test
public void testSaveDeployment() {
// ApplicationContext applicationContext = new
// ClassPathXmlApplicationContext("org/activiti/test/cfg/spring/applicationContext.xml");
// PlatformTransactionManager ptm = (PlatformTransactionManager)
// applicationContext.getBean("transactionManager");
// final EntityManagerFactory emf = (EntityManagerFactory)
// applicationContext.getBean("entityManagerFactory");
// TransactionTemplate transactionTemplate = new TransactionTemplate(ptm);
//
// // See logging: transaction is committed: '[DEBUG]: Committing JPA
// transaction on EntityManager ...'
// final Long dbId = (Long) transactionTemplate.execute(new
// TransactionCallback() {
//
// public Object doInTransaction(TransactionStatus transactionStatus) {
//
// // IMPORTANT!!!
// // cannot use EntityManager em = emf.createEntityManager();
// //
// // The JPATransactionManager will create a new entityManager and bind it
// to the thread
// // When you create an entityManager yourself, it will NOT participate in
// the
// // current transaction and the test will fail because the database will
// remain empty.
//
// EntityManager em =
// EntityManagerFactoryUtils.getTransactionalEntityManager(emf);
//
// DeploymentImpl deployment = new DeploymentImpl();
// deployment.setName("TEST_DEPLOYMENT");
// assertEquals(0L, deployment.getDbid());
//
// em.persist(deployment);
// assertTrue(deployment.getDbid() != 0L);
//
// return deployment.getDbid();
// }
// });
//
// transactionTemplate.execute(new TransactionCallback() {
//
// public Object doInTransaction(TransactionStatus transactionStatus) {
//
// EntityManager em =
// EntityManagerFactoryUtils.getTransactionalEntityManager(emf);
// DeploymentImpl deploymentFromDb = em.find(DeploymentImpl.class, dbId);
//
// assertEquals("TEST_DEPLOYMENT", deploymentFromDb.getName());
//
// return null;
// }
// });
//
// }
}
@Test
public void testSaveDeployment() {
String resource = ClassUtils.addResourcePathToPackagePath(getClass(),
"testProcess.bpmn20.xml");
ProcessService processService = processEngine.getProcessService();
Deployment deployment = processService.createDeployment()
.name(resource).addClasspathResource(resource).deploy();
if (deployment != null) {
processService.deleteDeploymentCascade(deployment.getId());
}
}
// TODO
// @Test public void testActivitiApi() {
// SpringProcessManagerFactory springProcessSessionFactory =
// (SpringProcessManagerFactory) ProcessConfiguration.create()
// .configureResource("org/activiti/test/cfg/spring/activiti.properties")
// .buildProcessSessionFactory();
//
// AbstractApplicationContext applicationContext =
// (AbstractApplicationContext)
// springProcessSessionFactory.getApplicationContext();
//
// UserBean userBean = (UserBean) applicationContext.getBean("userBean");
//
// userBean.doTransactional();
//
// applicationContext.close();
// }
}
<?xml version="1.0" encoding="UTF-8"?>
<definitions id="taskAssigneeExample"
xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
typeLanguage="http://www.w3.org/2001/XMLSchema"
expressionLanguage="http://www.w3.org/1999/XPath"
targetNamespace="http://www.activiti.org/bpmn2.0">
<process id='taskAssigneeProcess' name="Task Assignee example">
<startEvent id='theStart' />
<sequenceFlow id='flow1' sourceRef='theStart' targetRef='theTask' />
<userTask id='theTask' name='Schedule meeting' >
<documentation>
Schedule an engineering meeting for next week with the new hire.
</documentation>
<humanPerformer>
<resourceAssignmentExpression>
<formalExpression>kermit</formalExpression>
</resourceAssignmentExpression>
</humanPerformer>
</userTask>
<sequenceFlow id='flow2' sourceRef='theTask' targetRef='theEnd' />
<endEvent id='theEnd' />
</process>
</definitions>
......@@ -53,6 +53,12 @@
<version>1.7.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>2.5.6</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册