Author: mriou
Date: Tue Mar  6 11:11:48 2007
New Revision: 515255

URL: http://svn.apache.org/viewvc?view=rev&rev=515255
Log:
JPA works! Our 3 main scenarios execute properly. Still need more tests for JBI 
and our test suite but it's a real step forward!

Added:
    
incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/OpenJPADAO.java
Modified:
    
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java
    
incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionFactoryImpl.java
    
incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionImpl.java
    
incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/CorrelatorDAOImpl.java
    
incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageExchangeDAOImpl.java
    
incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageRouteDAOImpl.java
    
incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MexProperty.java
    
incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessDAOImpl.java
    
incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessInstanceDAOImpl.java
    
incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ScopeDAOImpl.java

Modified: 
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java?view=diff&rev=515255&r1=515254&r2=515255
==============================================================================
--- 
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java
 (original)
+++ 
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java
 Tue Mar  6 11:11:48 2007
@@ -742,7 +742,7 @@
             Message odeRequest = 
myRoleMex.createMessage(operation.getInput().getMessage().getQName());
             odeRequest.setMessage(outgoingMessage);
 
-            __log.debug("Setting session ids for p2p interaction, mySession "
+            __log.debug("Setting myRoleMex session ids for p2p interaction, 
mySession "
                     + partnerSessionId + " - partnerSess " + mySessionId);
             if ( partnerSessionId != null )
                    
myRoleMex.setProperty(MessageExchange.PROPERTY_SEP_MYROLE_SESSIONID, 
partnerSessionId);

Modified: 
incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionFactoryImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionFactoryImpl.java?view=diff&rev=515255&r1=515254&r2=515255
==============================================================================
--- 
incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionFactoryImpl.java
 (original)
+++ 
incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionFactoryImpl.java
 Tue Mar  6 11:11:48 2007
@@ -24,6 +24,9 @@
 import java.util.Map;
 import java.util.Properties;
 
+/**
+ * @author Matthieu Riou <mriou at apache dot org>
+ */
 public class BPELDAOConnectionFactoryImpl implements 
BpelDAOConnectionFactoryJDBC {
     static final Log __log = 
LogFactory.getLog(BPELDAOConnectionFactoryImpl.class);
 
@@ -31,9 +34,8 @@
     private TransactionManager _tm;
     private DataSource _ds;
     private Object _dbdictionary;
-    private DataSource _unmanagedDS;
 
-    private ThreadLocal _emTL = new ThreadLocal();
+    static ThreadLocal<BPELDAOConnectionImpl> _connections = new 
ThreadLocal<BPELDAOConnectionImpl>();
 
     public BPELDAOConnectionFactoryImpl() {
     }
@@ -41,32 +43,34 @@
     public BpelDAOConnection getConnection() {
         try {
             _tm.getTransaction().registerSynchronization(new Synchronization() 
{
+                // OpenJPA allows cross-transaction entity managers, which we 
don't want
                 public void afterCompletion(int i) {
-                    _emTL.set(null);
+                    if (_connections.get() != null)
+                        _connections.get().getEntityManager().close();
+                    _connections.set(null);
                 }
                 public void beforeCompletion() { }
             });
         } catch (RollbackException e) {
             throw new RuntimeException("Coulnd't register synchronizer!");
         } catch (SystemException e) {
-            throw new RuntimeException("Coulnd't register synchronizer!");     
       
+            throw new RuntimeException("Coulnd't register synchronizer!");
         }
-        if (_emTL.get() != null) {
-            return new BPELDAOConnectionImpl((EntityManager) _emTL.get());
+        if (_connections.get() != null) {
+            return _connections.get();
         } else {
             HashMap propMap2 = new HashMap();
             propMap2.put("openjpa.TransactionMode", "managed");
             EntityManager em = _emf.createEntityManager(propMap2);
-            _emTL.set(em);
-            return new BPELDAOConnectionImpl(em);
+            BPELDAOConnectionImpl conn = new BPELDAOConnectionImpl(em);
+            _connections.set(conn);
+            return conn;
         }
     }
 
     public void init(Properties properties) {
         HashMap<String, Object> propMap = new HashMap<String,Object>();
 
-//        propMap.put("javax.persistence.nonJtaDataSource", _unmanagedDS == 
null ? _ds : _unmanagedDS);
-
         propMap.put("openjpa.Log", "DefaultLevel=TRACE");
 //        propMap.put("openjpa.Log", "log4j");
         propMap.put("openjpa.jdbc.DBDictionary", 
"org.apache.openjpa.jdbc.sql.DerbyDictionary");
@@ -74,7 +78,7 @@
         propMap.put("openjpa.ManagedRuntime", new TxMgrProvider());
         propMap.put("openjpa.ConnectionFactory", _ds);
         propMap.put("openjpa.ConnectionFactoryMode", "managed");
-        propMap.put("openjpa.Log", "DefaultLevel=TRACE");
+        propMap.put("openjpa.FlushBeforeQueries", "false");
 
         if (_dbdictionary != null)
             propMap.put("openjpa.jdbc.DBDictionary", _dbdictionary);
@@ -105,7 +109,6 @@
     }
 
     public void setUnmanagedDataSource(DataSource ds) {
-        _unmanagedDS = ds;
     }
 
     public void shutdown() {

Modified: 
incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionImpl.java?view=diff&rev=515255&r1=515254&r2=515255
==============================================================================
--- 
incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionImpl.java
 (original)
+++ 
incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/BPELDAOConnectionImpl.java
 Tue Mar  6 11:11:48 2007
@@ -36,6 +36,9 @@
 import java.util.Date;
 import java.util.List;
 
+/**
+ * @author Matthieu Riou <mriou at apache dot org>
+ */
 public class BPELDAOConnectionImpl implements BpelDAOConnection {
        
        EntityManager _em;
@@ -58,7 +61,6 @@
        
        public ProcessInstanceDAO getInstance(Long iid) {
         ProcessInstanceDAOImpl instance = 
_em.find(ProcessInstanceDAOImpl.class, iid);
-        instance.setConnection(this);
         return instance;
     }
 
@@ -73,7 +75,7 @@
     }
 
     public ProcessDAO createProcess(QName pid, QName type, String guid, long 
version) {
-        ProcessDAOImpl ret = new ProcessDAOImpl(pid,type,guid,this,version);
+        ProcessDAOImpl ret = new ProcessDAOImpl(pid,type,guid,version);
         _em.persist(ret);
         return ret;
     }
@@ -83,7 +85,6 @@
                 .setParameter(1, processId.toString()).getResultList();
         if (l.size() == 0) return null;
         ProcessDAOImpl p = (ProcessDAOImpl) l.get(0);
-        p.setConnection(this);
         return p;
     }
 
@@ -122,13 +123,6 @@
                _em = em;
        }
        
-       void removeProcess(ProcessDAOImpl p) {
-               if ( _em != null ) {
-                       _em.remove(p);
-                       _em.flush();
-               }
-       }
-
     public MessageExchangeDAO getMessageExchange(String mexid) {
         return _em.find(MessageExchangeDAOImpl.class, mexid);
     }

Modified: 
incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/CorrelatorDAOImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/CorrelatorDAOImpl.java?view=diff&rev=515255&r1=515254&r2=515255
==============================================================================
--- 
incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/CorrelatorDAOImpl.java
 (original)
+++ 
incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/CorrelatorDAOImpl.java
 Tue Mar  6 11:11:48 2007
@@ -51,7 +51,7 @@
     private String _correlatorKey;
     
@OneToMany(targetEntity=MessageRouteDAOImpl.class,mappedBy="_correlator",fetch=FetchType.EAGER,cascade={CascadeType.ALL})
     private Collection<MessageRouteDAOImpl> _routes = new 
ArrayList<MessageRouteDAOImpl>();
-    
@OneToMany(targetEntity=MessageExchangeDAOImpl.class,mappedBy="_correlator",fetch=FetchType.EAGER,cascade={CascadeType.ALL})
+    
@OneToMany(targetEntity=MessageExchangeDAOImpl.class,mappedBy="_correlator",fetch=FetchType.LAZY,cascade={CascadeType.ALL})
     private Collection<MessageExchangeDAOImpl> _exchanges = new 
ArrayList<MessageExchangeDAOImpl>();
     @ManyToOne(fetch= FetchType.LAZY,cascade={CascadeType.PERSIST}) 
@Column(name="PROC_ID")
     private ProcessDAOImpl _process;
@@ -61,10 +61,9 @@
         _correlatorKey = correlatorKey;
     }
 
