Author: mriou
Date: Tue Dec 16 12:34:44 2008
New Revision: 727133

URL: http://svn.apache.org/viewvc?rev=727133&view=rev
Log:
ODE-457 DeploymentService undeploy error

Modified:
    
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-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HMessageExchange.java
    
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ActivityRecoveryDAOImpl.java
    
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionFactoryImpl.java
    
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/CorrSetProperty.java
    
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/CorrelationSetDAOImpl.java
    
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/EventDAOImpl.java
    
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/FaultDAOImpl.java
    
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageExchangeDAOImpl.java
    
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageRouteDAOImpl.java
    
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MexProperty.java
    
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/OpenJPADAO.java
    
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/PartnerLinkDAOImpl.java
    
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessDAOImpl.java
    
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessInstanceDAOImpl.java
    
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ScopeDAOImpl.java
    
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/XmlDataDAOImpl.java
    
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/XmlDataProperty.java

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=727133&r1=727132&r2=727133&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
 Tue Dec 16 12:34:44 2008
@@ -375,10 +375,14 @@
                
getSession().getNamedQuery(HScope.DELETE_SCOPES_BY_INSTANCE).setParameter 
("instance", _instance).executeUpdate();
        }
 
+       @SuppressWarnings("unchecked")
     private void deleteMessages() {
        // there are chances that some unmatched messages are still there
                
getSession().getNamedQuery(HLargeData.DELETE_UNMATCHED_MESSAGE_LDATA_BY_INSTANCE).setParameter("instance",
 _instance).setParameter("instance2", _instance).executeUpdate();
-               
getSession().getNamedQuery(HMessageExchange.DELETE_UNMATCHED_MEX_BY_INSTANCE).setParameter("instance",
 _instance).executeUpdate();
+               Collection unmatchedMex = 
getSession().getNamedQuery(HMessageExchange.SELECT_UNMATCHED_MEX_BY_INSTANCE).setParameter("instance",
 _instance).list();
+               if( !unmatchedMex.isEmpty() ) {
+                       
getSession().getNamedQuery(HMessageExchange.DELETE_UNMATCHED_MEX).setParameter("mex",
 unmatchedMex).executeUpdate();
+               }
                
getSession().getNamedQuery(HCorrelatorMessage.DELETE_CORMESSAGES_BY_INSTANCE).setParameter("instance",
 _instance).executeUpdate();
 
                
getSession().getNamedQuery(HCorrelatorSelector.DELETE_MESSAGE_ROUTES_BY_INSTANCE).setParameter
 ("instance", _instance).executeUpdate();

Modified: 
ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HMessageExchange.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HMessageExchange.java?rev=727133&r1=727132&r2=727133&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HMessageExchange.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HMessageExchange.java
 Tue Dec 16 12:34:44 2008
@@ -28,13 +28,14 @@
  * 
  * @hibernate.class table="BPEL_MESSAGE_EXCHANGE" dynamic-update="true"
  * @hibernate.query name="DELETE_MEX_BY_INSTANCE" query="delete from 
HMessageExchange as m where m.instance = :instance"
- * @hibernate.query name="DELETE_UNMATCHED_MEX_BY_INSTANCE" query="delete from 
HMessageExchange as m where m in(select cm.messageExchange from 
HCorrelatorMessage as cm where cm.messageExchange.instance = :instance)"
+ * @hibernate.query name="SELECT_UNMATCHED_MEX_BY_INSTANCE" query="from 
HMessageExchange as m where m in(select cm.messageExchange from 
HCorrelatorMessage as cm where cm.messageExchange.instance = :instance)"
+ * @hibernate.query name="DELETE_UNMATCHED_MEX" query="delete from 
HMessageExchange as m where m in(:mex)"
  * @hibernate.query name="DELETE_MEX_BY_PROCESS" query="delete from 
HMessageExchange as m where m.process = :process"
- * hibernate.query name="DELETE_MEX_PROPERTIES_BY_PROCESS" query="delete from 
HMessageExchange.properties as m where key(m).process = :process"
  */
 public class HMessageExchange extends HObject {
        public final static String DELETE_MEX_BY_INSTANCE = 
"DELETE_MEX_BY_INSTANCE";
-       public final static String DELETE_UNMATCHED_MEX_BY_INSTANCE = 
"DELETE_UNMATCHED_MEX_BY_INSTANCE";
+       public final static String SELECT_UNMATCHED_MEX_BY_INSTANCE = 
"SELECT_UNMATCHED_MEX_BY_INSTANCE";
+       public final static String DELETE_UNMATCHED_MEX = 
"DELETE_UNMATCHED_MEX";
        public final static String DELETE_MEX_BY_PROCESS = 
"DELETE_MEX_BY_PROCESS";
 
     private String _channelName;

Modified: 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ActivityRecoveryDAOImpl.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ActivityRecoveryDAOImpl.java?rev=727133&r1=727132&r2=727133&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ActivityRecoveryDAOImpl.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ActivityRecoveryDAOImpl.java
 Tue Dec 16 12:34:44 2008
@@ -19,7 +19,6 @@
 
 package org.apache.ode.dao.jpa;
 
-
 import org.apache.ode.bpel.dao.ActivityRecoveryDAO;
 import org.apache.ode.utils.DOMUtils;
 import org.w3c.dom.Element;
@@ -43,12 +42,12 @@
 @Entity
 @Table(name="ODE_ACTIVITY_RECOVERY")
 @NamedQueries({
-       
@NamedQuery(name=ActivityRecoveryDAOImpl.DELETE_ACTIVITY_RECOVERIES_BY_PROCESS, 
query="delete from ActivityRecoveryDAOImpl as a where a._instance._process = 
:process"),
+       
@NamedQuery(name=ActivityRecoveryDAOImpl.DELETE_ACTIVITY_RECOVERIES_BY_IDS, 
query="delete from ActivityRecoveryDAOImpl as a where a._instanceId in(:ids)"),
        
@NamedQuery(name=ActivityRecoveryDAOImpl.COUNT_ACTIVITY_RECOVERIES_BY_INSTANCES,
                        query="select r._instanceId, count(r._id) from 
ActivityRecoveryDAOImpl r where r._instance in(:instances) group by 
r._instanceId")
 })
 public class ActivityRecoveryDAOImpl implements ActivityRecoveryDAO {
-       public final static String DELETE_ACTIVITY_RECOVERIES_BY_PROCESS = 
"DELETE_ACTIVITY_RECOVERIES_BY_PROCESS";
+       public final static String DELETE_ACTIVITY_RECOVERIES_BY_IDS = 
"DELETE_ACTIVITY_RECOVERIES_BY_IDS";

        public final static String COUNT_ACTIVITY_RECOVERIES_BY_INSTANCES = 
"COUNT_ACTIVITY_RECOVERIES_BY_INSTANCES";
        
     @Id @Column(name="ID")
@@ -71,8 +70,9 @@
        @Basic @Column(name="RETRIES")
     private int _retries;
 
-       @Basic @Column(name="INSTANCE_ID", nullable=true, insertable=false, 
updatable=false)
-    private Long _instanceId;
+       @SuppressWarnings("unused")
+       @Basic @Column(name="INSTANCE_ID", insertable=false, updatable=false, 
nullable=true)
+     private Long _instanceId;
 
        // _instances is unused because this is a one-way relationship at the 
database level
     @ManyToOne(fetch=FetchType.LAZY,cascade={CascadeType.PERSIST}) 
@Column(name="INSTANCE_ID")

Modified: 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionFactoryImpl.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionFactoryImpl.java?rev=727133&r1=727132&r2=727133&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionFactoryImpl.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionFactoryImpl.java
 Tue Dec 16 12:34:44 2008
@@ -100,6 +100,7 @@
         propMap.put("openjpa.ConnectionFactory", _ds);
         propMap.put("openjpa.ConnectionFactoryMode", "managed");
         propMap.put("openjpa.FlushBeforeQueries", "false");
+        propMap.put("openjpa.FetchBatchSize", 1000);
 
         if (_dbdictionary != null)
             propMap.put("openjpa.jdbc.DBDictionary", _dbdictionary);

Modified: 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/CorrSetProperty.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/CorrSetProperty.java?rev=727133&r1=727132&r2=727133&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/CorrSetProperty.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/CorrSetProperty.java
 Tue Dec 16 12:34:44 2008
@@ -37,12 +37,10 @@
 @Entity
 @Table(name="ODE_CORSET_PROP")
 @NamedQueries({
-       @NamedQuery(name=CorrSetProperty.DELETE_CORSET_PROPERTIES_BY_PROCESS, 
query="delete from CorrSetProperty as p where 
p._corrSet._scope._processInstance._process = :process"),
-       @NamedQuery(name=CorrSetProperty.DELETE_CORSET_PROPERTIES_BY_INSTANCE, 
query="delete from CorrSetProperty as p where 
p._corrSet._scope._processInstance = :instance")
+       
@NamedQuery(name=CorrSetProperty.DELETE_CORSET_PROPERTIES_BY_PROPERTY_IDS, 
query="delete from CorrSetProperty as p where p.corrSetId in(:corrSetIds)")
 })
 public class CorrSetProperty {
-       public final static String DELETE_CORSET_PROPERTIES_BY_PROCESS = 
"DELETE_CORSET_PROPERTIES_BY_PROCESS";
-       public final static String DELETE_CORSET_PROPERTIES_BY_INSTANCE = 
"DELETE_CORSET_PROPERTIES_BY_INSTANCE";
+       public final static String DELETE_CORSET_PROPERTIES_BY_PROPERTY_IDS = 
"DELETE_CORSET_PROPERTIES_BY_PROPERTY_IDS";
        
     @Id @Column(name="ID")
     @GeneratedValue(strategy=GenerationType.AUTO)
@@ -53,6 +51,10 @@
     @Basic @Column(name="PROP_VALUE")
     private String propertyValue;
 
+    @SuppressWarnings("unused")
+    @Basic @Column(name="CORRSET_ID", insertable=false, updatable=false, 
nullable=true)
+    private Long corrSetId;
+    
     @ManyToOne(fetch=FetchType.LAZY,cascade={CascadeType.PERSIST}) 
@Column(name="CORRSET_ID")
     private CorrelationSetDAOImpl _corrSet;
 

Modified: 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/CorrelationSetDAOImpl.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/CorrelationSetDAOImpl.java?rev=727133&r1=727132&r2=727133&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/CorrelationSetDAOImpl.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/CorrelationSetDAOImpl.java
 Tue Dec 16 12:34:44 2008
@@ -45,14 +45,16 @@
 @Entity
 @Table(name="ODE_CORRELATION_SET")
 @NamedQueries({
-    @NamedQuery(name=CorrelationSetDAOImpl.DELETE_CORRELATION_SETS_BY_PROCESS, 
query="delete from CorrelationSetDAOImpl as c where c._scope in (select s from 
ScopeDAOImpl s where s._processInstance._process = :process)"),
-    
@NamedQuery(name=CorrelationSetDAOImpl.DELETE_CORRELATION_SETS_BY_INSTANCE, 
query="delete from CorrelationSetDAOImpl as c where c._scope in (select s from 
ScopeDAOImpl s where s._processInstance = :instance)"),
-    
@NamedQuery(name=CorrelationSetDAOImpl.SELECT_CORRELATION_SETS_BY_INSTANCES, 
query="select c from CorrelationSetDAOImpl as c left join fetch c._scope left 
join fetch c._props where c._scope._processInstance._instanceId in 
(:instances)")
+    @NamedQuery(name=CorrelationSetDAOImpl.DELETE_CORRELATION_SETS_BY_IDS, 
query="delete from CorrelationSetDAOImpl as c where c._correlationSetId in 
(:ids)"),
+    
@NamedQuery(name=CorrelationSetDAOImpl.SELECT_CORRELATION_SETS_BY_INSTANCES, 
query="select c from CorrelationSetDAOImpl as c left join fetch c._scope left 
join fetch c._props where c._scope._processInstance._instanceId in 
(:instances)"),
+    
@NamedQuery(name=CorrelationSetDAOImpl.SELECT_CORRELATION_SET_IDS_BY_PROCESS, 
query="select c._correlationSetId from CorrelationSetDAOImpl as c where 
c._scope._processInstance._process = :process"),
+    
@NamedQuery(name=CorrelationSetDAOImpl.SELECT_CORRELATION_SET_IDS_BY_INSTANCE, 
query="select c._correlationSetId from CorrelationSetDAOImpl as c where 
c._scope._processInstance = :instance")
 })
 public class CorrelationSetDAOImpl implements CorrelationSetDAO {
-       public final static String DELETE_CORRELATION_SETS_BY_PROCESS = 
"DELETE_CORRELATION_SETS_BY_PROCESS";
-    public final static String DELETE_CORRELATION_SETS_BY_INSTANCE = 
"DELETE_CORRELATION_SETS_BY_INSTANCE";
+       public final static String DELETE_CORRELATION_SETS_BY_IDS = 
"DELETE_CORRELATION_SETS_BY_IDS";
     public final static String SELECT_CORRELATION_SETS_BY_INSTANCES = 
"SELECT_CORRELATION_SETS_BY_INSTANCES";
+    public final static String SELECT_CORRELATION_SET_IDS_BY_PROCESS = 
"SELECT_CORRELATION_SET_IDS_BY_PROCESS";
+    public final static String SELECT_CORRELATION_SET_IDS_BY_INSTANCE = 
"SELECT_CORRELATION_SET_IDS_BY_INSTANCE";
        
        @Id @Column(name="CORRELATION_SET_ID") 
        @GeneratedValue(strategy=GenerationType.AUTO)

Modified: 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/EventDAOImpl.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/EventDAOImpl.java?rev=727133&r1=727132&r2=727133&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/EventDAOImpl.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/EventDAOImpl.java
 Tue Dec 16 12:34:44 2008
@@ -42,11 +42,13 @@
 @Entity
 @Table(name="ODE_EVENT")
 @NamedQueries({
-    @NamedQuery(name=EventDAOImpl.DELETE_EVENTS_BY_PROCESS, query="delete from 
EventDAOImpl as e where e._instance._process = :process"),
+    @NamedQuery(name=EventDAOImpl.SELECT_EVENT_IDS_BY_PROCESS, query="select 
e._id from EventDAOImpl as e where e._instance._process = :process"),
+    @NamedQuery(name=EventDAOImpl.DELETE_EVENTS_BY_IDS, query="delete from 
EventDAOImpl as e where e._id in (:ids)"),
     @NamedQuery(name=EventDAOImpl.DELETE_EVENTS_BY_INSTANCE, query="delete 
from EventDAOImpl as e where e._instance = :instance")
 })
-public class EventDAOImpl {
-       public final static String DELETE_EVENTS_BY_PROCESS = 
"DELETE_EVENTS_BY_PROCESS";
+public class EventDAOImpl extends OpenJPADAO {
+       public final static String SELECT_EVENT_IDS_BY_PROCESS = 
"SELECT_EVENT_IDS_BY_PROCESS";
+       public final static String DELETE_EVENTS_BY_IDS = 
"DELETE_EVENTS_BY_IDS";
        public final static String DELETE_EVENTS_BY_INSTANCE = 
"DELETE_EVENTS_BY_INSTANCE";
        
     @Id @Column(name="EVENT_ID")

Modified: 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/FaultDAOImpl.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/FaultDAOImpl.java?rev=727133&r1=727132&r2=727133&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/FaultDAOImpl.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/FaultDAOImpl.java
 Tue Dec 16 12:34:44 2008
@@ -39,12 +39,10 @@
 @Entity
 @Table(name="ODE_FAULT")
 @NamedQueries({
-       @NamedQuery(name=FaultDAOImpl.DELETE_FAULTS_BY_PROCESS, query="delete 
from FaultDAOImpl as f where f._id in(select i._fault from 
ProcessInstanceDAOImpl as i where i._process = :process)"),
-       @NamedQuery(name=FaultDAOImpl.DELETE_FAULTS_BY_INSTANCE, query="delete 
from FaultDAOImpl as f where f._id in(select i._fault from 
ProcessInstanceDAOImpl as i where i = :instance)")
+       @NamedQuery(name=FaultDAOImpl.DELETE_FAULTS_BY_IDS, query="delete from 
FaultDAOImpl as f where f._id in(:ids)")
 })
 public class FaultDAOImpl implements FaultDAO {
-       public final static String DELETE_FAULTS_BY_PROCESS = 
"DELETE_FAULTS_BY_PROCESS";
-       public final static String DELETE_FAULTS_BY_INSTANCE = 
"DELETE_FAULTS_BY_INSTANCE";
+       public final static String DELETE_FAULTS_BY_IDS = 
"DELETE_FAULTS_BY_IDS";
        
        @Id @Column(name="FAULT_ID") 
        @GeneratedValue(strategy=GenerationType.AUTO)

Modified: 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageExchangeDAOImpl.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageExchangeDAOImpl.java?rev=727133&r1=727132&r2=727133&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageExchangeDAOImpl.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageExchangeDAOImpl.java
 Tue Dec 16 12:34:44 2008
@@ -56,13 +56,13 @@
 @Table(name="ODE_MESSAGE_EXCHANGE")
 @NamedQueries({
     @NamedQuery(name=MessageExchangeDAOImpl.DELETE_MEXS_BY_PROCESS, 
query="delete from MessageExchangeDAOImpl as m where m._process = :process"),
-    @NamedQuery(name=MessageExchangeDAOImpl.DELETE_MEXS_BY_INSTANCE, 
query="delete from MessageExchangeDAOImpl as m where m._processInst = 
:instance")
+    @NamedQuery(name=MessageExchangeDAOImpl.SELECT_MEX_IDS_BY_PROCESS, 
query="select m._id from MessageExchangeDAOImpl as m where m._process = 
:process")
 })
 public class MessageExchangeDAOImpl extends OpenJPADAO implements 
MessageExchangeDAO {
        private static final Log __log = 
LogFactory.getLog(MessageExchangeDAOImpl.class);
        
        public final static String DELETE_MEXS_BY_PROCESS = 
"DELETE_MEXS_BY_PROCESS";
-       public final static String DELETE_MEXS_BY_INSTANCE = 
"DELETE_MEXS_BY_INSTANCE";
+       public final static String SELECT_MEX_IDS_BY_PROCESS = 
"SELECT_MEX_IDS_BY_PROCESS";
        
        @Id @Column(name="MESSAGE_EXCHANGE_ID") 
        private String _id;

Modified: 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageRouteDAOImpl.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageRouteDAOImpl.java?rev=727133&r1=727132&r2=727133&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageRouteDAOImpl.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageRouteDAOImpl.java
 Tue Dec 16 12:34:44 2008
@@ -40,12 +40,12 @@
 @Entity
 @Table(name="ODE_MESSAGE_ROUTE")
 @NamedQueries ({
-       @NamedQuery(name=MessageRouteDAOImpl.DELETE_MESSAGE_ROUTES_BY_PROCESS, 
query="delete from MessageRouteDAOImpl as r where r._processInst._process = 
:process"),
+       
@NamedQuery(name=MessageRouteDAOImpl.DELETE_MESSAGE_ROUTES_BY_INSTANCE_IDS, 
query="delete from MessageRouteDAOImpl as r where r._instanceId 
in(:instanceIds)"),
        @NamedQuery(name=MessageRouteDAOImpl.DELETE_MESSAGE_ROUTES_BY_INSTANCE, 
query="delete from MessageRouteDAOImpl as r where r._processInst = :instance")
 })
 public class MessageRouteDAOImpl implements MessageRouteDAO {
-       public final static String DELETE_MESSAGE_ROUTES_BY_PROCESS = 
"DELETE_MESSAGE_ROUTES_BY_PROCESS";
        public final static String DELETE_MESSAGE_ROUTES_BY_INSTANCE = 
"DELETE_MESSAGE_ROUTES_BY_INSTANCE";
+       public final static String DELETE_MESSAGE_ROUTES_BY_INSTANCE_IDS = 
"DELETE_MESSAGE_ROUTES_BY_INSTANCE_IDS";
        
        @Id @Column(name="MESSAGE_ROUTE_ID") 
        @GeneratedValue(strategy=GenerationType.AUTO)
@@ -59,8 +59,12 @@
        @Basic @Column(name="ROUTE_POLICY", length=16)
     private String _routePolicy;       
 
+       @SuppressWarnings("unused")
+       @Basic @Column(name="PROCESS_INSTANCE_ID", insertable=false, 
updatable=false, nullable=true)
+    private int _instanceId;
     @ManyToOne(fetch=FetchType.LAZY,cascade={CascadeType.PERSIST}) 
@Column(name="PROCESS_INSTANCE_ID")
     private ProcessInstanceDAOImpl _processInst;
+    
     @ManyToOne(fetch= FetchType.LAZY,cascade={CascadeType.PERSIST}) 
@Column(name="CORR_ID")
     @SuppressWarnings("unused")
     private CorrelatorDAOImpl _correlator;

Modified: 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MexProperty.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MexProperty.java?rev=727133&r1=727132&r2=727133&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MexProperty.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MexProperty.java
 Tue Dec 16 12:34:44 2008
@@ -38,10 +38,10 @@
 @Entity
 @Table(name="ODE_MEX_PROP")
 @NamedQueries({
-       @NamedQuery(name=MexProperty.DELETE_MEX_PROPERTIES_BY_PROCESS, 
query="delete from MexProperty as p where p._mex._process = :process")
+       @NamedQuery(name=MexProperty.DELETE_MEX_PROPERTIES_BY_MEX_IDS, 
query="delete from MexProperty as p where p._mexId in (:mexIds)")
 })
 public class MexProperty {
-       public final static String DELETE_MEX_PROPERTIES_BY_PROCESS = 
"DELETE_MEX_PROPERTIES_BY_PROCESS";
+       public final static String DELETE_MEX_PROPERTIES_BY_MEX_IDS = 
"DELETE_MEX_PROPERTIES_BY_MEX_IDS";
 
     @Id @Column(name="ID")
     @GeneratedValue(strategy=GenerationType.AUTO)
@@ -51,6 +51,10 @@
     private String propertyKey;
     @Basic @Column(name="PROP_VALUE", length=2000)
     private String propertyValue;
+    
+    @SuppressWarnings("unused")
+    @Basic @Column(name="MEX_ID", insertable=false, updatable=false, 
nullable=true)
+    private String _mexId;
     @ManyToOne(fetch= FetchType.LAZY,cascade={CascadeType.PERSIST})
     @Column(name="MEX_ID")
     @SuppressWarnings("unused")

Modified: 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/OpenJPADAO.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/OpenJPADAO.java?rev=727133&r1=727132&r2=727133&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/OpenJPADAO.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/OpenJPADAO.java
 Tue Dec 16 12:34:44 2008
@@ -18,16 +18,23 @@
  */
 package org.apache.ode.dao.jpa;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.openjpa.persistence.OpenJPAPersistence;
+import org.apache.openjpa.persistence.OpenJPAQuery;
 
 import javax.persistence.EntityManager;
 import javax.persistence.Query;
+
+import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
 
 /**
  * @author Matthieu Riou <mriou at apache dot org>
  */
 public class OpenJPADAO {
+       private static final Log __log = LogFactory.getLog(OpenJPADAO.class);
 
     protected BPELDAOConnectionImpl getConn() {
         return BPELDAOConnectionFactoryImpl._connections.get();
@@ -44,10 +51,28 @@
      * @param qry query to execute
      * @return whatever you assign it to
      */
+    @SuppressWarnings("unchecked")
     protected <T> T getSingleResult(Query qry) {
         List res = qry.getResultList();
         if (res.size() == 0) return null;
         return (T) res.get(0);
+    }
 
+    protected <T> void batchUpdateByIds(Iterator<T> ids, Query query, String 
parameterName) {
+       if( query instanceof OpenJPAQuery ) {
+               OpenJPAQuery openJpaQuery = (OpenJPAQuery)query;
+               int batchSize = openJpaQuery.getFetchPlan().getFetchBatchSize();
+               if( __log.isTraceEnabled() ) __log.trace("BATCH fetchBatchSize 
= " + batchSize);
+               List<T> batch = new ArrayList<T>();
+               while( ids.hasNext() ) {
+                       for( int i = 0; i < batchSize && ids.hasNext(); i++ ) {
+                               batch.add(ids.next());
+                       }
+                       if( __log.isTraceEnabled() ) __log.trace("BATCH 
updating " + batch.size() + " objects.");
+                       query.setParameter(parameterName, batch);
+                       query.executeUpdate();
+                       batch.clear();
+               }
+       }
     }
-}
+}
\ No newline at end of file

Modified: 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/PartnerLinkDAOImpl.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/PartnerLinkDAOImpl.java?rev=727133&r1=727132&r2=727133&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/PartnerLinkDAOImpl.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/PartnerLinkDAOImpl.java
 Tue Dec 16 12:34:44 2008
@@ -43,12 +43,10 @@
 @Entity
 @Table(name="ODE_PARTNER_LINK")
 @NamedQueries({
-    @NamedQuery(name=PartnerLinkDAOImpl.DELETE_PARTNER_LINKS_BY_PROCESS, 
query="delete from PartnerLinkDAOImpl as l where l._scope in (select s from 
ScopeDAOImpl s where s._processInstance._process = :process)"),
-    @NamedQuery(name=PartnerLinkDAOImpl.DELETE_PARTNER_LINKS_BY_INSTANCE, 
query="delete from PartnerLinkDAOImpl as l where l._scope in (select s from 
ScopeDAOImpl s where s._processInstance = :instance)")
+    @NamedQuery(name=PartnerLinkDAOImpl.DELETE_PARTNER_LINKS_BY_SCOPE_IDS, 
query="delete from PartnerLinkDAOImpl as l where l._scopeId in (:scopeIds)")
 })
 public class PartnerLinkDAOImpl implements PartnerLinkDAO {
-       public final static String DELETE_PARTNER_LINKS_BY_PROCESS = 
"DELETE_PARTNER_LINKS_BY_PROCESS";
-       public final static String DELETE_PARTNER_LINKS_BY_INSTANCE = 
"DELETE_PARTNER_LINKS_BY_INSTANCE";
+       public final static String DELETE_PARTNER_LINKS_BY_SCOPE_IDS = 
"DELETE_PARTNER_LINKS_BY_SCOPE_IDS";
        
        @Id @Column(name="PARTNER_LINK_ID") 
        @GeneratedValue(strategy=GenerationType.AUTO)
@@ -77,6 +75,9 @@
        @Basic @Column(name="PARTNER_SESSION_ID")
     private String _partnerSessionId;
 
+       @SuppressWarnings("unused")
+       @Basic @Column(name="SCOPE_ID", nullable=true, insertable=false, 
updatable=false)
+    private Long _scopeId;
     @ManyToOne(fetch= FetchType.LAZY,cascade={CascadeType.PERSIST}) 
@Column(name="SCOPE_ID")
     @SuppressWarnings("unused")
     private ScopeDAOImpl _scope;

Modified: 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessDAOImpl.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessDAOImpl.java?rev=727133&r1=727132&r2=727133&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessDAOImpl.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessDAOImpl.java
 Tue Dec 16 12:34:44 2008
@@ -135,35 +135,49 @@
         getEM().flush();
     }
 
+    @SuppressWarnings("unchecked")
     private void deleteProcessInstances() {
-               
getEM().createNamedQuery(FaultDAOImpl.DELETE_FAULTS_BY_PROCESS).setParameter("process",
 this).executeUpdate();
-               
getEM().createNamedQuery(ActivityRecoveryDAOImpl.DELETE_ACTIVITY_RECOVERIES_BY_PROCESS).setParameter("process",
 this).executeUpdate();
+               Collection faultIds = 
getEM().createNamedQuery(ProcessInstanceDAOImpl.SELECT_FAULT_IDS_BY_PROCESS).setParameter("process",
 this).getResultList();
+               batchUpdateByIds(faultIds.iterator(), 
getEM().createNamedQuery(FaultDAOImpl.DELETE_FAULTS_BY_IDS), "ids");
+               Collection instanceIds = 
getEM().createNamedQuery(ProcessInstanceDAOImpl.SELECT_INSTANCE_IDS_BY_PROCESS).setParameter("process",
 this).getResultList();
+               batchUpdateByIds(instanceIds.iterator(), 
getEM().createNamedQuery(ActivityRecoveryDAOImpl.DELETE_ACTIVITY_RECOVERIES_BY_IDS),
 "ids");
                
getEM().createNamedQuery(ProcessInstanceDAOImpl.DELETE_INSTANCES_BY_PROCESS).setParameter("process",
 this).executeUpdate();
     }
 
+    @SuppressWarnings("unchecked")
     private void deleteVariables() {
-               
getEM().createNamedQuery(XmlDataProperty.DELETE_XML_DATA_PROPERTIES_BY_PROCESS).setParameter("process",
 this).executeUpdate();
-               
getEM().createNamedQuery(XmlDataDAOImpl.DELETE_XMLDATA_BY_PROCESS).setParameter("process",
 this).executeUpdate();
+               Collection xmlDataIds = 
getEM().createNamedQuery(XmlDataDAOImpl.SELECT_XMLDATA_IDS_BY_PROCESS).setParameter("process",
 this).getResultList();
+               batchUpdateByIds(xmlDataIds.iterator(), 
getEM().createNamedQuery(XmlDataProperty.DELETE_XML_DATA_PROPERTIES_BY_XML_DATA_IDS),
 "xmlDataIds");
+               Collection scopeIds = 
getEM().createNamedQuery(ScopeDAOImpl.SELECT_SCOPE_IDS_BY_PROCESS).setParameter("process",
 this).getResultList();
+               batchUpdateByIds(scopeIds.iterator(), 
getEM().createNamedQuery(XmlDataDAOImpl.DELETE_XMLDATA_BY_SCOPE_IDS), 
"scopeIds");
 
-               
getEM().createNamedQuery(PartnerLinkDAOImpl.DELETE_PARTNER_LINKS_BY_PROCESS).setParameter("process",
 this).executeUpdate();
-               
getEM().createNamedQuery(ScopeDAOImpl.DELETE_SCOPES_BY_PROCESS).setParameter("process",
 this).executeUpdate();
+//             Collection scopeIds = 
getEM().createNamedQuery(ScopeDAOImpl.SELECT_SCOPE_IDS_BY_PROCESS).setParameter("process",
 this).getResultList();
+               batchUpdateByIds(scopeIds.iterator(), 
getEM().createNamedQuery(PartnerLinkDAOImpl.DELETE_PARTNER_LINKS_BY_SCOPE_IDS), 
"scopeIds");
+               batchUpdateByIds(scopeIds.iterator(), 
getEM().createNamedQuery(ScopeDAOImpl.DELETE_SCOPES_BY_SCOPE_IDS), "ids");
     }
 
+    @SuppressWarnings("unchecked")
        private void deleteMessages() {
                
getEM().createNamedQuery(MessageDAOImpl.DELETE_MESSAGES_BY_PROCESS).setParameter("process",
 this).executeUpdate();
-               
getEM().createNamedQuery(MexProperty.DELETE_MEX_PROPERTIES_BY_PROCESS).setParameter("process",
 this).executeUpdate();
+               Collection mexIds = 
getEM().createNamedQuery(MessageExchangeDAOImpl.SELECT_MEX_IDS_BY_PROCESS).setParameter("process",
 this).getResultList();
+               batchUpdateByIds(mexIds.iterator(), 
getEM().createNamedQuery(MexProperty.DELETE_MEX_PROPERTIES_BY_MEX_IDS), 
"mexIds");
                
getEM().createNamedQuery(MessageExchangeDAOImpl.DELETE_MEXS_BY_PROCESS).setParameter("process",
 this).executeUpdate();
-               
getEM().createNamedQuery(MessageRouteDAOImpl.DELETE_MESSAGE_ROUTES_BY_PROCESS).setParameter("process",
 this).executeUpdate();
+               Collection instanceIds = 
getEM().createNamedQuery(ProcessInstanceDAOImpl.SELECT_INSTANCE_IDS_BY_PROCESS).setParameter("process",
 this).getResultList();
+               batchUpdateByIds(instanceIds.iterator(), 
getEM().createNamedQuery(MessageRouteDAOImpl.DELETE_MESSAGE_ROUTES_BY_INSTANCE_IDS),
 "instanceIds");
                
getEM().createNamedQuery(CorrelatorDAOImpl.DELETE_CORRELATORS_BY_PROCESS).setParameter("process",
 this).executeUpdate();
        }
 
+    @SuppressWarnings("unchecked")
     private void deleteCorrelations() {
-               
getEM().createNamedQuery(CorrSetProperty.DELETE_CORSET_PROPERTIES_BY_PROCESS).setParameter("process",
 this).executeUpdate();
-               
getEM().createNamedQuery(CorrelationSetDAOImpl.DELETE_CORRELATION_SETS_BY_PROCESS).setParameter("process",
 this).executeUpdate();
+               Collection corrSetIds = 
getEM().createNamedQuery(CorrelationSetDAOImpl.SELECT_CORRELATION_SET_IDS_BY_PROCESS).setParameter("process",
 this).getResultList();
+               batchUpdateByIds(corrSetIds.iterator(), 
getEM().createNamedQuery(CorrSetProperty.DELETE_CORSET_PROPERTIES_BY_PROPERTY_IDS),
 "corrSetIds");
+               batchUpdateByIds(corrSetIds.iterator(), 
getEM().createNamedQuery(CorrelationSetDAOImpl.DELETE_CORRELATION_SETS_BY_IDS), 
"ids");
     }
 
+    @SuppressWarnings("unchecked")
     private void deleteEvents() {
-               
getEM().createNamedQuery(EventDAOImpl.DELETE_EVENTS_BY_PROCESS).setParameter("process",
 this).executeUpdate();
+       Collection eventIds = 
getEM().createNamedQuery(EventDAOImpl.SELECT_EVENT_IDS_BY_PROCESS).setParameter("process",
 this).getResultList();
+       batchUpdateByIds(eventIds.iterator(), 
getEM().createNamedQuery(EventDAOImpl.DELETE_EVENTS_BY_IDS), "ids");
        }
 
     public int getNumInstances() {
@@ -187,5 +201,4 @@
     public String getGuid() {
         return _guid;
     }
-
-}
+}
\ No newline at end of file

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=727133&r1=727132&r2=727133&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
 Tue Dec 16 12:34:44 2008
@@ -63,7 +63,9 @@
 @Entity
 @Table(name="ODE_PROCESS_INSTANCE")
 @NamedQueries({
-       @NamedQuery(name=ProcessInstanceDAOImpl.DELETE_INSTANCES_BY_PROCESS, 
query="delete from ProcessInstanceDAOImpl as i where i._process = :process"),
+       @NamedQuery(name=ProcessInstanceDAOImpl.DELETE_INSTANCES_BY_PROCESS, 
query="delete from ProcessInstanceDAOImpl as i where i._process = :process"),
+       @NamedQuery(name=ProcessInstanceDAOImpl.SELECT_INSTANCE_IDS_BY_PROCESS, 
query="select i._instanceId from ProcessInstanceDAOImpl as i where i._process = 
:process"),
+       @NamedQuery(name=ProcessInstanceDAOImpl.SELECT_FAULT_IDS_BY_PROCESS, 
query="select i._faultId from ProcessInstanceDAOImpl as i where i._process = 
:process and i._faultId is not null"),
        
@NamedQuery(name=ProcessInstanceDAOImpl.COUNT_FAILED_INSTANCES_BY_STATUS_AND_PROCESS_ID,
 
                        query="select count(i._instanceId), 
max(i._lastRecovery) from ProcessInstanceDAOImpl as i where 
i._process._processId = :processId and i._state in(:states) and exists(select r 
from ActivityRecoveryDAOImpl r where i = r._instance)")
 })
@@ -71,6 +73,8 @@
        private static final Log __log = 
LogFactory.getLog(ProcessInstanceDAOImpl.class);
        
        public final static String DELETE_INSTANCES_BY_PROCESS = 
"DELETE_INSTANCES_BY_PROCESS";
+       public final static String SELECT_INSTANCE_IDS_BY_PROCESS = 
"SELECT_INSTANCE_IDS_BY_PROCESS";

+       public final static String SELECT_FAULT_IDS_BY_PROCESS = 
"SELECT_FAULT_IDS_BY_PROCESS";

        public final static String 
COUNT_FAILED_INSTANCES_BY_STATUS_AND_PROCESS_ID = 
"COUNT_FAILED_INSTANCES_BY_STATUS_AND_PROCESS_ID";
        
     @Id @Column(name="ID")
@@ -97,6 +101,10 @@
        private Collection<ScopeDAO> _scopes = new ArrayList<ScopeDAO>();
        
@OneToMany(targetEntity=ActivityRecoveryDAOImpl.class,mappedBy="_instance",fetch=FetchType.LAZY,cascade={CascadeType.ALL})
     private Collection<ActivityRecoveryDAO> _recoveries = new 
ArrayList<ActivityRecoveryDAO>();
+
+       @SuppressWarnings("unused")
+       @Basic @Column(name="FAULT_ID", insertable=false, updatable=false, 
nullable=true)
+    private long _faultId;
        @OneToOne(fetch=FetchType.LAZY,cascade={CascadeType.MERGE, 
CascadeType.PERSIST, CascadeType.REFRESH}) @Column(name="FAULT_ID")
        private FaultDAOImpl _fault;
        @ManyToOne(fetch=FetchType.LAZY,cascade={CascadeType.PERSIST}) 
@Column(name="PROCESS_ID")
@@ -147,6 +155,13 @@
                // remove jacob state
                setExecutionState(null);
                if (getEM() != null) {
+                       if( !cleanupCategories.isEmpty() ) {
+                               // by default, we do not flush before select; 
flush it, so we can delete no matter if an entity is loaded up
+                               // or not; more importantly, OpenJPA will 
secretly load from the entire table if some entities reside only
+                               // in memory
+                               getEM().flush();
+                       }
+                       
                        if 
(cleanupCategories.contains(CLEANUP_CATEGORY.EVENTS)) {
                                deleteEvents();
                        }
@@ -168,25 +183,32 @@
        }
        
        private void deleteInstance() {
-               
getEM().createNamedQuery(FaultDAOImpl.DELETE_FAULTS_BY_INSTANCE).setParameter("instance",
 this).executeUpdate();                
+               if( _fault != null ) {
+                       getEM().remove(_fault);
+               }
                getEM().remove(this); // This deletes ActivityRecoveryDAO 
        }
        
+       @SuppressWarnings("unchecked")
        private void deleteVariables() {
-               
getEM().createNamedQuery(XmlDataProperty.DELETE_XML_DATA_PROPERTIES_BY_INSTANCE).setParameter("instance",
 this).executeUpdate();
-               
getEM().createNamedQuery(XmlDataDAOImpl.DELETE_XMLDATA_BY_INSTANCE).setParameter("instance",
 this).executeUpdate();
+               Collection xmlDataIds = 
getEM().createNamedQuery(XmlDataDAOImpl.SELECT_XMLDATA_IDS_BY_INSTANCE).setParameter("instance",
 this).getResultList();
+               batchUpdateByIds(xmlDataIds.iterator(), 
getEM().createNamedQuery(XmlDataProperty.DELETE_XML_DATA_PROPERTIES_BY_XML_DATA_IDS),
 "xmlDataIds");
+               Collection scopeIds = 
getEM().createNamedQuery(ScopeDAOImpl.SELECT_SCOPE_IDS_BY_INSTANCE).setParameter("instance",
 this).getResultList();
+               batchUpdateByIds(scopeIds.iterator(), 
getEM().createNamedQuery(XmlDataDAOImpl.DELETE_XMLDATA_BY_SCOPE_IDS), 
"scopeIds");
 
-               
getEM().createNamedQuery(PartnerLinkDAOImpl.DELETE_PARTNER_LINKS_BY_INSTANCE).setParameter("instance",
 this).executeUpdate();
-               
getEM().createNamedQuery(ScopeDAOImpl.DELETE_SCOPES_BY_INSTANCE).setParameter("instance",
 this).executeUpdate();
+               batchUpdateByIds(scopeIds.iterator(), 
getEM().createNamedQuery(PartnerLinkDAOImpl.DELETE_PARTNER_LINKS_BY_SCOPE_IDS), 
"scopeIds");
+               batchUpdateByIds(scopeIds.iterator(), 
getEM().createNamedQuery(ScopeDAOImpl.DELETE_SCOPES_BY_SCOPE_IDS), "ids");
        }
 
        private void deleteMessageRoutes() {
                
getEM().createNamedQuery(MessageRouteDAOImpl.DELETE_MESSAGE_ROUTES_BY_INSTANCE).setParameter
 ("instance", this).executeUpdate();
        }
        
+       @SuppressWarnings("unchecked")
        private void deleteCorrelations() {
-               
getEM().createNamedQuery(CorrSetProperty.DELETE_CORSET_PROPERTIES_BY_INSTANCE).setParameter("instance",
 this).executeUpdate();
-               
getEM().createNamedQuery(CorrelationSetDAOImpl.DELETE_CORRELATION_SETS_BY_INSTANCE).setParameter("instance",
 this).executeUpdate();
+               Collection corrSetIds = 
getEM().createNamedQuery(CorrelationSetDAOImpl.SELECT_CORRELATION_SET_IDS_BY_INSTANCE).setParameter("instance",
 this).getResultList();
+               batchUpdateByIds(corrSetIds.iterator(), 
getEM().createNamedQuery(CorrSetProperty.DELETE_CORSET_PROPERTIES_BY_PROPERTY_IDS),
 "corrSetIds");
+               batchUpdateByIds(corrSetIds.iterator(), 
getEM().createNamedQuery(CorrelationSetDAOImpl.DELETE_CORRELATION_SETS_BY_IDS), 
"ids");
        }
 
        private void deleteEvents() {

Modified: 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ScopeDAOImpl.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ScopeDAOImpl.java?rev=727133&r1=727132&r2=727133&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ScopeDAOImpl.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ScopeDAOImpl.java
 Tue Dec 16 12:34:44 2008
@@ -49,12 +49,14 @@
 @Table(name="ODE_SCOPE")
 @NamedQueries({
     @NamedQuery(name="ScopeEvents", query="SELECT se FROM EventDAOImpl as se 
WHERE se._scopeId = :sid"),
-    @NamedQuery(name=ScopeDAOImpl.DELETE_SCOPES_BY_PROCESS, query="delete from 
ScopeDAOImpl as s where s._processInstance._process = :process"),
-    @NamedQuery(name=ScopeDAOImpl.DELETE_SCOPES_BY_INSTANCE, query="delete 
from ScopeDAOImpl as s where s._processInstance = :instance")
+    @NamedQuery(name=ScopeDAOImpl.SELECT_SCOPE_IDS_BY_PROCESS, query="select 
s._scopeInstanceId from ScopeDAOImpl as s where s._processInstance._process = 
:process"),
+    @NamedQuery(name=ScopeDAOImpl.SELECT_SCOPE_IDS_BY_INSTANCE, query="select 
s._scopeInstanceId from ScopeDAOImpl as s where s._processInstance = 
:instance"),
+    @NamedQuery(name=ScopeDAOImpl.DELETE_SCOPES_BY_SCOPE_IDS, query="delete 
from ScopeDAOImpl as s where s._scopeInstanceId in(:ids)")
 })
 public class ScopeDAOImpl extends OpenJPADAO implements ScopeDAO {
-       public final static String DELETE_SCOPES_BY_PROCESS = 
"DELETE_SCOPES_BY_PROCESS";
-       public final static String DELETE_SCOPES_BY_INSTANCE = 
"DELETE_SCOPES_BY_INSTANCE";
+       public final static String SELECT_SCOPE_IDS_BY_PROCESS = 
"SELECT_SCOPE_IDS_BY_PROCESS";
+       public final static String SELECT_SCOPE_IDS_BY_INSTANCE = 
"SELECT_SCOPE_IDS_BY_INSTANCE";
+       public final static String DELETE_SCOPES_BY_SCOPE_IDS = 
"DELETE_SCOPES_BY_SCOPE_IDS";
        
     @Id @Column(name="SCOPE_ID")
     @GeneratedValue(strategy= GenerationType.AUTO)

Modified: 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/XmlDataDAOImpl.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/XmlDataDAOImpl.java?rev=727133&r1=727132&r2=727133&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/XmlDataDAOImpl.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/XmlDataDAOImpl.java
 Tue Dec 16 12:34:44 2008
@@ -51,12 +51,14 @@
 @Entity
 @Table(name="ODE_XML_DATA")
 @NamedQueries({
-    @NamedQuery(name=XmlDataDAOImpl.DELETE_XMLDATA_BY_PROCESS, query="delete 
from XmlDataDAOImpl as x where x._scope in (select s from ScopeDAOImpl s where 
s._processInstance._process = :process)"),
-    @NamedQuery(name=XmlDataDAOImpl.DELETE_XMLDATA_BY_INSTANCE, query="delete 
from XmlDataDAOImpl as x where x._scope in (select s from ScopeDAOImpl s where 
s._processInstance = :instance)")
+    @NamedQuery(name=XmlDataDAOImpl.SELECT_XMLDATA_IDS_BY_PROCESS, 
query="select distinct x._id from XmlDataDAOImpl as x where 
x._scope._processInstance._process = :process"),
+    @NamedQuery(name=XmlDataDAOImpl.SELECT_XMLDATA_IDS_BY_INSTANCE, 
query="select distinct x._id from XmlDataDAOImpl as x where 
x._scope._processInstance = :instance"),
+    @NamedQuery(name=XmlDataDAOImpl.DELETE_XMLDATA_BY_SCOPE_IDS, query="delete 
from XmlDataDAOImpl as x where x._scopeId in(:scopeIds)")
 })
 public class XmlDataDAOImpl implements XmlDataDAO {
-       public final static String DELETE_XMLDATA_BY_PROCESS = 
"DELETE_XMLDATA_BY_PROCESS";
-       public final static String DELETE_XMLDATA_BY_INSTANCE = 
"DELETE_XMLDATA_BY_INSTANCE";
+       public final static String SELECT_XMLDATA_IDS_BY_PROCESS = 
"SELECT_XMLDATA_IDS_BY_PROCESS";
+       public final static String SELECT_XMLDATA_IDS_BY_INSTANCE = 
"SELECT_XMLDATA_IDS_BY_INSTANCE";
+       public final static String DELETE_XMLDATA_BY_SCOPE_IDS = 
"DELETE_XMLDATA_BY_SCOPE_IDS";
        
        @Id @Column(name="XML_DATA_ID") 
        @GeneratedValue(strategy=GenerationType.AUTO)
@@ -74,6 +76,9 @@
     
@OneToMany(targetEntity=XmlDataProperty.class,mappedBy="_xmlData",fetch=FetchType.EAGER,cascade={CascadeType.ALL})
     private Collection<XmlDataProperty> _props = new 
ArrayList<XmlDataProperty>();
 
+    @SuppressWarnings("unused")
+       @Basic @Column(name="SCOPE_ID", nullable=true, insertable=false, 
updatable=false)
+    private Long _scopeId;
        @ManyToOne(fetch=FetchType.LAZY,cascade={CascadeType.PERSIST}) 
@Column(name="SCOPE_ID")
        private ScopeDAOImpl _scope;
        

Modified: 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/XmlDataProperty.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/XmlDataProperty.java?rev=727133&r1=727132&r2=727133&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/XmlDataProperty.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.X/dao-jpa/src/main/java/org/apache/ode/dao/jpa/XmlDataProperty.java
 Tue Dec 16 12:34:44 2008
@@ -38,12 +38,10 @@
 @Entity
 @Table(name="ODE_XML_DATA_PROP")
 @NamedQueries({
-       @NamedQuery(name=XmlDataProperty.DELETE_XML_DATA_PROPERTIES_BY_PROCESS, 
query="delete from XmlDataProperty as p where 
p._xmlData._scope._processInstance._process = :process"),
-       
@NamedQuery(name=XmlDataProperty.DELETE_XML_DATA_PROPERTIES_BY_INSTANCE, 
query="delete from XmlDataProperty as p where 
p._xmlData._scope._processInstance = :instance")
+       
@NamedQuery(name=XmlDataProperty.DELETE_XML_DATA_PROPERTIES_BY_XML_DATA_IDS, 
query="delete from XmlDataProperty as p where p._xmlDataId in (:xmlDataIds)")
 })
 public class XmlDataProperty {
-       public final static String DELETE_XML_DATA_PROPERTIES_BY_PROCESS = 
"DELETE_XML_DATA_PROPERTIES_BY_PROCESS";
-       public final static String DELETE_XML_DATA_PROPERTIES_BY_INSTANCE = 
"DELETE_XML_DATA_PROPERTIES_BY_INSTANCE";
+       public final static String DELETE_XML_DATA_PROPERTIES_BY_XML_DATA_IDS = 
"DELETE_XML_DATA_PROPERTIES_BY_XML_DATA_IDS";
        
     @Id @Column(name="ID")
     @GeneratedValue(strategy= GenerationType.AUTO)
@@ -53,6 +51,10 @@
     private String propertyKey;
     @Basic @Column(name="PROP_VALUE")
     private String propertyValue;
+    
+    @SuppressWarnings("unused")
+    @Basic @Column(name="XML_DATA_ID", insertable=false, updatable=false, 
nullable=true)
+    private Long _xmlDataId;
     @ManyToOne(fetch= FetchType.LAZY,cascade={CascadeType.PERSIST})
     @Column(name="XML_DATA_ID")
     @SuppressWarnings("unused")


Reply via email to