Author: mszefler
Date: Thu Sep  7 14:59:12 2006
New Revision: 441249

URL: http://svn.apache.org/viewvc?view=rev&rev=441249
Log:
Simplified correlation mechanism to use one table instead of 4. 

Added:
    
incubator/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HCorrelatorEntry.java
   (with props)
Modified:
    incubator/ode/trunk/dao-hibernate/.classpath
    
incubator/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/SessionManager.java
    
incubator/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/CorrelatorDaoImpl.java
    
incubator/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/MessageExchangeDaoImpl.java
    
incubator/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HCorrelatorMessage.java
    
incubator/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HCorrelatorSelector.java

Modified: incubator/ode/trunk/dao-hibernate/.classpath
URL: 
http://svn.apache.org/viewvc/incubator/ode/trunk/dao-hibernate/.classpath?view=diff&rev=441249&r1=441248&r2=441249
==============================================================================
--- incubator/ode/trunk/dao-hibernate/.classpath (original)
+++ incubator/ode/trunk/dao-hibernate/.classpath Thu Sep  7 14:59:12 2006
@@ -1,47 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-  <classpathentry kind="src" path="src/main/java"/>
-  <classpathentry kind="src" path="src/test/java" 
output="target/test-classes"/>
-  <classpathentry kind="src" path="target/generated-resources/xdoclet"/>
-  <classpathentry kind="output" path="target/classes"/>
-  <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-  <classpathentry kind="var" 
path="M2_REPO/log4j/log4j/1.2.12/log4j-1.2.12.jar"/>
-  <classpathentry kind="src" path="/ode-jacob"/>
-  <classpathentry kind="src" path="/ode-bpel-parser"/>
-  <classpathentry kind="var" 
path="M2_REPO/stax/stax-api/1.0/stax-api-1.0.jar"/>
-  <classpathentry kind="var" 
path="M2_REPO/ehcache/ehcache/1.1/ehcache-1.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/xom/xom/1.0b3/xom-1.0b3.jar"/>
-  <classpathentry kind="var" 
path="M2_REPO/xmlbeans/xbean/2.1.0/xbean-2.1.0.jar"/>
-  <classpathentry kind="var" 
path="M2_REPO/commons-pool/commons-pool/1.2/commons-pool-1.2.jar"/>
-  <classpathentry kind="var" 
path="M2_REPO/xerces/xercesImpl/2.6.2/xercesImpl-2.6.2.jar"/>
-  <classpathentry kind="var" path="M2_REPO/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar"/>
-  <classpathentry kind="var" 
path="M2_REPO/saxon/saxon-dom/8.4/saxon-dom-8.4.jar"/>
-  <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
-  <classpathentry kind="src" path="/ode-bpel-dd"/>
-  <classpathentry kind="src" path="/ode-utils"/>
-  <classpathentry kind="var" 
path="M2_REPO/org/hibernate/hibernate/3.1.2/hibernate-3.1.2.jar"/>
-  <classpathentry kind="src" path="/ode-bpel-compiler"/>
-  <classpathentry kind="src" path="/ode-bpel-api"/>
-  <classpathentry kind="src" path="/ode-bpel-obj"/>
-  <classpathentry kind="src" path="/ode-bpel-ql"/>
-  <classpathentry kind="var" path="M2_REPO/asm/asm/1.5.3/asm-1.5.3.jar"/>
-  <classpathentry kind="var" 
path="M2_REPO/commons-logging/commons-logging/1.0.3/commons-logging-1.0.3.jar"/>
-  <classpathentry kind="var" 
path="M2_REPO/xerces/xmlParserAPIs/2.6.2/xmlParserAPIs-2.6.2.jar"/>
-  <classpathentry kind="src" path="/ode-bpel-schemas"/>
-  <classpathentry kind="var" 
path="M2_REPO/com/ibm/icu/icu4j/2.6.1/icu4j-2.6.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/cglib/cglib/2.1_3/cglib-2.1_3.jar"/>
-  <classpathentry kind="var" path="M2_REPO/xalan/xalan/2.6.0/xalan-2.6.0.jar"/>
-  <classpathentry kind="var" path="M2_REPO/jdom/jdom/1.0/jdom-1.0.jar"/>
-  <classpathentry kind="var" 
path="M2_REPO/commons-lang/commons-lang/2.1/commons-lang-2.1.jar"/>
-  <classpathentry kind="var" 
path="M2_REPO/antlr/antlr/2.7.6rc1/antlr-2.7.6rc1.jar"/>
-  <classpathentry kind="src" path="/ode-bpel-el-xpath10"/>
-  <classpathentry kind="var" 
path="M2_REPO/wsdl4j/wsdl4j/1.5.2/wsdl4j-1.5.2.jar"/>
-  <classpathentry kind="var" 
path="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar"/>
-  <classpathentry kind="src" path="/ode-bpel-bom"/>
-  <classpathentry kind="src" path="/ode-bpel-el-xpath20"/>
-  <classpathentry kind="var" 
path="M2_REPO/commons-collections/commons-collections/3.1/commons-collections-3.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/saxon/saxon/8.4/saxon-8.4.jar"/>
-  <classpathentry kind="var" 
path="M2_REPO/org/ccil/cowan/tagsoup/tagsoup/0.9.7/tagsoup-0.9.7.jar"/>
-  <classpathentry kind="var" 
path="M2_REPO/org/apache/geronimo/specs/geronimo-jta_1.0.1B_spec/1.0/geronimo-jta_1.0.1B_spec-1.0.jar"/>
-  <classpathentry kind="var" 
path="M2_REPO/jaxen/jaxen/1.1-beta-8/jaxen-1.1-beta-8.jar"/>
-  <classpathentry kind="var" 
path="M2_REPO/xmlbeans/xmlpublic/2.1.0/xmlpublic-2.1.0.jar"/>
-</classpath>
\ No newline at end of file
+       <classpathentry kind="src" path="src/main/java"/>
+       <classpathentry output="target/test-classes" kind="src" 
path="src/test/java"/>
+       <classpathentry kind="src" path="target/generated-resources/xdoclet"/>
+       <classpathentry kind="con" 
path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+       <classpathentry kind="var" 
path="M2_REPO/log4j/log4j/1.2.12/log4j-1.2.12.jar"/>
+       <classpathentry kind="src" path="/ode-jacob"/>
+       <classpathentry kind="src" path="/ode-bpel-parser"/>
+       <classpathentry kind="var" 
path="M2_REPO/stax/stax-api/1.0/stax-api-1.0.jar"/>
+       <classpathentry kind="var" 
path="M2_REPO/ehcache/ehcache/1.1/ehcache-1.1.jar"/>
+       <classpathentry kind="var" path="M2_REPO/xom/xom/1.0b3/xom-1.0b3.jar"/>
+       <classpathentry kind="var" 
path="M2_REPO/xmlbeans/xbean/2.1.0/xbean-2.1.0.jar"/>
+       <classpathentry kind="var" 
path="M2_REPO/commons-pool/commons-pool/1.2/commons-pool-1.2.jar"/>
+       <classpathentry kind="var" 
path="M2_REPO/xerces/xercesImpl/2.6.2/xercesImpl-2.6.2.jar"/>
+       <classpathentry kind="var" 
path="M2_REPO/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar"/>
+       <classpathentry kind="var" 
path="M2_REPO/saxon/saxon-dom/8.4/saxon-dom-8.4.jar"/>
+       <classpathentry kind="var" 
path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
+       <classpathentry kind="src" path="/ode-bpel-dd"/>
+       <classpathentry kind="src" path="/ode-utils"/>
+       <classpathentry kind="var" 
path="M2_REPO/org/hibernate/hibernate/3.1.2/hibernate-3.1.2.jar"/>
+       <classpathentry kind="src" path="/ode-bpel-compiler"/>
+       <classpathentry kind="src" path="/ode-bpel-api"/>
+       <classpathentry kind="src" path="/ode-bpel-obj"/>
+       <classpathentry kind="src" path="/ode-bpel-ql"/>
+       <classpathentry kind="var" path="M2_REPO/asm/asm/1.5.3/asm-1.5.3.jar"/>
+       <classpathentry kind="var" 
path="M2_REPO/commons-logging/commons-logging/1.0.3/commons-logging-1.0.3.jar"/>
+       <classpathentry kind="var" 
path="M2_REPO/xerces/xmlParserAPIs/2.6.2/xmlParserAPIs-2.6.2.jar"/>
+       <classpathentry kind="src" path="/ode-bpel-schemas"/>
+       <classpathentry kind="var" 
path="M2_REPO/com/ibm/icu/icu4j/2.6.1/icu4j-2.6.1.jar"/>
+       <classpathentry kind="var" 
path="M2_REPO/cglib/cglib/2.1_3/cglib-2.1_3.jar"/>
+       <classpathentry kind="var" 
path="M2_REPO/xalan/xalan/2.6.0/xalan-2.6.0.jar"/>
+       <classpathentry kind="var" path="M2_REPO/jdom/jdom/1.0/jdom-1.0.jar"/>
+       <classpathentry kind="var" 
path="M2_REPO/commons-lang/commons-lang/2.1/commons-lang-2.1.jar"/>
+       <classpathentry kind="var" 
path="M2_REPO/antlr/antlr/2.7.6rc1/antlr-2.7.6rc1.jar"/>
+       <classpathentry kind="src" path="/ode-bpel-el-xpath10"/>
+       <classpathentry kind="var" 
path="M2_REPO/wsdl4j/wsdl4j/1.5.2/wsdl4j-1.5.2.jar"/>
+       <classpathentry kind="var" 
path="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar"/>
+       <classpathentry kind="src" path="/ode-bpel-bom"/>
+       <classpathentry kind="src" path="/ode-bpel-el-xpath20"/>
+       <classpathentry kind="var" 
path="M2_REPO/commons-collections/commons-collections/3.1/commons-collections-3.1.jar"/>
+       <classpathentry kind="var" 
path="M2_REPO/saxon/saxon/8.4/saxon-8.4.jar"/>
+       <classpathentry kind="var" 
path="M2_REPO/org/ccil/cowan/tagsoup/tagsoup/0.9.7/tagsoup-0.9.7.jar"/>
+       <classpathentry kind="var" 
path="M2_REPO/org/apache/geronimo/specs/geronimo-jta_1.0.1B_spec/1.0/geronimo-jta_1.0.1B_spec-1.0.jar"/>
+       <classpathentry kind="var" 
path="M2_REPO/jaxen/jaxen/1.1-beta-8/jaxen-1.1-beta-8.jar"/>
+       <classpathentry kind="var" 
path="M2_REPO/xmlbeans/xmlpublic/2.1.0/xmlpublic-2.1.0.jar"/>
+       <classpathentry kind="src" path="/ode-bpel-dao"/>
+       <classpathentry kind="output" path="target/classes"/>
+</classpath>

