[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