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 [EMAIL PROTECTED] 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();