You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by mr...@apache.org on 2007/04/11 01:28:27 UTC

svn commit: r527337 - in /incubator/ode/trunk: bpel-dao/src/main/java/org/apache/ode/bpel/dao/ bpel-epr/src/main/java/org/apache/ode/il/ bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/ bpel-...

Author: mriou
Date: Tue Apr 10 16:28:25 2007
New Revision: 527337

URL: http://svn.apache.org/viewvc?view=rev&rev=527337
Log:
Fixed a lot of stuff in bpel-runtime test so that they can wotk with OpenJPA, some of them still fail but at least that's the minority. Also found a couple more little bugs in JPA.

Added:
    incubator/ode/trunk/bpel-epr/src/main/java/org/apache/ode/il/MockScheduler.java
Removed:
    incubator/ode/trunk/bpel-test/src/main/java/org/apache/ode/test/scheduler/
Modified:
    incubator/ode/trunk/bpel-dao/src/main/java/org/apache/ode/bpel/dao/ScopeDAO.java
    incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java
    incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java
    incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/DebuggerSupport.java
    incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java
    incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/ScopeDaoImpl.java
    incubator/ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/ActivityRecoveryTest.java
    incubator/ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java
    incubator/ode/trunk/bpel-test/src/test/java/org/apache/ode/test/BPELTestAbstract.java
    incubator/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ScopeDaoImpl.java
    incubator/ode/trunk/dao-jpa-ojpa-derby/src/test/java/org/apache/ode/dao/jpa/test/SelectObjectTest.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/ScopeDAOImpl.java

Modified: incubator/ode/trunk/bpel-dao/src/main/java/org/apache/ode/bpel/dao/ScopeDAO.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-dao/src/main/java/org/apache/ode/bpel/dao/ScopeDAO.java?view=diff&rev=527337&r1=527336&r2=527337
==============================================================================
--- incubator/ode/trunk/bpel-dao/src/main/java/org/apache/ode/bpel/dao/ScopeDAO.java (original)
+++ incubator/ode/trunk/bpel-dao/src/main/java/org/apache/ode/bpel/dao/ScopeDAO.java Tue Apr 10 16:28:25 2007
@@ -18,7 +18,6 @@
  */
 package org.apache.ode.bpel.dao;
 
-import org.apache.ode.bpel.common.BpelEventFilter;
 import org.apache.ode.bpel.evt.BpelEvent;
 
 import java.util.Collection;
@@ -108,7 +107,7 @@
      * Get an ordered list of events associated with this scope.
      * @return collection of bpel events.
      */
