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();