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