-    List<BpelEvent> listEvents(BpelEventFilter efilter);
+    List<BpelEvent> listEvents();
 
     /**
      * Create a storage space for partner link values for the scope.

Added: incubator/ode/trunk/bpel-epr/src/main/java/org/apache/ode/il/MockScheduler.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-epr/src/main/java/org/apache/ode/il/MockScheduler.java?view=auto&rev=527337
==============================================================================
--- incubator/ode/trunk/bpel-epr/src/main/java/org/apache/ode/il/MockScheduler.java (added)
+++ incubator/ode/trunk/bpel-epr/src/main/java/org/apache/ode/il/MockScheduler.java Tue Apr 10 16:28:25 2007
@@ -0,0 +1,245 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ode.il;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.ode.bpel.iapi.ContextException;
+import org.apache.ode.bpel.iapi.Scheduler;
+
+import javax.transaction.Status;
+import javax.transaction.Synchronization;
+import javax.transaction.SystemException;
+import javax.transaction.TransactionManager;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+
+/**
+ * @author Matthieu Riou <mriou at apache dot org>
+ */
+public class MockScheduler implements Scheduler {
+
+    private static final Log __log = LogFactory.getLog(MockScheduler.class);
+
+    private JobProcessor _processor;
+    private ExecutorService _executorSvc = Executors.newCachedThreadPool();
+    private ThreadLocal<Boolean> _transacted = new ThreadLocal<Boolean>();
+    private TransactionManager _txm;
+
+    public MockScheduler() { }
+
+    public MockScheduler(TransactionManager txm) {
+        _txm = txm;
+    }
+
+    ThreadLocal<List<Synchronizer>> _synchros = new ThreadLocal<List<Scheduler.Synchronizer>>() {
+        @Override
+        protected List<Synchronizer> initialValue() {
+            return new ArrayList<Synchronizer>();
+        }
+    };
+
+    public String schedulePersistedJob(Map<String, Object> detail, Date date) throws ContextException {
+        if (date != null) {
+            try {
+                while(new Date().before(date)) Thread.sleep(100);
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+            }
+        }
+        return scheduleVolatileJob(true, detail);
+    }
+
+    public String scheduleVolatileJob(final boolean transacted, final Map<String, Object> detail) throws ContextException {
+        registerSynchronizer(new Synchronizer() {
+            public void afterCompletion(boolean success) {
+                try {
+                    if (transacted) {
+                        execIsolatedTransaction(new Callable() {
+                            public Object call() throws Exception {
+                                JobInfo ji = new JobInfo("volatileJob", detail, 0);
+                                doExecute(ji);
+                                return null;
+                            }
+                        });
+                    } else {
+                        JobInfo ji = new JobInfo("volatileJob", detail, 0);
+                        doExecute(ji);
+                    }
+                } catch (Exception e) {
+                    throw new ContextException("Failure when starting a new volatile job.", e);
+                }
+            }
+            public void beforeCompletion() { }
+        });
+        return null;
+    }
+
+    public void cancelJob(String arg0) throws ContextException {
+
+    }
+
+    public <T> T execTransaction(Callable<T> transaction) throws Exception, ContextException {
+        begin();
+        try {
+            T retval = transaction.call();
+            return retval;
+        } finally {
+            commit();
+        }
+    }
+
+    public <T> Future<T> execIsolatedTransaction(final Callable<T> transaction) throws Exception, ContextException {
+        return _executorSvc.submit(new Callable<T>() {
+            public T call() throws Exception {
+                return execTransaction(transaction);
+            }
+        });
+    }
+
+    public boolean isTransacted() {
+        if (_txm != null) {
+            try {
+                return _txm.getTransaction() != null;
+            } catch (SystemException e) {
+                __log.error("Exception in mock scheduler isTransacted.", e);
+                throw new RuntimeException(e);
+            }
+        }
+        else return _transacted.get();
+    }
+
+    public void start() {
+    }
+
+    public void stop() {
+    }
+
+    public void shutdown() {
+    }
+
+    public void registerSynchronizer(final Synchronizer synch) throws ContextException {
+        if (_txm != null) {
+            try {
+                _txm.getTransaction().registerSynchronization(new Synchronization() {
+                    public void beforeCompletion() {
+                        synch.beforeCompletion();
+                    }
+                    public void afterCompletion(int status) {
+                        synch.afterCompletion(status == Status.STATUS_COMMITTED);
+                    }
+                });
+            } catch (Exception e) {
+                __log.error("Exception in mock scheduler sync registration.", e);
+                throw new RuntimeException(e);
+            }
+        } else {
+            _synchros.get().add(synch);
+        }
+    }
+
+    public void begin() {
+        if (_txm != null) {
+            try {
+                _txm.begin();
+            } catch (Exception e) {
+                __log.error("Exception in mock scheduler begin.", e);
+                throw new RuntimeException(e);
+            }
+        } else {
+            _synchros.get().clear();
+            _transacted.set(Boolean.TRUE);
+        }
+    }
+
+    public void commit() {
+        if (_txm != null) {
+            try {
+                _txm.commit();
+            } catch (Exception e) {
+                __log.error("Exception in mock scheduler commit.", e);
+                throw new RuntimeException(e);
+            }
+        } else {
+            for (Synchronizer s : _synchros.get())
+                try {
+                    s.beforeCompletion();
+                } catch (Throwable t) {
+                }
+            for (Synchronizer s : _synchros.get())
+                try {
+                    s.afterCompletion(true);
+                } catch (Throwable t) {
+                }
+
+            _synchros.get().clear();
+            _transacted.set(Boolean.FALSE);
+        }
+    }
+
+    public void rollback() {
+        if (_txm != null) {
+            try {
+                _txm.rollback();
+            } catch (Exception e) {
+                __log.error("Exception in mock scheduler rollback.", e);
+                throw new RuntimeException(e);
+            }
+        } else {
+            for (Synchronizer s : _synchros.get())
+                try {
+                    s.beforeCompletion();
+                } catch (Throwable t) {
+                }
+            for (Synchronizer s : _synchros.get())
+                try {
+                    s.afterCompletion(false);
+                } catch (Throwable t) {
+                }
+            _synchros.get().clear();
+            _transacted.set(Boolean.FALSE);
+        }
+    }
+
+    private void doExecute(JobInfo ji) {
+        JobProcessor processor = _processor;
+        if (processor == null)
+            throw new RuntimeException("No processor.");
+        try {
+            processor.onScheduledJob(ji);
+        } catch (Exception jpe) {
+            throw new RuntimeException("Scheduled transaction failed unexpectedly: transaction will not be retried!.", jpe);
+        }
+    }
+
+    public void setJobProcessor(JobProcessor processor) throws ContextException {
+        _processor = processor;
+    }
+
+    public void setExecutorSvc(ExecutorService executorSvc) {
+        _executorSvc = executorSvc;
+    }
+}

