[jbpm-commits] JBoss JBPM SVN: r3665 - in jbpm3/trunk/modules: enterprise/scripts and 6 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Sat Jan 17 07:41:08 EST 2009


Author: alex.guizar at jboss.com
Date: 2009-01-17 07:41:08 -0500 (Sat, 17 Jan 2009)
New Revision: 3665

Added:
   jbpm3/trunk/modules/enterprise/src/test/resources/WEB-INF/
   jbpm3/trunk/modules/enterprise/src/test/resources/WEB-INF/jboss-web.xml
Removed:
   jbpm3/trunk/modules/enterprise/src/test/resources/WEB-INF/jboss-web.xml
   jbpm3/trunk/modules/enterprise/src/test/resources/enterprise/
Modified:
   jbpm3/trunk/modules/core/src/main/java/org/jbpm/db/GraphSession.java
   jbpm3/trunk/modules/core/src/main/java/org/jbpm/db/JobSession.java
   jbpm3/trunk/modules/enterprise/scripts/antrun-test-jars.xml
   jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/LocalTimerEntityHome.java
   jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/TimerEntityHome.java
   jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/impl/CommandServiceBean.java
   jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/impl/ExecuteJobCommand.java
   jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/impl/ExecuteJobsCommand.java
   jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/impl/TimerEntityBean.java
   jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/scheduler/ejbtimer/EntitySchedulerService.java
   jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/jta/JtaDbPersistenceTest.java
   jbpm3/trunk/modules/enterprise/src/test/resources/WEB-INF/web.xml
Log:
fix intermittent failure in JtaDbPersistenceTest
generalize enterprise module
remove unnecessary references in web descriptors

Modified: jbpm3/trunk/modules/core/src/main/java/org/jbpm/db/GraphSession.java
===================================================================
--- jbpm3/trunk/modules/core/src/main/java/org/jbpm/db/GraphSession.java	2009-01-16 18:23:36 UTC (rev 3664)
+++ jbpm3/trunk/modules/core/src/main/java/org/jbpm/db/GraphSession.java	2009-01-17 12:41:08 UTC (rev 3665)
@@ -34,7 +34,6 @@
 import org.hibernate.Query;
 import org.hibernate.Session;
 import org.hibernate.criterion.Restrictions;
-import org.hibernate.exception.SQLGrammarException;
 import org.jbpm.JbpmException;
 import org.jbpm.graph.def.Node;
 import org.jbpm.graph.def.ProcessDefinition;

Modified: jbpm3/trunk/modules/core/src/main/java/org/jbpm/db/JobSession.java
===================================================================
--- jbpm3/trunk/modules/core/src/main/java/org/jbpm/db/JobSession.java	2009-01-16 18:23:36 UTC (rev 3664)
+++ jbpm3/trunk/modules/core/src/main/java/org/jbpm/db/JobSession.java	2009-01-17 12:41:08 UTC (rev 3665)
@@ -149,17 +149,21 @@
     }
   }
 