Modified: 
incubator/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/SessionManager.java
URL: 
http://svn.apache.org/viewvc/incubator/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/SessionManager.java?view=diff&rev=441249&r1=441248&r2=441249
==============================================================================
--- 
incubator/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/SessionManager.java
 (original)
+++ 
incubator/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/SessionManager.java
 Thu Sep  7 14:59:12 2006
@@ -92,9 +92,7 @@
             .addClass(HProcessProperty.class)
             .addClass(HProcessInstance.class)
             .addClass(HCorrelator.class)
-            .addClass(HCorrelatorSelector.class)
-            .addClass(HCorrelatorMessage.class)
-            .addClass(HCorrelatorMessageKey.class)
+            .addClass(HCorrelatorEntry.class)
             .addClass(HCorrelationProperty.class)
             .addClass(HMessageExchange.class)
             .addClass(HMessage.class)
@@ -104,7 +102,7 @@
             .addClass(HXmlData.class)
             .addClass(HVariableProperty.class)
             .addClass(HBpelEvent.class)
-           .addClass(HFaultData.class)
+               .addClass(HFaultData.class)
            .addClass(HActivityRecovery.class)
             .addClass(HLargeData.class);
   }

Modified: 
incubator/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/CorrelatorDaoImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/CorrelatorDaoImpl.java?view=diff&rev=441249&r1=441248&r2=441249
==============================================================================
--- 
incubator/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/CorrelatorDaoImpl.java
 (original)
