Author: seanahn
Date: Thu Oct 15 00:11:12 2009
New Revision: 825346

URL: http://svn.apache.org/viewvc?rev=825346&view=rev
Log:
ODE-681, On-the-fly instance clean up tests break 

Modified:
    
ode/branches/APACHE_ODE_1.X/bpel-dao/src/main/java/org/apache/ode/bpel/dao/ProcessInstanceDAO.java
    
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/ProcessInstanceDaoImpl.java
    
ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ProcessInstanceDaoImpl.java
    
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessInstanceDAOImpl.java

Modified: 
ode/branches/APACHE_ODE_1.X/bpel-dao/src/main/java/org/apache/ode/bpel/dao/ProcessInstanceDAO.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-dao/src/main/java/org/apache/ode/bpel/dao/ProcessInstanceDAO.java?rev=825346&r1=825345&r2=825346&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.X/bpel-dao/src/main/java/org/apache/ode/bpel/dao/ProcessInstanceDAO.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.X/bpel-dao/src/main/java/org/apache/ode/bpel/dao/ProcessInstanceDAO.java
 Thu Oct 15 00:11:12 2009
@@ -25,7 +25,6 @@
 import java.util.Collection;
 import java.util.Date;
 import java.util.Set;
-import java.util.List;
 
 import javax.xml.namespace.QName;
 
@@ -199,6 +198,13 @@
     void delete(Set<CLEANUP_CATEGORY> cleanupCategories);
 
     /**
+     * Delete the process instance object from the database.
+     * @param cleanupCategories the categories of entities to delete
+     * @param deleteMyRoleMex will clean up the my role mex if set to true
+     */
+    void delete(Set<CLEANUP_CATEGORY> cleanupCategories, boolean 
deleteMyRoleMex);
+
+    /**
      * Insert a BPEL event to the database (associating with this process).
      * @param event BPEL event
      */

Modified: 
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/ProcessInstanceDaoImpl.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/ProcessInstanceDaoImpl.java?rev=825346&r1=825345&r2=825346&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/ProcessInstanceDaoImpl.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/ProcessInstanceDaoImpl.java
 Thu Oct 15 00:11:12 2009
@@ -280,6 +280,10 @@
     }
 
     public void delete(Set<CLEANUP_CATEGORY> cleanupCategories) {
+        delete(cleanupCategories, true);
+    }
+
+    public void delete(Set<CLEANUP_CATEGORY> cleanupCategories, boolean 
deleteMyRoleMex) {
         _processDao._instances.remove(_instanceId);
     }
 

Modified: 
ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ProcessInstanceDaoImpl.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ProcessInstanceDaoImpl.java?rev=825346&r1=825345&r2=825346&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ProcessInstanceDaoImpl.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ProcessInstanceDaoImpl.java
 Thu Oct 15 00:11:12 2009
