[jboss-svn-commits] JBL Code SVN: r17751 - in labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm: cmd and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Jan 11 16:08:55 EST 2008


Author: kevin.conner at jboss.com
Date: 2008-01-11 16:08:55 -0500 (Fri, 11 Jan 2008)
New Revision: 17751

Modified:
   labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/actionhandlers/EsbActionHandler.java
   labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/cmd/CallbackCommand.java
Log:
Fix callback variable name and instance/task validation: JBESB-1443, JBESB-1466

Modified: labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/actionhandlers/EsbActionHandler.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/actionhandlers/EsbActionHandler.java	2008-01-11 20:52:44 UTC (rev 17750)
+++ labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/actionhandlers/EsbActionHandler.java	2008-01-11 21:08:55 UTC (rev 17751)
@@ -148,7 +148,8 @@
         if (globalProcessScope!=null) {
             portReference.addExtension(Constants.PROCESS_SCOPE_ATTR, globalProcessScope.toString());
         }
-        portReference.addExtension(Constants.TOKEN_ID, String.valueOf(executionContext.getToken().getId()));
+        final long tokenId = executionContext.getToken().getId();
+        portReference.addExtension(Constants.TOKEN_ID, String.valueOf(tokenId));
         String nodeId = "";
         if (executionContext.getNode()!=null) {
             nodeId = String.valueOf(executionContext.getNode().getId());
@@ -157,7 +158,7 @@
         }
         portReference.addExtension(Constants.PROCESS_INSTANCE_ID, String.valueOf(executionContext.getProcessInstance().getId()));
         
-        String counterName = Constants.PROCESS_NODE_VERSION_COUNTER  + nodeId;
+        String counterName = Constants.PROCESS_NODE_VERSION_COUNTER  + nodeId + '_' + tokenId;
         Long counter = Long.getLong(String.valueOf(executionContext.getVariable(counterName)));
         if (counter!=null) {
             counter = counter + 1;

Modified: labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/cmd/CallbackCommand.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/cmd/CallbackCommand.java	2008-01-11 20:52:44 UTC (rev 17750)
+++ labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/cmd/CallbackCommand.java	2008-01-11 21:08:55 UTC (rev 17751)
@@ -74,45 +74,39 @@
         long nodeId  = Long.parseLong(callbackEpr.getAddr().getExtensionValue(Constants.NODE_ID));
         long tokenId = Long.parseLong(callbackEpr.getAddr().getExtensionValue(Constants.TOKEN_ID));
         long processInstanceId = Long.parseLong(callbackEpr.getAddr().getExtensionValue(Constants.PROCESS_INSTANCE_ID));
-        String counterName = Constants.PROCESS_NODE_VERSION_COUNTER + nodeId;
+        String counterName = Constants.PROCESS_NODE_VERSION_COUNTER + nodeId + '_' + tokenId;
         long processNodeVersion = Long.parseLong(callbackEpr.getAddr().getExtensionValue(counterName));
         if (logger.isDebugEnabled()) logger.debug("Expected nodeId=" + nodeId + 
                 ", tokenId=" + tokenId + ", processNodeVersion=" + processNodeVersion);
         //get update on current state of things.
         ProcessInstance instance = jbpmContext.getProcessInstance(processInstanceId);
-        Long currentTokenId = null;
-        Long currentNodeId = null;
+        if (instance == null) {
+            throw new CallbackException("Process instance " + processInstanceId + " is no longer active") ;
+        }
         List tokens = instance.findAllTokens();
+        boolean discovered = false ;
         for (Object object : tokens) {
             Token token = (Token) object;
             if (token.getId()==tokenId) {
-                currentTokenId = token.getId();
-                currentNodeId = token.getNode().getId();
+                if (nodeId != token.getNode().getId()) {
+                    throw new CallbackException("Token id " + tokenId + " from process instance " + processInstanceId + " is no longer on expected node") ;
+                }
+                discovered = true ;
                 break;
             }
         }
-        //Compare current with expected
-        StringBuilder unExpected = new StringBuilder();
-        if (nodeId!=currentNodeId) {
-            unExpected.append("A timeout occured or something else signaled the node, " + currentNodeId +
-                    "causing it to move away from the expected node with id= ").append(nodeId).append(". ");
+        if (!discovered) {
+            throw new CallbackException("Token id " + tokenId + " from process instance " + processInstanceId + " is no longer active") ;
         }
-        if (tokenId!=currentTokenId) {
-            unExpected.append("The process is at the expected Node, but the current Token (id=" + currentTokenId +
-                    ") is not the expected Token (").append(tokenId).append("), "); 
-        }
-        if (logger.isDebugEnabled()) logger.debug("Current state nodeId=" + currentNodeId);
+        //Compare current with expected
         //get the current processNode Version
         Long currentProcessNodeVersion = Long.parseLong(String.valueOf(
                 instance.getContextInstance().getVariable(counterName)));
         if (logger.isDebugEnabled()) logger.debug("ProcessNodeVersion=" + currentProcessNodeVersion);
         if (processNodeVersion!=currentProcessNodeVersion) {
-            unExpected.append("The current processNodeVersion (id=" + currentProcessNodeVersion +
-                    ") is not the expected version (version=").append(processNodeVersion).append("). ");
+            throw new CallbackException("The current processNodeVersion (id=" + currentProcessNodeVersion +
+                    ") is not the expected version (version=" + processNodeVersion + ").");
         }
-        if (!"".equals(unExpected.toString())) {
-            throw new CallbackException(unExpected.toString());
-        }
         return tokenId;
     }
 




More information about the jboss-svn-commits mailing list