+++ 
incubator/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/CorrelatorDaoImpl.java
 Thu Sep  7 14:59:12 2006
@@ -18,173 +18,138 @@
  */
 package org.apache.ode.daohib.bpel;
 
-import org.apache.ode.bpel.common.ProcessState;
+import java.util.ArrayList;
+import java.util.Date;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.ode.bpel.common.CorrelationKey;
+import org.apache.ode.bpel.common.ProcessState;
 import org.apache.ode.bpel.dao.CorrelatorDAO;
 import org.apache.ode.bpel.dao.MessageExchangeDAO;
 import org.apache.ode.bpel.dao.MessageRouteDAO;
 import org.apache.ode.bpel.dao.ProcessInstanceDAO;
 import org.apache.ode.daohib.SessionManager;
-import org.apache.ode.daohib.bpel.hobj.*;
+import org.apache.ode.daohib.bpel.hobj.HCorrelator;
+import org.apache.ode.daohib.bpel.hobj.HCorrelatorMessage;
+import org.apache.ode.daohib.bpel.hobj.HCorrelatorSelector;
+import org.apache.ode.daohib.bpel.hobj.HMessageExchange;
+import org.apache.ode.daohib.bpel.hobj.HProcessInstance;
 import org.apache.ode.utils.ArrayUtils;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.Iterator;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.hibernate.Hibernate;
 import org.hibernate.Query;
 
 /**
  * Hibernate-based [EMAIL PROTECTED] CorrelatorDAO} implementation.
  */
 class CorrelatorDaoImpl extends HibernateDao implements CorrelatorDAO {
-       
-  private static final String QRY_MESSAGE =
-          "select this from " + HCorrelatorMessageKey.class.getName() +
-          " as hk where hk.owner = this and hk.canonical = ? order by 
this.created";
-
-  /** filter for finding a matching selector. */
-  private static final String FLTR_SELECTORS =
-          "where this.correlationKey = ?" +
-          " and (this.instance.state = " + ProcessState.STATE_ACTIVE +
-          "      or this.instance.state = " + ProcessState.STATE_READY + ")" +
-          " order by this.created";
-
-
-  /** Query for removing routes. */
-  private static final String QRY_DELROUTES = "delete from "  + 
-    HCorrelatorSelector.class.getName() + " where groupId = ? " +
-      "and instance = ?";
-  
-  static Log __log = LogFactory.getLog(CorrelatorDaoImpl.class);
-  
-  private HCorrelator _hobj;
-
-       public CorrelatorDaoImpl(SessionManager sm, HCorrelator hobj) {
-               super(sm,hobj);
-               _hobj = hobj;
-       }
-
-  public MessageExchangeDAO dequeueMessage(CorrelationKey key) {
-    HMessageExchange hmex = null;
-    upgrade();
-
-    Query qry = 
getSession().createFilter(_hobj.getMessageCorrelations(),QRY_MESSAGE);
-    qry.setString(0, CorrelationKeySerializer.toCanonicalString(key));
-    // We can use the database to do the searching on hashcode AND canonical 
string
-    Iterator iter = qry.iterate();
-
-    while(iter.hasNext()){
-      HCorrelatorMessage mcor = (HCorrelatorMessage)iter.next();
-      hmex = mcor.getMessageExchange();
-      _hobj.getMessageCorrelations().remove(mcor);
-      // Lock this row
-      getSession().delete(mcor);
-      break;
-    }
-
-    Hibernate.close(iter);
-    if (__log.isDebugEnabled()) {
-      if(hmex != null)
-        __log.debug("dequeueEarliest: MATCH FOUND, data=" + hmex);
-    }
-
-    return hmex == null ? null : new MessageExchangeDaoImpl(_sm,hmex);
-       }
-
-       public MessageRouteDAO findRoute(CorrelationKey key) {
-               if (__log.isTraceEnabled())
-      __log.trace("findRoute(key=" + key + ")");
-
-   upgrade();
-
-    Query q = getSession().createFilter(_hobj.getSelectors(), FLTR_SELECTORS);
-    q.setString(0, CorrelationKeySerializer.toCanonicalString(key));
-    Iterator iter =  q.iterate();
-    if(iter.hasNext()){
-      HCorrelatorSelector selector = (HCorrelatorSelector)iter.next();
-      Hibernate.close(iter);
-      return new MessageRouteDaoImpl(_sm,selector);
-    }else{
-      Hibernate.close(iter);
-      return null;
-    }
-
-       }
-       /**
-        * @see org.apache.ode.bpel.dao.CorrelatorDAO#enqueueMessage(byte[], 
CorrelationKey[])
-        */
-       public void enqueueMessage(MessageExchangeDAO mex, CorrelationKey[] 
correlationKeys) {
-    String[] keys = canonifyKeys(correlationKeys);
-    if (__log.isDebugEnabled()) {
-      __log.debug("enqueueProcessInvocation: mex=" +mex + " keys="
-                + ArrayUtils.makeCollection(ArrayList.class, keys));
+
+    private static final String QRY_MESSAGE = "select this from " + 
HCorrelatorMessage.class.getName()
+            + " as hk where hk.correlationKey = ?".intern();
+
+    /** filter for finding a matching selector. */
+    private static final String FLTR_SELECTORS = "where this.correlationKey = 
?" + " and (this.instance.state = "
+            + ProcessState.STATE_ACTIVE + "      or this.instance.state = " + 
ProcessState.STATE_READY + ")".intern();
+
+    /** Query for removing routes. */
+    private static final String QRY_DELSELECTORS = "delete from " + 
HCorrelatorSelector.class.getName()
+            + " where groupId = ? " + "and instance = ?".intern();
+
+    private static final String QRY_DELMESSAGES = "delete from " + 
HCorrelatorMessage.class.getName()
+            + " where messageExchange = ?".intern();
+
+    static Log __log = LogFactory.getLog(CorrelatorDaoImpl.class);
+
+    private HCorrelator _hobj;
+
+    public CorrelatorDaoImpl(SessionManager sm, HCorrelator hobj) {
+        super(sm, hobj);
+        _hobj = hobj;
     }
 
-   upgrade();
-    
-    HCorrelatorMessage mcor = new HCorrelatorMessage();
-    mcor.setCorrelator(_hobj);
-    mcor.setCreated(new Date());
-    _hobj.getMessageCorrelations().add(mcor);
-    for (String key : keys) {
-      HCorrelatorMessageKey hk = new HCorrelatorMessageKey();
-      hk.setCanonical(key);
-      hk.setOwner(mcor);
-      getSession().save(hk);
-      mcor.getCorrelationHashKeys().add(hk);
+    public MessageExchangeDAO dequeueMessage(CorrelationKey key) {
+        Query qry = getSession().createFilter(_hobj.getMessageCorrelations(), 
QRY_MESSAGE);
+        qry.setString(0, CorrelationKeySerializer.toCanonicalString(key));
+        HCorrelatorMessage mcor = (HCorrelatorMessage) qry.uniqueResult();
+
+        if (mcor == null)
+            return null;
+        
+        removeEntries(mcor.getMessageExchange());
+
+        return new MessageExchangeDaoImpl(_sm, mcor.getMessageExchange());
+    }
+
+    public MessageRouteDAO findRoute(CorrelationKey key) {
+        if (__log.isTraceEnabled())
+            __log.trace("findRoute(key=" + key + ")");
+
+        Query q = getSession().createFilter(_hobj.getSelectors(), 
FLTR_SELECTORS);
+        q.setString(0, CorrelationKeySerializer.toCanonicalString(key));
+        HCorrelatorSelector selector = (HCorrelatorSelector) q.uniqueResult();
+        return selector == null ? null :  new MessageRouteDaoImpl(_sm, 
selector);
+    }
+
+    /**
+     * @see org.apache.ode.bpel.dao.CorrelatorDAO#enqueueMessage(byte[],
+     *      CorrelationKey[])
+     */
+    public void enqueueMessage(MessageExchangeDAO mex, CorrelationKey[] 
correlationKeys) {
+        String[] keys = canonifyKeys(correlationKeys);
+        if (__log.isDebugEnabled()) {
+            __log.debug("enqueueProcessInvocation: mex=" + mex + " keys="
+                    + ArrayUtils.makeCollection(ArrayList.class, keys));
+        }
+
+        for (String key : keys) {
+            HCorrelatorMessage mcor = new HCorrelatorMessage();
+            mcor.setCorrelator(_hobj);
+            mcor.setCreated(new Date());
+            mcor.setCorrelationKey(key);
+            mcor.setMessageExchange((HMessageExchange) 
((MessageExchangeDaoImpl) mex)._hobj);
+            getSession().save(mcor);
+        }
+
+    }
+
+    private String[] canonifyKeys(CorrelationKey[] keys) {
+        String[] ret = new String[keys.length];
+        for (int i = 0; i < ret.length; ++i) {
+            ret[i] = CorrelationKeySerializer.toCanonicalString(keys[i]);
+        }
+        return ret;
     }
-    
-    
mcor.setMessageExchange((HMessageExchange)((MessageExchangeDaoImpl)mex)._hobj);
-    getSession().save(mcor);
 
-  }
+    public void addRoute(String routeGroupId, ProcessInstanceDAO target, int 
idx, CorrelationKey correlationKey) {
 
-  private String[] canonifyKeys(CorrelationKey[] keys) {
-    String[] ret = new String[keys.length];
-    for (int i = 0; i < ret.length; ++i) {
-      ret[i] = CorrelationKeySerializer.toCanonicalString(keys[i]);
-    }
-    return ret;
-  }
-
-
-  public void addRoute(String routeGroupId, ProcessInstanceDAO target, int 
idx, CorrelationKey correlationKey) {
-   upgrade();
-
-    HCorrelatorSelector hsel = new HCorrelatorSelector();
-    hsel.setGroupId(routeGroupId);
-    hsel.setIndex(idx);
-    
hsel.setCorrelationKey(CorrelationKeySerializer.toCanonicalString(correlationKey));
-    hsel.setInstance((HProcessInstance) 
((ProcessInstanceDaoImpl)target).getHibernateObj());
-    hsel.setCorrelator(_hobj);
-    hsel.setCreated(new Date());
-    _hobj.getSelectors().add(hsel);
-    getSession().save(hsel);
-
-  }
-
-  public String getCorrelatorId() {
-    return _hobj.getCorrelatorId();
-  }
-
-  public void removeRoutes(String routeGroupId, ProcessInstanceDAO target) {
-   upgrade();
-
-    Query q = getSession().createQuery(QRY_DELROUTES);
-    q.setString(0,routeGroupId);
-    q.setEntity(1, ((ProcessInstanceDaoImpl)target).getHibernateObj());
-    q.executeUpdate();
-  }
-
-  private void upgrade() {
-    // This effectively creates a mutual exclusion lock on this
-    // correlator by obtaining a row-lock.
-    _hobj.setLock(_hobj.getLock()+1);
-    getSession().flush();
-  }
+        HCorrelatorSelector hsel = new HCorrelatorSelector();
+        hsel.setGroupId(routeGroupId);
+        hsel.setIndex(idx);
+        
hsel.setCorrelationKey(CorrelationKeySerializer.toCanonicalString(correlationKey));
+        hsel.setInstance((HProcessInstance) ((ProcessInstanceDaoImpl) 
target).getHibernateObj());
+        hsel.setCorrelator(_hobj);
+        hsel.setCreated(new Date());
+        _hobj.getSelectors().add(hsel);
+        getSession().save(hsel);
+
+    }
+
+    public String getCorrelatorId() {
+        return _hobj.getCorrelatorId();
+    }
+
+    public void removeRoutes(String routeGroupId, ProcessInstanceDAO target) {
+        Query q = getSession().createQuery(QRY_DELSELECTORS);
+        q.setString(0, routeGroupId);  // groupId
+        q.setEntity(1, ((ProcessInstanceDaoImpl) target).getHibernateObj()); 
// instance
+        q.executeUpdate();
+    }
+
+    
+    public void removeEntries(HMessageExchange mex) {
+        Query q = getSession().createQuery(QRY_DELMESSAGES);
+        q.setEntity(0, mex);  // messageExchange
+        q.executeUpdate();
+    }
+    
 
 }

Modified: 
incubator/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/MessageExchangeDaoImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/MessageExchangeDaoImpl.java?view=diff&rev=441249&r1=441248&r2=441249
==============================================================================
--- 
incubator/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/MessageExchangeDaoImpl.java
 (original)
+++ 
incubator/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/MessageExchangeDaoImpl.java
 Thu Sep  7 14:59:12 2006
@@ -19,7 +19,9 @@
 
 package org.apache.ode.daohib.bpel;
 
+import java.util.Collections;
 import java.util.Date;
+import java.util.Set;
 
 import javax.xml.namespace.QName;
 
@@ -259,7 +261,6 @@
 
     public void setProperty(String key, String value) {
         _hself.getProperties().put(key, value);
-        //getSession().update(_hself.getProperties()); // Does not appear to 
work ?
         update();
     }
 
@@ -270,6 +271,10 @@
 
     public PartnerLinkDAO getPartnerLink() {
         return new PartnerLinkDAOImpl(_sm, _hself.getPartnerLink());
+    }
+
+    public Set<String> getPropertyNames() {
+        return Collections.unmodifiableSet(_hself.getProperties().keySet());
     }
 
 }

Added: 
incubator/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HCorrelatorEntry.java
URL: 
http://svn.apache.org/viewvc/incubator/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HCorrelatorEntry.java?view=auto&rev=441249
==============================================================================
--- 
incubator/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HCorrelatorEntry.java
 (added)
+++ 
incubator/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HCorrelatorEntry.java
 Thu Sep  7 14:59:12 2006
@@ -0,0 +1,43 @@
+package org.apache.ode.daohib.bpel.hobj;
+
+
+import org.apache.ode.daohib.hobj.HObject;
+
+/**
+ * @hibernate.class table="BPEL_CORRELATOR_ENTRY"
+ * @hibernate.discriminator column="CLSTYPE"
+ * 
+ */
+public class HCorrelatorEntry extends HObject {
+    private HCorrelator _correlator;
+
+    private String _correlationKey;
+
+    /**
+     * @hibernate.property column="CORRELATION_KEY"
+     * @hibernate.column name="CORRELATION_KEY"
+     *                   unique-key="IDX_CORRELATOR_CORRELATION_KEY_UNIQ"
+     *                   not-null="true"
+     *                   
+     */
+    public String getCorrelationKey() {
+        return _correlationKey;
+    }
+
+    public void setCorrelationKey(String correlationKey) {
+        _correlationKey = correlationKey;
+    }
+
+    /**
+     * @hibernate.many-to-one
+     * @hibernate.column name="CORRELATOR" 
index="IDX_CORRELATORENTRY_CORRELATOR"
+     */
+    public HCorrelator getCorrelator() {
+        return _correlator;
+    }
+
+    public void setCorrelator(HCorrelator correlator) {
+        _correlator = correlator;
+    }
+
+}

Propchange: 
incubator/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HCorrelatorEntry.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
incubator/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HCorrelatorMessage.java
URL: 
http://svn.apache.org/viewvc/incubator/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HCorrelatorMessage.java?view=diff&rev=441249&r1=441248&r2=441249
==============================================================================
--- 
incubator/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HCorrelatorMessage.java
 (original)
+++ 
incubator/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HCorrelatorMessage.java
 Thu Sep  7 14:59:12 2006
@@ -18,62 +18,24 @@
  */
 package org.apache.ode.daohib.bpel.hobj;
 
-import org.apache.ode.daohib.hobj.HObject;
-import java.util.HashSet;
-import java.util.Set;
 
 /**
- * @hibernate.class table="BPEL_CORRELATOR_MESSAGE"
+ * @hibernate.subclass table="BPEL_CORRELATOR_ENTRY" discriminator-value="M"
  */
-public class HCorrelatorMessage extends HObject {
-  
-       private Set<HCorrelatorMessageKey> _correlationKeys = new 
HashSet<HCorrelatorMessageKey>();
-  private HCorrelator _correlator;
-  private HMessageExchange _messageExchange;
+public class HCorrelatorMessage extends HCorrelatorEntry {
 
-       public HCorrelatorMessage() {
-               super();
-       }
-  
-       /**
-   * @hibernate.set
-   *  lazy="true"
-   *  inverse="true"
-   *  cascade="delete"
-   * @hibernate.collection-key
-   *  column="CORRELATOR_MESSAGE_ID"
-   * @hibernate.collection-one-to-many
-   *  class="org.apache.ode.daohib.bpel.hobj.HCorrelatorMessageKey"
-   */
-  public Set<HCorrelatorMessageKey> getCorrelationHashKeys() {
-    return _correlationKeys;
-  }
+    private HMessageExchange _messageExchange;
 
-  public void setCorrelationHashKeys(Set<HCorrelatorMessageKey> 
correlationHashKeys) {
-    _correlationKeys = correlationHashKeys;
-  }
-  
-  /**
-   * @hibernate.many-to-one
-   * @hibernate.column name="CORRELATOR" index="IDX_CORRELATORMESSAGE_CID"
-   */
-  public HCorrelator getCorrelator() {
-    return _correlator;
-  }
-
-  public void setCorrelator(HCorrelator correlator) {
-    _correlator = correlator;
-  }
-
-  /**
-   * @hibernate.many-to-one column="MEX" 
-   */
-  public HMessageExchange getMessageExchange() {
-    return _messageExchange;
-  }
-
-  public void setMessageExchange(HMessageExchange data) {
-    _messageExchange = data;
-  }
+ 
+    /**
+     * @hibernate.many-to-one column="MEX"
+     */
+    public HMessageExchange getMessageExchange() {
+        return _messageExchange;
+    }
+
+    public void setMessageExchange(HMessageExchange data) {
+        _messageExchange = data;
+    }
 
 }

Modified: 
incubator/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HCorrelatorSelector.java
URL: 
http://svn.apache.org/viewvc/incubator/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HCorrelatorSelector.java?view=diff&rev=441249&r1=441248&r2=441249
==============================================================================
--- 
incubator/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HCorrelatorSelector.java
 (original)
+++ 
incubator/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HCorrelatorSelector.java
 Thu Sep  7 14:59:12 2006
@@ -18,79 +18,49 @@
  */
 package org.apache.ode.daohib.bpel.hobj;
 
-import org.apache.ode.daohib.hobj.HObject;
-
 /**
- * @hibernate.class table="BPEL_CORRELATOR_SELECTOR"
+ * @hibernate.subclass table="BPEL_CORRELATOR_ENTRY" discriminator-value="S"
+ * 
  */
-public class HCorrelatorSelector extends HObject{
-  private HCorrelator _correlator;
-  private HProcessInstance _instance;
-  private String _groupId;
-  private String _correlationKey;
-  private int _idx;
-
-
-  /** Constructor. */
-       public HCorrelatorSelector() {
-               super();
-       }
-
-  /**
-   * @hibernate.many-to-one column="PIID"
-   */
-       public HProcessInstance getInstance() {
-               return _instance;
-       }
-
-       public void setInstance(HProcessInstance instance) {
-               _instance = instance;
-       }
-
-  /**
-   * @hibernate.many-to-one 
-   * @hibernate.column name="CORRELATOR" 
index="IDX_CORRELATORSELECTOR_CORRELATOR"
-   */
-  public HCorrelator getCorrelator() {
-    return _correlator;
-  }
-
-  public void setCorrelator(HCorrelator owner) {
-    _correlator = owner;
-  }
-
-  /**
-   * @hibernate.property column="SELGRPID"
-   * @hibernate.column name="SELGRPID" index="IDX_SELECTOR_SELGRPID"
-   */
-  public String getGroupId() {
-    return _groupId;
-  }
-
-  public void setGroupId(String groupId) {
-    _groupId = groupId;
-  }
-
-  /**
-   * @hibernate.property column="CKEY"
-   * @hibernate.column name="CKEY" index="IDX_SELECTOR_CKEY"
-   */
-  public String getCorrelationKey() {
-    return _correlationKey;
-  }
-
-  public void setCorrelationKey(String correlationKey) {
-    _correlationKey = correlationKey;
-  }
-
-  /**
-   * @hibernate.property column="IDX"
-   */
-  public int getIndex() {
-    return _idx;
-  }
-
-  public void setIndex(int idx) {
-    _idx = idx;
-  }
+public class HCorrelatorSelector extends HCorrelatorEntry {
+
+    private HProcessInstance _instance;
+
+    private String _groupId;
+
+    private int _idx;
+
+    /**
+     * @hibernate.many-to-one column="PIID"
+     */
+    public HProcessInstance getInstance() {
+        return _instance;
+    }
+
+    public void setInstance(HProcessInstance instance) {
+        _instance = instance;
+    }
+
+    /**
+     * @hibernate.property column="SELGRPID"
+     * @hibernate.column name="SELGRPID" index="IDX_SELECTOR_SELGRPID"
+     */
+    public String getGroupId() {
+        return _groupId;
+    }
+
+    public void setGroupId(String groupId) {
+        _groupId = groupId;
+    }
+
+    /**
+     * @hibernate.property column="IDX"
+     */
+    public int getIndex() {
+        return _idx;
+    }
+
+    public void setIndex(int idx) {
+        _idx = idx;
+    }
 }


Reply via email to