Modified: incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java?view=diff&rev=527337&r1=527336&r2=527337
==============================================================================
--- incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java (original)
+++ incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java Tue Apr 10 16:28:25 2007
@@ -460,23 +460,21 @@
         return prole._channel;
     }
 
-    public void saveEvent(ProcessInstanceEvent event) {
+    public void saveEvent(ProcessInstanceEvent event, ProcessInstanceDAO instanceDao) {
         markused();
-        boolean enabled = false;
         List<String> scopeNames = null;
         if (event instanceof ScopeEvent) {
             scopeNames = ((ScopeEvent) event).getParentScopesNames();
         }
 
-        enabled = _pconf.isEventEnabled(scopeNames, event.getType());
+        boolean enabled = _pconf.isEventEnabled(scopeNames, event.getType());
         if (enabled) {
-            ProcessInstanceDAO instanceDao = getProcessDAO().getInstance(event.getProcessInstanceId());
-            if (instanceDao != null) saveEvent(event, instanceDao);
+            if (instanceDao != null) saveInstanceEvent(event, instanceDao);
             else __log.debug("Couldn't find instance to save event, no event generated!");
         }
     }
 
-    void saveEvent(ProcessInstanceEvent event, ProcessInstanceDAO instanceDao) {
+    void saveInstanceEvent(ProcessInstanceEvent event, ProcessInstanceDAO instanceDao) {
         instanceDao.insertBpelEvent(event);
     }
 

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=527337&r1=527336&r2=527337
==============================================================================
--- 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 Apr 10 16:28:25 2007
@@ -992,7 +992,7 @@
         _bpelProcess._engine.fireEvent(event);
 
         // saving
-        _bpelProcess.saveEvent(event);
+        _bpelProcess.saveEvent(event, _dao);
     }
 
     private void initVPU() {

Modified: incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/DebuggerSupport.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/DebuggerSupport.java?view=diff&rev=527337&r1=527336&r2=527337
==============================================================================
--- incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/DebuggerSupport.java (original)
+++ incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/DebuggerSupport.java Tue Apr 10 16:28:25 2007
@@ -25,7 +25,13 @@
 import org.apache.ode.bpel.dao.BpelDAOConnection;
 import org.apache.ode.bpel.dao.ProcessDAO;
 import org.apache.ode.bpel.dao.ProcessInstanceDAO;
-import org.apache.ode.bpel.evt.*;
+import org.apache.ode.bpel.evt.ActivityExecStartEvent;
+import org.apache.ode.bpel.evt.BpelEvent;
+import org.apache.ode.bpel.evt.ProcessCompletionEvent;
+import org.apache.ode.bpel.evt.ProcessInstanceEvent;
+import org.apache.ode.bpel.evt.ProcessInstanceStateChangeEvent;
+import org.apache.ode.bpel.evt.ProcessTerminationEvent;
+import org.apache.ode.bpel.evt.ScopeCompletionEvent;
 import org.apache.ode.bpel.pmapi.BpelManagementFacade;
 import org.apache.ode.bpel.pmapi.InstanceNotFoundException;
 import org.apache.ode.bpel.pmapi.ManagementException;
@@ -35,7 +41,12 @@
 import org.apache.ode.utils.msg.MessageBundle;
 
 import javax.xml.namespace.QName;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
 
 /**
  * Class providing functions used to support debugging funtionality
@@ -231,7 +242,7 @@
                         changeEvent.setProcessName(process.getType());
                         changeEvent.setProcessId(_db.getProcessId());
 
-                        _process.saveEvent(changeEvent);
+                        _process.saveEvent(changeEvent, instance);
                         onEvent(changeEvent);
                     }
                 } catch (Exception dce) {

Modified: incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java?view=diff&rev=527337&r1=527336&r2=527337
==============================================================================
--- incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java (original)
+++ incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java Tue Apr 10 16:28:25 2007
@@ -938,7 +938,7 @@
             Collection<ActivityRecoveryDAO> recoveries = scope.getProcessInstance().getActivityRecoveries();
 
             TScopeInfo.Activities activities = scopeInfo.addNewActivities();
-            List<BpelEvent> events = scope.listEvents(null);
+            List<BpelEvent> events = scope.listEvents();
             ActivityStateDocumentBuilder b = new ActivityStateDocumentBuilder();
             for (BpelEvent e : events)
                 b.onEvent(e);

Modified: incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/ScopeDaoImpl.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/ScopeDaoImpl.java?view=diff&rev=527337&r1=527336&r2=527337
==============================================================================
--- incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/ScopeDaoImpl.java (original)
+++ incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/ScopeDaoImpl.java Tue Apr 10 16:28:25 2007
@@ -18,7 +18,6 @@
  */
 package org.apache.ode.bpel.memdao;
 
-import org.apache.ode.bpel.common.BpelEventFilter;
 import org.apache.ode.bpel.dao.CorrelationSetDAO;
 import org.apache.ode.bpel.dao.PartnerLinkDAO;
 import org.apache.ode.bpel.dao.ScopeDAO;
@@ -152,7 +151,7 @@
         return _variables.values();
     }
 
-    public List<BpelEvent> listEvents(BpelEventFilter efilter) {
+    public List<BpelEvent> listEvents() {
         // TODO: provide a better implementation.
         return new ArrayList<BpelEvent>();
     }

Modified: incubator/ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/ActivityRecoveryTest.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/ActivityRecoveryTest.java?view=diff&rev=527337&r1=527336&r2=527337
==============================================================================
--- incubator/ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/ActivityRecoveryTest.java (original)
+++ incubator/ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/ActivityRecoveryTest.java Tue Apr 10 16:28:25 2007
@@ -60,6 +60,7 @@
     MockBpelServer        _server;
     BpelManagementFacade  _management;
     QName                 _processQName;
+    QName                 _processId;
     private Mock _testService;
 
 
@@ -69,11 +70,8 @@
      * If the process completes, it calls the completed method.
      */
     interface TestService {
-
         public boolean invoke(); 
-
         public void completed();
-
     }
 
 
@@ -293,6 +291,7 @@
         _management.delete(null);
         // We need the process QName to make assertions on its state.
         _processQName = new QName(NAMESPACE, process);
+        _processId = new QName(NAMESPACE, process + "-1");
         _server.invoke(_processQName, "instantiate", DOMUtils.newDocument().createElementNS(NAMESPACE, "tns:RequestElement"));
         _server.waitForBlocking();
     }
@@ -300,7 +299,7 @@
     protected void assertNoFailures() {
         TFailuresInfo failures = lastInstance().getFailures();
         assertTrue(failures == null || failures.getCount() == 0);
-        failures = _management.getProcessInfo(_processQName).getProcessInfo().getInstanceSummary().getFailures();
+        failures = _management.getProcessInfo(_processId).getProcessInfo().getInstanceSummary().getFailures();
         assertTrue(failures == null || failures.getCount() == 0);
     }
 
@@ -318,7 +317,7 @@
         // Tests here will only generate one failure.
         TFailuresInfo failures = lastInstance().getFailures();
         assertTrue(failures != null && failures.getCount() == 1);
-        failures = _management.getProcessInfo(_processQName).getProcessInfo().getInstanceSummary().getFailures();
+        failures = _management.getProcessInfo(_processId).getProcessInfo().getInstanceSummary().getFailures();
         assertTrue(failures != null && failures.getCount() == 1);
         // Look for individual activities inside the process instance.
         @SuppressWarnings("unused")

Modified: incubator/ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java?view=diff&rev=527337&r1=527336&r2=527337
==============================================================================
--- incubator/ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java (original)
+++ incubator/ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java Tue Apr 10 16:28:25 2007
@@ -32,12 +32,15 @@
 import org.apache.ode.bpel.iapi.PartnerRoleChannel;
 import org.apache.ode.bpel.iapi.PartnerRoleMessageExchange;
 import org.apache.ode.bpel.iapi.Scheduler;
-import org.apache.ode.bpel.scheduler.quartz.QuartzSchedulerImpl;
+import org.apache.ode.bpel.memdao.BpelDAOConnectionFactoryImpl;
 import org.apache.ode.dao.jpa.BPELDAOConnectionFactoryImpl;
 import org.apache.ode.il.EmbeddedGeronimoFactory;
+import org.apache.ode.il.MockScheduler;
+import org.apache.ode.il.dbutil.Database;
 import org.apache.ode.store.ProcessStoreImpl;
 import org.apache.ode.utils.DOMUtils;
 import org.apache.ode.utils.GUID;
+import org.hsqldb.jdbc.jdbcDataSource;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
@@ -46,7 +49,6 @@
 import javax.wsdl.PortType;
 import javax.xml.namespace.QName;
 import java.io.File;
-import java.sql.DriverManager;
 import java.util.Collection;
 import java.util.Date;
 import java.util.HashMap;
@@ -83,9 +85,9 @@
             if (_daoCF == null)
                 throw new RuntimeException("No DAO");
             _server.setDaoConnectionFactory(_daoCF);
+            _server.setInMemDaoConnectionFactory(new BpelDAOConnectionFactoryImpl(_scheduler));
             if (_scheduler == null)
                 throw new RuntimeException("No scheduler");
-            //_store = new ProcessStoreImpl(new File("."), _dataSource, _txManager);
             _store = new ProcessStoreImpl(_dataSource,"jpa", true);
             _server.setScheduler(_scheduler);
             _server.setEndpointReferenceContext(createEndpointReferenceContext());
@@ -152,41 +154,21 @@
         _server.stop();
         _scheduler.stop();
         _scheduler.shutdown();
-        // TODO stop transaction manager
-        try {
-            DriverManager.getConnection("jdbc:derby:target/test-classes/derby-db/jpadb;shutdown=true");
-        } catch (Exception ex) {
-            System.err.println(ex.getMessage());
-        }
-
-
     }
 
     protected TransactionManager createTransactionManager() throws Exception {
-        EmbeddedTransactionManager factory = new EmbeddedTransactionManager();
+        EmbeddedGeronimoFactory factory = new EmbeddedGeronimoFactory();
         _txManager = factory.getTransactionManager();
         _txManager.setTransactionTimeout(30);
         return _txManager;
     }
 
     protected DataSource createDataSource() throws Exception {
-        if (_txManager == null)
-            throw new RuntimeException("No transaction manager");
-        String url = "jdbc:derby:target/test-classes/derby-db/jpadb";
-
-        Properties props = new Properties();
-        props.put("test."+OdeConfigProperties.PROP_DB_MODE, "internal");
-        props.put("test."+OdeConfigProperties.PROP_DB_INTERNAL_DRIVER, org.apache.derby.jdbc.EmbeddedDriver.class.getName());
-        props.put("test."+OdeConfigProperties.PROP_DB_INTERNAL_URL, url);
-        props.put("test."+OdeConfigProperties.PROP_DB_INTERNAL_USER, "sa");
-        props.put("test."+OdeConfigProperties.PROP_POOL_MIN, "0");
-        props.put("test."+OdeConfigProperties.PROP_POOL_MAX, "10");
-
-        OdeConfigProperties odeConfig = new OdeConfigProperties(props, "test");
-        _database = new Database(odeConfig);
-        _database.setTransactionManager(_txManager);
-        _database.start();
-        _dataSource = _database.getDataSource();
+        jdbcDataSource hsqlds = new jdbcDataSource();
+        hsqlds.setDatabase("jdbc:hsqldb:mem:" + new GUID().toString());
+        hsqlds.setUser("sa");
+        hsqlds.setPassword("");
+        _dataSource = hsqlds;
         return _dataSource;
     }
 