-  public List<Job> loadJobs(long[] jobIds) {
-    int jobCount = jobIds.length;
-    Long[] jobs = new Long[jobCount];
-    for (int i = 0; i < jobCount; i++) {
-      jobs[i] = new Long(jobIds[i]);
-    }
+  public List<Job> loadJobs(long... jobIds) {
     Criteria criteria = session.createCriteria(Job.class)
-      .add(Restrictions.in("id", jobs));
+      .add(Restrictions.in("id", toObjectArray(jobIds)));
     return CollectionUtil.checkList(criteria.list(), Job.class);
   }
 
+  private static Long[] toObjectArray(long[] array) {
+    final int length = array.length;
+    Long[] objects = new Long[length];
+    for (int i = 0; i < length; i++) {
+      objects[i] = array[i];
+    }
+    return objects;
+  }
+
   public Job getJob(long jobId) {
     try {
       return (Job) session.get(Job.class, new Long(jobId));

Modified: jbpm3/trunk/modules/enterprise/scripts/antrun-test-jars.xml
===================================================================
--- jbpm3/trunk/modules/enterprise/scripts/antrun-test-jars.xml	2009-01-16 18:23:36 UTC (rev 3664)
+++ jbpm3/trunk/modules/enterprise/scripts/antrun-test-jars.xml	2009-01-17 12:41:08 UTC (rev 3665)
@@ -21,15 +21,7 @@
     <mkdir dir="${tests.output.dir}/test-libs"/>
     
     <!-- enterprise-test -->
-    <war warfile="${tests.output.dir}/test-libs/enterprise-test.war" webxml="${tests.resources.dir}/enterprise/WEB-INF/web.xml">
-      <classes dir="${tests.output.dir}/classes">
-        <include name="org/jbpm/ejb/RemoteCommandServiceHome.class"/>
-        <include name="org/jbpm/ejb/RemoteCommandService.class"/>
-        <include name="org/jbpm/ejb/TimerEntityHome.class"/>
-        <include name="org/jbpm/ejb/TimerEntity.class"/>
-        <include name="org/jbpm/msg/jms/JmsMessageServiceFactory.class"/>
-        <include name="org/jbpm/scheduler/ejbtimer/EntitySchedulerServiceFactory.class"/>
-      </classes>
+    <war warfile="${tests.output.dir}/test-libs/enterprise-test.war" webxml="${tests.resources.dir}/WEB-INF/web.xml">
       <classes dir="${tests.output.dir}/test-classes">
         <include name="org/jbpm/enterprise/config/AppServerConfigurationsTest.class"/>
         <include name="org/jbpm/enterprise/ejbtimer/EjbSchedulerTest*.class"/>
@@ -41,7 +33,7 @@
         <include name="cactus*.jar"/>
         <include name="junit*.jar"/>
       </lib>
-      <webinf dir="${tests.resources.dir}/enterprise/WEB-INF">
+      <webinf dir="${tests.resources.dir}/WEB-INF">
         <exclude name="web.xml"/>
       </webinf>
     </war>

Modified: jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/LocalTimerEntityHome.java
===================================================================
--- jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/LocalTimerEntityHome.java	2009-01-16 18:23:36 UTC (rev 3664)
+++ jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/LocalTimerEntityHome.java	2009-01-17 12:41:08 UTC (rev 3665)
@@ -8,12 +8,13 @@
 
 public interface LocalTimerEntityHome extends EJBLocalHome {
 
-	public LocalTimerEntity create() throws CreateException;
+  public LocalTimerEntity create() throws CreateException;
 
-	public LocalTimerEntity findByPrimaryKey(Long timerId) throws FinderException;
+  public LocalTimerEntity findByPrimaryKey(Long timerId) throws FinderException;
 
-	public Collection findByNameAndTokenId(String name, Long tokenId)
-			throws FinderException;
+  public Collection<LocalTimerEntity> findByNameAndTokenId(String name, Long tokenId)
+      throws FinderException;
 
-	public Collection findByProcessInstanceId(Long processInstanceId) throws FinderException;
+  public Collection<LocalTimerEntity> findByProcessInstanceId(Long processInstanceId)
+      throws FinderException;
 }

Modified: jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/TimerEntityHome.java
===================================================================
--- jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/TimerEntityHome.java	2009-01-16 18:23:36 UTC (rev 3664)
+++ jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/TimerEntityHome.java	2009-01-17 12:41:08 UTC (rev 3665)
@@ -7,13 +7,14 @@
 import javax.ejb.EJBHome;
 import javax.ejb.FinderException;
 
-public interface TimerEntityHome extends EJBHome
-{
+public interface TimerEntityHome extends EJBHome {
   public TimerEntity create() throws CreateException, RemoteException;
 
   public TimerEntity findByPrimaryKey(Long timerId) throws FinderException, RemoteException;
 
-  public Collection findByNameAndTokenId(String name, Long tokenId) throws FinderException, RemoteException;
+  public Collection<TimerEntity> findByNameAndTokenId(String name, Long tokenId)
+      throws FinderException, RemoteException;
 
-  public Collection findByProcessInstanceId(Long processInstanceId) throws FinderException, RemoteException;
+  public Collection<TimerEntity> findByProcessInstanceId(Long processInstanceId)
+      throws FinderException, RemoteException;
 }

Modified: jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/impl/CommandServiceBean.java
===================================================================
--- jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/impl/CommandServiceBean.java	2009-01-16 18:23:36 UTC (rev 3664)
+++ jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/impl/CommandServiceBean.java	2009-01-17 12:41:08 UTC (rev 3665)
@@ -138,7 +138,7 @@
   {
     try
     {
-      String resource = lookup("java:comp/env/JbpmCfgResource");
+      String resource = lookup(String.class, "java:comp/env/JbpmCfgResource");
       jbpmConfiguration = resource != null ? JbpmConfiguration.getInstance(resource)
           : JbpmConfiguration.getInstance();
     }
@@ -149,12 +149,12 @@
     }
   }
 
-  private static <T> T lookup(String name) throws NamingException
+  private static <T> T lookup(Class<T> type, String name) throws NamingException
   {
     Context initial = new InitialContext();
     try
     {
-      return (T) initial.lookup(name);
+      return type.cast(initial.lookup(name));
     }
     finally
     {

Modified: jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/impl/ExecuteJobCommand.java
===================================================================
--- jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/impl/ExecuteJobCommand.java	2009-01-16 18:23:36 UTC (rev 3664)
+++ jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/impl/ExecuteJobCommand.java	2009-01-17 12:41:08 UTC (rev 3665)
@@ -23,7 +23,6 @@
 
 import java.io.PrintWriter;
 import java.io.StringWriter;
-import java.util.Arrays;
 import java.util.List;
 
 import javax.jms.Destination;
@@ -71,21 +70,20 @@
     }
     lockOwner = Long.toString(jobId);
     if (job.isExclusive()) {
-      List exclusiveJobs = jobSession.findExclusiveJobs(lockOwner, job.getProcessInstance());
+      List<Job> exclusiveJobs = jobSession.findExclusiveJobs(lockOwner, job.getProcessInstance());
       // lock exclusive jobs
-      int jobCount = exclusiveJobs.size();
-      if (jobCount == 0) {
+      if (exclusiveJobs.isEmpty()) {
         // may happen if isolation level is below repeatable read
         log.debug(job + " was locked during attempt to lock other jobs");
         return null;
       }
-      long[] exclusiveJobIds = new long[jobCount];
-      for (int i = 0; i < jobCount; i++) {
-        Job exclusiveJob = (Job) exclusiveJobs.get(i);
+      long[] exclusiveJobIds = new long[exclusiveJobs.size()];
+      int i = 0;
+      for (Job exclusiveJob : exclusiveJobs) {
         exclusiveJob.setLockOwner(lockOwner);
-        exclusiveJobIds[i] = exclusiveJob.getId();
+        exclusiveJobIds[i++] = exclusiveJob.getId();
       }
-      log.debug("locking jobs " + Arrays.toString(exclusiveJobIds));
+      log.debug("locking jobs " + exclusiveJobIds);
       // execute exclusive jobs in separate transaction
       postJobsExecution(jbpmContext, exclusiveJobIds);        
     }

Modified: jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/impl/ExecuteJobsCommand.java
===================================================================
--- jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/impl/ExecuteJobsCommand.java	2009-01-16 18:23:36 UTC (rev 3664)
+++ jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/impl/ExecuteJobsCommand.java	2009-01-17 12:41:08 UTC (rev 3665)
@@ -22,7 +22,6 @@
 package org.jbpm.ejb.impl;
 
 import java.util.Arrays;
-import java.util.Iterator;
 import java.util.List;
 
 import org.apache.commons.logging.Log;
@@ -48,9 +47,8 @@
 
   public Object execute(JbpmContext jbpmContext) throws Exception {
     log.debug("executing jobs " + Arrays.toString(jobIds));
-    List jobs = jbpmContext.getJobSession().loadJobs(jobIds);
-    for (Iterator i = jobs.iterator(); i.hasNext();) {
-      Job job = (Job) i.next();
+    List<Job> jobs = jbpmContext.getJobSession().loadJobs(jobIds);
+    for (Job job : jobs) {
       job.execute(jbpmContext);
     }
     return null;

Modified: jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/impl/TimerEntityBean.java
===================================================================
--- jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/impl/TimerEntityBean.java	2009-01-16 18:23:36 UTC (rev 3664)
+++ jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/ejb/impl/TimerEntityBean.java	2009-01-17 12:41:08 UTC (rev 3665)
@@ -1,7 +1,6 @@
 package org.jbpm.ejb.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 
 import javax.ejb.CreateException;
 import javax.ejb.EJBException;
@@ -22,16 +21,15 @@
 import org.jbpm.job.Timer;
 import org.jbpm.scheduler.ejbtimer.ExecuteTimerCommand;
 import org.jbpm.scheduler.ejbtimer.TimerInfo;
+import org.jbpm.util.CollectionUtil;
 
 /**
  * Entity bean that interacts with the EJB timer service to schedule jBPM {@linkplain Timer timers}.
- * 
  * <h3>Environment</h3>
- * 
  * <p>
- * The environment entries and resources available for customization are summarized in the table below.
+ * The environment entries and resources available for customization are summarized in the table
+ * below.
  * </p>
- * 
  * <table border="1">
  * <tr>
  * <th>Name</th>
@@ -41,7 +39,8 @@
  * <tr>
  * <td><code>ejb/LocalCommandServiceBean</code></td>
  * <td>EJB Reference</td>
- * <td>Link to the local {@linkplain CommandServiceBean session bean} that executes timers on a separate jBPM context.</td>
+ * <td>Link to the local {@linkplain CommandServiceBean session bean} that executes timers on a
+ * separate jBPM context.</td>
  * </tr>
  * </table>
  * 
@@ -49,8 +48,7 @@
  * @author Alejandro Guizar
  * @author Fady Matar
  */
-public abstract class TimerEntityBean implements EntityBean, TimedObject
-{
+public abstract class TimerEntityBean implements EntityBean, TimedObject {
   private EntityContext entityContext;
   private LocalCommandService commandService;
 
@@ -77,49 +75,39 @@
 
   public abstract void setDiscriminator(String discriminator);
 
-  public void ejbActivate()
-  {
-    try
-    {
+  public void ejbActivate() {
+    try {
       Context initial = new InitialContext();
-      LocalCommandServiceHome commandServiceHome = (LocalCommandServiceHome)initial.lookup("java:comp/env/ejb/LocalCommandServiceBean");
+      LocalCommandServiceHome commandServiceHome = (LocalCommandServiceHome) initial.lookup("java:comp/env/ejb/LocalCommandServiceBean");
       commandService = commandServiceHome.create();
     }
-    catch (NamingException e)
-    {
+    catch (NamingException e) {
       throw new EJBException("failed to retrieve command service home", e);
     }
-    catch (CreateException e)
-    {
+    catch (CreateException e) {
       throw new EJBException("command service creation failed", e);
     }
   }
 
-  public void ejbPassivate()
-  {
+  public void ejbPassivate() {
     commandService = null;
   }
 
-  public void ejbRemove()
-  {
+  public void ejbRemove() {
     commandService = null;
   }
 
-  public void ejbLoad()
-  {
+  public void ejbLoad() {
   }
 
-  public void ejbStore()
-  {
+  public void ejbStore() {
   }
 
-  public void setEntityContext(EntityContext entityContext)
-  {
+  public void setEntityContext(EntityContext entityContext) {
     this.entityContext = entityContext;
   }
 
-  public void unsetEntityContext()
-  {
+  public void unsetEntityContext() {
     entityContext = null;
   }
 
@@ -128,49 +116,41 @@
    * 
    * @throws CreateException
    */
-  public Long ejbCreate() throws CreateException
-  {
+  public Long ejbCreate() throws CreateException {
     throw new CreateException("direct creation of timer entities is prohibited");
   }
 
-  public void ejbPostCreate()
-  {
+  public void ejbPostCreate() {
   }
 
-  public void ejbTimeout(javax.ejb.Timer ejbTimer)
-  {
+  public void ejbTimeout(javax.ejb.Timer ejbTimer) {
     log.debug(ejbTimer + " fired");
-    TimerInfo timerInfo = (TimerInfo)ejbTimer.getInfo();
-    Timer timer = (Timer)commandService.execute(new ExecuteTimerCommand(timerInfo.getTimerId()));
+    TimerInfo timerInfo = (TimerInfo) ejbTimer.getInfo();
+    Timer timer = (Timer) commandService.execute(new ExecuteTimerCommand(timerInfo.getTimerId()));
     // if the timer has repeat
-    if (timer.getRepeat() != null)
-    {
+    if (timer.getRepeat() != null) {
       // create a new timer
       log.debug("scheduling timer for repeat on " + timer.getDueDate());
       createTimer(timer);
     }
   }
 
-  public void createTimer(org.jbpm.job.Timer timer)
-  {
+  public void createTimer(org.jbpm.job.Timer timer) {
     TimerService timerService = entityContext.getTimerService();
     javax.ejb.Timer ejbTimer = timerService.createTimer(timer.getDueDate(), new TimerInfo(timer));
     log.debug("created " + ejbTimer);
   }
 
-  public void cancelTimer(org.jbpm.job.Timer timer)
-  {
+  public void cancelTimer(org.jbpm.job.Timer timer) {
     long timerId = timer.getId();
-    Collection timers = entityContext.getTimerService().getTimers();
+    Collection<javax.ejb.Timer> timers = CollectionUtil.checkCollection(entityContext.getTimerService()
+        .getTimers(), javax.ejb.Timer.class);
     log.debug("retrieved " + timers.size() + " ejb timer(s) by id " + timerId);
 
     int count = 0;
-    for (Iterator i = timers.iterator(); i.hasNext();)
-    {
-      javax.ejb.Timer ejbTimer = (javax.ejb.Timer)i.next();
-      TimerInfo timerInfo = (TimerInfo)ejbTimer.getInfo();
-      if (timerInfo.getTimerId() == timerId)
-      {
+    for (javax.ejb.Timer ejbTimer : timers) {
+      TimerInfo timerInfo = (TimerInfo) ejbTimer.getInfo();
+      if (timerInfo.getTimerId() == timerId) {
         ejbTimer.cancel();
         ++count;
       }
@@ -178,18 +158,20 @@
     log.debug("canceled " + count + " ejb timer(s) by id " + timerId);
   }
 
-  public void cancelTimersByName(String timerName, Token token)
-  {
-    Collection timers = entityContext.getTimerService().getTimers();
-    log.debug("retrieved " + timers.size() + " ejb timer(s) by name '" + timerName + "' for " + token);
+  public void cancelTimersByName(String timerName, Token token) {
+    Collection<javax.ejb.Timer> timers = CollectionUtil.checkCollection(entityContext.getTimerService()
+        .getTimers(), javax.ejb.Timer.class);
+    log.debug("retrieved "
+        + timers.size()
+        + " ejb timer(s) by name '"
+        + timerName
+        + "' for "
+        + token);
 
     int count = 0;
-    for (Iterator i = timers.iterator(); i.hasNext();)
-    {
-      javax.ejb.Timer ejbTimer = (javax.ejb.Timer)i.next();
-      TimerInfo timerInfo = (TimerInfo)ejbTimer.getInfo();
-      if (timerInfo.matchesName(timerName, token))
-      {
+    for (javax.ejb.Timer ejbTimer : timers) {
+      TimerInfo timerInfo = (TimerInfo) ejbTimer.getInfo();
+      if (timerInfo.matchesName(timerName, token)) {
         ejbTimer.cancel();
         ++count;
       }
@@ -197,18 +179,15 @@
     log.debug("canceled " + count + " ejb timer(s) by name '" + timerName + "' for " + token);
   }
 
-  public void cancelTimersForProcessInstance(ProcessInstance processInstance)
-  {
-    Collection timers = entityContext.getTimerService().getTimers();
+  public void cancelTimersForProcessInstance(ProcessInstance processInstance) {
+    Collection<javax.ejb.Timer> timers = CollectionUtil.checkCollection(entityContext.getTimerService()
+        .getTimers(), javax.ejb.Timer.class);
     log.debug("retrieved " + timers.size() + " timer(s) for " + processInstance);
 
     int count = 0;
-    for (Iterator i = timers.iterator(); i.hasNext();)
-    {
-      javax.ejb.Timer ejbTimer = (javax.ejb.Timer)i.next();
-      TimerInfo timerInfo = (TimerInfo)ejbTimer.getInfo();
-      if (timerInfo.matchesProcessInstance(processInstance))
-      {
+    for (javax.ejb.Timer ejbTimer : timers) {
+      TimerInfo timerInfo = (TimerInfo) ejbTimer.getInfo();
+      if (timerInfo.matchesProcessInstance(processInstance)) {
         ejbTimer.cancel();
         ++count;
       }

Modified: jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/scheduler/ejbtimer/EntitySchedulerService.java
===================================================================
--- jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/scheduler/ejbtimer/EntitySchedulerService.java	2009-01-16 18:23:36 UTC (rev 3664)
+++ jbpm3/trunk/modules/enterprise/src/main/java/org/jbpm/scheduler/ejbtimer/EntitySchedulerService.java	2009-01-17 12:41:08 UTC (rev 3665)
@@ -1,7 +1,6 @@
 package org.jbpm.scheduler.ejbtimer;
 
 import java.util.Collection;
-import java.util.Iterator;
 
 import javax.ejb.FinderException;
 
@@ -63,12 +62,11 @@
 
   public void deleteTimersByName(String timerName, Token token) {
 		try {
-		  Collection timerEntities = timerEntityHome.findByNameAndTokenId(timerName, new Long(token.getId()));
+		  Collection<LocalTimerEntity> timerEntities = timerEntityHome.findByNameAndTokenId(timerName, new Long(token.getId()));
 			log.debug("found " + timerEntities.size() + " timer entities by name '" + timerName +  "' for " + token);
-			for (Iterator i = timerEntities.iterator(); i.hasNext();) {
-				LocalTimerEntity timerEntity = (LocalTimerEntity) i.next();
-				timerEntity.cancelTimersByName(timerName, token);
-			}
+			for (LocalTimerEntity timerEntity : timerEntities) {
+			  timerEntity.cancelTimersByName(timerName, token);
+      }
 		}
 		catch (FinderException e) {
 			log.error("failed to retrieve timer entities by name '" + timerName + "' for " + token, e);
@@ -78,12 +76,11 @@
 
 	public void deleteTimersByProcessInstance(ProcessInstance processInstance) {
 		try {
-			Collection timerEntities = timerEntityHome.findByProcessInstanceId(new Long(processInstance.getId()));
+			Collection<LocalTimerEntity> timerEntities = timerEntityHome.findByProcessInstanceId(new Long(processInstance.getId()));
 			log.debug("found " + timerEntities.size() + " timer entities for " + processInstance);
-			for (Iterator i = timerEntities.iterator(); i.hasNext();) {
-				LocalTimerEntity timerEntity = (LocalTimerEntity) i.next();
-				timerEntity.cancelTimersForProcessInstance(processInstance);
-			}
+			for (LocalTimerEntity timerEntity : timerEntities) {
+			  timerEntity.cancelTimersForProcessInstance(processInstance);
+      }
 		}
 		catch (FinderException e) {
 			log.error("failed to retrieve timer entities for " + processInstance, e);

Modified: jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/jta/JtaDbPersistenceTest.java
===================================================================
--- jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/jta/JtaDbPersistenceTest.java	2009-01-16 18:23:36 UTC (rev 3664)
+++ jbpm3/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/jta/JtaDbPersistenceTest.java	2009-01-17 12:41:08 UTC (rev 3665)
@@ -21,6 +21,10 @@
  */
 package org.jbpm.enterprise.jta;
 
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.Destination;
+import javax.jms.Session;
 import javax.naming.Context;
 import javax.naming.InitialContext;
 import javax.naming.NamingException;
@@ -98,8 +102,8 @@
   }
 
   private long deployProcess() throws Exception {
-    ProcessDefinition definition = (ProcessDefinition) commandService
-        .execute(new DeployProcessCommand("<process-definition name='tx'>"
+    ProcessDefinition definition = (ProcessDefinition) commandService.execute(new DeployProcessCommand(
+        "<process-definition name='tx'>"
             + "  <start-state name='start'>"
             + "    <transition to='midway' />"
             + "  </start-state>"
@@ -112,8 +116,7 @@
   }
 
   private long launchProcess(long definitionId) throws Exception {
-    ProcessInstance instance = (ProcessInstance) commandService
-        .execute(new StartProcessInstanceCommand().processDefinitionId(definitionId));
+    ProcessInstance instance = (ProcessInstance) commandService.execute(new StartProcessInstanceCommand().processDefinitionId(definitionId));
     return instance.getId();
   }
 
@@ -131,13 +134,32 @@
   }
 
   private boolean hasEnded(long instanceId) throws Exception {
-    ProcessInstance instance = (ProcessInstance) commandService
-        .execute(new GetProcessInstanceCommand(instanceId));
+    ProcessInstance instance = (ProcessInstance) commandService.execute(new GetProcessInstanceCommand(
+        instanceId));
     return instance.hasEnded();
   }
 
   private void deleteProcess(long definitionId) throws Exception {
-    commandService.execute(new DeleteProcessDefinitionCommand(definitionId));
+    Command command = new DeleteProcessDefinitionCommand(definitionId);
+    // CleanUpProcessJob races against DeleteProcessDefinitionCommand
+    // JMS has built-in retry logic
+    Context initial = new InitialContext();
+    try {
+      ConnectionFactory jmsConnectionfactory = (ConnectionFactory) initial.lookup("java:comp/env/jms/JbpmConnectionFactory");
+      Destination commandQueue = (Destination) initial.lookup("java:comp/env/jms/CommandQueue");
+
+      Connection jmsConnection = jmsConnectionfactory.createConnection();
+      try {
+        Session jmsSession = jmsConnection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+        jmsSession.createProducer(commandQueue).send(jmsSession.createObjectMessage(command));
+      }
+      finally {
+        jmsConnection.close();
+      }
+    }
+    finally {
+      initial.close();
+    }
   }
 
   private static LocalCommandServiceHome getCommandServiceHome() throws NamingException {

Copied: jbpm3/trunk/modules/enterprise/src/test/resources/WEB-INF (from rev 3601, jbpm3/trunk/modules/enterprise/src/test/resources/enterprise/WEB-INF)

Deleted: jbpm3/trunk/modules/enterprise/src/test/resources/WEB-INF/jboss-web.xml
===================================================================
--- jbpm3/trunk/modules/enterprise/src/test/resources/enterprise/WEB-INF/jboss-web.xml	2009-01-08 01:42:07 UTC (rev 3601)
+++ jbpm3/trunk/modules/enterprise/src/test/resources/WEB-INF/jboss-web.xml	2009-01-17 12:41:08 UTC (rev 3665)
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE jboss-web PUBLIC 
-  "-//JBoss//DTD Web Application 2.4//EN" 
-  "http://www.jboss.org/j2ee/dtd/jboss-web_4_0.dtd" >
-<jboss-web>
-
-  <resource-ref>
-    <res-ref-name>jdbc/JbpmDataSource</res-ref-name>
-    <jndi-name>java:/JbpmDS</jndi-name>
-  </resource-ref>
-  
-  <resource-ref>
-    <res-ref-name>jms/JbpmConnectionFactory</res-ref-name>
-    <jndi-name>java:JmsXA</jndi-name>
-  </resource-ref>
-  
-  <ejb-ref>
-    <ejb-ref-name>ejb/CommandServiceBean</ejb-ref-name>
-    <jndi-name>java:ejb/CommandServiceBean</jndi-name>
-  </ejb-ref>
-
-  <ejb-ref>
-    <ejb-ref-name>ejb/TimerEntityBean</ejb-ref-name>
-    <jndi-name>java:ejb/TimerEntityBean</jndi-name>
-  </ejb-ref>
-  
-  <message-destination-ref>
-    <message-destination-ref-name>jms/JobQueue</message-destination-ref-name>
-    <jndi-name>queue/JbpmJobQueue</jndi-name>
-  </message-destination-ref>
-</jboss-web>
\ No newline at end of file

Copied: jbpm3/trunk/modules/enterprise/src/test/resources/WEB-INF/jboss-web.xml (from rev 3633, jbpm3/trunk/modules/enterprise/src/test/resources/enterprise/WEB-INF/jboss-web.xml)
===================================================================
--- jbpm3/trunk/modules/enterprise/src/test/resources/WEB-INF/jboss-web.xml	                        (rev 0)
+++ jbpm3/trunk/modules/enterprise/src/test/resources/WEB-INF/jboss-web.xml	2009-01-17 12:41:08 UTC (rev 3665)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE jboss-web PUBLIC 
+  "-//JBoss//DTD Web Application 2.4//EN" 
+  "http://www.jboss.org/j2ee/dtd/jboss-web_4_0.dtd" >
+<jboss-web>
+  
+  <resource-ref>
+    <res-ref-name>jms/JbpmConnectionFactory</res-ref-name>
+    <jndi-name>java:JmsXA</jndi-name>
+  </resource-ref>
+  
+  <ejb-ref>
+    <ejb-ref-name>ejb/CommandServiceBean</ejb-ref-name>
+    <jndi-name>java:jbpm/CommandServiceBean</jndi-name>
+  </ejb-ref>
+
+  <message-destination-ref>
+    <message-destination-ref-name>jms/CommandQueue</message-destination-ref-name>
+    <jndi-name>queue/JbpmCommandQueue</jndi-name>
+  </message-destination-ref>
+
+</jboss-web>
\ No newline at end of file

Modified: jbpm3/trunk/modules/enterprise/src/test/resources/WEB-INF/web.xml
===================================================================
--- jbpm3/trunk/modules/enterprise/src/test/resources/enterprise/WEB-INF/web.xml	2009-01-08 01:42:07 UTC (rev 3601)
+++ jbpm3/trunk/modules/enterprise/src/test/resources/WEB-INF/web.xml	2009-01-17 12:41:08 UTC (rev 3665)
@@ -1,49 +1,29 @@
 <?xml version="1.0"?>
 <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
-    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
-
+  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee      http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
   <servlet>
     <servlet-name>ServletRedirector</servlet-name>
     <servlet-class>org.apache.cactus.server.ServletTestRedirector</servlet-class>
   </servlet>
-
   <servlet-mapping>
     <servlet-name>ServletRedirector</servlet-name>
     <url-pattern>/ServletRedirector</url-pattern>
   </servlet-mapping>
-
   <ejb-ref>
     <ejb-ref-name>ejb/CommandServiceBean</ejb-ref-name>
     <ejb-ref-type>Session</ejb-ref-type>
     <home>org.jbpm.ejb.RemoteCommandServiceHome</home>
     <remote>org.jbpm.ejb.RemoteCommandService</remote>
   </ejb-ref>
-
-  <ejb-ref>
-    <ejb-ref-name>ejb/TimerEntityBean</ejb-ref-name>
-    <ejb-ref-type>Entity</ejb-ref-type>
-    <home>org.jbpm.ejb.TimerEntityHome</home>
-    <remote>org.jbpm.ejb.TimerEntity</remote>
-  </ejb-ref>
-
   <resource-ref>
-    <res-ref-name>jdbc/JbpmDataSource</res-ref-name>
-    <res-type>javax.sql.DataSource</res-type>
-    <res-auth>Container</res-auth>
-  </resource-ref>
-
-  <resource-ref>
     <res-ref-name>jms/JbpmConnectionFactory</res-ref-name>
     <res-type>javax.jms.ConnectionFactory</res-type>
     <res-auth>Container</res-auth>
   </resource-ref>
-
   <message-destination-ref>
-    <message-destination-ref-name>jms/JobQueue</message-destination-ref-name>
+    <message-destination-ref-name>jms/CommandQueue</message-destination-ref-name>
     <message-destination-type>javax.jms.Queue</message-destination-type>
     <message-destination-usage>Produces</message-destination-usage>
   </message-destination-ref>
-
 </web-app>




More information about the jbpm-commits mailing list