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;
     }