@@ -210,7 +192,10 @@
         BpelDAOConnectionFactoryJDBC daoCF = new BPELDAOConnectionFactoryImpl();
         daoCF.setDataSource(_dataSource);
         daoCF.setTransactionManager(_txManager);
-        daoCF.init(new Properties());
+        Properties props = new Properties();
+        props.put("openjpa.Log", "DefaultLevel=TRACE");
+        props.put("openjpa.jdbc.SynchronizeMappings", "buildSchema(ForeignKeys=false)");
+        daoCF.init(props);
         _daoCF = daoCF;
 
         return _daoCF;
@@ -278,57 +263,54 @@
 
     private class SchedulerWrapper implements Scheduler {
 
-        QuartzSchedulerImpl _quartz;
+        MockScheduler _scheduler;
         long                _nextSchedule;
 
         SchedulerWrapper(BpelServerImpl server, TransactionManager txManager, DataSource dataSource) {
             ExecutorService executorService = Executors.newCachedThreadPool();
-            _quartz = new QuartzSchedulerImpl();
-            _quartz.setJobProcessor(server);
-            _quartz.setExecutorService(executorService, 20);
-            _quartz.setTransactionManager(txManager);
-            _quartz.setDataSource(dataSource);
-            _quartz.init();
+            _scheduler = new MockScheduler(_txManager);
+            _scheduler.setExecutorSvc(executorService);
+            _scheduler.setJobProcessor(server);
         }
 
         public String schedulePersistedJob(Map<String,Object>jobDetail,Date when) throws ContextException {
-            String jobId = _quartz.schedulePersistedJob(jobDetail, when);
+            String jobId = _scheduler.schedulePersistedJob(jobDetail, when);
             _nextSchedule = when == null ?  System.currentTimeMillis() : when.getTime();
             return jobId;
         }
 
         public String scheduleVolatileJob(boolean transacted, Map<String,Object> jobDetail) throws ContextException {
-            String jobId = _quartz.scheduleVolatileJob(transacted, jobDetail);
+            String jobId = _scheduler.scheduleVolatileJob(transacted, jobDetail);
             _nextSchedule = System.currentTimeMillis();
             return jobId;
         }
 
         public void cancelJob(String jobId) throws ContextException {
-            _quartz.cancelJob(jobId);
+            _scheduler.cancelJob(jobId);
         }
 
         public <T> T execTransaction(Callable<T> transaction) throws Exception, ContextException {
-            return _quartz.execTransaction(transaction);
+            return _scheduler.execTransaction(transaction);
         }
 
         public <T> Future<T> execIsolatedTransaction(Callable<T> transaction) throws Exception, ContextException {
-            return _quartz.execIsolatedTransaction(transaction);
+            return _scheduler.execIsolatedTransaction(transaction);
         }
 
         public boolean isTransacted() {
-            return _quartz.isTransacted();
+            return _scheduler.isTransacted();
         }
 
-        public void start() { _quartz.start(); }
-        public void stop() { _quartz.stop(); }
-        public void shutdown() { _quartz.shutdown(); }
+        public void start() { _scheduler.start(); }
+        public void stop() { _scheduler.stop(); }
+        public void shutdown() { _scheduler.shutdown(); }
 
         public void registerSynchronizer(Synchronizer synch) throws ContextException {
-            _quartz.registerSynchronizer(synch);
+            _scheduler.registerSynchronizer(synch);
         }
 
         public void setJobProcessor(JobProcessor processor) throws ContextException {
-            _quartz.setJobProcessor(processor);
+            _scheduler.setJobProcessor(processor);
 
         }
     }

