[jbpm-commits] JBoss JBPM SVN: r4766 - in jbpm3/branches/jbpm-3.2.5.SP/modules/core/src: test/java/org/jbpm/optimisticlocking and 1 other directory.

do-not-reply at jboss.org do-not-reply at jboss.org
Thu May 7 17:19:13 EDT 2009


Author: alex.guizar at jboss.com
Date: 2009-05-07 17:19:13 -0400 (Thu, 07 May 2009)
New Revision: 4766

Modified:
   jbpm3/branches/jbpm-3.2.5.SP/modules/core/src/main/java/org/jbpm/instantiation/ProcessClassLoader.java
   jbpm3/branches/jbpm-3.2.5.SP/modules/core/src/test/java/org/jbpm/optimisticlocking/LockingTest.java
Log:
[JBPM-2202] do not assume that process definition reference is always present in process class loader

Modified: jbpm3/branches/jbpm-3.2.5.SP/modules/core/src/main/java/org/jbpm/instantiation/ProcessClassLoader.java
===================================================================
--- jbpm3/branches/jbpm-3.2.5.SP/modules/core/src/main/java/org/jbpm/instantiation/ProcessClassLoader.java	2009-05-07 20:20:07 UTC (rev 4765)
+++ jbpm3/branches/jbpm-3.2.5.SP/modules/core/src/main/java/org/jbpm/instantiation/ProcessClassLoader.java	2009-05-07 21:19:13 UTC (rev 4766)
@@ -130,7 +130,8 @@
   }
 
   public Class findClass(String className) throws ClassNotFoundException {
-    FileDefinition fileDefinition = getProcessDefinition().getFileDefinition();
+    ProcessDefinition processDefinition = getProcessDefinition();
+    FileDefinition fileDefinition = processDefinition.getFileDefinition();
     if (fileDefinition != null) {
       String fileName = "classes/" + className.replace('.', '/') + ".class";
       byte[] classBytes = fileDefinition.getBytes(fileName);
@@ -144,7 +145,11 @@
           String packageName = className.substring(0, packageIndex);
 
           if (getPackage(packageName) == null) {
-            definePackage(packageName, null, null, null, processDefinition.getName(), Integer.toString(processDefinition.getVersion()), null, null);
+            Package jbpmPackage = ProcessClassLoader.class.getPackage();
+            definePackage(packageName, processDefinition.getName(), 
+                Integer.toString(processDefinition.getVersion()), null, 
+                jbpmPackage.getImplementationTitle(), jbpmPackage.getImplementationVersion(),
+                jbpmPackage.getImplementationVersion(), null);
           }
         }
         return defineClass(className, classBytes, 0, classBytes.length);

Modified: jbpm3/branches/jbpm-3.2.5.SP/modules/core/src/test/java/org/jbpm/optimisticlocking/LockingTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2.5.SP/modules/core/src/test/java/org/jbpm/optimisticlocking/LockingTest.java	2009-05-07 20:20:07 UTC (rev 4765)
+++ jbpm3/branches/jbpm-3.2.5.SP/modules/core/src/test/java/org/jbpm/optimisticlocking/LockingTest.java	2009-05-07 21:19:13 UTC (rev 4766)
@@ -4,14 +4,14 @@
 import java.util.Iterator;
 import java.util.List;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
 import org.jbpm.JbpmContext;
 import org.jbpm.db.AbstractDbTestCase;
 import org.jbpm.graph.def.ProcessDefinition;
 import org.jbpm.graph.exe.Comment;
 import org.jbpm.graph.exe.ProcessInstance;
-import org.jbpm.persistence.JbpmPersistenceException;
-import org.jbpm.persistence.db.DbPersistenceService;
-import org.jbpm.persistence.db.StaleObjectLogConfigurer;
 import org.jbpm.util.Semaphore;
 
 /**
@@ -127,35 +127,30 @@
 
       // after a thread is released (=notified), it will try to load the process instance,
       // signal it and then commit the transaction
-      JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
+      JbpmContext jbpmContext = getJbpmConfiguration().createJbpmContext();
       try {
         ProcessInstance processInstance = jbpmContext.loadProcessInstance(processInstanceId);
         processInstance.signal();
         jbpmContext.save(processInstance);
 
-        // add a comment in the same transaction so that we can see which thread won
+        // add a comment to see which thread won
         Comment comment = new Comment(getName() + " committed");
         jbpmContext.getSession().save(comment);
       }
       catch (RuntimeException e) {
         jbpmContext.setRollbackOnly();
-        throw e;
+        log.debug(getName() + " rolled back", e);
       }
       finally {
         try {
           jbpmContext.close();
         }
-        catch (JbpmPersistenceException e) {
-          // if this is a stale object exception, keep it quiet
-          if (DbPersistenceService.isStaleStateException(e)) {
-            StaleObjectLogConfigurer.getStaleObjectExceptionsLog()
-                .error(getName() + " rolled back");
-          }
-          else {
-            throw e;
-          }
+        catch (RuntimeException e) {
+          log.debug(getName() + " failed to close its jbpm context", e);
         }
       }
     }
   }
+
+  private static final Log log = LogFactory.getLog(LockingTest.class);
 }




More information about the jbpm-commits mailing list