You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by rr...@apache.org on 2010/04/01 14:57:02 UTC
svn commit: r929952 - in /ode/branches/APACHE_ODE_1.X: ./
bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/
bpel-runtime/src/test/resources/ bpel-runtime/src/test/resources/recovery/
dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/
Author: rr
Date: Thu Apr 1 12:57:02 2010
New Revision: 929952
URL: http://svn.apache.org/viewvc?rev=929952&view=rev
Log:
Fixed activityRecovery failure, moved to DAO Hib tests for bpel-runtime
Modified:
ode/branches/APACHE_ODE_1.X/Rakefile
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/ActivityRecoveryTest.java
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/resources/log4j.properties
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/resources/recovery/failure-to-fault.bpel
ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ProcessManagementDaoImpl.java
Modified: ode/branches/APACHE_ODE_1.X/Rakefile
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/Rakefile?rev=929952&r1=929951&r2=929952&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/Rakefile (original)
+++ ode/branches/APACHE_ODE_1.X/Rakefile Thu Apr 1 12:57:02 2010
@@ -203,7 +203,9 @@ define "ode" do
test.with projects("scheduler-simple", "dao-jpa", "dao-hibernate", "bpel-epr"),
BACKPORT, COMMONS.pool, COMMONS.lang, DERBY, JAVAX.connector, JAVAX.transaction,
GERONIMO.transaction, GERONIMO.kernel, GERONIMO.connector, TRANQL, HSQLDB, JAVAX.ejb,
- LOG4J, XERCES, Buildr::OpenJPA::REQUIRES, XALAN
+ OPENJPA, XERCES, XALAN, LOG4J, SLF4J,
+ DOM4J, HIBERNATE,
+ "tranql:tranql-connector-derby-common:jar:1.1"
package :jar
end
Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/ActivityRecoveryTest.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/ActivityRecoveryTest.java?rev=929952&r1=929951&r2=929952&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/ActivityRecoveryTest.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/ActivityRecoveryTest.java Thu Apr 1 12:57:02 2010
@@ -19,13 +19,14 @@
package org.apache.ode.bpel.runtime;
import org.apache.ode.bpel.engine.BpelManagementFacadeImpl;
+import org.apache.ode.bpel.engine.BpelServerImpl;
import org.apache.ode.bpel.iapi.Message;
import org.apache.ode.bpel.iapi.MessageExchange;
import org.apache.ode.bpel.iapi.MessageExchangeContext;
import org.apache.ode.bpel.iapi.PartnerRoleMessageExchange;
import org.apache.ode.bpel.o.OFailureHandling;
import org.apache.ode.bpel.pmapi.BpelManagementFacade;
-import org.apache.ode.bpel.pmapi.ScopeInfoDocument;
+import org.apache.ode.bpel.pmapi.ProcessInfoDocument;
import org.apache.ode.bpel.pmapi.TActivityInfo;
import org.apache.ode.bpel.pmapi.TActivityStatus;
import org.apache.ode.bpel.pmapi.TFailureInfo;
@@ -50,18 +51,17 @@ import javax.xml.namespace.QName;
import java.io.File;
import java.net.URI;
import java.util.ArrayList;
-import java.util.Collections;
/**
* Test activity recovery and failure handling.
*/
public class ActivityRecoveryTest extends MockObjectTestCase {
- // the maximum ammout of time to wait for an instance to reach a
- // desired status or for an activity to become available for recovery
+ // the maximum ammout of time to wait for an instance to reach a
+ // desired status or for an activity to become available for recovery
static final int MAX_WAIT = 10000;
// poll interval
- static final int DELAY = 10;
-
+ static final int DELAY = 100;
+
static final String NAMESPACE = "http://ode.apache.org/bpel/unit-test";
static final String[] ACTIONS = new String[]{ "retry", "cancel", "fault" };
MockBpelServer _server;
@@ -70,6 +70,10 @@ public class ActivityRecoveryTest extend
QName _processId;
private Mock _testService;
+ static {
+ // disable deferred process instance cleanup for faster testing
+ System.setProperty(BpelServerImpl.DEFERRED_PROCESS_INSTANCE_CLEANUP_DISABLED_NAME, "true");
+ }
/**
* The process calls the failing service, simulated by a call to invoke.
@@ -81,7 +85,6 @@ public class ActivityRecoveryTest extend
public void completed();
}
-
public void testInvokeSucceeds() throws Exception {
// Since the service invocation succeeds, the process completes.
_testService.expects(once()).method("invoke").will(returnValue(true));
@@ -159,8 +162,7 @@ public class ActivityRecoveryTest extend
execute("FailureToFault");
assertNotNull(lastInstance(TInstanceStatus.FAILED));
- TInstanceInfo v = lastInstance(TInstanceStatus.FAILED);
- assertTrue(OFailureHandling.FAILURE_FAULT_NAME.equals(v.getFaultInfo().getName()));
+ assertEquals(OFailureHandling.FAILURE_FAULT_NAME, lastInstance(TInstanceStatus.FAILED).getFaultInfo().getName());
assertNoFailures();
}
@@ -171,7 +173,7 @@ public class ActivityRecoveryTest extend
execute("FailureToFault2");
assertNotNull(lastInstance(TInstanceStatus.FAILED));
- assertTrue(OFailureHandling.FAILURE_FAULT_NAME.equals(lastInstance(TInstanceStatus.FAILED).getFaultInfo().getName()));
+ assertEquals(OFailureHandling.FAILURE_FAULT_NAME, lastInstance(TInstanceStatus.FAILED).getFaultInfo().getName());
assertNoFailures();
}
@@ -330,30 +332,30 @@ public class ActivityRecoveryTest extend
* @throws Exception
*/
protected TInstanceInfo lastInstance(TInstanceStatus.Enum expected) throws Exception {
- int counter = 0;
- do {
- TInstanceInfo info = getInstanceInfo();
- if (info != null && (expected == null || expected != TInstanceStatus.FAILED && info.getStatus() == expected || expected == TInstanceStatus.FAILED && info.getFaultInfo() != null)) {
- return info;
- }
- if (counter * DELAY > MAX_WAIT) {
- throw new Exception("Timed out wait for instance to reach "+expected+
- " status. Actual status: "+(info==null?"missing instance" : info.getStatus()));
- }
- counter++;
- Thread.sleep(DELAY);
- } while (true);
+ int counter = 0;
+ do {
+ TInstanceInfo info = getInstanceInfo();
+ if (info != null && (expected == null || info.getStatus() == expected)) {
+ return info;
+ }
+ if (counter * DELAY > MAX_WAIT) {
+ throw new Exception("Timed out wait for instance to reach "+expected+
+ " status. Actual status: "+(info==null?"missing instance" : info.getStatus()));
+ }
+ counter++;
+ Thread.sleep(DELAY);
+ } while (true);
}
/**
* get the instance info for the last instance
*/
private TInstanceInfo getInstanceInfo() {
- TInstanceInfoList instances = _management.listInstances("", "", 1000).getInstanceInfoList();
- int size = instances.sizeOfInstanceInfoArray();
- if (size > 0) {
- return instances.getInstanceInfoArray(instances.sizeOfInstanceInfoArray() - 1);
- }
- return null;
+ TInstanceInfoList instances = _management.listInstances("", "", 1000).getInstanceInfoList();
+ int size = instances.sizeOfInstanceInfoArray();
+ if (size > 0) {
+ return instances.getInstanceInfoArray(instances.sizeOfInstanceInfoArray() - 1);
+ }
+ return null;
}
/**
@@ -364,20 +366,22 @@ public class ActivityRecoveryTest extend
// Process is still active, none of the completed states.
assertNotNull(lastInstance(TInstanceStatus.ACTIVE));
// Tests here will only generate one failure.
- TInstanceInfo instance;
- TFailuresInfo failures;
+ TInstanceInfo instance = lastInstance(null);
+ int count = 30;
+ int sleep = 0;
while (true) {
- instance = lastInstance(null);
- failures = instance.getFailures();
- if (failures == null) {
- Thread.sleep(DELAY);
- } else {
- break;
- }
+ count--;
+ if (count <= 0) throw new AssertionError("No failures info, which are required");
+ Thread.sleep(sleep);
+ sleep = 1000;
+ TFailuresInfo failures = instance.getFailures();
+ if (!(failures != null && failures.getCount() == 1)) continue;
+ ProcessInfoDocument m = _management.getProcessInfo(_processId);
+ if (!m.getProcessInfo().isSetInstanceSummary()) continue;
+ failures = m.getProcessInfo().getInstanceSummary().getFailures();
+ if (!(failures != null && failures.getCount() == 1)) continue;
+ break;
}
- assertTrue(failures != null && failures.getCount() == 1);
- failures = _management.getProcessInfo(_processId).getProcessInfo().getInstanceSummary().getFailures();
- assertTrue(failures != null && failures.getCount() == 1);
// Look for individual activities inside the process instance.
ArrayList<TActivityInfo> recoveries = getRecoveriesInScope(instance, null, null);
assertTrue(recoveries.size() == 1);
@@ -397,7 +401,7 @@ public class ActivityRecoveryTest extend
* recovery channel for the activity in question.
*/
protected void recover(String action) throws Exception {
- ArrayList<TActivityInfo> recoveries = getRecoveries();
+ ArrayList<TActivityInfo> recoveries = getRecoveries();
assertTrue(recoveries.size() == 1);
TActivityInfo activity = recoveries.get(0);
assertNotNull(activity);
@@ -409,38 +413,28 @@ public class ActivityRecoveryTest extend
* if MAX_WAIT exceeded
*/
private ArrayList<TActivityInfo> getRecoveries() throws Exception {
- TInstanceInfo instance = null;
- int counter = 0;
- do {
- instance = getInstanceInfo();
- if (instance != null) {
- ArrayList<TActivityInfo> recoveries = getRecoveriesInScope(instance, null, null);
- if (recoveries.size() > 0) {
- return recoveries;
- }
- }
- if (counter * DELAY > MAX_WAIT) {
- throw new Exception("Timed out wait for recovery activities");
- }
- Thread.sleep(DELAY);
- counter++;
- } while (true);
+ TInstanceInfo instance = null;
+ int counter = 0;
+ do {
+ instance = getInstanceInfo();
+ if (instance != null) {
+ ArrayList<TActivityInfo> recoveries = getRecoveriesInScope(instance, null, null);
+ if (recoveries.size() > 0) {
+ return recoveries;
+ }
+ }
+ if (counter * DELAY > MAX_WAIT) {
+ throw new Exception("Timed out wait for recovery activities");
+ }
+ Thread.sleep(DELAY);
+ counter++;
+ } while (true);
}
protected ArrayList<TActivityInfo> getRecoveriesInScope(TInstanceInfo instance, TScopeInfo scope,
ArrayList<TActivityInfo> recoveries) throws Exception {
- if (scope == null) {
- if (instance != null) {
- TScopeRef x = instance.getRootScope();
- if (x != null) {
- ScopeInfoDocument v = _management.getScopeInfoWithActivity(x.getSiid(), true);
- if (v != null) {
- scope = v.getScopeInfo();
- }
- }
- }
- if (scope == null) return new ArrayList<TActivityInfo>();
- }
+ if (scope == null)
+ scope = _management.getScopeInfoWithActivity(instance.getRootScope().getSiid(), true).getScopeInfo();
if (recoveries == null)
recoveries = new ArrayList<TActivityInfo>();
TScopeInfo.Activities activities = scope.getActivities();
Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java?rev=929952&r1=929951&r2=929952&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java Thu Apr 1 12:57:02 2010
@@ -18,6 +18,15 @@
*/
package org.apache.ode.bpel.runtime;
+import org.apache.derby.jdbc.EmbeddedXADataSource;
+import org.apache.geronimo.connector.outbound.GenericConnectionManager;
+import org.apache.geronimo.connector.outbound.connectionmanagerconfig.LocalTransactions;
+import org.apache.geronimo.connector.outbound.connectionmanagerconfig.PoolingSupport;
+import org.apache.geronimo.connector.outbound.connectionmanagerconfig.SinglePool;
+import org.apache.geronimo.connector.outbound.connectionmanagerconfig.TransactionSupport;
+import org.apache.geronimo.connector.outbound.connectiontracking.ConnectionTracker;
+import org.apache.geronimo.connector.outbound.connectiontracking.ConnectionTrackingCoordinator;
+import org.apache.geronimo.transaction.manager.RecoverableTransactionManager;
import org.apache.ode.bpel.dao.BpelDAOConnectionFactory;
import org.apache.ode.bpel.dao.BpelDAOConnectionFactoryJDBC;
import org.apache.ode.bpel.engine.BpelServerImpl;
@@ -43,9 +52,11 @@ import org.apache.ode.store.ProcessStore
import org.apache.ode.utils.DOMUtils;
import org.apache.ode.utils.GUID;
import org.hsqldb.jdbc.jdbcDataSource;
+import org.tranql.connector.derby.EmbeddedLocalMCF;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
+import javax.resource.spi.ConnectionManager;
import javax.sql.DataSource;
import javax.transaction.TransactionManager;
import javax.wsdl.PortType;
@@ -79,13 +90,13 @@ class MockBpelServer {
@SuppressWarnings("unchecked")
HashMap _endpoints = new HashMap();
- public MockBpelServer() {
+ public MockBpelServer() {
try {
_server = new BpelServerImpl();
createTransactionManager();
createDataSource();
- createDAOConnection();
createScheduler();
+ createDAOConnection();
if (_daoCF == null)
throw new RuntimeException("No DAO");
_server.setDaoConnectionFactory(_daoCF);
@@ -93,7 +104,9 @@ class MockBpelServer {
if (_scheduler == null)
throw new RuntimeException("No scheduler");
createEndpointReferenceContext();
- _store = new ProcessStoreImpl(_eprContext, _dataSource,"jpa", new OdeConfigProperties(new Properties(), ""), true);
+ Properties storeProps = new Properties();
+ storeProps.setProperty("hibernate.hbm2ddl.auto", "update");
+ _store = new ProcessStoreImpl(_eprContext, _dataSource,"hib", new OdeConfigProperties(storeProps, ""), true);
_server.setScheduler(_scheduler);
_server.setEndpointReferenceContext(_eprContext);
_server.setMessageExchangeContext(createMessageExchangeContext());
@@ -169,12 +182,45 @@ class MockBpelServer {
}
protected DataSource createDataSource() throws Exception {
- jdbcDataSource hsqlds = new jdbcDataSource();
- hsqlds.setDatabase("jdbc:hsqldb:mem:" + new GUID().toString());
- hsqlds.setUser("sa");
- hsqlds.setPassword("");
- _dataSource = hsqlds;
- return _dataSource;
+ TransactionSupport transactionSupport = LocalTransactions.INSTANCE;
+ ConnectionTracker connectionTracker = new ConnectionTrackingCoordinator();
+
+ PoolingSupport poolingSupport = new SinglePool(
+ 10,
+ 0,
+ 1000,
+ 1,
+ true,
+ false,
+ false);
+
+ ConnectionManager connectionManager = new GenericConnectionManager(
+ transactionSupport,
+ poolingSupport,
+ null,
+ connectionTracker,
+ (RecoverableTransactionManager) _txManager,
+ getClass().getName(),
+ getClass().getClassLoader());
+
+
+ EmbeddedLocalMCF mcf = new org.tranql.connector.derby.EmbeddedLocalMCF();
+ mcf.setCreateDatabase(true);
+ mcf.setDatabaseName("target/testdb");
+ mcf.setUserName("sa");
+ mcf.setPassword("");
+ _dataSource = (DataSource) mcf.createConnectionFactory(connectionManager);
+ return _dataSource;
+
+
+// d = org.tranql.connector.jdbc.JDBCDriverMCF();
+// EmbeddedXADataSource ds = new EmbeddedXADataSource();
+// ds.setCreateDatabase("create");
+// ds.setDatabaseName("target/testdb");
+// ds.setUser("sa");
+// ds.setPassword("");
+// _dataSource = ds;
+// return _dataSource;
}
protected Scheduler createScheduler() throws Exception {
@@ -194,15 +240,23 @@ class MockBpelServer {
if (_dataSource == null)
throw new RuntimeException("No data source");
- BpelDAOConnectionFactoryJDBC daoCF = new BPELDAOConnectionFactoryImpl();
+//
+// BpelDAOConnectionFactoryJDBC daoCF = new BPELDAOConnectionFactoryImpl();
+// daoCF.setDataSource(_dataSource);
+// daoCF.setTransactionManager(_txManager);
+// Properties props = new Properties();
+// props.put("openjpa.Log", "log4j");
+// props.put("openjpa.jdbc.SynchronizeMappings", "buildSchema(ForeignKeys=false)");
+// daoCF.init(props);
+// _daoCF = daoCF;
+ org.apache.ode.daohib.bpel.BpelDAOConnectionFactoryImpl daoCF = new org.apache.ode.daohib.bpel.BpelDAOConnectionFactoryImpl();
daoCF.setDataSource(_dataSource);
daoCF.setTransactionManager(_txManager);
Properties props = new Properties();
- props.put("openjpa.Log", "log4j");
- props.put("openjpa.jdbc.SynchronizeMappings", "buildSchema(ForeignKeys=false)");
+ props.setProperty("hibernate.hbm2ddl.auto", "update");
daoCF.init(props);
- _daoCF = daoCF;
+ _daoCF = daoCF;
return _daoCF;
}
Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/resources/log4j.properties
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/resources/log4j.properties?rev=929952&r1=929951&r2=929952&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/resources/log4j.properties (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/resources/log4j.properties Thu Apr 1 12:57:02 2010
@@ -1,41 +1,35 @@
+#
+# 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.
#
-# 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.
+# The logging properties used during tests..
#
+#log4j.rootLogger=DEBUG, file
+log4j.rootLogger=INFO, file
-# Set root logger level to WARN and its only appender to CONSOLE
-log4j.rootLogger=WARN, FILE
-
-# log4j properties to work with commandline tools.
-log4j.category.org.mortbay=ERROR
-log4j.category.org.hibernate.type=WARN
-log4j.category.org.objectweb=ERROR
-log4j.category.org.apache.ode.axis2=DEBUG
-log4j.category.org.apache.ode.axis2.hooks.SessionInHandler=INFO
-log4j.category.org.apache.ode.bpel.engine=INFO
-log4j.category.org.apache.ode.daohib.bpel.CorrelatorDaoImpl=DEBUG
-log4j.category.org.apache.ode.bpel.epr=INFO
-
-# Console appender
-#log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
-#log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
-#log4j.appender.CONSOLE.layout.ConversionPattern=%p - %C{1}.%M(%L) | %m%n
+log4j.appender.file=org.apache.log4j.FileAppender
+log4j.appender.file.File=target/test/test.log
+log4j.appender.file.layout=org.apache.log4j.PatternLayout
+log4j.appender.file.layout.ConversionPattern=%d{MM-dd@HH:mm:ss} %-5p (%13F:%L) %3x - %m%n
-log4j.appender.FILE=org.apache.log4j.FileAppender
-log4j.appender.FILE.File=target/test.log
-log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
-log4j.appender.FILE.layout.ConversionPattern=%d{MM-dd@HH:mm:ss} %-5p (%13F:%L) %3x - %m%n
-log4j.appender.FILE.append=false
+#log4j.category.org.apache.ode=DEBUG
+#log4j.category.org.hibernate.jdbc.AbstractBatcher=DEBUG
+#log4j.category.org.org.hibernate.SQL=DEBUG
Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/resources/recovery/failure-to-fault.bpel
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/resources/recovery/failure-to-fault.bpel?rev=929952&r1=929951&r2=929952&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/resources/recovery/failure-to-fault.bpel (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/resources/recovery/failure-to-fault.bpel Thu Apr 1 12:57:02 2010
@@ -49,33 +49,22 @@
operation="instantiate"
variable="request"
createInstance="yes"/>
- <flow>
- <links>
- <link name="successfulInvoke"/>
- </links>
- <invoke name="invoke"
- partnerLink="failingPartnerLink"
- portType="tns:FailingPortType"
- operation="invoke"
- inputVariable="request"
- outputVariable="response">
- <sources>
- <source linkName="successfulInvoke"/>
- </sources>
- <ext:failureHandling>
- <ext:faultOnFailure>true</ext:faultOnFailure>
- </ext:failureHandling>
- </invoke>
- <invoke name="response"
- partnerLink="instantiatingPartnerLink"
- portType="tns:ResponsePortType"
- operation="respond"
- inputVariable="response">
- <targets>
- <target linkName="successfulInvoke"/>
- </targets>
- </invoke>
- </flow>
+ <invoke name="invoke"
+ partnerLink="failingPartnerLink"
+ portType="tns:FailingPortType"
+ operation="invoke"
+ inputVariable="request"
+ outputVariable="response">
+ <ext:failureHandling>
+ <ext:faultOnFailure>true</ext:faultOnFailure>
+ </ext:failureHandling>
+ </invoke>
+ <invoke name="response"
+ partnerLink="instantiatingPartnerLink"
+ portType="tns:ResponsePortType"
+ operation="respond"
+ inputVariable="response">
+ </invoke>
</sequence>
</process>
Modified: ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ProcessManagementDaoImpl.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ProcessManagementDaoImpl.java?rev=929952&r1=929951&r2=929952&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ProcessManagementDaoImpl.java (original)
+++ ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ProcessManagementDaoImpl.java Thu Apr 1 12:57:02 2010
@@ -38,14 +38,16 @@ public class ProcessManagementDaoImpl ex
public Map<InstanceSummaryKey, Long> countInstancesSummary(Set<String> pids) {
Map<InstanceSummaryKey, Long> result = new HashMap<InstanceSummaryKey, Long>();
- for (StatusKeys status : InstanceFilter.StatusKeys.values()) {
- Query query = getSession().getNamedQuery(HProcessInstance.COUNT_INSTANCES_BY_PROCESSES_IDS_AND_STATES);
- query.setParameterList("states", new InstanceFilter("status=" + status.toString()).convertFilterState());
- query.setParameterList("processIds", pids);
- for (Object o : query.list()) {
- Object[] row = (Object[]) o;
- InstanceSummaryKey key = new InstanceSummaryKey(row[0].toString(), status.toString());
- result.put(key, (Long) row[1]);
+ if (!pids.isEmpty()) {
+ for (StatusKeys status : InstanceFilter.StatusKeys.values()) {
+ Query query = getSession().getNamedQuery(HProcessInstance.COUNT_INSTANCES_BY_PROCESSES_IDS_AND_STATES);
+ query.setParameterList("states", new InstanceFilter("status=" + status.toString()).convertFilterState());
+ query.setParameterList("processIds", pids);
+ for (Object o : query.list()) {
+ Object[] row = (Object[]) o;
+ InstanceSummaryKey key = new InstanceSummaryKey(row[0].toString(), status.toString());
+ result.put(key, (Long) row[1]);
+ }
}
}
return result;
@@ -53,11 +55,13 @@ public class ProcessManagementDaoImpl ex
public Map<String, FailedSummaryValue> findFailedCountAndLastFailedDateForProcessIds(Set<String> pids) {
Map<String, FailedSummaryValue> result = new HashMap<String, FailedSummaryValue>();
- Query query = getSession().getNamedQuery(HProcessInstance.COUNT_FAILED_INSTANCES_BY_PROCESSES_IDS_AND_STATES);
- query.setParameterList("processIds", pids);
- for (Object o : query.list()) {
- Object[] row = (Object[]) o;
- result.put(row[0].toString(), new FailedSummaryValue((Long) row[1], (Date) row[2]));
+ if (!pids.isEmpty()) {
+ Query query = getSession().getNamedQuery(HProcessInstance.COUNT_FAILED_INSTANCES_BY_PROCESSES_IDS_AND_STATES);
+ query.setParameterList("processIds", pids);
+ for (Object o : query.list()) {
+ Object[] row = (Object[]) o;
+ result.put(row[0].toString(), new FailedSummaryValue((Long) row[1], (Date) row[2]));
+ }
}
return result;
}