@@ -326,6 +326,10 @@
   }
 
   public void delete(Set<CLEANUP_CATEGORY> cleanupCategories) {
+      delete(cleanupCategories, true);
+  }
+  
+  public void delete(Set<CLEANUP_CATEGORY> cleanupCategories, boolean 
deleteMyRoleMex) {
     entering("ProcessInstanceDaoImpl.delete");
     if(__log.isDebugEnabled()) __log.debug("Cleaning up instance data with 
categories = " + cleanupCategories);
       
@@ -345,7 +349,7 @@
     }
 
     if( cleanupCategories.contains(CLEANUP_CATEGORY.MESSAGES) ) {
-      deleteMessages(instances);
+      deleteMessages(instances, deleteMyRoleMex);
     }
       
     if( cleanupCategories.contains(CLEANUP_CATEGORY.VARIABLES) ) {
@@ -386,19 +390,41 @@
   }
 
   @SuppressWarnings("unchecked")
-  private void deleteMessages(HProcessInstance[] instances) {
-      // there are chances that some unmatched messages are still there
-      deleteByIds(HLargeData.class, 
getSession().getNamedQuery(HLargeData.SELECT_MESSAGE_LDATA_IDS_BY_INSTANCES_1).setParameterList("instances",
 instances).list());
-      deleteByIds(HLargeData.class, 
getSession().getNamedQuery(HLargeData.SELECT_MESSAGE_LDATA_IDS_BY_INSTANCES_2).setParameterList("instances",
 instances).list());
-
-      deleteByIds(HMessage.class, 
getSession().getNamedQuery(HMessage.SELECT_MESSAGE_IDS_BY_INSTANCES).setParameterList("instances",
 instances).list());
+  private void deleteMessages(HProcessInstance[] instances, boolean 
deleteMyRoleMex) {
+      // Let's delete ALL mex properties here
+      List<Long> allMexes = 
getSession().getNamedQuery(HMessageExchange.SELECT_MEX_IDS_BY_INSTANCES).setParameterList("instances",
 instances).list();
+      deleteByColumn(HMessageExchangeProperty.class, "mex.id", allMexes);
+
+      if( deleteMyRoleMex ) { // Delete my role mex and partner role mexes
+          // delete message data
+          deleteByIds(HLargeData.class, 
getSession().getNamedQuery(HLargeData.SELECT_MESSAGE_LDATA_IDS_BY_INSTANCES_1).setParameterList("instances",
 instances).list());
+          deleteByIds(HLargeData.class, 
getSession().getNamedQuery(HLargeData.SELECT_MESSAGE_LDATA_IDS_BY_INSTANCES_2).setParameterList("instances",
 instances).list());
+
+          // delete messages
+          deleteByIds(HMessage.class, 
getSession().getNamedQuery(HMessage.SELECT_MESSAGE_IDS_BY_INSTANCES).setParameterList("instances",
 instances).list());
+          
+          // delete all mexes
+          deleteByIds(HMessageExchange.class, allMexes);
+      } else { // Delete only the unmatched mexes, there are chances that some 
unmatched messages are still there
+          // delete message data 
+          deleteByIds(HLargeData.class, 
getSession().getNamedQuery(HLargeData.SELECT_UNMATCHED_MESSAGE_LDATA_IDS_BY_INSTANCES_1).setParameterList("instances",
 instances).list());
+          deleteByIds(HLargeData.class, 
getSession().getNamedQuery(HLargeData.SELECT_UNMATCHED_MESSAGE_LDATA_IDS_BY_INSTANCES_2).setParameterList("instances",
 instances).list());
+
+          Collection<HMessageExchange> unmatchedMex = 
getSession().getNamedQuery(HMessageExchange.SELECT_UNMATCHED_MEX_BY_INSTANCES).setParameterList("instances",
 instances).list();
+          if( !unmatchedMex.isEmpty() ) {
+              List<Long> mexIdList = new ArrayList<Long>();
+              for( HMessageExchange mex : unmatchedMex ) {
+                  mexIdList.add(mex.getId());
+              }
+
+              // delete unmatched mexes
+              getSession().delete(unmatchedMex);
+          }
+      }
 
+      // Delete routes and unmatched messages
       deleteByIds(HCorrelatorMessage.class, 
getSession().getNamedQuery(HCorrelatorMessage.SELECT_CORMESSAGE_IDS_BY_INSTANCES).setParameterList("instances",
 instances).list());
       deleteByIds(HCorrelatorSelector.class, 
getSession().getNamedQuery(HCorrelatorSelector.SELECT_MESSAGE_ROUTE_IDS_BY_INSTANCES).setParameterList("instances",
 instances).list());
-
-      List<Long> mex = 
getSession().getNamedQuery(HMessageExchange.SELECT_MEX_IDS_BY_INSTANCES).setParameterList("instances",
 instances).list();
-      deleteByColumn(HMessageExchangeProperty.class, "mex.id", mex);
-      deleteByIds(HMessageExchange.class, mex);
   }
 
   @SuppressWarnings("unchecked")

Modified: 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessInstanceDAOImpl.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessInstanceDAOImpl.java?rev=825346&r1=825345&r2=825346&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessInstanceDAOImpl.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessInstanceDAOImpl.java
 Thu Oct 15 00:11:12 2009
@@ -153,6 +153,10 @@
     }
     
     public void delete(Set<CLEANUP_CATEGORY> cleanupCategories) {
+        delete(cleanupCategories, true);
+    }
+
+    public void delete(Set<CLEANUP_CATEGORY> cleanupCategories, boolean 
deleteMyRoleMex) {
         if(__log.isDebugEnabled()) __log.debug("Cleaning up instance Data with 
" + cleanupCategories);
         
         // remove jacob state


Reply via email to