You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by se...@apache.org on 2009/04/06 23:53:27 UTC
svn commit: r762523 [8/9] - in /ode/trunk: ./
axis2-war/src/main/webapp/WEB-INF/classes/
axis2-war/src/main/webapp/WEB-INF/conf.hib-derby/
axis2-war/src/main/webapp/WEB-INF/conf.jpa-derby/
axis2-war/src/main/webapp/WEB-INF/conf.template/ axis2-war/src/...
Modified: ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HPartnerLink.java
URL: http://svn.apache.org/viewvc/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HPartnerLink.java?rev=762523&r1=762522&r2=762523&view=diff
==============================================================================
--- ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HPartnerLink.java (original)
+++ ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HPartnerLink.java Mon Apr 6 21:53:20 2009
@@ -28,8 +28,12 @@
* configuration).
*
* @hibernate.class table="BPEL_PLINK_VAL"
+ * @hibernate.query name="DELETE_PARTNER_LINKS_BY_INSTANCE" query="delete from HPartnerLink as l where l.scope in (select s from HScope as s where s.instance = :instance)"
+ * @hibernate.query name="DELETE_PARTNER_LINKS_BY_PROCESS" query="delete from HPartnerLink as l where l.scope in (select s.id from HScope as s where s.instance.process = :process)"
*/
public class HPartnerLink extends HObject {
+ public final static String DELETE_PARTNER_LINKS_BY_INSTANCE = "DELETE_PARTNER_LINKS_BY_INSTANCE";
+ public final static String DELETE_PARTNER_LINKS_BY_PROCESS = "DELETE_PARTNER_LINKS_BY_PROCESS";
private String _linkName;
@@ -82,7 +86,7 @@
}
/**
- * @hibernate.many-to-one column="MYROLE_EPR" cascade="delete"
+ * @hibernate.many-to-one column="MYROLE_EPR" cascade="delete" foreign-key="none"
*/
public HLargeData getMyEPR() {
return _myEPR;
@@ -93,7 +97,7 @@
}
/**
- * @hibernate.many-to-one column="PARTNERROLE_EPR" cascade="delete"
+ * @hibernate.many-to-one column="PARTNERROLE_EPR" cascade="delete" foreign-key="none"
*/
public HLargeData getPartnerEPR() {
return _partnerEPR;
@@ -104,7 +108,7 @@
}
/**
- * @hibernate.many-to-one column="PROCESS"
+ * @hibernate.many-to-one column="PROCESS" foreign-key="none"
*/
public HProcess getProcess() {
return _process;
@@ -115,7 +119,7 @@
}
/**
- * @hibernate.many-to-one column="SCOPE"
+ * @hibernate.many-to-one column="SCOPE" foreign-key="none"
*/
public HScope getScope() {
return _scope;
@@ -187,7 +191,7 @@
* inverse="true"
* cascade="delete"
* @hibernate.collection-key
- * column="PARTNERLINK"
+ * column="PARTNERLINK" foreign-key="none"
* @hibernate.collection-one-to-many
* class="org.apache.ode.daohib.bpel.hobj.HMessageExchange"
*/
Modified: ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HProcess.java
URL: http://svn.apache.org/viewvc/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HProcess.java?rev=762523&r1=762522&r2=762523&view=diff
==============================================================================
--- ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HProcess.java (original)
+++ ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HProcess.java Mon Apr 6 21:53:20 2009
@@ -76,7 +76,7 @@
* inverse="true"
* cascade="delete"
* @hibernate.collection-key
- * column="PROCESS"
+ * column="PROCESS" foreign-key="none"
* @hibernate.collection-one-to-many
* class="org.apache.ode.daohib.bpel.hobj.HMessageExchange"
*/
@@ -94,7 +94,7 @@
* inverse="true"
* cascade="delete"
* @hibernate.collection-key
- * column="PROCESS_ID"
+ * column="PROCESS_ID" foreign-key="none"
* @hibernate.collection-one-to-many
* class="org.apache.ode.daohib.bpel.hobj.HCorrelator"
*/
@@ -110,9 +110,8 @@
* @hibernate.bag
* lazy="true"
* inverse="true"
- * cascade="delete"
* @hibernate.collection-key
- * column="PROCESS_ID"
+ * column="PROCESS_ID" foreign-key="none"
* @hibernate.collection-one-to-many
* class="org.apache.ode.daohib.bpel.hobj.HProcessInstance"
*/
@@ -128,9 +127,8 @@
* @hibernate.bag
* lazy="true"
* inverse="true"
- * cascade="delete"
* @hibernate.collection-key
- * column="PID"
+ * column="PID" foreign-key="none"
* @hibernate.collection-one-to-many
* class="org.apache.ode.daohib.bpel.hobj.HBpelEvent"
*/
@@ -146,8 +144,8 @@
* Get the partner links values as deployed.
*
* @return {@link Set}<{@link HPartnerLink}> with variable values
- * @hibernate.set lazy="true" inverse="true" cascade="delete"
- * @hibernate.collection-key column="PROCESS"
+ * @hibernate.set lazy="true" inverse="true"
+ * @hibernate.collection-key column="PROCESS" foreign-key="none"
* @hibernate.collection-one-to-many class="org.apache.ode.daohib.bpel.hobj.HPartnerLink"
*/
public Set<HPartnerLink> getDeploymentPartnerLinks() {
Modified: ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HProcessInstance.java
URL: http://svn.apache.org/viewvc/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HProcessInstance.java?rev=762523&r1=762522&r2=762523&view=diff
==============================================================================
--- ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HProcessInstance.java (original)
+++ ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HProcessInstance.java Mon Apr 6 21:53:20 2009
@@ -31,6 +31,7 @@
* @hibernate.query name="COUNT_INSTANCES_BY_STATUS_AND_PROCESS_ID" query="select count(i.id) as cnt, max(i.activityFailureDateTime) as lastFailureDt from HProcessInstance as i where i.process.processId = :processId and i.state in(:states) and i.activityFailureCount > 0"
* @hibernate.query name="COUNT_FAILED_INSTANCES_BY_STATUS_AND_PROCESS_ID" query="select count(i.id) as cnt, max(i.activityFailureDateTime) as lastFailureDt from HProcessInstance as i where i.process.processId = :processId and i.state in(:states) and i.activityFailureCount > 0"
* @hibernate.query name="SELECT_ACTIVE_INSTANCES" query="from HProcessInstance as i where i.process.id = :processId and i.state = :state"
+ * @hibernate.query name="DELETE_INSTANCES_BY_PROCESS" query="delete from HProcessInstance as p where p.process = :process"
*/
public class HProcessInstance extends HObject {
public static final String SELECT_ACTIVE_INSTANCES="SELECT_ACTIVE_INSTANCES";
@@ -84,7 +85,7 @@
}
/**
- * @hibernate.many-to-one column="INSTANTIATING_CORRELATOR"
+ * @hibernate.many-to-one column="INSTANTIATING_CORRELATOR" foreign-key="none"
*/
public HCorrelator getInstantiatingCorrelator() {
return _instantiatingCorrelator;
@@ -95,7 +96,7 @@
}
/**
- * @hibernate.many-to-one column="FAULT" cascade="delete" column="FAULT"
+ * @hibernate.many-to-one column="FAULT" column="FAULT" foreign-key="none"
*/
public HFaultData getFault() {
return _fault;
@@ -106,7 +107,7 @@
}
/**
- * @hibernate.many-to-one column="JACOB_STATE" cascade="delete"
+ * @hibernate.many-to-one column="JACOB_STATE" foreign-key="none"
*/
public HLargeData getJacobState() {
return _jacobState;
@@ -117,8 +118,8 @@
}
/**
- * @hibernate.bag lazy="true" inverse="true" cascade="delete"
- * @hibernate.collection-key column="IID"
+ * @hibernate.bag lazy="true" inverse="true"
+ * @hibernate.collection-key column="IID" foreign-key="none"
* @hibernate.collection-one-to-many class="org.apache.ode.daohib.bpel.hobj.HBpelEvent"
*/
public Collection<HBpelEvent> getEvents() {
@@ -130,8 +131,8 @@
}
/**
- * @hibernate.set lazy="true" inverse="true" cascade="delete"
- * @hibernate.collection-key column="PIID"
+ * @hibernate.set lazy="true" inverse="true"
+ * @hibernate.collection-key column="PIID" foreign-key="none"
* @hibernate.collection-one-to-many class="org.apache.ode.daohib.bpel.hobj.HCorrelatorSelector"
*/
public Set<HCorrelatorSelector> getCorrelatorSelectors() {
@@ -147,8 +148,8 @@
}
/**
- * @hibernate.set lazy="true" inverse="true" cascade="delete"
- * @hibernate.collection-key column="PIID"
+ * @hibernate.set lazy="true" inverse="true"
+ * @hibernate.collection-key column="PIID" foreign-key="none"
* @hibernate.collection-one-to-many class="org.apache.ode.daohib.bpel.hobj.HMessageExchange"
*/
public Set<HMessageExchange> getMessageExchanges() {
@@ -172,7 +173,7 @@
/**
*
- * @hibernate.many-to-one column="PROCESS_ID" lazy="false" outer-join="true"
+ * @hibernate.many-to-one column="PROCESS_ID" lazy="false" outer-join="true" foreign-key="none"
*/
public HProcess getProcess() {
return _process;
@@ -183,8 +184,8 @@
}
/**
- * @hibernate.bag lazy="true" inverse="true" cascade="delete"
- * @hibernate.collection-key column="PIID"
+ * @hibernate.bag lazy="true" inverse="true"
+ * @hibernate.collection-key column="PIID" foreign-key="none"
* @hibernate.collection-one-to-many class="org.apache.ode.daohib.bpel.hobj.HScope"
*/
public Collection<HScope> getScopes() {
@@ -196,8 +197,8 @@
}
/**
- * @hibernate.bag lazy="true" inverse="true" cascade="delete"
- * @hibernate.collection-key column="PIID"
+ * @hibernate.bag lazy="true" inverse="true"
+ * @hibernate.collection-key column="PIID" foreign-key="none"
* @hibernate.collection-one-to-many class="org.apache.ode.daohib.bpel.hobj.HCorrelationSet"
*/
public Collection<HCorrelationSet> getCorrelationSets() {
@@ -243,7 +244,7 @@
/**
* @hibernate.bag lazy="true" inverse="true" cascade="delete"
- * @hibernate.collection-key column="PIID"
+ * @hibernate.collection-key column="PIID" foreign-key="none"
* @hibernate.collection-one-to-many class="org.apache.ode.daohib.bpel.hobj.HActivityRecovery"
*/
public Collection<HActivityRecovery> getActivityRecoveries() {
Modified: ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HScope.java
URL: http://svn.apache.org/viewvc/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HScope.java?rev=762523&r1=762522&r2=762523&view=diff
==============================================================================
--- ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HScope.java (original)
+++ ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HScope.java Mon Apr 6 21:53:20 2009
@@ -25,8 +25,13 @@
* Hibernate table representing a BPEL scope instance.
*
* @hibernate.class table="BPEL_SCOPE"
+ * @hibernate.query name="DELETE_SCOPES_BY_INSTANCE" query="delete from HScope as s where s.instance = :instance"
+ * @hibernate.query name="DELETE_SCOPES_BY_PROCESS" query="delete from HScope as s where s.instance in (select i from HProcessInstance as i where i.process = :process)"
*/
public class HScope extends HObject {
+ public final static String DELETE_SCOPES_BY_INSTANCE = "DELETE_SCOPES_BY_INSTANCE";
+ public final static String DELETE_SCOPES_BY_PROCESS = "DELETE_SCOPES_BY_PROCESS";
+
/** Process instance to which this scope belongs. */
private HProcessInstance _instance;
@@ -55,9 +60,8 @@
/**
* @hibernate.set lazy="true" inverse="true" cascade="delete"
- * @hibernate.collection-key column="SCOPE_ID"
- * @hibernate.collection-one-to-many
- * class="org.apache.ode.daohib.bpel.hobj.HCorrelationSet"
+ * @hibernate.collection-key column="SCOPE_ID" foreign-key="none"
+ * @hibernate.collection-one-to-many class="org.apache.ode.daohib.bpel.hobj.HCorrelationSet"
*/
public Set<HCorrelationSet> getCorrelationSets() {
return _correlationSets;
@@ -70,7 +74,7 @@
/**
* Get the {@link HProcessInstance} to which this scope object belongs.
*
- * @hibernate.many-to-one column="PIID"
+ * @hibernate.many-to-one column="PIID" foreign-key="none"
*/
public HProcessInstance getInstance() {
return _instance;
@@ -84,7 +88,7 @@
/**
* Get the "parent" {@link HScope} of this scope.
*
- * @hibernate.many-to-one column="PARENT_SCOPE_ID"
+ * @hibernate.many-to-one column="PARENT_SCOPE_ID" foreign-key="none"
*/
public HScope getParentScope() {
return _parentScope;
@@ -126,9 +130,8 @@
*
* @return {@link Set}<{@link HXmlData}> with variable values
* @hibernate.set lazy="true" inverse="true" cascade="delete"
- * @hibernate.collection-key column="SCOPE_ID"
- * @hibernate.collection-one-to-many
- * class="org.apache.ode.daohib.bpel.hobj.HXmlData"
+ * @hibernate.collection-key column="SCOPE_ID" foreign-key="none"
+ * @hibernate.collection-one-to-many class="org.apache.ode.daohib.bpel.hobj.HXmlData"
*/
public Set<HXmlData> getVariables() {
return _variables;
@@ -144,9 +147,8 @@
*
* @return {@link Set}<{@link HPartnerLink}> with variable values
* @hibernate.set lazy="true" inverse="true" cascade="delete"
- * @hibernate.collection-key column="SCOPE"
- * @hibernate.collection-one-to-many
- * class="org.apache.ode.daohib.bpel.hobj.HPartnerLink"
+ * @hibernate.collection-key column="SCOPE" foreign-key="none"
+ * @hibernate.collection-one-to-many class="org.apache.ode.daohib.bpel.hobj.HPartnerLink"
*/
public Set<HPartnerLink> getPartnerLinks() {
return _partnerLinks;
Modified: ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HVariableProperty.java
URL: http://svn.apache.org/viewvc/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HVariableProperty.java?rev=762523&r1=762522&r2=762523&view=diff
==============================================================================
--- ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HVariableProperty.java (original)
+++ ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HVariableProperty.java Mon Apr 6 21:53:20 2009
@@ -23,8 +23,12 @@
* of process instances based on indexed lookup of property values.
*
* @hibernate.class table="VAR_PROPERTY"
+ * @hibernate.query name="DELETE_VARIABLE_PROPERITES_BY_PROCESS" query="delete from HVariableProperty as p where p.xmlData in(select x.id from HXmlData x where x.instance.process = :process)"
+ * @hibernate.query name="DELETE_VARIABLE_PROPERITES_BY_INSTANCE" query="delete from HVariableProperty as p where p.xmlData in(select x.id from HXmlData x where x.instance = :instance)"
*/
public class HVariableProperty extends HObject {
+ public final static String DELETE_VARIABLE_PROPERITES_BY_PROCESS = "DELETE_VARIABLE_PROPERITES_BY_PROCESS";
+ public final static String DELETE_VARIABLE_PROPERITES_BY_INSTANCE = "DELETE_VARIABLE_PROPERITES_BY_INSTANCE";
private String _propertyValue;
private String _propertyName;
@@ -44,7 +48,7 @@
}
/**
- * @hibernate.many-to-one column="XML_DATA_ID"
+ * @hibernate.many-to-one column="XML_DATA_ID" foreign-key="none"
*/
public HXmlData getXmlData() {
return _variable;
Modified: ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HXmlData.java
URL: http://svn.apache.org/viewvc/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HXmlData.java?rev=762523&r1=762522&r2=762523&view=diff
==============================================================================
--- ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HXmlData.java (original)
+++ ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HXmlData.java Mon Apr 6 21:53:20 2009
@@ -23,8 +23,12 @@
/**
* @hibernate.class table="BPEL_XML_DATA"
+ * @hibernate.query name="DELETE_XMLDATA_BY_PROCESS" query="delete from HXmlData as x where x.instance in(select i from HProcessInstance as i where i.process = :process)"
+ * @hibernate.query name="DELETE_XMLDATA_BY_INSTANCE" query="delete from HXmlData as x where x.instance = :instance"
*/
public class HXmlData extends HObject {
+ public static final String DELETE_XMLDATA_BY_PROCESS = "DELETE_XMLDATA_BY_PROCESS";
+ public static final String DELETE_XMLDATA_BY_INSTANCE = "DELETE_XMLDATA_BY_INSTANCE";
private boolean _simpleType;
private HLargeData _data;
@@ -39,7 +43,7 @@
}
/**
- * @hibernate.many-to-one column="LDATA_ID" cascade="delete"
+ * @hibernate.many-to-one column="LDATA_ID" cascade="delete" foreign-key="none"
*/
public HLargeData getData() {
return _data;
@@ -63,9 +67,8 @@
/**
* @hibernate.bag lazy="true" inverse="true" cascade="delete"
- * @hibernate.collection-key column="XML_DATA_ID"
- * @hibernate.collection-one-to-many
- * class="org.apache.ode.daohib.bpel.hobj.HVariableProperty"
+ * @hibernate.collection-key column="XML_DATA_ID" foreign-key="none"
+ * @hibernate.collection-one-to-many class="org.apache.ode.daohib.bpel.hobj.HVariableProperty"
*/
public Collection<HVariableProperty> getProperties() {
return _properties;
@@ -76,7 +79,7 @@
}
/**
- * @hibernate.many-to-one column="SCOPE_ID"
+ * @hibernate.many-to-one column="SCOPE_ID" foreign-key="none"
*/
public HScope getScope() {
return _scope;
@@ -91,7 +94,7 @@
}
/**
- * @hibernate.many-to-one column="PIID"
+ * @hibernate.many-to-one column="PIID" foreign-key="none"
*/
public HProcessInstance getInstance() {
return _instance;
Modified: ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionFactoryImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionFactoryImpl.java?rev=762523&r1=762522&r2=762523&view=diff
==============================================================================
--- ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionFactoryImpl.java (original)
+++ ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionFactoryImpl.java Mon Apr 6 21:53:20 2009
@@ -23,21 +23,19 @@
import org.apache.ode.bpel.dao.BpelDAOConnection;
import org.apache.ode.bpel.dao.BpelDAOConnectionFactoryJDBC;
import org.apache.openjpa.ee.ManagedRuntime;
+import org.apache.openjpa.util.GeneralException;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.sql.DataSource;
-import javax.transaction.HeuristicMixedException;
-import javax.transaction.HeuristicRollbackException;
-import javax.transaction.InvalidTransactionException;
import javax.transaction.NotSupportedException;
import javax.transaction.RollbackException;
import javax.transaction.Synchronization;
import javax.transaction.SystemException;
import javax.transaction.Transaction;
import javax.transaction.TransactionManager;
-import javax.transaction.xa.XAResource;
+
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
@@ -48,7 +46,7 @@
public class BPELDAOConnectionFactoryImpl implements BpelDAOConnectionFactoryJDBC {
static final Log __log = LogFactory.getLog(BPELDAOConnectionFactoryImpl.class);
- private EntityManagerFactory _emf;
+ protected EntityManagerFactory _emf;
private TransactionManager _tm;
private DataSource _ds;
private Object _dbdictionary;
@@ -80,12 +78,16 @@
HashMap propMap2 = new HashMap();
propMap2.put("openjpa.TransactionMode", "managed");
EntityManager em = _emf.createEntityManager(propMap2);
- BPELDAOConnectionImpl conn = new BPELDAOConnectionImpl(em);
+ BPELDAOConnectionImpl conn = createBPELDAOConnection(em);
_connections.set(conn);
return conn;
}
}
+ protected BPELDAOConnectionImpl createBPELDAOConnection(EntityManager em) {
+ return new BPELDAOConnectionImpl(em);
+ }
+
public void init(Properties properties) {
HashMap<String, Object> propMap = new HashMap<String,Object>();
@@ -137,6 +139,7 @@
private class TxMgrProvider implements ManagedRuntime {
public TxMgrProvider() {
}
+
public TransactionManager getTransactionManager() throws Exception {
return _tm;
}
@@ -151,6 +154,37 @@
public Object getTransactionKey() throws Exception, SystemException {
return _tm.getTransaction();
}
- }
+ public void doNonTransactionalWork(java.lang.Runnable runnable) throws NotSupportedException {
+ TransactionManager tm = null;
+ Transaction transaction = null;
+
+ try {
+ tm = getTransactionManager();
+ transaction = tm.suspend();
+ } catch (Exception e) {
+ NotSupportedException nse =
+ new NotSupportedException(e.getMessage());
+ nse.initCause(e);
+ throw nse;
+ }
+
+ runnable.run();
+
+ try {
+ tm.resume(transaction);
+ } catch (Exception e) {
+ try {
+ transaction.setRollbackOnly();
+ }
+ catch(SystemException se2) {
+ throw new GeneralException(se2);
+ }
+ NotSupportedException nse =
+ new NotSupportedException(e.getMessage());
+ nse.initCause(e);
+ throw nse;
+ }
+ }
+ }
}
Modified: ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionImpl.java?rev=762523&r1=762522&r2=762523&view=diff
==============================================================================
--- ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionImpl.java (original)
+++ ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionImpl.java Mon Apr 6 21:53:20 2009
@@ -27,6 +27,7 @@
import org.apache.ode.bpel.dao.*;
import org.apache.ode.bpel.evt.BpelEvent;
import org.apache.ode.bpel.evt.ScopeEvent;
+import org.apache.ode.bpel.iapi.ProcessConf.CLEANUP_CATEGORY;
import org.apache.ode.utils.ISO8601DateParser;
import org.apache.openjpa.persistence.OpenJPAPersistence;
import org.apache.openjpa.persistence.OpenJPAQuery;
@@ -42,10 +43,9 @@
* @author Matthieu Riou <mriou at apache dot org>
*/
public class BPELDAOConnectionImpl implements BpelDAOConnection {
-
static final Log __log = LogFactory.getLog(BPELDAOConnectionImpl.class);
- EntityManager _em;
+ protected EntityManager _em;
public BPELDAOConnectionImpl(EntityManager em) {
_em = em;
@@ -79,8 +79,9 @@
}
public void releaseMessageExchange(String mexid) {
- // TODO Auto-generated method stub
- }
+ MessageExchangeDAO dao = getMessageExchange(mexid);
+ dao.release(true);
+ }
public ProcessDAO createProcess(QName pid, QName type, String guid, long version) {
ProcessDAOImpl ret = new ProcessDAOImpl(pid,type,guid,version);
Modified: ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/CorrSetProperty.java
URL: http://svn.apache.org/viewvc/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/CorrSetProperty.java?rev=762523&r1=762522&r2=762523&view=diff
==============================================================================
--- ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/CorrSetProperty.java (original)
+++ ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/CorrSetProperty.java Mon Apr 6 21:53:20 2009
@@ -27,6 +27,8 @@
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
import javax.persistence.Table;
/**
@@ -34,16 +36,25 @@
*/
@Entity
@Table(name="ODE_CORSET_PROP")
+@NamedQueries({
+ @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_PROPERTY_IDS = "DELETE_CORSET_PROPERTIES_BY_PROPERTY_IDS";
@Id @Column(name="ID")
@GeneratedValue(strategy=GenerationType.AUTO)
+ @SuppressWarnings("unused")
private Long _id;
@Basic @Column(name="PROP_KEY")
private String propertyKey;
@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/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/CorrelationSetDAOImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/CorrelationSetDAOImpl.java?rev=762523&r1=762522&r2=762523&view=diff
==============================================================================
--- ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/CorrelationSetDAOImpl.java (original)
+++ ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/CorrelationSetDAOImpl.java Mon Apr 6 21:53:20 2009
@@ -46,10 +46,18 @@
@Entity
@Table(name="ODE_CORRELATION_SET")
@NamedQueries({
- @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"),
+ @NamedQuery(name=CorrelationSetDAOImpl.SELECT_ACTIVE_SETS, query="select c from CorrelationSetDAOImpl as c left join fetch c._scope where c._scope._processInstance._state = (:state)")
})
public class CorrelationSetDAOImpl implements CorrelationSetDAO {
+ 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";
+ public final static String SELECT_ACTIVE_SETS = "SELECT_ACTIVE_SETS";
@Id @Column(name="CORRELATION_SET_ID")
@GeneratedValue(strategy=GenerationType.AUTO)
@@ -59,7 +67,7 @@
@Basic @Column(name="CORRELATION_KEY")
private String _correlationKey;
- @OneToMany(targetEntity=CorrSetProperty.class,mappedBy="_corrSet",fetch=FetchType.LAZY,cascade={CascadeType.ALL})
+ @OneToMany(targetEntity=CorrSetProperty.class,mappedBy="_corrSet",fetch=FetchType.LAZY,cascade={CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
private Collection<CorrSetProperty> _props = new ArrayList<CorrSetProperty>();
@ManyToOne(fetch=FetchType.LAZY,cascade={CascadeType.PERSIST}) @Column(name="SCOPE_ID")
private ScopeDAOImpl _scope;
Modified: ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/CorrelatorDAOImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/CorrelatorDAOImpl.java?rev=762523&r1=762522&r2=762523&view=diff
==============================================================================
--- ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/CorrelatorDAOImpl.java (original)
+++ ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/CorrelatorDAOImpl.java Mon Apr 6 21:53:20 2009
@@ -38,18 +38,20 @@
"FROM MessageRouteDAOImpl as route " +
"WHERE route._correlationKey = :ckey " +
"and route._correlator._process._processType = :ptype " +
- "and route._correlator._correlatorKey = :corrkey")
- })
+ "and route._correlator._correlatorKey = :corrkey"),
+ @NamedQuery(name=CorrelatorDAOImpl.DELETE_CORRELATORS_BY_PROCESS, query="delete from CorrelatorDAOImpl as c where c._process = :process")
+})
public class CorrelatorDAOImpl extends OpenJPADAO implements CorrelatorDAO {
+ public final static String DELETE_CORRELATORS_BY_PROCESS = "DELETE_CORRELATORS_BY_PROCESS";
@Id @Column(name="CORRELATOR_ID")
@GeneratedValue(strategy=GenerationType.AUTO)
private Long _correlatorId;
@Basic @Column(name="CORRELATOR_KEY")
private String _correlatorKey;
- @OneToMany(targetEntity=MessageRouteDAOImpl.class,mappedBy="_correlator",fetch=FetchType.EAGER,cascade={CascadeType.ALL})
+ @OneToMany(targetEntity=MessageRouteDAOImpl.class,mappedBy="_correlator",fetch=FetchType.EAGER,cascade={CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
private Collection<MessageRouteDAOImpl> _routes = new ArrayList<MessageRouteDAOImpl>();
- @OneToMany(targetEntity=MessageExchangeDAOImpl.class,mappedBy="_correlator",fetch=FetchType.LAZY,cascade={CascadeType.ALL})
+ @OneToMany(targetEntity=MessageExchangeDAOImpl.class,mappedBy="_correlator",fetch=FetchType.LAZY,cascade={CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
private Collection<MessageExchangeDAOImpl> _exchanges = new ArrayList<MessageExchangeDAOImpl>();
@ManyToOne(fetch= FetchType.LAZY,cascade={CascadeType.PERSIST}) @Column(name="PROC_ID")
private ProcessDAOImpl _process;
Modified: ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/EventDAOImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/EventDAOImpl.java?rev=762523&r1=762522&r2=762523&view=diff
==============================================================================
--- ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/EventDAOImpl.java (original)
+++ ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/EventDAOImpl.java Mon Apr 6 21:53:20 2009
@@ -31,6 +31,8 @@
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
import javax.persistence.Table;
import java.sql.Timestamp;
@@ -39,7 +41,15 @@
*/
@Entity
@Table(name="ODE_EVENT")
+@NamedQueries({
+ @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 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")
@GeneratedValue(strategy= GenerationType.AUTO)
Modified: ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/FaultDAOImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/FaultDAOImpl.java?rev=762523&r1=762522&r2=762523&view=diff
==============================================================================
--- ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/FaultDAOImpl.java (original)
+++ ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/FaultDAOImpl.java Mon Apr 6 21:53:20 2009
@@ -30,13 +30,18 @@
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Lob;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.xml.namespace.QName;
-
@Entity
@Table(name="ODE_FAULT")
+@NamedQueries({
+ @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_IDS = "DELETE_FAULTS_BY_IDS";
@Id @Column(name="FAULT_ID")
@GeneratedValue(strategy=GenerationType.AUTO)
Modified: ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageDAOImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageDAOImpl.java?rev=762523&r1=762522&r2=762523&view=diff
==============================================================================
--- ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageDAOImpl.java (original)
+++ ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageDAOImpl.java Mon Apr 6 21:53:20 2009
@@ -19,7 +19,6 @@
package org.apache.ode.dao.jpa;
-
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
@@ -27,6 +26,8 @@
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Lob;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Transient;
import javax.xml.namespace.QName;
@@ -35,14 +36,22 @@
import org.apache.ode.utils.DOMUtils;
import org.w3c.dom.Element;
-
@Entity
@Table(name="ODE_MESSAGE")
+@NamedQueries({
+ @NamedQuery(name=MessageDAOImpl.SELECT_REQUEST_MESSAGE_IDS_BY_PROCESS, query="select x._request._id from MessageExchangeDAOImpl as x where x._process = :process"),
+ @NamedQuery(name=MessageDAOImpl.SELECT_RESPONSE_MESSAGE_IDS_BY_PROCESS, query="select x._response._id from MessageExchangeDAOImpl as x where x._process = :process"),
+ @NamedQuery(name=MessageDAOImpl.DELETE_MESSAGES_BY_IDS, query="delete from MessageDAOImpl as m where m._id in (:ids)")
+})
public class MessageDAOImpl implements MessageDAO {
+ public final static String SELECT_REQUEST_MESSAGE_IDS_BY_PROCESS = "SELECT_REQUEST_MESSAGE_IDS_BY_PROCESS";
+ public final static String SELECT_RESPONSE_MESSAGE_IDS_BY_PROCESS = "SELECT_RESPONSE_MESSAGE_IDS_BY_PROCESS";
+ public final static String DELETE_MESSAGES_BY_IDS = "DELETE_MESSAGES_BY_IDS";
@Id @Column(name="MESSAGE_ID")
@GeneratedValue(strategy=GenerationType.AUTO)
- private Long _id;
+ @SuppressWarnings("unused")
+ Long _id;
@Basic @Column(name="TYPE")
private String _type;
@Lob @Column(name="DATA")
@@ -55,8 +64,8 @@
private Element _headerElement;
public MessageDAOImpl() {
-
}
+
public MessageDAOImpl(QName type, MessageExchangeDAOImpl me) {
_type = type.toString();
}
Modified: ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageExchangeDAOImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageExchangeDAOImpl.java?rev=762523&r1=762522&r2=762523&view=diff
==============================================================================
--- ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageExchangeDAOImpl.java (original)
+++ ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageExchangeDAOImpl.java Mon Apr 6 21:53:20 2009
@@ -34,12 +34,16 @@
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Transient;
import javax.xml.namespace.QName;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.apache.ode.bpel.common.CorrelationKey;
import org.apache.ode.bpel.dao.MessageDAO;
import org.apache.ode.bpel.dao.MessageExchangeDAO;
@@ -56,7 +60,15 @@
@Entity
@Table(name="ODE_MESSAGE_EXCHANGE")
-public class MessageExchangeDAOImpl implements MessageExchangeDAO {
+@NamedQueries({
+ @NamedQuery(name=MessageExchangeDAOImpl.DELETE_MEXS_BY_PROCESS, query="delete from MessageExchangeDAOImpl as m where m._process = :process"),
+ @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 SELECT_MEX_IDS_BY_PROCESS = "SELECT_MEX_IDS_BY_PROCESS";
@Id @Column(name="MESSAGE_EXCHANGE_ID")
private String _id;
@@ -100,7 +112,7 @@
@Basic @Column(name="ACK_TYPE")
private String _ackType;
- @OneToMany(targetEntity=MexProperty.class,mappedBy="_mex",fetch=FetchType.EAGER,cascade={CascadeType.ALL})
+ @OneToMany(targetEntity=MexProperty.class,mappedBy="_mex",fetch=FetchType.EAGER,cascade={CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
private Collection<MexProperty> _props = new ArrayList<MexProperty>();
@ManyToOne(fetch=FetchType.LAZY,cascade={CascadeType.PERSIST}) @Column(name="INSTANCE")
private ProcessInstanceDAOImpl _processInst;
@@ -108,9 +120,9 @@
private PartnerLinkDAOImpl _partnerLink;
@ManyToOne(fetch=FetchType.LAZY,cascade={CascadeType.PERSIST}) @Column(name="PROCESS")
private ProcessDAOImpl _process;
- @OneToOne(fetch=FetchType.LAZY,cascade={CascadeType.PERSIST}) @Column(name="REQUEST")
+ @OneToOne(fetch=FetchType.LAZY,cascade={CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH}) @Column(name="REQUEST")
private MessageDAOImpl _request;
- @OneToOne(fetch=FetchType.LAZY,cascade={CascadeType.PERSIST}) @Column(name="RESPONSE")
+ @OneToOne(fetch=FetchType.LAZY,cascade={CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH}) @Column(name="RESPONSE")
private MessageDAOImpl _response;
@ManyToOne(fetch= FetchType.LAZY,cascade={CascadeType.PERSIST}) @Column(name="CORRELATOR")
@@ -351,8 +363,20 @@
}
- public void release() {
- // no-op for now, could be used to do some cleanup
+ public void release(boolean doClean) {
+ if( __log.isDebugEnabled() ) __log.debug("INSTANCE CLEANUP(MEX, doClean=" + doClean + ")");
+ if( doClean ) {
+ deleteMessages();
+ }
+ }
+
+ public void deleteMessages() {
+ if( __log.isDebugEnabled() ) __log.debug("INSTANCE CLEANUP(MEX:" + _id + "(request:" + _request + ", response:" + _response);
+
+ getEM().remove(_request);
+ getEM().remove(_response);
+ getEM().createNamedQuery(MexProperty.DELETE_MEX_PROPERTIES_BY_MEX_ID).setParameter("mexId", _id).executeUpdate();
+ getEM().remove(this); // This deletes MexProperty, REQUEST MessageDAO, RESPONSE MessageDAO
}
public CorrelatorDAOImpl getCorrelator() {
Modified: ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageRouteDAOImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageRouteDAOImpl.java?rev=762523&r1=762522&r2=762523&view=diff
==============================================================================
--- ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageRouteDAOImpl.java (original)
+++ ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageRouteDAOImpl.java Mon Apr 6 21:53:20 2009
@@ -32,11 +32,19 @@
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
import javax.persistence.Table;
@Entity
@Table(name="ODE_MESSAGE_ROUTE")
+@NamedQueries ({
+ @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_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)
@@ -48,6 +56,9 @@
@Basic @Column(name="CORRELATION_KEY")
private String _correlationKey;
+ @Basic @Column(name="PROCESS_INSTANCE_ID", insertable=false, updatable=false, nullable=true)
+ @SuppressWarnings("unused")
+ 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")
Modified: ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MexProperty.java
URL: http://svn.apache.org/viewvc/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MexProperty.java?rev=762523&r1=762522&r2=762523&view=diff
==============================================================================
--- ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MexProperty.java (original)
+++ ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MexProperty.java Mon Apr 6 21:53:20 2009
@@ -28,6 +28,8 @@
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
import javax.persistence.Table;
/**
@@ -35,7 +37,13 @@
*/
@Entity
@Table(name="ODE_MEX_PROP")
+@NamedQueries({
+ @NamedQuery(name=MexProperty.DELETE_MEX_PROPERTIES_BY_MEX_IDS, query="delete from MexProperty as p where p._mexId in (:mexIds)"),
+ @NamedQuery(name=MexProperty.DELETE_MEX_PROPERTIES_BY_MEX_ID, query="delete from MexProperty as p where p._mexId = :mexId")
+})
public class MexProperty {
+ public final static String DELETE_MEX_PROPERTIES_BY_MEX_IDS = "DELETE_MEX_PROPERTIES_BY_MEX_IDS";
+ public final static String DELETE_MEX_PROPERTIES_BY_MEX_ID = "DELETE_MEX_PROPERTIES_BY_MEX_ID";
@Id @Column(name="ID")
@GeneratedValue(strategy=GenerationType.AUTO)
@@ -44,6 +52,10 @@
private String propertyKey;
@Basic @Column(name="PROP_VALUE", length=2000)
private String propertyValue;
+
+ @Basic @Column(name="MEX_ID", insertable=false, updatable=false, nullable=true)
+ @SuppressWarnings("unused")
+ private String _mexId;
@ManyToOne(fetch= FetchType.LAZY,cascade={CascadeType.PERSIST})
@Column(name="MEX_ID")
private MessageExchangeDAOImpl _mex;
Modified: ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/OpenJPADAO.java
URL: http://svn.apache.org/viewvc/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/OpenJPADAO.java?rev=762523&r1=762522&r2=762523&view=diff
==============================================================================
--- ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/OpenJPADAO.java (original)
+++ ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/OpenJPADAO.java Mon Apr 6 21:53:20 2009
@@ -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,35 @@
* @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) {
+ // don't sweat, a collection result from a query in openjpa is a lazy-loading list, instead of fully loaded list like in Hibernate
+ // using iterator on the result list depends on the nature of the query, if a scrollable result set is supported by
+ // the database's jdbc, iterating on the list becomes most efficient
+ if( query instanceof OpenJPAQuery ) {
+ OpenJPAQuery openJpaQuery = (OpenJPAQuery)query;
+ int batchSize = openJpaQuery.getFetchPlan().getFetchBatchSize();
+ if( __log.isDebugEnabled() ) __log.debug("BATCH fetchBatchSize = " + batchSize);
+ if( batchSize < 1 ) {
+ if( __log.isWarnEnabled() ) __log.warn("BATCH size returned " + batchSize + ", overriding to 10.");
+ batchSize = 10;
+ }
+ List<T> batch = new ArrayList<T>();
+ while( ids.hasNext() ) {
+ for( int i = 0; i < batchSize && ids.hasNext(); i++ ) {
+ batch.add(ids.next());
+ }
+ if( __log.isDebugEnabled() ) __log.debug("BATCH updating " + batch.size() + " objects.");
+ query.setParameter(parameterName, batch);
+ query.executeUpdate();
+ batch.clear();
+ }
+ }
}
}
Modified: ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/PartnerLinkDAOImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/PartnerLinkDAOImpl.java?rev=762523&r1=762522&r2=762523&view=diff
==============================================================================
--- ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/PartnerLinkDAOImpl.java (original)
+++ ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/PartnerLinkDAOImpl.java Mon Apr 6 21:53:20 2009
@@ -34,16 +34,23 @@
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Transient;
import javax.xml.namespace.QName;
@Entity
@Table(name="ODE_PARTNER_LINK")
+@NamedQueries({
+ @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_SCOPE_IDS = "DELETE_PARTNER_LINKS_BY_SCOPE_IDS";
@Id @Column(name="PARTNER_LINK_ID")
@GeneratedValue(strategy=GenerationType.AUTO)
+ @SuppressWarnings("unused")
private Long _id;
@Lob @Column(name="MY_EPR")
private String _myEPR;
@@ -68,7 +75,11 @@
@Basic @Column(name="PARTNER_SESSION_ID")
private String _partnerSessionId;
+ @Basic @Column(name="SCOPE_ID", nullable=true, insertable=false, updatable=false)
+ @SuppressWarnings("unused")
+ private Long _scopeId;
@ManyToOne(fetch= FetchType.LAZY,cascade={CascadeType.PERSIST}) @Column(name="SCOPE_ID")
+ @SuppressWarnings("unused")
private ScopeDAOImpl _scope;
public PartnerLinkDAOImpl() {}
Modified: ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessDAOImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessDAOImpl.java?rev=762523&r1=762522&r2=762523&view=diff
==============================================================================
--- ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessDAOImpl.java (original)
+++ ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessDAOImpl.java Mon Apr 6 21:53:20 2009
@@ -19,6 +19,8 @@
package org.apache.ode.dao.jpa;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.apache.ode.bpel.common.CorrelationKey;
import org.apache.ode.bpel.dao.CorrelatorDAO;
import org.apache.ode.bpel.dao.ProcessDAO;
@@ -45,6 +47,7 @@
" WHERE c._correlatorKey = :ckey AND c._process = :process")
})
public class ProcessDAOImpl extends OpenJPADAO implements ProcessDAO {
+ private static final Log __log = LogFactory.getLog(ProcessDAOImpl.class);
@Id @Column(name="ID")
@GeneratedValue(strategy= GenerationType.AUTO)
@@ -119,7 +122,64 @@
}
public void delete() {
- getEM().remove(this);
+ if(__log.isDebugEnabled()) __log.debug("Cleaning up process data.");
+
+ getEM().flush();
+ deleteEvents();
+ deleteCorrelations();
+ deleteMessages();
+ deleteVariables();
+ deleteProcessInstances();
+ getEM().remove(this); // This deletes CorrelatorDAO
+ getEM().flush();
+ }
+
+ @SuppressWarnings("unchecked")
+ private void deleteProcessInstances() {
+ 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() {
+ 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");
+
+// 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() {
+ Collection eventIds = getEM().createNamedQuery(MessageDAOImpl.SELECT_REQUEST_MESSAGE_IDS_BY_PROCESS).setParameter("process", this).getResultList();
+ batchUpdateByIds(eventIds.iterator(), getEM().createNamedQuery(MessageDAOImpl.DELETE_MESSAGES_BY_IDS), "ids");
+ eventIds = getEM().createNamedQuery(MessageDAOImpl.SELECT_RESPONSE_MESSAGE_IDS_BY_PROCESS).setParameter("process", this).getResultList();
+ batchUpdateByIds(eventIds.iterator(), getEM().createNamedQuery(MessageDAOImpl.DELETE_MESSAGES_BY_IDS), "ids");
+ 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();
+ 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() {
+ 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() {
+ 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() {
Modified: ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessInstanceDAOImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessInstanceDAOImpl.java?rev=762523&r1=762522&r2=762523&view=diff
==============================================================================
--- ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessInstanceDAOImpl.java (original)
+++ ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessInstanceDAOImpl.java Mon Apr 6 21:53:20 2009
@@ -24,6 +24,7 @@
import org.apache.ode.bpel.common.ProcessState;
import org.apache.ode.bpel.dao.*;
import org.apache.ode.bpel.evt.ProcessInstanceEvent;
+import org.apache.ode.bpel.iapi.ProcessConf.CLEANUP_CATEGORY;
import org.w3c.dom.Element;
import javax.persistence.*;
@@ -72,13 +73,17 @@
@Basic @Column(name="EXEC_STATE_COUNTER")
private int _execStateCounter;
- @OneToOne(fetch=FetchType.LAZY,cascade={CascadeType.ALL}) @Column(name="ROOT_SCOPE_ID")
- private ScopeDAOImpl _rootScope;
- @OneToMany(targetEntity=ScopeDAOImpl.class,mappedBy="_processInstance",fetch=FetchType.LAZY,cascade={CascadeType.ALL})
- private Collection<ScopeDAO> _scopes = new ArrayList<ScopeDAO>();
+ @OneToOne(fetch=FetchType.LAZY,cascade={CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH}) @Column(name="ROOT_SCOPE_ID")
+ private ScopeDAOImpl _rootScope;
+ @OneToMany(targetEntity=ScopeDAOImpl.class,mappedBy="_processInstance",fetch=FetchType.LAZY,cascade={CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
+ 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>();
- @OneToOne(fetch=FetchType.LAZY,cascade={CascadeType.ALL}) @Column(name="FAULT_ID")
+
+ @Basic @Column(name="FAULT_ID", insertable=false, updatable=false, nullable=true)
+ @SuppressWarnings("unused")
+ 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")
private ProcessDAOImpl _process;
@@ -118,13 +123,78 @@
return getEM().createNamedQuery(CorrelationSetDAOImpl.SELECT_CORRELATION_SETS_BY_INSTANCES).setParameter("instances", instances).getResultList();
}
- public void delete() {
- if (getEM() != null ) {
- getEM().remove(this);
- }
- }
+ public boolean delete(Set<CLEANUP_CATEGORY> cleanupCategories) {
+ if(__log.isDebugEnabled()) __log.debug("Cleaning up instance Data with " + cleanupCategories);
+
+ boolean instanceDeleted = false;
+
+ // 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();
+ }
+ if (cleanupCategories.contains(CLEANUP_CATEGORY.CORRELATIONS)) {
+ deleteCorrelations();
+ }
+ if( cleanupCategories.contains(CLEANUP_CATEGORY.MESSAGES) ) {
+ deleteMessageRoutes();
+ }
+ if (cleanupCategories.contains(CLEANUP_CATEGORY.VARIABLES)) {
+ deleteVariables();
+ }
+ if (cleanupCategories.contains(CLEANUP_CATEGORY.INSTANCE)) {
+ deleteInstance();
+ instanceDeleted = true;
+ }
+
+ getEM().flush();
+ }
+
+ return instanceDeleted;
+ }
+
+ private void deleteInstance() {
+ if( _fault != null ) {
+ getEM().remove(_fault);
+ }
+ getEM().remove(this); // This deletes ActivityRecoveryDAO
+ }
+
+ @SuppressWarnings("unchecked")
+ private void deleteVariables() {
+ 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");
- public void deleteActivityRecovery(String channel) {
+ 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() {
+ 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() {
+ getEM().createNamedQuery(EventDAOImpl.DELETE_EVENTS_BY_INSTANCE).setParameter ("instance", this).executeUpdate();
+ }
+
+ public void deleteActivityRecovery(String channel) {
ActivityRecoveryDAOImpl toRemove = null;
for (ActivityRecoveryDAO _recovery : _recoveries) {
ActivityRecoveryDAOImpl arElement = (ActivityRecoveryDAOImpl) _recovery;
Modified: ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ScopeDAOImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ScopeDAOImpl.java?rev=762523&r1=762522&r2=762523&view=diff
==============================================================================
--- ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ScopeDAOImpl.java (original)
+++ ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ScopeDAOImpl.java Mon Apr 6 21:53:20 2009
@@ -48,9 +48,15 @@
@Entity
@Table(name="ODE_SCOPE")
@NamedQueries({
- @NamedQuery(name="ScopeEvents", query="SELECT se FROM EventDAOImpl as se WHERE se._scopeId = :sid")
- })
+ @NamedQuery(name="ScopeEvents", query="SELECT se FROM EventDAOImpl as se WHERE se._scopeId = :sid"),
+ @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 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)
@@ -67,14 +73,14 @@
@Column(name="PARENT_SCOPE_ID")
private ScopeDAOImpl _parentScope;
- @OneToMany(targetEntity=ScopeDAOImpl.class,mappedBy="_parentScope",fetch=FetchType.LAZY,cascade={CascadeType.ALL})
+ @OneToMany(targetEntity=ScopeDAOImpl.class,mappedBy="_parentScope",fetch=FetchType.LAZY,cascade={CascadeType.MERGE, CascadeType.REFRESH, CascadeType.PERSIST})
private Collection<ScopeDAO> _childScopes = new ArrayList<ScopeDAO>();
@OneToMany(targetEntity=CorrelationSetDAOImpl.class,mappedBy="_scope",fetch=FetchType.LAZY,cascade={CascadeType.ALL})
private Collection<CorrelationSetDAO> _correlationSets = new ArrayList<CorrelationSetDAO>();
- @OneToMany(targetEntity=PartnerLinkDAOImpl.class,mappedBy="_scope",fetch= FetchType.LAZY,cascade={CascadeType.ALL})
+ @OneToMany(targetEntity=PartnerLinkDAOImpl.class,mappedBy="_scope",fetch= FetchType.LAZY,cascade={CascadeType.MERGE, CascadeType.REFRESH, CascadeType.PERSIST})
private Collection<PartnerLinkDAO> _partnerLinks = new ArrayList<PartnerLinkDAO>();
- @OneToMany(targetEntity=XmlDataDAOImpl.class,mappedBy="_scope",fetch=FetchType.LAZY,cascade={CascadeType.ALL})
- private Collection<XmlDataDAO> _variables = new ArrayList<XmlDataDAO>();
+ @OneToMany(targetEntity=XmlDataDAOImpl.class,mappedBy="_scope",fetch=FetchType.LAZY,cascade={CascadeType.MERGE, CascadeType.REFRESH, CascadeType.PERSIST})
+ private Collection<XmlDataDAO> _variables = new ArrayList<XmlDataDAO>();
@ManyToOne(fetch=FetchType.LAZY,cascade={CascadeType.PERSIST}) @Column(name="PROCESS_INSTANCE_ID")
private ProcessInstanceDAOImpl _processInstance;
Modified: ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/XmlDataDAOImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/XmlDataDAOImpl.java?rev=762523&r1=762522&r2=762523&view=diff
==============================================================================
--- ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/XmlDataDAOImpl.java (original)
+++ ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/XmlDataDAOImpl.java Mon Apr 6 21:53:20 2009
@@ -37,6 +37,8 @@
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Transient;
@@ -48,10 +50,19 @@
*/
@Entity
@Table(name="ODE_XML_DATA")
+@NamedQueries({
+ @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 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")
+ @Id @Column(name="XML_DATA_ID")
@GeneratedValue(strategy=GenerationType.AUTO)
+ @SuppressWarnings("unused")
private Long _id;
@Lob @Column(name="DATA")
private String _data;
@@ -65,6 +76,9 @@
@OneToMany(targetEntity=XmlDataProperty.class,mappedBy="_xmlData",fetch=FetchType.EAGER,cascade={CascadeType.ALL})
private Collection<XmlDataProperty> _props = new ArrayList<XmlDataProperty>();
+ @Basic @Column(name="SCOPE_ID", nullable=true, insertable=false, updatable=false)
+ @SuppressWarnings("unused")
+ private Long _scopeId;
@ManyToOne(fetch=FetchType.LAZY,cascade={CascadeType.PERSIST}) @Column(name="SCOPE_ID")
private ScopeDAOImpl _scope;
Modified: ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/XmlDataProperty.java
URL: http://svn.apache.org/viewvc/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/XmlDataProperty.java?rev=762523&r1=762522&r2=762523&view=diff
==============================================================================
--- ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/XmlDataProperty.java (original)
+++ ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/XmlDataProperty.java Mon Apr 6 21:53:20 2009
@@ -28,6 +28,8 @@
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
import javax.persistence.Table;
/**
@@ -35,17 +37,27 @@
*/
@Entity
@Table(name="ODE_XML_DATA_PROP")
+@NamedQueries({
+ @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_XML_DATA_IDS = "DELETE_XML_DATA_PROPERTIES_BY_XML_DATA_IDS";
@Id @Column(name="ID")
@GeneratedValue(strategy= GenerationType.AUTO)
+ @SuppressWarnings("unused")
private Long _id;
@Basic @Column(name="PROP_KEY")
private String propertyKey;
@Basic @Column(name="PROP_VALUE")
private String propertyValue;
+
+ @Basic @Column(name="XML_DATA_ID", insertable=false, updatable=false, nullable=true)
+ @SuppressWarnings("unused")
+ private Long _xmlDataId;
@ManyToOne(fetch= FetchType.LAZY,cascade={CascadeType.PERSIST})
@Column(name="XML_DATA_ID")
+ @SuppressWarnings("unused")
private XmlDataDAOImpl _xmlData;
public XmlDataProperty() {
Modified: ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java?rev=762523&r1=762522&r2=762523&view=diff
==============================================================================
--- ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java (original)
+++ ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java Mon Apr 6 21:53:20 2009
@@ -61,6 +61,7 @@
import org.apache.ode.bpel.iapi.MessageExchange.FailureType;
import org.apache.ode.bpel.iapi.MessageExchange.MessageExchangePattern;
import org.apache.ode.bpel.iapi.MessageExchange.Status;
+import org.apache.ode.bpel.iapi.ProcessConf.CLEANUP_CATEGORY;
import org.apache.ode.bpel.memdao.ProcessInstanceDaoImpl;
import org.apache.ode.bpel.rapi.CorrelationSet;
import org.apache.ode.bpel.rapi.FaultInfo;
@@ -115,6 +116,12 @@
/** Five second maximum for continuous execution. */
private long _maxReductionTimeMs = 2000000;
+
+ /**
+ * This flag tells if the instance associated with the contextImpl instance is cleaned up by the
+ * instance cleanup process
+ */
+ private boolean _instanceCleanedUp = false;
public BpelRuntimeContextImpl(BpelInstanceWorker instanceWorker, ProcessInstanceDAO instanceDAO, OdeRTInstance rti) {
_instanceWorker = instanceWorker;
@@ -190,6 +197,8 @@
sendEvent(new ProcessCompletionEvent(faultData.getFaultName()));
_dao.finishCompletion();
+
+ _instanceCleanedUp = _dao.delete(_bpelProcess.getCleanupCategories(false));
}
public void completedOk() {
@@ -206,6 +215,8 @@
sendEvent(new ProcessCompletionEvent(null));
_dao.finishCompletion();
+
+ _instanceCleanedUp = _dao.delete(_bpelProcess.getCleanupCategories(true));
}
public Long createScopeInstance(Long parentScopeId, String name, int modelId) {
@@ -431,7 +442,13 @@
Status previousStatus = myrolemex.getStatus();
myrolemex.setStatus(Status.ACK);
myrolemex.setAckType(ackType);
- _bpelProcess.onMyRoleMexAck(myrolemex, previousStatus);
+ try {
+ _bpelProcess.onMyRoleMexAck(myrolemex, previousStatus);
+ } finally {
+ if (myrolemex.getPipedMessageExchangeId() != null) {
+ myrolemex.release(_bpelProcess.isCleanupCategoryEnabled(myrolemex.getAckType() == MessageExchange.AckType.RESPONSE, CLEANUP_CATEGORY.MESSAGES));
+ }
+ }
sendEvent(evt);
}
@@ -541,6 +558,12 @@
}
_bpelProcess.invokePartner(mexDao);
+ if (mexDao.getPattern().equals(MessageExchangePattern.REQUEST_ONLY)) {
+ mexDao.setStatus(MessageExchange.Status.ASYNC);
+ // This mex can now be released
+ boolean succeeded = mexDao.getAckType() != MessageExchange.AckType.FAILURE && mexDao.getAckType() != MessageExchange.AckType.FAULT;
+ mexDao.release(_bpelProcess.isCleanupCategoryEnabled(succeeded, CLEANUP_CATEGORY.MESSAGES));
+ }
// In case a response/fault was available right away, which will happen for BLOCKING/TRANSACTED invocations,
// we need to inject a message on the response channel, so that the process continues.
switch (mexDao.getStatus()) {
@@ -593,12 +616,14 @@
canReduce = _rti.execute();
}
- _dao.setLastActiveTime(new Date());
+ if( !_instanceCleanedUp ) {
+ _dao.setLastActiveTime(new Date());
+ }
if (!ProcessState.isFinished(_dao.getState())) {
if (_forceRollback) {
rollbackState();
} else {
- saveState();
+ saveState();
}
if (ProcessState.canExecute(_dao.getState()) && canReduce) {
@@ -880,9 +905,9 @@
return response;
}
- public void releasePartnerMex(String mexId) {
+ public void releasePartnerMex(String mexId, boolean instanceSucceeded) {
MessageExchangeDAO dao = _dao.getConnection().getMessageExchange(mexId);
- dao.release();
+ dao.release(_bpelProcess.isCleanupCategoryEnabled(instanceSucceeded, CLEANUP_CATEGORY.MESSAGES) );
}
Modified: ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java?rev=762523&r1=762522&r2=762523&view=diff
==============================================================================
--- ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java (original)
+++ ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java Mon Apr 6 21:53:20 2009
@@ -425,6 +425,10 @@
}
}
+ public void cleanupProcess(QName pid) throws BpelEngineException {
+ deleteProcessDAO(pid);
+ }
+
/**
* Register a global message exchange interceptor.
*
Modified: ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/MessageExchangeImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/MessageExchangeImpl.java?rev=762523&r1=762522&r2=762523&view=diff
==============================================================================
--- ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/MessageExchangeImpl.java (original)
+++ ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/MessageExchangeImpl.java Mon Apr 6 21:53:20 2009
@@ -146,6 +146,10 @@
}
void load(MessageExchangeDAO dao) {
+ if(__log.isDebugEnabled()) __log.debug("INMEM MessageExchange loading.");
+
+ _epr = _contexts.eprContext.resolveEndpointReference(dao.getEPR());
+
_timeout = dao.getTimeout();
_iid = dao.getInstance() != null ? dao.getInstance().getInstanceId() : null;
_ackType = dao.getAckType();
@@ -300,7 +304,9 @@
return _epr = doInTX(new InDbAction<EndpointReference>() {
public EndpointReference call(MessageExchangeDAO mexdao) {
- Element eprdao = mexdao.getEPR();
+ Element eprdao = null;
+ // mexdao is already release for non-callback myrole
+ if( mexdao != null ) eprdao = mexdao.getEPR();
return _epr = eprdao == null ? null : _contexts.eprContext.resolveEndpointReference(mexdao.getEPR());
}
@@ -351,6 +357,7 @@
public void release() {
__log.debug("Releasing mex " + getMessageExchangeId());
_changes.add(Change.RELEASE);
+ // for a one-way, message exchanges are always deleted
_process.releaseMessageExchange(getMessageExchangeId());
}
Modified: ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeImpl.java?rev=762523&r1=762522&r2=762523&view=diff
==============================================================================
--- ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeImpl.java (original)
+++ ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeImpl.java Mon Apr 6 21:53:20 2009
@@ -14,6 +14,7 @@
import org.apache.ode.bpel.iapi.BpelEngineException;
import org.apache.ode.bpel.iapi.Message;
import org.apache.ode.bpel.iapi.MyRoleMessageExchange;
+import org.apache.ode.bpel.iapi.ProcessConf.CLEANUP_CATEGORY;
import org.apache.ode.bpel.rapi.PartnerLinkModel;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
@@ -110,7 +111,13 @@
}
-
+ public void release(boolean instanceSucceeded) {
+ if( _process.isCleanupCategoryEnabled(instanceSucceeded, CLEANUP_CATEGORY.MESSAGES) ) {
+ if(__log.isDebugEnabled()) __log.debug("Releasing mex " + getMessageExchangeId());
+ _process.releaseMessageExchange(getMessageExchangeId());
+ }
+ }
+
protected MessageExchangeDAO doInvoke() {
if (getStatus() != Status.NEW) throw new IllegalStateException("Invalid state: " + getStatus());
request();
Modified: ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/ODEProcess.java
URL: http://svn.apache.org/viewvc/ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/ODEProcess.java?rev=762523&r1=762522&r2=762523&view=diff
==============================================================================
--- ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/ODEProcess.java (original)
+++ ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/ODEProcess.java Mon Apr 6 21:53:20 2009
@@ -64,6 +64,7 @@
import org.apache.ode.bpel.iapi.MessageExchange.MessageExchangePattern;
import org.apache.ode.bpel.iapi.MessageExchange.Status;
import org.apache.ode.bpel.iapi.MyRoleMessageExchange.CorrelationStatus;
+import org.apache.ode.bpel.iapi.ProcessConf.CLEANUP_CATEGORY;
import org.apache.ode.bpel.iapi.Scheduler.JobInfo;
import org.apache.ode.bpel.iapi.Scheduler.JobProcessorException;
import org.apache.ode.bpel.intercept.FailMessageExchangeException;
@@ -377,6 +378,9 @@
void executeContinueInstanceMyRoleRequestReceived(MessageExchangeDAO mexdao) {
assert _hydrationLatch.isLatched(1);
+ assert mexdao != null;
+ assert mexdao.getInstance() != null;
+
BpelInstanceWorker worker = _instanceWorkerCache.get(mexdao.getInstance().getInstanceId());
assert worker.isWorkerThread();
@@ -449,6 +453,8 @@
BpelRuntimeContextImpl brc = new BpelRuntimeContextImpl(worker, instanceDao, rti);
brc.injectMyRoleMessageExchange(mroute.getGroupId(), mroute.getIndex(), mexdao);
brc.execute();
+
+ mexdao.release(true);
} else {
__log.debug("MatcherEvent handling: nothing to do, no matching message in DB");
@@ -609,6 +615,8 @@
switch (we.getType()) {
case MYROLE_INVOKE:
executeContinueInstanceMyRoleRequestReceived(mexDao);
+ if(__log.isDebugEnabled()) __log.debug("handleWorkEvent: releasing myrole mex dao: " + mexDao);
+ mexDao.release(true);
break;
case TIMER:
executeContinueInstanceTimerReceived(instanceDAO, we.getChannel());
@@ -1081,9 +1089,25 @@
return _inMemDao.getConnection().getMessageExchange(mexId);
}
- public void releaseMessageExchange(String mexId) {
+ public void releaseMessageExchange(final String mexId) {
if (isInMemory()) {
_inMemDao.getConnection().releaseMessageExchange(mexId);
+ } else {
+ if( _contexts.isTransacted() ) {
+ _contexts.dao.getConnection().releaseMessageExchange(mexId);
+ } else {
+ // ATT-MRIOU; what's the right way without creating its own transaction for releasing my role mex?
+ try {
+ _contexts.execTransaction(new Callable<Object>() {
+ public Object call() throws Exception {
+ _contexts.dao.getConnection().releaseMessageExchange(mexId);
+ return null;
+ }
+ });
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
}
}
/**
@@ -1490,6 +1514,14 @@
}
}
+ public boolean isCleanupCategoryEnabled(boolean instanceSucceeded, CLEANUP_CATEGORY category) {
+ return _pconf.isCleanupCategoryEnabled(instanceSucceeded, category);
+ }
+
+ public Set<CLEANUP_CATEGORY> getCleanupCategories(boolean instanceSucceeded) {
+ return _pconf.getCleanupCategories(instanceSucceeded);
+ }
+
public Node getProcessProperty(QName propertyName) {
Map<QName, Node> properties = _pconf.getProcessProperties();
if (properties != null) {
Modified: ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/PartnerRoleMessageExchangeImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/PartnerRoleMessageExchangeImpl.java?rev=762523&r1=762522&r2=762523&view=diff
==============================================================================
--- ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/PartnerRoleMessageExchangeImpl.java (original)
+++ ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/PartnerRoleMessageExchangeImpl.java Mon Apr 6 21:53:20 2009
@@ -175,8 +175,6 @@
}
public void replyWithFailure(FailureType type, String description, Element details) throws BpelEngineException {
- if (__log.isDebugEnabled()) __log.debug("replyWithFailure mex=" + getMessageExchangeId());
-
_accessLock.lock();
try {
checkReplyContextOk();
Modified: ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java?rev=762523&r1=762522&r2=762523&view=diff
==============================================================================
--- ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java (original)
+++ ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java Mon Apr 6 21:53:20 2009
@@ -27,6 +27,7 @@
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
+import java.util.EnumSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
@@ -76,6 +77,7 @@
import org.apache.ode.bpel.iapi.ProcessConf;
import org.apache.ode.bpel.iapi.ProcessState;
import org.apache.ode.bpel.iapi.ProcessStore;
+import org.apache.ode.bpel.iapi.ProcessConf.CLEANUP_CATEGORY;
import org.apache.ode.bpel.pmapi.ActivityExtInfoListDocument;
import org.apache.ode.bpel.pmapi.ActivityInfoDocument;
import org.apache.ode.bpel.pmapi.EventInfoListDocument;
@@ -457,7 +459,7 @@
public Object run(BpelDAOConnection conn) {
Collection<ProcessInstanceDAO> instances = conn.instanceQuery(instanceFilter);
for (ProcessInstanceDAO instance : instances) {
- instance.delete();
+ instance.delete(EnumSet.allOf(CLEANUP_CATEGORY.class));
ret.add(instance.getInstanceId());
}
return null;
Modified: ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/UnreliableMyRoleMessageExchangeImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/UnreliableMyRoleMessageExchangeImpl.java?rev=762523&r1=762522&r2=762523&view=diff
==============================================================================
--- ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/UnreliableMyRoleMessageExchangeImpl.java (original)
+++ ode/trunk/engine/src/main/java/org/apache/ode/bpel/engine/UnreliableMyRoleMessageExchangeImpl.java Mon Apr 6 21:53:20 2009
@@ -15,6 +15,7 @@
import org.apache.ode.bpel.iapi.BpelEngineException;
import org.apache.ode.bpel.iapi.InvocationStyle;
import org.apache.ode.bpel.rapi.PartnerLinkModel;
+import org.w3c.dom.Element;
/**
* For invoking the engine using UNRELIABLE style.
@@ -23,6 +24,7 @@
*
*/
public class UnreliableMyRoleMessageExchangeImpl extends MyRoleMessageExchangeImpl {
+ @SuppressWarnings("unused")
private static final Log __log = LogFactory.getLog(ReliableMyRoleMessageExchangeImpl.class);
boolean _done = false;
@@ -118,7 +120,7 @@
}
@Override
- protected void onAsyncAck(MessageExchangeDAO mexdao) {
+ protected void onAsyncAck(final MessageExchangeDAO mexdao) {
final MemBackedMessageImpl response;
final QName fault = mexdao.getFault();
final FailureType failureType = mexdao.getFailureType();
@@ -134,9 +136,10 @@
response = null;
}
- final UnreliableMyRoleMessageExchangeImpl self = this;
- final ResponseFuture f = _future;
- // Lets be careful, the TX can still rollback!
+ Element eprdao = mexdao.getEPR();
+ _epr = eprdao == null ? null : _contexts.eprContext.resolveEndpointReference(mexdao.getEPR());
+
+ // Lets be careful, the TX can still roll-back!
_process.scheduleRunnable(new Runnable() {
public void run() {
_response = response;
@@ -146,10 +149,7 @@
ack(ackType);
_future.done(Status.ACK);
-
}
-
});
}
-
}
Modified: ode/trunk/engine/src/main/java/org/apache/ode/bpel/memdao/MessageExchangeDAOImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/engine/src/main/java/org/apache/ode/bpel/memdao/MessageExchangeDAOImpl.java?rev=762523&r1=762522&r2=762523&view=diff
==============================================================================
--- ode/trunk/engine/src/main/java/org/apache/ode/bpel/memdao/MessageExchangeDAOImpl.java (original)
+++ ode/trunk/engine/src/main/java/org/apache/ode/bpel/memdao/MessageExchangeDAOImpl.java Mon Apr 6 21:53:20 2009
@@ -259,7 +259,7 @@
}
- public void release() {
+ public void release(boolean doClean) {
instance = null;
process = null;
_plink = null;
Modified: ode/trunk/engine/src/main/java/org/apache/ode/bpel/memdao/ProcessInstanceDaoImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/engine/src/main/java/org/apache/ode/bpel/memdao/ProcessInstanceDaoImpl.java?rev=762523&r1=762522&r2=762523&view=diff
==============================================================================
--- ode/trunk/engine/src/main/java/org/apache/ode/bpel/memdao/ProcessInstanceDaoImpl.java (original)
+++ ode/trunk/engine/src/main/java/org/apache/ode/bpel/memdao/ProcessInstanceDaoImpl.java Mon Apr 6 21:53:20 2009
@@ -29,6 +29,7 @@
import org.apache.ode.bpel.dao.ScopeDAO;
import org.apache.ode.bpel.dao.XmlDataDAO;
import org.apache.ode.bpel.evt.ProcessInstanceEvent;
+import org.apache.ode.bpel.iapi.ProcessConf.CLEANUP_CATEGORY;
import org.apache.ode.utils.QNameUtils;
import org.w3c.dom.Element;
@@ -296,8 +297,9 @@
this.getProcess().instanceCompleted(this);
}
- public void delete() {
+ public boolean delete(Set<CLEANUP_CATEGORY> cleanupCategories) {
_processDao._instances.remove(_instanceId);
+ return true;
}
public Collection<ScopeDAO> getScopes() {
Propchange: ode/trunk/runtimes/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Mon Apr 6 21:53:20 2009
@@ -1,3 +1,4 @@
reports
.classpath
.project
+target
Modified: ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v1/INVOKE.java
URL: http://svn.apache.org/viewvc/ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v1/INVOKE.java?rev=762523&r1=762522&r2=762523&view=diff
==============================================================================
--- ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v1/INVOKE.java (original)
+++ ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v1/INVOKE.java Mon Apr 6 21:53:20 2009
@@ -158,7 +158,7 @@
// TODO update output variable with data from non-initiate correlation sets
_self.parent.completed(fault, CompensationHandler.emptySet());
- getBpelRuntime().releasePartnerMex(mexId);
+ getBpelRuntime().releasePartnerMex(mexId, fault == null);
}
public void onFault() {
@@ -168,7 +168,7 @@
FaultData fault = createFault(faultName, msg,
_oinvoke.getOwner().messageTypes.get(msgType), _self.o);
_self.parent.completed(fault, CompensationHandler.emptySet());
- getBpelRuntime().releasePartnerMex(mexId);
+ getBpelRuntime().releasePartnerMex(mexId, false);
}
public void onFailure() {
@@ -184,7 +184,7 @@
} catch (Exception e) {
_self.parent.failure(reason, null);
}
- getBpelRuntime().releasePartnerMex(mexId);
+ getBpelRuntime().releasePartnerMex(mexId, false);
}
}.or(new TerminationChannelListener(_self.self) {