-    public void addRoute(String routeGroupId, ProcessInstanceDAO target,
-                         int index, CorrelationKey correlationKey) {
-        MessageRouteDAOImpl mr = new 
MessageRouteDAOImpl(correlationKey,routeGroupId,index,(ProcessInstanceDAOImpl)target);
-
+    public void addRoute(String routeGroupId, ProcessInstanceDAO target, int 
index, CorrelationKey correlationKey) {
+        MessageRouteDAOImpl mr = new MessageRouteDAOImpl(correlationKey,
+                routeGroupId, index, (ProcessInstanceDAOImpl) target, this);
         _routes.add(mr);
     }
 

Modified: 
incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageExchangeDAOImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageExchangeDAOImpl.java?view=diff&rev=515255&r1=515254&r2=515255
==============================================================================
--- 
incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageExchangeDAOImpl.java
 (original)
+++ 
incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageExchangeDAOImpl.java
 Tue Mar  6 11:11:48 2007
@@ -285,7 +285,7 @@
        }
 
        public void setProperty(String key, String value) {
-        _props.add(new MexProperty(key, value));
+        _props.add(new MexProperty(key, value, this));
        }
 
        public void setRequest(MessageDAO msg) {

Modified: 
incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageRouteDAOImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageRouteDAOImpl.java?view=diff&rev=515255&r1=515254&r2=515255
==============================================================================
--- 
incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageRouteDAOImpl.java
 (original)
+++ 
incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MessageRouteDAOImpl.java
 Tue Mar  6 11:11:48 2007
@@ -46,7 +46,7 @@
        @Basic @Column(name="INDEX")
     private int _index;
        @Basic @Column(name="CORRELATION_KEY")
-    private CorrelationKey _correlationKey;
+    private String _correlationKey;
 
     @ManyToOne(fetch=FetchType.LAZY,cascade={CascadeType.PERSIST}) 
@Column(name="PROCESS_INSTANCE_ID")
     private ProcessInstanceDAOImpl _processInst;
@@ -54,15 +54,17 @@
     private CorrelatorDAOImpl _correlator;
 
     public MessageRouteDAOImpl() {}
-       public MessageRouteDAOImpl(CorrelationKey key, String groupId, int 
index, ProcessInstanceDAOImpl processInst) {
-               _correlationKey = key;
+       public MessageRouteDAOImpl(CorrelationKey key, String groupId, int 
index,
+                               ProcessInstanceDAOImpl processInst, 
CorrelatorDAOImpl correlator) {
+               _correlationKey = key.toCanonicalString();
                _groupId = groupId;
                _index = index;
                _processInst = processInst;
-       }
+        _correlator = correlator;
+    }
        
        public CorrelationKey getCorrelationKey() {
-               return _correlationKey;
+               return new CorrelationKey(_correlationKey);
        }
        
        public String getGroupId() {

Modified: 
incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MexProperty.java
URL: 
http://svn.apache.org/viewvc/incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MexProperty.java?view=diff&rev=515255&r1=515254&r2=515255
==============================================================================
--- 
incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MexProperty.java
 (original)
+++ 
incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/MexProperty.java
 Tue Mar  6 11:11:48 2007
@@ -50,9 +50,10 @@
 
     public MexProperty() {
     }
-    public MexProperty(String propertyKey, String propertyValue) {
+    public MexProperty(String propertyKey, String propertyValue, 
MessageExchangeDAOImpl mex) {
         this.propertyKey = propertyKey;
         this.propertyValue = propertyValue;
+        this._mex = mex;
     }
 
     public String getPropertyKey() {

Added: 
incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/OpenJPADAO.java
URL: 
http://svn.apache.org/viewvc/incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/OpenJPADAO.java?view=auto&rev=515255
==============================================================================
--- 
incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/OpenJPADAO.java
 (added)
+++ 
incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/OpenJPADAO.java
 Tue Mar  6 11:11:48 2007
@@ -0,0 +1,35 @@
+package org.apache.ode.dao.jpa;
+
+import org.apache.openjpa.persistence.OpenJPAPersistence;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.util.List;
+
+/**
+ * @author Matthieu Riou <mriou at apache dot org>
+ */
+public class OpenJPADAO {
+
+    protected BPELDAOConnectionImpl getConn() {
+        return BPELDAOConnectionFactoryImpl._connections.get();
+    }
+
+    protected EntityManager getEM() {
+        return OpenJPAPersistence.getEntityManager(this);
+    }
+
+    /**
+     * javax.persistence.Query either let you query for a collection or a 
single
+     * value throwing an exception if nothing is found. Just a convenient 
shortcut
+     * for single results allowing null values
+     * @param qry query to execute
+     * @return whatever you assign it to
+     */
+    protected <T> T getSingleResult(Query qry) {
+        List res = qry.getResultList();
+        if (res.size() == 0) return null;
+        return (T) res.get(0);
+
+    }
+}

Modified: 
incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessDAOImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessDAOImpl.java?view=diff&rev=515255&r1=515254&r2=515255
==============================================================================
--- 
incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessDAOImpl.java
 (original)
+++ 
incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessDAOImpl.java
 Tue Mar  6 11:11:48 2007
@@ -28,7 +28,6 @@
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
 import javax.persistence.Entity;
-import javax.persistence.EntityManager;
 import javax.persistence.FetchType;
 import javax.persistence.GeneratedValue;
 import javax.persistence.GenerationType;
@@ -36,25 +35,23 @@
 import javax.persistence.NamedQueries;
 import javax.persistence.NamedQuery;
 import javax.persistence.OneToMany;
-import javax.persistence.PersistenceContext;
 import javax.persistence.Query;
 import javax.persistence.Table;
-import javax.persistence.Transient;
 import javax.xml.namespace.QName;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
+/**
+ * @author Matthieu Riou <mriou at apache dot org>
+ */
 @Entity
 @Table(name="ODE_PROCESS")
 @NamedQueries({
     @NamedQuery(name="InstanceByCKey", query="SELECT cs._scope._instance FROM 
CorrelationSetDAOImpl as cs WHERE cs._correlationKey = :ckey"),
     @NamedQuery(name="CorrelatorByKey", query="SELECT c FROM CorrelatorDAOImpl 
as c WHERE c._correlatorKey = :ckey")
 })
-public class ProcessDAOImpl implements ProcessDAO {
-
-    @PersistenceContext
-    private EntityManager _em;
+public class ProcessDAOImpl extends OpenJPADAO implements ProcessDAO {
 
     @Id @Column(name="ID")
     @GeneratedValue(strategy= GenerationType.AUTO)
@@ -74,14 +71,10 @@
        
@OneToMany(targetEntity=CorrelatorDAOImpl.class,mappedBy="_process",fetch=FetchType.LAZY,cascade={CascadeType.ALL})
     private Collection<CorrelatorDAOImpl> _correlators = new 
ArrayList<CorrelatorDAOImpl>();
 
-    @Transient
-    transient private BPELDAOConnectionImpl _connection;
-
        public ProcessDAOImpl() {}
-       public ProcessDAOImpl(QName pid, QName type, String guid, 
BPELDAOConnectionImpl connection, long version) {
+       public ProcessDAOImpl(QName pid, QName type, String guid, long version) 
{
         _processId = pid.toString();
                _processType = type.toString();
-               _connection = connection;
                _guid = guid;
         _version = version;
     }
@@ -92,7 +85,7 @@
        }
 
     public CorrelatorDAO getCorrelator(String correlatorId) {
-        Query qry = 
_connection.getEntityManager().createNamedQuery("CorrelatorByKey");
+        Query qry = getEM().createNamedQuery("CorrelatorByKey");
         qry.setParameter("ckey", correlatorId);
         List res = qry.getResultList();
         if (res.size() == 0) return null;
@@ -101,21 +94,21 @@
 
     public ProcessInstanceDAO createInstance(
                        CorrelatorDAO instantiatingCorrelator) {
-               ProcessInstanceDAOImpl inst = new 
ProcessInstanceDAOImpl((CorrelatorDAOImpl)instantiatingCorrelator, 
this,_connection);
-               _connection.getEntityManager().persist(inst);
+               ProcessInstanceDAOImpl inst = new 
ProcessInstanceDAOImpl((CorrelatorDAOImpl)instantiatingCorrelator, this);
+               getEM().persist(inst);
                _numInstances++;
                return inst;
        }
 
        @SuppressWarnings("unchecked")
     public Collection<ProcessInstanceDAO> findInstance(CorrelationKey ckey) {
-               Query qry = 
_connection.getEntityManager().createNamedQuery("InstanceByCKey");
+               Query qry = getEM().createNamedQuery("InstanceByCKey");
         qry.setParameter("ckey", ckey.toCanonicalString());
         return qry.getResultList();
        }
 
        public ProcessInstanceDAO getInstance(Long iid) {
-               return _connection.getInstance(iid);
+               return getEM().find(ProcessInstanceDAOImpl.class, iid);
        }
 
        public QName getProcessId() {
@@ -127,7 +120,7 @@
        }
 
     public void delete() {
-        _connection.removeProcess(this);
+        getEM().remove(this);
     }
 
     public int getNumInstances() {
@@ -152,7 +145,4 @@
         return _guid;
     }
 
-    void setConnection(BPELDAOConnectionImpl connection) {
-        _connection = connection;
-    }
 }

Modified: 
incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessInstanceDAOImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessInstanceDAOImpl.java?view=diff&rev=515255&r1=515254&r2=515255
==============================================================================
--- 
incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessInstanceDAOImpl.java
 (original)
+++ 
incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessInstanceDAOImpl.java
 Tue Mar  6 11:11:48 2007
@@ -49,7 +49,6 @@
 import javax.persistence.OneToOne;
 import javax.persistence.Query;
 import javax.persistence.Table;
-import javax.persistence.Transient;
 import javax.xml.namespace.QName;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -64,12 +63,9 @@
 @NamedQueries({
     @NamedQuery(name="ScopeById", query="SELECT s FROM ScopeDAOImpl as s WHERE 
s._scopeInstanceId = :sid and s._processInstance = :instance")
         })
-public class ProcessInstanceDAOImpl implements ProcessInstanceDAO {
+public class ProcessInstanceDAOImpl extends OpenJPADAO implements 
ProcessInstanceDAO {
 
-    @Transient
-    private BPELDAOConnectionImpl _connection;
-
-       @Id @Column(name="PROCESS_INSTANCE_ID")
+    @Id @Column(name="PROCESS_INSTANCE_ID")
        @GeneratedValue(strategy=GenerationType.AUTO)
        private Long _instanceId;
        @Basic @Column(name="LAST_RECOVERY_DATE")
@@ -101,9 +97,8 @@
        private CorrelatorDAOImpl _instantiatingCorrelator;
        
        public ProcessInstanceDAOImpl() {}
-       public ProcessInstanceDAOImpl(CorrelatorDAOImpl correlator, 
ProcessDAOImpl process, BPELDAOConnectionImpl connection) {
+       public ProcessInstanceDAOImpl(CorrelatorDAOImpl correlator, 
ProcessDAOImpl process) {
                _instantiatingCorrelator = correlator;
-               _connection = connection;
                _process = process;
        }
        
@@ -116,30 +111,24 @@
                _lastRecovery = dateTime;
        }
 
-       public ScopeDAO createScope(ScopeDAO parentScope, String name,
-                       int scopeModelId) {
-               ScopeDAOImpl ret = new 
ScopeDAOImpl((ScopeDAOImpl)parentScope,name,scopeModelId,this, _connection);
+       public ScopeDAO createScope(ScopeDAO parentScope, String name, int 
scopeModelId) {
+               ScopeDAOImpl ret = new 
ScopeDAOImpl((ScopeDAOImpl)parentScope,name,scopeModelId,this);
         ret.setState(ScopeStateEnum.ACTIVE);
-
         _scopes.add(ret);
-               
                _rootScope = (parentScope == null)?ret:_rootScope;
                
                // Must persist the scope to generate a scope ID
-               _connection.getEntityManager().persist(ret);
-               
+               getEM().persist(ret);
                return ret;
        }
 
        public void delete() {
-               if ( _connection.getEntityManager() != null ) {
-                       _connection.getEntityManager().remove(this);
+               if (getEM() != null ) {
+                       getEM().remove(this);
                }
-
        }
 
        public void deleteActivityRecovery(String channel) {
-               
                for (Iterator itr=_recoveries.iterator(); itr.hasNext(); ) {
                        ActivityRecoveryDAO arElement = 
(ActivityRecoveryDAO)itr.next();
                        if ( arElement.getChannel().equals(channel)) {
@@ -171,10 +160,6 @@
                return _recoveries;
        }
 
-       public BpelDAOConnection getConnection() {
-               return _connection;
-       }
-
        public CorrelationSetDAO getCorrelationSet(String name) {
                //      TODO: should this method be deprecated?
                
@@ -235,14 +220,10 @@
        }
 
        public ScopeDAO getScope(Long scopeInstanceId) {
-        Query qry = 
_connection.getEntityManager().createNamedQuery("ScopeById");
+        Query qry = getEM().createNamedQuery("ScopeById");
         qry.setParameter("sid", scopeInstanceId);
         qry.setParameter("instance", this);
-        List res = qry.getResultList();
-        if (res.size() == 0) return null;
-        ScopeDAOImpl s = (ScopeDAOImpl) res.get(0);
-        s.setConnection(_connection);
-        return s;
+        return getSingleResult(qry);
        }
 
        public Collection<ScopeDAO> getScopes(String scopeName) {
@@ -278,7 +259,7 @@
        }
 
        public void insertBpelEvent(ProcessInstanceEvent event) {
-               _connection.insertBpelEvent(event, getProcess(), this);
+        getConn().insertBpelEvent(event, getProcess(), this);
        }
 
        public void setExecutionState(byte[] execState) {
@@ -287,18 +268,15 @@
 
        public void setFault(FaultDAO fault) {
                _fault = (FaultDAOImpl)fault;
-
        }
 
        public void setFault(QName faultName, String explanation, int 
faultLineNo,
                        int activityId, Element faultMessage) {
                _fault = new 
FaultDAOImpl(faultName,explanation,faultLineNo,activityId,faultMessage);
-               
        }
 
        public void setLastActiveTime(Date dt) {
                _lastActive = dt;
-
        }
 
        public void setState(short state) {
@@ -310,7 +288,7 @@
                _process.removeRoutes(routeGroupId, this);
        }
 
-    void setConnection(BPELDAOConnectionImpl connection) {
-        _connection = connection;
+    public BpelDAOConnection getConnection() {
+        return new BPELDAOConnectionImpl(getEM());
     }
 }

Modified: 
incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ScopeDAOImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ScopeDAOImpl.java?view=diff&rev=515255&r1=515254&r2=515255
==============================================================================
--- 
incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ScopeDAOImpl.java
 (original)
+++ 
incubator/ode/trunk/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ScopeDAOImpl.java
 Tue Mar  6 11:11:48 2007
@@ -42,7 +42,6 @@
 import javax.persistence.OneToMany;
 import javax.persistence.Query;
 import javax.persistence.Table;
-import javax.persistence.Transient;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
@@ -52,10 +51,7 @@
 @NamedQueries({
     @NamedQuery(name="PLinkByModelId", query="SELECT pl FROM 
PartnerLinkDAOImpl as pl WHERE pl._partnerLinkModelId = :mid")
         })
-public class ScopeDAOImpl implements ScopeDAO {
-
-    @Transient
-    private BPELDAOConnectionImpl _connection;
+public class ScopeDAOImpl extends OpenJPADAO implements ScopeDAO {
 
     @Id @Column(name="SCOPE_ID")
     @GeneratedValue(strategy= GenerationType.AUTO)
@@ -84,13 +80,11 @@
        private ProcessInstanceDAOImpl _processInstance;
 
        public ScopeDAOImpl() {}
-       public ScopeDAOImpl(ScopeDAOImpl parentScope, String name, int 
scopeModelId,
-                        ProcessInstanceDAOImpl pi, BPELDAOConnectionImpl 
connection) {
+       public ScopeDAOImpl(ScopeDAOImpl parentScope, String name, int 
scopeModelId, ProcessInstanceDAOImpl pi) {
                _parentScope = parentScope;
                _name = name;
                _modelId = scopeModelId;
                _processInstance = pi;
-        _connection = connection;
     }
        
        public PartnerLinkDAO createPartnerLink(int plinkModelId, String 
pLinkName,
@@ -119,7 +113,7 @@
                        // PartnerLink creation )
                        ret = new CorrelationSetDAOImpl(this,corrSetName);
                        // Persist the new correlation set to generate an ID
-                       _connection.getEntityManager().persist(ret);
+                       getEM().persist(ret);
                        _correlationSets.add(ret);
                }
                
@@ -143,11 +137,9 @@
        }
 
        public PartnerLinkDAO getPartnerLink(int plinkModelId) {
-        Query qry = 
_connection.getEntityManager().createNamedQuery("PLinkByModelId");
-        qry.setParameter("mid", plinkModelId);
-        List res = qry.getResultList();
-        if (res.size() == 0) return null;
-        return (PartnerLinkDAO) res.get(0);
+        Query qry = getEM().createNamedQuery("PLinkByModelId");
+        qry.setParameter("mid", plinkModelId);        
+        return getSingleResult(qry);
        }
 
        public Collection<PartnerLinkDAO> getPartnerLinks() {
@@ -192,7 +184,4 @@
                _scopeState = state.toString();
        }
 
-    void setConnection(BPELDAOConnectionImpl connection) {
-        _connection = connection;
-    }
 }


Reply via email to