Modified: incubator/ode/trunk/bpel-test/src/test/java/org/apache/ode/test/BPELTestAbstract.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-test/src/test/java/org/apache/ode/test/BPELTestAbstract.java?view=diff&rev=527337&r1=527336&r2=527337
==============================================================================
--- incubator/ode/trunk/bpel-test/src/test/java/org/apache/ode/test/BPELTestAbstract.java (original)
+++ incubator/ode/trunk/bpel-test/src/test/java/org/apache/ode/test/BPELTestAbstract.java Tue Apr 10 16:28:25 2007
@@ -29,8 +29,8 @@
 import org.apache.ode.bpel.iapi.ProcessStoreListener;
 import org.apache.ode.bpel.memdao.BpelDAOConnectionFactoryImpl;
 import org.apache.ode.dao.jpa.BPELDAOConnectionFactoryImpl;
+import org.apache.ode.il.MockScheduler;
 import org.apache.ode.store.ProcessStoreImpl;
-import org.apache.ode.test.scheduler.TestScheduler;
 import org.apache.ode.utils.DOMUtils;
 import org.apache.ode.utils.GUID;
 import org.w3c.dom.Element;
@@ -54,7 +54,7 @@
     protected MessageExchangeContextImpl mexContext;
     protected EntityManager em;
     protected EntityManagerFactory emf;
