[jbpm-commits] JBoss JBPM SVN: r4222 - in jbpm4/branches/ainze/modules: spring/src/main/java/org/jbpm/spring/cfg and 3 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Tue Mar 10 15:25:37 EDT 2009
Author: ainze
Date: 2009-03-10 15:25:36 -0400 (Tue, 10 Mar 2009)
New Revision: 4222
Added:
jbpm4/branches/ainze/modules/spring/src/test/resources/org/jbpm/spring/test/hibernate.jbpm.cfg.xml
Removed:
jbpm4/branches/ainze/modules/spring/src/test/java/org/jbpm/spring/test/mgmt/
Modified:
jbpm4/branches/ainze/modules/pvm/src/main/java/org/jbpm/pvm/internal/spring/SpringCommandService.java
jbpm4/branches/ainze/modules/spring/src/main/java/org/jbpm/spring/cfg/SpringConfigurationFactoryBean.java
jbpm4/branches/ainze/modules/spring/src/test/java/org/jbpm/spring/test/activities/ExclusiveTest.java
jbpm4/branches/ainze/modules/spring/src/test/resources/org/jbpm/spring/test/applicationContext.xml
jbpm4/branches/ainze/modules/spring/src/test/resources/org/jbpm/spring/test/jbpm.cfg.xml
Log:
added transactional command service and reworked the sessionFactory
Modified: jbpm4/branches/ainze/modules/pvm/src/main/java/org/jbpm/pvm/internal/spring/SpringCommandService.java
===================================================================
--- jbpm4/branches/ainze/modules/pvm/src/main/java/org/jbpm/pvm/internal/spring/SpringCommandService.java 2009-03-10 19:24:46 UTC (rev 4221)
+++ jbpm4/branches/ainze/modules/pvm/src/main/java/org/jbpm/pvm/internal/spring/SpringCommandService.java 2009-03-10 19:25:36 UTC (rev 4222)
@@ -21,38 +21,46 @@
*/
package org.jbpm.pvm.internal.spring;
-import org.hibernate.Session;
+import org.apache.commons.lang.StringUtils;
import org.jbpm.cmd.Command;
import org.jbpm.cmd.CommandService;
-import org.jbpm.env.Environment;
import org.jbpm.env.EnvironmentFactory;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
import org.springframework.orm.hibernate3.HibernateTransactionManager;
-import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.transaction.support.TransactionTemplate;
-
/**
- * @author Tom Baeyens
+ * CommandService which uses the Spring TransactionTemplate
+ * to wrap any command into a transaction.
+ *
+ * @author Andries Inze
*/
-public class SpringCommandService implements CommandService {
-
- TransactionTemplate transactionTemplate;
- EnvironmentFactory environmentFactory;
-
- public void setEnvironmentFactory(EnvironmentFactory environmentFactory) {
- this.environmentFactory = environmentFactory;
- }
+public class SpringCommandService implements CommandService,
+ ApplicationContextAware {
- public void setTransactionManager(HibernateTransactionManager transactionManager) {
- this.transactionTemplate = new TransactionTemplate(transactionManager);
- }
-
- public <T> T execute(Command<T> command) {
- return (T) transactionTemplate.execute(
- new CommandTransactionCallback(command, environmentFactory)
- );
- }
-
-
+ private TransactionTemplate transactionTemplate;
+ private String configurationBeanName;
+ private ApplicationContext applicationContext;
+ @SuppressWarnings("unchecked")
+ public <T> T execute(Command<T> command) {
+ return (T) transactionTemplate.execute(new CommandTransactionCallback(
+ command, (EnvironmentFactory) applicationContext
+ .getBean(StringUtils.defaultIfEmpty(
+ configurationBeanName, "configuration"))));
+ }
+
+ public void setTransactionManager(
+ HibernateTransactionManager transactionManager) {
+ this.transactionTemplate = new TransactionTemplate(transactionManager);
+ }
+
+ public void setApplicationContext(ApplicationContext applicationContext) {
+ this.applicationContext = applicationContext;
+ }
+
+ public void setConfigurationBeanName(String configurationBeanName) {
+ this.configurationBeanName = configurationBeanName;
+ }
}
Modified: jbpm4/branches/ainze/modules/spring/src/main/java/org/jbpm/spring/cfg/SpringConfigurationFactoryBean.java
===================================================================
--- jbpm4/branches/ainze/modules/spring/src/main/java/org/jbpm/spring/cfg/SpringConfigurationFactoryBean.java 2009-03-10 19:24:46 UTC (rev 4221)
+++ jbpm4/branches/ainze/modules/spring/src/main/java/org/jbpm/spring/cfg/SpringConfigurationFactoryBean.java 2009-03-10 19:25:36 UTC (rev 4222)
@@ -4,6 +4,7 @@
package org.jbpm.spring.cfg;
import org.hibernate.SessionFactory;
+import org.jbpm.cmd.CommandService;
import org.jbpm.pvm.internal.cfg.SpringConfiguration;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.FactoryBean;
@@ -20,13 +21,20 @@
private String jbpmConfigurationLocation;
private SessionFactory sessionFactory;
+ private CommandService commandService;
private ApplicationContext applicationContext;
+ /**
+ * {@inheritDoc}
+ */
public Object getObject() throws Exception {
SpringConfiguration result = new SpringConfiguration(jbpmConfigurationLocation);
result.setApplicationContext(applicationContext);
result.setSessionFactory(sessionFactory);
+ if (commandService != null) {
+ result.set("commandService", commandService);
+ }
return result;
}
@@ -63,4 +71,10 @@
throws BeansException {
this.applicationContext = applicationContext;
}
+
+ public void setCommandService(CommandService commandService) {
+ this.commandService = commandService;
+ }
+
+
}
Modified: jbpm4/branches/ainze/modules/spring/src/test/java/org/jbpm/spring/test/activities/ExclusiveTest.java
===================================================================
--- jbpm4/branches/ainze/modules/spring/src/test/java/org/jbpm/spring/test/activities/ExclusiveTest.java 2009-03-10 19:24:46 UTC (rev 4221)
+++ jbpm4/branches/ainze/modules/spring/src/test/java/org/jbpm/spring/test/activities/ExclusiveTest.java 2009-03-10 19:25:36 UTC (rev 4222)
@@ -26,7 +26,6 @@
import org.jbpm.Execution;
import org.jbpm.spring.test.AbstractTransactionalSpringJbpmTestCase;
-import org.springframework.core.io.ClassPathResource;
/**
@@ -34,8 +33,6 @@
*/
public class ExclusiveTest extends AbstractTransactionalSpringJbpmTestCase {
-
-
@Override
protected String[] getConfigLocations() {
return new String[]{"org/jbpm/spring/test/applicationContext.xml"};
Modified: jbpm4/branches/ainze/modules/spring/src/test/resources/org/jbpm/spring/test/applicationContext.xml
===================================================================
--- jbpm4/branches/ainze/modules/spring/src/test/resources/org/jbpm/spring/test/applicationContext.xml 2009-03-10 19:24:46 UTC (rev 4221)
+++ jbpm4/branches/ainze/modules/spring/src/test/resources/org/jbpm/spring/test/applicationContext.xml 2009-03-10 19:25:36 UTC (rev 4222)
@@ -1,9 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:aop="http://www.springframework.org/schema/aop"
- xmlns:context="http://www.springframework.org/schema/context"
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
@@ -14,91 +12,38 @@
<bean id="configuration" class="org.jbpm.spring.cfg.SpringConfigurationFactoryBean">
<property name="jbpmConfigurationLocation" value="org/jbpm/spring/test/jbpm.cfg.xml" />
<property name="sessionFactory" ref="sessionFactory" />
+ <property name="commandService" ref="commandService" />
</bean>
-
-<!--
- <bean id="configuration" class="org.jbpm.spring.cfg.SpringConfiguration">
- <constructor-arg value="org/jbpm/spring/test/jbpm.cfg.xml" />
- <property name="sessionFactory" ref="sessionFactory" />
- <property name="transactionManager" ref="transactionManager" />
+
+ <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
+ <property name="configLocation" value="classpath:org/jbpm/spring/test/hibernate.jbpm.cfg.xml" />
+ <!-- A best practice should be to keep split the config into multiple files
+ <property name="configLocations" value="hibernate.cfg.xml, hibernate.jbpm.cfg.xml" />
+ -->
</bean>
- -->
- <bean id="sessionFactory"
- class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
- <property name="dataSource" ref="dataSource" />
- <property name="mappingResources">
- <list>
- <value>jbpm.pvm.typedefs.hbm.xml</value>
- <value>jbpm.pvm.wire.hbm.xml</value>
- <value>jbpm.pvm.definition.hbm.xml</value>
- <value>jbpm.pvm.execution.hbm.xml</value>
- <value>jbpm.pvm.variable.hbm.xml</value>
- <value>jbpm.pvm.history.hbm.xml</value>
- <value>jbpm.pvm.job.hbm.xml</value>
- <value>jbpm.jpdl.hbm.xml</value>
- <value>jbpm.task.hbm.xml</value>
- </list>
- </property>
- <property name="hibernateProperties">
- <props>
- <prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>
- <prop key="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</prop>
- <prop key="hibernate.cache.use_second_level_cache">true</prop>
- <prop key="hibernate.hbm2ddl.auto">create-drop</prop>
- <prop key="hibernate.bytecode.use_reflection_optimizer">false</prop>
- </props>
- </property>
- <property name="entityCacheStrategies">
- <props>
- <prop key="org.jbpm.pvm.internal.model.ProcessDefinitionImpl">read-write</prop>
- <prop key="org.jbpm.pvm.internal.model.ActivityImpl">read-write</prop>
- <prop key="org.jbpm.pvm.internal.model.TransitionImpl">read-write</prop>
- <prop key="org.jbpm.pvm.internal.model.EventImpl">read-write</prop>
- <prop key="org.jbpm.pvm.internal.model.ExceptionHandlerImpl">read-write</prop>
- <prop key="org.jbpm.pvm.internal.model.ObjectReference">read-write</prop>
- <prop key="org.jbpm.pvm.internal.model.VariableDefinitionImpl">read-write</prop>
- <prop key="org.jbpm.pvm.internal.model.TimerDefinitionImpl">read-write</prop>
- <prop key="org.jbpm.pvm.internal.wire.descriptor.AbstractDescriptor">read-write</prop>
- </props>
- </property>
- <property name="collectionCacheStrategies">
- <props>
- <prop key="org.jbpm.pvm.internal.model.ProcessDefinitionImpl.exceptionHandlers">read-write</prop>
- <prop key="org.jbpm.pvm.internal.model.ProcessDefinitionImpl.events">read-write</prop>
- <prop key="org.jbpm.pvm.internal.model.ProcessDefinitionImpl.activities">read-write</prop>
- <prop key="org.jbpm.pvm.internal.model.ProcessDefinitionImpl.variableDefinitions">read-write</prop>
- <prop key="org.jbpm.pvm.internal.model.ProcessDefinitionImpl.timerDefinitions">read-write</prop>
- <prop key="org.jbpm.pvm.internal.model.ActivityImpl.exceptionHandlers">read-write</prop>
- <prop key="org.jbpm.pvm.internal.model.ActivityImpl.events">read-write</prop>
- <prop key="org.jbpm.pvm.internal.model.ActivityImpl.activities">read-write</prop>
- <prop key="org.jbpm.pvm.internal.model.ActivityImpl.variableDefinitions">read-write</prop>
- <prop key="org.jbpm.pvm.internal.model.ActivityImpl.timerDefinitions">read-write</prop>
- <prop key="org.jbpm.pvm.internal.model.ActivityImpl.incomingTransitions">read-write</prop>
- <prop key="org.jbpm.pvm.internal.model.ActivityImpl.outgoingTransitions">read-write</prop>
- <prop key="org.jbpm.pvm.internal.model.TransitionImpl.exceptionHandlers">read-write</prop>
- <prop key="org.jbpm.pvm.internal.model.TransitionImpl.events">read-write</prop>
- <prop key="org.jbpm.pvm.internal.model.EventImpl.exceptionHandlers">read-write</prop>
- <prop key="org.jbpm.pvm.internal.model.EventImpl.listenerReferences">read-write</prop>
- <prop key="org.jbpm.pvm.internal.model.ExceptionHandlerImpl.eventListenerReferences">read-write</prop>
- <prop key="org.jbpm.pvm.internal.wire.descriptor.ObjectDescriptor.argDescriptors">read-write</prop>
- <prop key="org.jbpm.pvm.internal.wire.descriptor.ObjectDescriptor.operations">read-write</prop>
- </props>
- </property>
- </bean>
- <bean id="transactionManager"
- class="org.springframework.orm.hibernate3.HibernateTransactionManager">
+ <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
- <bean id="dataSource"
- class="org.springframework.jdbc.datasource.DriverManagerDataSource">
+ <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.hsqldb.jdbcDriver" />
<property name="url" value="jdbc:hsqldb:mem:." />
<property name="username" value="sa" />
<property name="password" value="" />
</bean>
- <bean id="testBean" class="org.jbpm.spring.test.beans.InvokeTestBean" />
+ <!-- We need to get the commandService, since we want a transaction around it. -->
+ <bean id="commandService"
+ class="org.jbpm.pvm.internal.spring.SpringCommandService">
+ <property name="transactionManager" ref="transactionManager" />
+ </bean>
+ <bean id="jobExecutor" class="org.jbpm.pvm.internal.jobexecutor.JobExecutor" init-method="start" destroy-method="stop">
+ <property name="commandExecutor" ref="commandService" />
+ </bean>
+
+ <bean id="testBean" class="org.jbpm.spring.test.beans.InvokeTestBean" />
+
+
</beans>
\ No newline at end of file
Added: jbpm4/branches/ainze/modules/spring/src/test/resources/org/jbpm/spring/test/hibernate.jbpm.cfg.xml
===================================================================
--- jbpm4/branches/ainze/modules/spring/src/test/resources/org/jbpm/spring/test/hibernate.jbpm.cfg.xml (rev 0)
+++ jbpm4/branches/ainze/modules/spring/src/test/resources/org/jbpm/spring/test/hibernate.jbpm.cfg.xml 2009-03-10 19:25:36 UTC (rev 4222)
@@ -0,0 +1,50 @@
+<?xml version='1.0' encoding='utf-8'?>
+
+<!DOCTYPE hibernate-configuration PUBLIC
+ "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
+ "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
+
+<hibernate-configuration>
+ <session-factory>
+ <mapping resource="jbpm.pvm.typedefs.hbm.xml" />
+ <mapping resource="jbpm.pvm.wire.hbm.xml" />
+ <mapping resource="jbpm.pvm.definition.hbm.xml" />
+ <mapping resource="jbpm.pvm.execution.hbm.xml" />
+ <mapping resource="jbpm.pvm.variable.hbm.xml" />
+ <mapping resource="jbpm.pvm.history.hbm.xml" />
+ <mapping resource="jbpm.pvm.job.hbm.xml" />
+ <mapping resource="jbpm.jpdl.hbm.xml" />
+ <mapping resource="jbpm.task.hbm.xml" />
+
+ <class-cache usage="nonstrict-read-write" class="org.jbpm.pvm.internal.model.ProcessDefinitionImpl" />
+ <class-cache usage="nonstrict-read-write" class="org.jbpm.pvm.internal.model.ActivityImpl" />
+ <class-cache usage="nonstrict-read-write" class="org.jbpm.pvm.internal.model.TransitionImpl" />
+ <class-cache usage="nonstrict-read-write" class="org.jbpm.pvm.internal.model.EventImpl" />
+ <class-cache usage="nonstrict-read-write" class="org.jbpm.pvm.internal.model.ExceptionHandlerImpl" />
+ <class-cache usage="nonstrict-read-write" class="org.jbpm.pvm.internal.model.ObjectReference" />
+ <class-cache usage="nonstrict-read-write" class="org.jbpm.pvm.internal.model.VariableDefinitionImpl" />
+ <class-cache usage="nonstrict-read-write" class="org.jbpm.pvm.internal.model.TimerDefinitionImpl" />
+ <class-cache usage="nonstrict-read-write" class="org.jbpm.pvm.internal.wire.descriptor.AbstractDescriptor" />
+
+ <collection-cache usage="nonstrict-read-write" collection="org.jbpm.pvm.internal.model.ProcessDefinitionImpl.exceptionHandlers" />
+ <collection-cache usage="nonstrict-read-write" collection="org.jbpm.pvm.internal.model.ProcessDefinitionImpl.events" />
+ <collection-cache usage="nonstrict-read-write" collection="org.jbpm.pvm.internal.model.ProcessDefinitionImpl.activities" />
+ <collection-cache usage="nonstrict-read-write" collection="org.jbpm.pvm.internal.model.ProcessDefinitionImpl.variableDefinitions" />
+ <collection-cache usage="nonstrict-read-write" collection="org.jbpm.pvm.internal.model.ProcessDefinitionImpl.timerDefinitions" />
+ <collection-cache usage="nonstrict-read-write" collection="org.jbpm.pvm.internal.model.ActivityImpl.exceptionHandlers" />
+ <collection-cache usage="nonstrict-read-write" collection="org.jbpm.pvm.internal.model.ActivityImpl.events" />
+ <collection-cache usage="nonstrict-read-write" collection="org.jbpm.pvm.internal.model.ActivityImpl.activities" />
+ <collection-cache usage="nonstrict-read-write" collection="org.jbpm.pvm.internal.model.ActivityImpl.variableDefinitions" />
+ <collection-cache usage="nonstrict-read-write" collection="org.jbpm.pvm.internal.model.ActivityImpl.timerDefinitions" />
+ <collection-cache usage="nonstrict-read-write" collection="org.jbpm.pvm.internal.model.ActivityImpl.incomingTransitions" />
+ <collection-cache usage="nonstrict-read-write" collection="org.jbpm.pvm.internal.model.ActivityImpl.outgoingTransitions" />
+ <collection-cache usage="nonstrict-read-write" collection="org.jbpm.pvm.internal.model.TransitionImpl.exceptionHandlers" />
+ <collection-cache usage="nonstrict-read-write" collection="org.jbpm.pvm.internal.model.TransitionImpl.events" />
+ <collection-cache usage="nonstrict-read-write" collection="org.jbpm.pvm.internal.model.EventImpl.exceptionHandlers" />
+ <collection-cache usage="nonstrict-read-write" collection="org.jbpm.pvm.internal.model.EventImpl.listenerReferences" />
+ <collection-cache usage="nonstrict-read-write" collection="org.jbpm.pvm.internal.model.ExceptionHandlerImpl.eventListenerReferences" />
+ <collection-cache usage="nonstrict-read-write" collection="org.jbpm.pvm.internal.wire.descriptor.ObjectDescriptor.argDescriptors" />
+ <collection-cache usage="nonstrict-read-write" collection="org.jbpm.pvm.internal.wire.descriptor.ObjectDescriptor.operations" />
+
+ </session-factory>
+</hibernate-configuration>
\ No newline at end of file
Property changes on: jbpm4/branches/ainze/modules/spring/src/test/resources/org/jbpm/spring/test/hibernate.jbpm.cfg.xml
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: jbpm4/branches/ainze/modules/spring/src/test/resources/org/jbpm/spring/test/jbpm.cfg.xml
===================================================================
--- jbpm4/branches/ainze/modules/spring/src/test/resources/org/jbpm/spring/test/jbpm.cfg.xml 2009-03-10 19:24:46 UTC (rev 4221)
+++ jbpm4/branches/ainze/modules/spring/src/test/resources/org/jbpm/spring/test/jbpm.cfg.xml 2009-03-10 19:25:36 UTC (rev 4222)
@@ -36,7 +36,7 @@
<script-language name="juel" factory="com.sun.script.juel.JuelScriptEngineFactory" />
</script-manager>
- <job-executor auto-start="false" />
+ <job-executor auto-start="true" />
<job-test-helper />
<id-generator />
More information about the jbpm-commits
mailing list