-    protected TestScheduler scheduler;
+    protected MockScheduler scheduler;
     protected BpelDAOConnectionFactory _cf;
 
     protected ArrayList<Failure> failures;
@@ -71,7 +71,7 @@
             String pr = Persistence.PERSISTENCE_PROVIDER;
             _cf = new BPELDAOConnectionFactoryImpl();
             server.setDaoConnectionFactory(_cf);
-            scheduler = new TestScheduler() {
+            scheduler = new MockScheduler() {
                 @Override
                 public void begin() {
                     super.begin();
@@ -91,7 +91,7 @@
 
             };
         } else {
-            scheduler = new TestScheduler();
+            scheduler = new MockScheduler();
             _cf = new BpelDAOConnectionFactoryImpl(scheduler);
             server.setDaoConnectionFactory(_cf);
         }

Modified: incubator/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ScopeDaoImpl.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ScopeDaoImpl.java?view=diff&rev=527337&r1=527336&r2=527337
==============================================================================
--- incubator/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ScopeDaoImpl.java (original)
+++ incubator/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ScopeDaoImpl.java Tue Apr 10 16:28:25 2007
@@ -18,11 +18,19 @@
  */
 package org.apache.ode.daohib.bpel;
 
-import org.apache.ode.bpel.common.BpelEventFilter;
-import org.apache.ode.bpel.dao.*;
+import org.apache.ode.bpel.dao.CorrelationSetDAO;
+import org.apache.ode.bpel.dao.PartnerLinkDAO;
+import org.apache.ode.bpel.dao.ProcessInstanceDAO;
+import org.apache.ode.bpel.dao.ScopeDAO;
+import org.apache.ode.bpel.dao.ScopeStateEnum;
+import org.apache.ode.bpel.dao.XmlDataDAO;
 import org.apache.ode.bpel.evt.BpelEvent;
 import org.apache.ode.daohib.SessionManager;
-import org.apache.ode.daohib.bpel.hobj.*;
+import org.apache.ode.daohib.bpel.hobj.HBpelEvent;
+import org.apache.ode.daohib.bpel.hobj.HCorrelationSet;
+import org.apache.ode.daohib.bpel.hobj.HPartnerLink;
+import org.apache.ode.daohib.bpel.hobj.HScope;
+import org.apache.ode.daohib.bpel.hobj.HXmlData;
 import org.apache.ode.utils.SerializableUtils;
 import org.apache.ode.utils.stl.CollectionsX;
 import org.apache.ode.utils.stl.UnaryFunction;
@@ -31,7 +39,12 @@
 import org.hibernate.Query;
 import org.hibernate.criterion.Restrictions;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
 
 /**
  * Hibernate-based {@link ScopeDAO} implementation.
@@ -216,12 +229,12 @@
     }
 
     @SuppressWarnings("unchecked")
-    public List<BpelEvent> listEvents(BpelEventFilter efilter) {
+    public List<BpelEvent> listEvents() {
 
         CriteriaBuilder cb = new CriteriaBuilder();
         Criteria crit = _sm.getSession().createCriteria(HBpelEvent.class);
-        if (efilter != null)
-            cb.buildCriteria(crit, efilter);
+//        if (efilter != null)
+//            cb.buildCriteria(crit, efilter);
         crit.add(Restrictions.eq("scopeId",_scope.getId()));
 
         List<HBpelEvent> hevents = crit.list();

Modified: incubator/ode/trunk/dao-jpa-ojpa-derby/src/test/java/org/apache/ode/dao/jpa/test/SelectObjectTest.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/dao-jpa-ojpa-derby/src/test/java/org/apache/ode/dao/jpa/test/SelectObjectTest.java?view=diff&rev=527337&r1=527336&r2=527337
==============================================================================
--- incubator/ode/trunk/dao-jpa-ojpa-derby/src/test/java/org/apache/ode/dao/jpa/test/SelectObjectTest.java (original)
+++ incubator/ode/trunk/dao-jpa-ojpa-derby/src/test/java/org/apache/ode/dao/jpa/test/SelectObjectTest.java Tue Apr 10 16:28:25 2007
@@ -75,7 +75,6 @@
         factory.setDataSource(_ds);
         factory.setTransactionManager(_txm);
         Properties props = new Properties();
-        props.put("openjpa.Log", "DefaultLevel=TRACE");
         props.put("openjpa.jdbc.SynchronizeMappings", "buildSchema(ForeignKeys=false)");
         factory.init(props);
 

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=527337&r1=527336&r2=527337
==============================================================================
--- 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 Apr 10 16:28:25 2007
@@ -143,6 +143,9 @@
         }
         public void setRollbackOnly(Throwable cause) throws Exception {
             // there is no generic support for setting the rollback cause
+            System.out.println("#################################################");
+            System.out.println("setRollbackOnly");
+            System.out.println("#################################################");
             getTransactionManager().getTransaction().setRollbackOnly();
         }
         public Throwable getRollbackCause() throws Exception {

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=527337&r1=527336&r2=527337
==============================================================================
--- 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 Apr 10 16:28:25 2007
@@ -19,7 +19,6 @@
 
 package org.apache.ode.dao.jpa;
 
-import org.apache.ode.bpel.common.BpelEventFilter;
 import org.apache.ode.bpel.dao.CorrelationSetDAO;
 import org.apache.ode.bpel.dao.PartnerLinkDAO;
 import org.apache.ode.bpel.dao.ProcessInstanceDAO;
@@ -49,7 +48,8 @@
 @Entity
 @Table(name="ODE_SCOPE")
 @NamedQueries({
-    @NamedQuery(name="PLinkByModelId", query="SELECT pl FROM PartnerLinkDAOImpl as pl WHERE pl._partnerLinkModelId = :mid")
+    @NamedQuery(name="PLinkByModelId", query="SELECT pl FROM PartnerLinkDAOImpl as pl WHERE pl._partnerLinkModelId = :mid"),
+    @NamedQuery(name="ScopeEvents", query="SELECT se FROM EventDAOImpl as se WHERE se._scopeId = :sid")
         })
 public class ScopeDAOImpl extends OpenJPADAO implements ScopeDAO {
 
@@ -175,10 +175,15 @@
 		return _variables;
 	}
 
-	public List<BpelEvent> listEvents(BpelEventFilter efilter) {
-		// TODO Implement me
-		return new ArrayList<BpelEvent>();
-	}
+	public List<BpelEvent> listEvents() {
+        List<BpelEvent> result = new ArrayList<BpelEvent>();
+        Query qry = getEM().createNamedQuery("ScopeEvents");
+        qry.setParameter("sid", _scopeInstanceId);
+        for (Object eventDao : qry.getResultList()) {
+            result.add(((EventDAOImpl)eventDao).getEvent());
+        }
+        return result;
+    }
 
 	public void setState(ScopeStateEnum state) {
 		_scopeState = state.toString();