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/05/23 20:28:57 UTC

svn commit: r947459 - in /ode/trunk: axis2-war/src/test/java/org/apache/ode/axis2/management/ axis2-war/src/test/resources/TestInstanceRetire/noVar/ axis2-war/src/test/resources/TestInstanceRetire/withVar/ bpel-api/src/main/java/org/apache/ode/bpel/iap...

Author: rr
Date: Sun May 23 18:28:57 2010
New Revision: 947459

URL: http://svn.apache.org/viewvc?rev=947459&view=rev
Log:
ODE-829: if process is retired the inflight instances dont work (thanks to Anurag Aggarwal)

Added:
    ode/trunk/axis2-war/src/test/java/org/apache/ode/axis2/management/RedeployTest.java   (with props)
    ode/trunk/axis2-war/src/test/java/org/apache/ode/axis2/management/RetireTestVar.java   (with props)
    ode/trunk/axis2-war/src/test/resources/TestInstanceRetire/noVar/
    ode/trunk/axis2-war/src/test/resources/TestInstanceRetire/noVar/TestRetire.bpel   (with props)
    ode/trunk/axis2-war/src/test/resources/TestInstanceRetire/noVar/TestRetire.wsdl   (with props)
    ode/trunk/axis2-war/src/test/resources/TestInstanceRetire/noVar/deploy.xml   (with props)
    ode/trunk/axis2-war/src/test/resources/TestInstanceRetire/withVar/
    ode/trunk/axis2-war/src/test/resources/TestInstanceRetire/withVar/TestRetire.bpel   (with props)
    ode/trunk/axis2-war/src/test/resources/TestInstanceRetire/withVar/TestRetire.wsdl   (with props)
    ode/trunk/axis2-war/src/test/resources/TestInstanceRetire/withVar/deploy.xml   (with props)
Modified:
    ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/iapi/Scheduler.java
    ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelEngineImpl.java
    ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java
    ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerLinkMyRoleImpl.java
    ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/Replayer.java
    ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/ReplayerBpelRuntimeContextImpl.java
    ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/ReplayerContext.java
    ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ProcessDaoImpl.java

Added: ode/trunk/axis2-war/src/test/java/org/apache/ode/axis2/management/RedeployTest.java
URL: http://svn.apache.org/viewvc/ode/trunk/axis2-war/src/test/java/org/apache/ode/axis2/management/RedeployTest.java?rev=947459&view=auto
==============================================================================
--- ode/trunk/axis2-war/src/test/java/org/apache/ode/axis2/management/RedeployTest.java (added)
+++ ode/trunk/axis2-war/src/test/java/org/apache/ode/axis2/management/RedeployTest.java Sun May 23 18:28:57 2010
@@ -0,0 +1,51 @@
+/*
+ * 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.axis2.management;
+
+import org.apache.ode.axis2.Axis2TestBase;
+import static org.testng.AssertJUnit.assertTrue;
+import org.testng.annotations.Test;
+
+import javax.xml.namespace.QName;
+
+/**
+ * @author Anurag Aggarwal <an...@intalio.com>
+ */
+public class RedeployTest extends Axis2TestBase {
+
+    // @Test(dataProvider="configs")
+    // not supposed to work, user should not rm .deploy folder maybe ?
+    public void testRedeploy() throws Exception {
+        String bundleName = "TestInstanceRetire";
+        System.out.println("=> " + server.getODEServer().getProcessStore().getPackages());
+        if (server.isDeployed("withVar")) server.undeployProcess(bundleName + "/withVar");
+        
+        QName deployedQName = server.deployProcess(bundleName + "/withVar").iterator().next();
+
+        server.sendRequestFile("http://localhost:8888/processes/testretire",
+                bundleName + "/1", "testRequest1.soap");
+
+        server.undeployProcess(bundleName + "/withVar");
+        server.deployProcess(bundleName + "/withVar").iterator().next();
+        
+        String response = server.sendRequestFile("http://localhost:8888/processes/testretire",
+                bundleName + "/1", "testRequest2.soap");
+    }
+}

Propchange: ode/trunk/axis2-war/src/test/java/org/apache/ode/axis2/management/RedeployTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: ode/trunk/axis2-war/src/test/java/org/apache/ode/axis2/management/RetireTestVar.java
URL: http://svn.apache.org/viewvc/ode/trunk/axis2-war/src/test/java/org/apache/ode/axis2/management/RetireTestVar.java?rev=947459&view=auto
==============================================================================
--- ode/trunk/axis2-war/src/test/java/org/apache/ode/axis2/management/RetireTestVar.java (added)
+++ ode/trunk/axis2-war/src/test/java/org/apache/ode/axis2/management/RetireTestVar.java Sun May 23 18:28:57 2010
@@ -0,0 +1,62 @@
+/*
+ * 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.axis2.management;
+
+import org.apache.ode.axis2.Axis2TestBase;
+import static org.testng.AssertJUnit.assertTrue;
+import org.testng.annotations.Test;
+
+import javax.xml.namespace.QName;
+
+/**
+ * @author Anurag Aggarwal <an...@intalio.com>
+ */
+public class RetireTestVar extends Axis2TestBase {
+
+    @Test(dataProvider="configs")
+    public void testRetiredInstance() throws Exception {
+    	String response = null;
+        String bundleName = "TestInstanceRetire";
+        System.out.println("=> " + server.getODEServer().getProcessStore().getPackages());
+        if (server.isDeployed("withVar")) server.undeployProcess(bundleName + "/withVar");
+        if (server.isDeployed("noVar")) server.undeployProcess(bundleName + "/noVar");
+        
+        QName deployedQName = server.deployProcess(bundleName + "/withVar").iterator().next();
+
+        server.sendRequestFile("http://localhost:8888/processes/testretire",
+                bundleName + "/1", "testRequest1.soap");
+
+        server.getODEServer().getProcessManagement().setRetired(deployedQName, true);
+        server.deployProcess(bundleName + "/noVar");
+        
+        response = server.sendRequestFile("http://localhost:8888/processes/testretire",
+                bundleName + "/1", "testRequest2.soap");
+
+        assertTrue(response.indexOf("DONE") > 0);
+        
+        server.sendRequestFile("http://localhost:8888/processes/testretire",
+                bundleName + "/1", "testRequest1.soap");
+
+        response = server.sendRequestFile("http://localhost:8888/processes/testretire",
+                bundleName + "/1", "testRequest2.soap");
+
+        assertTrue(response.indexOf("XYZ") > 0);
+    }
+}

Propchange: ode/trunk/axis2-war/src/test/java/org/apache/ode/axis2/management/RetireTestVar.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: ode/trunk/axis2-war/src/test/resources/TestInstanceRetire/noVar/TestRetire.bpel
URL: http://svn.apache.org/viewvc/ode/trunk/axis2-war/src/test/resources/TestInstanceRetire/noVar/TestRetire.bpel?rev=947459&view=auto
==============================================================================
--- ode/trunk/axis2-war/src/test/resources/TestInstanceRetire/noVar/TestRetire.bpel (added)
+++ ode/trunk/axis2-war/src/test/resources/TestInstanceRetire/noVar/TestRetire.bpel Sun May 23 18:28:57 2010
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+  ~ 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.
+  -->
+
+<process name="TestRetire"
+         targetNamespace="http://ode/bpel/test/retire"
+         xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
+         xmlns:tns="http://ode/bpel/responder"
+         xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+         xmlns:resp="http://ode/bpel/test/retire/responder.wsdl">
+
+    <import location="TestRetire.wsdl" namespace="http://ode/bpel/test/retire.wsdl"
+            importType="http://schemas.xmlsoap.org/wsdl/" />
+
+    <partnerLinks>
+        <partnerLink name="testRetirePartnerLink2" partnerLinkType="resp:TestRetirePartnerLinkType" myRole="responder"/>
+    </partnerLinks>
+
+    <variables>
+        <variable name="dummy" messageType="resp:TestRetireMessage"/>
+        <variable name="dummy3" messageType="resp:TestRetireMessage"/>
+    </variables>
+
+    <correlationSets>
+        <correlationSet name="dummyCorr" properties="resp:dummyProp" />
+    </correlationSets>
+
+    <sequence>
+        <receive name="start" partnerLink="testRetirePartnerLink2" variable="dummy" operation="first" createInstance="yes">
+            <correlations>
+                <correlation set="dummyCorr" initiate="yes"/>
+            </correlations>
+        </receive>
+        <reply name="reply-endpoint" partnerLink="testRetirePartnerLink2" operation="first" variable="dummy"/>
+
+
+        <receive name="second" partnerLink="testRetirePartnerLink2" variable="dummy" operation="second">
+            <correlations>
+                <correlation set="dummyCorr" initiate="no"/>
+            </correlations>
+        </receive>
+        <assign>
+            <copy>
+                <from><literal>DONE</literal></from>
+                <to>$dummy3.TestPart</to>
+            </copy>
+        </assign>
+        <reply name="reply-ack" partnerLink="testRetirePartnerLink2" operation="second" variable="dummy"/>
+
+    </sequence>
+</process>

Propchange: ode/trunk/axis2-war/src/test/resources/TestInstanceRetire/noVar/TestRetire.bpel
------------------------------------------------------------------------------
    svn:eol-style = native

Added: ode/trunk/axis2-war/src/test/resources/TestInstanceRetire/noVar/TestRetire.wsdl
URL: http://svn.apache.org/viewvc/ode/trunk/axis2-war/src/test/resources/TestInstanceRetire/noVar/TestRetire.wsdl?rev=947459&view=auto
==============================================================================
--- ode/trunk/axis2-war/src/test/resources/TestInstanceRetire/noVar/TestRetire.wsdl (added)
+++ ode/trunk/axis2-war/src/test/resources/TestInstanceRetire/noVar/TestRetire.wsdl Sun May 23 18:28:57 2010
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+  ~ 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.
+  -->
+
+<wsdl:definitions 
+    targetNamespace="http://ode/bpel/test/retire/responder.wsdl"
+    xmlns="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:tns="http://ode/bpel/test/retire/responder.wsdl"
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
+    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+    xmlns:dummy="http://axis2.ode.apache.org"
+    xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype"
+    xmlns:prop="http://docs.oasis-open.org/wsbpel/2.0/varprop">
+
+    <wsdl:message name="TestRetireMessage">
+        <wsdl:part name="TestPart" type="xsd:string"/>
+    </wsdl:message>
+    
+    <wsdl:portType name="TestRetirePortType">
+        <wsdl:operation name="first">
+            <wsdl:input message="tns:TestRetireMessage" name="TestIn"/>
+            <wsdl:output message="tns:TestRetireMessage" name="TestOut"/>
+        </wsdl:operation>    
+        <wsdl:operation name="second">
+            <wsdl:input message="tns:TestRetireMessage" name="TestIn"/>
+            <wsdl:output message="tns:TestRetireMessage" name="TestOut"/>
+        </wsdl:operation>
+    </wsdl:portType>
+    
+     <wsdl:binding name="TestRetireSoapBinding" type="tns:TestRetirePortType">
+        <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
+        <wsdl:operation name="first">
+            <soap:operation soapAction="" style="rpc"/>
+            <wsdl:input><soap:body namespace="http://ode/bpel/test/retire/responder.wsdl" use="literal"/></wsdl:input>
+            <wsdl:output><soap:body namespace="http://ode/bpel/unit-test.wsdl" use="literal"/></wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="second">
+            <soap:operation soapAction="" style="rpc"/>
+            <wsdl:input><soap:body namespace="http://ode/bpel/test/retire/responder.wsdl" use="literal"/></wsdl:input>
+            <wsdl:output><soap:body namespace="http://ode/bpel/unit-test.wsdl" use="literal"/></wsdl:output>
+        </wsdl:operation>
+    </wsdl:binding>
+    <wsdl:service name="TestRetireService">
+        <wsdl:port name="TestRetirePort" binding="tns:TestRetireSoapBinding">
+            <soap:address location="http://localhost:8888/ode/processes/testretire"/>
+        </wsdl:port>
+    </wsdl:service>
+    
+    <plnk:partnerLinkType name="TestRetirePartnerLinkType">
+        <plnk:role name="responder" portType="tns:TestRetirePortType"/>
+    </plnk:partnerLinkType>
+
+    <prop:property name="dummyProp" type="xsd:string"/>
+    <prop:propertyAlias propertyName="tns:dummyProp" messageType="tns:TestRetireMessage" part="TestPart"/>
+
+</wsdl:definitions>
+

Propchange: ode/trunk/axis2-war/src/test/resources/TestInstanceRetire/noVar/TestRetire.wsdl
------------------------------------------------------------------------------
    svn:eol-style = native

Added: ode/trunk/axis2-war/src/test/resources/TestInstanceRetire/noVar/deploy.xml
URL: http://svn.apache.org/viewvc/ode/trunk/axis2-war/src/test/resources/TestInstanceRetire/noVar/deploy.xml?rev=947459&view=auto
==============================================================================
--- ode/trunk/axis2-war/src/test/resources/TestInstanceRetire/noVar/deploy.xml (added)
+++ ode/trunk/axis2-war/src/test/resources/TestInstanceRetire/noVar/deploy.xml Sun May 23 18:28:57 2010
@@ -0,0 +1,29 @@
+<!--
+  ~ 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.
+  -->
+<deploy xmlns="http://www.apache.org/ode/schemas/dd/2007/03"
+    xmlns:pns="http://ode/bpel/test/retire"
+    xmlns:wns="http://ode/bpel/test/retire/responder.wsdl">
+
+    <process name="pns:TestRetire">
+        <active>true</active>
+        <provide partnerLink="testRetirePartnerLink2">
+            <service name="wns:TestRetireService" port="TestRetirePort"/>
+        </provide>
+    </process>
+</deploy>

Propchange: ode/trunk/axis2-war/src/test/resources/TestInstanceRetire/noVar/deploy.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: ode/trunk/axis2-war/src/test/resources/TestInstanceRetire/withVar/TestRetire.bpel
URL: http://svn.apache.org/viewvc/ode/trunk/axis2-war/src/test/resources/TestInstanceRetire/withVar/TestRetire.bpel?rev=947459&view=auto
==============================================================================
--- ode/trunk/axis2-war/src/test/resources/TestInstanceRetire/withVar/TestRetire.bpel (added)
+++ ode/trunk/axis2-war/src/test/resources/TestInstanceRetire/withVar/TestRetire.bpel Sun May 23 18:28:57 2010
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+  ~ 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.
+  -->
+
+<process name="TestRetire"
+         targetNamespace="http://ode/bpel/test/retire"
+         xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
+         xmlns:tns="http://ode/bpel/responder"
+         xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+         xmlns:resp="http://ode/bpel/test/retire/responder.wsdl">
+
+    <import location="TestRetire.wsdl" namespace="http://ode/bpel/test/retire.wsdl"
+            importType="http://schemas.xmlsoap.org/wsdl/" />
+
+    <partnerLinks>
+        <partnerLink name="testRetirePartnerLink" partnerLinkType="resp:TestRetirePartnerLinkType" myRole="responder"/>
+    </partnerLinks>
+
+    <variables>
+        <variable name="dummy" messageType="resp:TestRetireMessage"/>
+        <variable name="dummy2" messageType="resp:TestRetireMessage"/>
+    </variables>
+
+    <correlationSets>
+        <correlationSet name="dummyCorr" properties="resp:dummyProp" />
+    </correlationSets>
+
+    <sequence>
+        <receive name="start" partnerLink="testRetirePartnerLink" variable="dummy" operation="first" createInstance="yes">
+            <correlations>
+                <correlation set="dummyCorr" initiate="yes"/>
+            </correlations>
+        </receive>
+        <reply name="reply-endpoint" partnerLink="testRetirePartnerLink" operation="first" variable="dummy"/>
+
+
+        <receive name="second" partnerLink="testRetirePartnerLink" variable="dummy" operation="second">
+            <correlations>
+                <correlation set="dummyCorr" initiate="no"/>
+            </correlations>
+        </receive>
+        <assign>
+            <copy>
+                <from><literal>DONE</literal></from>
+                <to>$dummy.TestPart</to>
+            </copy>
+            <copy>
+                <from><literal>DONE</literal></from>
+                <to>$dummy2.TestPart</to>
+            </copy>
+        </assign>
+        <reply name="reply-ack" partnerLink="testRetirePartnerLink" operation="second" variable="dummy"/>
+
+    </sequence>
+</process>

Propchange: ode/trunk/axis2-war/src/test/resources/TestInstanceRetire/withVar/TestRetire.bpel
------------------------------------------------------------------------------
    svn:eol-style = native

Added: ode/trunk/axis2-war/src/test/resources/TestInstanceRetire/withVar/TestRetire.wsdl
URL: http://svn.apache.org/viewvc/ode/trunk/axis2-war/src/test/resources/TestInstanceRetire/withVar/TestRetire.wsdl?rev=947459&view=auto
==============================================================================
--- ode/trunk/axis2-war/src/test/resources/TestInstanceRetire/withVar/TestRetire.wsdl (added)
+++ ode/trunk/axis2-war/src/test/resources/TestInstanceRetire/withVar/TestRetire.wsdl Sun May 23 18:28:57 2010
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+  ~ 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.
+  -->
+
+<wsdl:definitions 
+    targetNamespace="http://ode/bpel/test/retire/responder.wsdl"
+    xmlns="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:tns="http://ode/bpel/test/retire/responder.wsdl"
+    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
+    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+    xmlns:dummy="http://axis2.ode.apache.org"
+    xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype"
+    xmlns:prop="http://docs.oasis-open.org/wsbpel/2.0/varprop">
+
+    <wsdl:message name="TestRetireMessage">
+        <wsdl:part name="TestPart" type="xsd:string"/>
+    </wsdl:message>
+    
+    <wsdl:portType name="TestRetirePortType">
+        <wsdl:operation name="first">
+            <wsdl:input message="tns:TestRetireMessage" name="TestIn"/>
+            <wsdl:output message="tns:TestRetireMessage" name="TestOut"/>
+        </wsdl:operation>    
+        <wsdl:operation name="second">
+            <wsdl:input message="tns:TestRetireMessage" name="TestIn"/>
+            <wsdl:output message="tns:TestRetireMessage" name="TestOut"/>
+        </wsdl:operation>
+    </wsdl:portType>
+    
+     <wsdl:binding name="TestRetireSoapBinding" type="tns:TestRetirePortType">
+        <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
+        <wsdl:operation name="first">
+            <soap:operation soapAction="" style="rpc"/>
+            <wsdl:input><soap:body namespace="http://ode/bpel/test/retire/responder.wsdl" use="literal"/></wsdl:input>
+            <wsdl:output><soap:body namespace="http://ode/bpel/unit-test.wsdl" use="literal"/></wsdl:output>
+        </wsdl:operation>
+        <wsdl:operation name="second">
+            <soap:operation soapAction="" style="rpc"/>
+            <wsdl:input><soap:body namespace="http://ode/bpel/test/retire/responder.wsdl" use="literal"/></wsdl:input>
+            <wsdl:output><soap:body namespace="http://ode/bpel/unit-test.wsdl" use="literal"/></wsdl:output>
+        </wsdl:operation>
+    </wsdl:binding>
+    <wsdl:service name="TestRetireService">
+        <wsdl:port name="TestRetirePort" binding="tns:TestRetireSoapBinding">
+            <soap:address location="http://localhost:8888/ode/processes/testretire"/>
+        </wsdl:port>
+    </wsdl:service>
+    
+    <plnk:partnerLinkType name="TestRetirePartnerLinkType">
+        <plnk:role name="responder" portType="tns:TestRetirePortType"/>
+    </plnk:partnerLinkType>
+
+    <prop:property name="dummyProp" type="xsd:string"/>
+    <prop:propertyAlias propertyName="tns:dummyProp" messageType="tns:TestRetireMessage" part="TestPart"/>
+
+</wsdl:definitions>
+

Propchange: ode/trunk/axis2-war/src/test/resources/TestInstanceRetire/withVar/TestRetire.wsdl
------------------------------------------------------------------------------
    svn:eol-style = native

Added: ode/trunk/axis2-war/src/test/resources/TestInstanceRetire/withVar/deploy.xml
URL: http://svn.apache.org/viewvc/ode/trunk/axis2-war/src/test/resources/TestInstanceRetire/withVar/deploy.xml?rev=947459&view=auto
==============================================================================
--- ode/trunk/axis2-war/src/test/resources/TestInstanceRetire/withVar/deploy.xml (added)
+++ ode/trunk/axis2-war/src/test/resources/TestInstanceRetire/withVar/deploy.xml Sun May 23 18:28:57 2010
@@ -0,0 +1,29 @@
+<!--
+  ~ 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.
+  -->
+<deploy xmlns="http://www.apache.org/ode/schemas/dd/2007/03"
+    xmlns:pns="http://ode/bpel/test/retire"
+    xmlns:wns="http://ode/bpel/test/retire/responder.wsdl">
+
+    <process name="pns:TestRetire">
+        <active>true</active>
+        <provide partnerLink="testRetirePartnerLink">
+            <service name="wns:TestRetireService" port="TestRetirePort"/>
+        </provide>
+    </process>
+</deploy>

Propchange: ode/trunk/axis2-war/src/test/resources/TestInstanceRetire/withVar/deploy.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/iapi/Scheduler.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/iapi/Scheduler.java?rev=947459&r1=947458&r2=947459&view=diff
==============================================================================
--- ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/iapi/Scheduler.java (original)
+++ ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/iapi/Scheduler.java Sun May 23 18:28:57 2010
@@ -295,7 +295,7 @@ public interface Scheduler {
      * processing.
      * @author mszefler
      */
-    public class JobProcessorException extends Exception {
+    public class JobProcessorException extends RuntimeException {
         private static final long serialVersionUID = 1L;
         public final boolean retry;
 

Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelEngineImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelEngineImpl.java?rev=947459&r1=947458&r2=947459&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelEngineImpl.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelEngineImpl.java Sun May 23 18:28:57 2010
@@ -372,31 +372,52 @@ public class BpelEngineImpl implements B
         if (process == null) return null;
         return process.getOProcess();
     }
+    
+    private List<BpelProcess> getAllProcesses(QName processId) {
+    	String qName =  processId.toString();
+    	if(qName.lastIndexOf("-") > 0) {
+    		qName = qName.substring(0, qName.lastIndexOf("-"));
+    	}
+    	List<BpelProcess> ret = new ArrayList<BpelProcess>();
+    	Iterator<Map.Entry<QName, BpelProcess>> it = _activeProcesses.entrySet().iterator();
+    	while (it.hasNext()) {
+    		Map.Entry<QName, BpelProcess> pairs = it.next();
+    		if(pairs.getKey().toString().startsWith(qName)) {
+    			ret.add(pairs.getValue());
+    		}
+    	}
+    	return ret;
+    }
 
-    public void onScheduledJob(Scheduler.JobInfo jobInfo) throws Scheduler.JobProcessorException {
-        final JobDetails we = jobInfo.jobDetail;
-
-        if( __log.isTraceEnabled() ) __log.trace("[JOB] onScheduledJob " + jobInfo + "" + we.getInstanceId());
-        
+    public void acquireInstanceLock(final Long iid) {
         // We lock the instance to prevent concurrent transactions and prevent unnecessary rollbacks,
         // Note that we don't want to wait too long here to get our lock, since we are likely holding
         // on to scheduler's locks of various sorts.
         try {
-            _instanceLockManager.lock(we.getInstanceId(), 1, TimeUnit.MICROSECONDS);
+            _instanceLockManager.lock(iid, 1, TimeUnit.MICROSECONDS);
             _contexts.scheduler.registerSynchronizer(new Scheduler.Synchronizer() {
                 public void afterCompletion(boolean success) {
-                    _instanceLockManager.unlock(we.getInstanceId());
+                    _instanceLockManager.unlock(iid);
                 }
                 public void beforeCompletion() { }
             });
         } catch (InterruptedException e) {
             // Retry later.
-            __log.debug("Thread interrupted, job will be rescheduled: " + jobInfo);
+            __log.debug("Thread interrupted, job will be rescheduled");
             throw new Scheduler.JobProcessorException(true);
         } catch (org.apache.ode.bpel.engine.InstanceLockManager.TimeoutException e) {
-            __log.debug("Instance " + we.getInstanceId() + " is busy, rescheduling job.");
+            __log.debug("Instance " + iid + " is busy, rescheduling job.");
             throw new Scheduler.JobProcessorException(true);
         }
+    }
+
+    public void onScheduledJob(Scheduler.JobInfo jobInfo) throws Scheduler.JobProcessorException {
+        final JobDetails we = jobInfo.jobDetail;
+
+        if( __log.isTraceEnabled() ) __log.trace("[JOB] onScheduledJob " + jobInfo + "" + we.getInstanceId());
+        
+        acquireInstanceLock(we.getInstanceId());
+        
         // DONT PUT CODE HERE-need this method real tight in a try/catch block, we need to handle
         // all types of failure here, the scheduler is not going to know how to handle our errors,
         // ALSO we have to release the lock obtained above (IMPORTANT), lest the whole system come
@@ -452,11 +473,27 @@ public class BpelEngineImpl implements B
                         }
                     }
                 }
-                process.handleJobDetails(jobInfo.jobDetail);
+                if (we.getType().equals(JobType.INVOKE_INTERNAL)) {
+                	List<BpelProcess> processes = getAllProcesses(we.getProcessId());
+                	boolean routed = false;
+                	jobInfo.jobDetail.detailsExt.put("enqueue", false);
+                	for(BpelProcess proc : processes) {
+                        routed = routed || proc.handleJobDetails(jobInfo.jobDetail);                		
+                	}
+                	if(!routed) {
+                    	jobInfo.jobDetail.detailsExt.put("enqueue", true);
+                        process.handleJobDetails(jobInfo.jobDetail);                		
+                	}
+                }
+                else {
+                    process.handleJobDetails(jobInfo.jobDetail);
+                }
                 debuggingDelay();
             } finally {
                 Thread.currentThread().setContextClassLoader(cl);
             }
+        } catch (Scheduler.JobProcessorException e) {
+            throw e;
         } catch (BpelEngineException bee) {
             __log.error(__msgs.msgScheduledJobFailed(we), bee);
             throw new Scheduler.JobProcessorException(bee, checkRetry(we));

Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java?rev=947459&r1=947458&r2=947459&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java Sun May 23 18:28:57 2010
@@ -204,7 +204,7 @@ public class BpelProcess {
         boolean invoke(PartnerLinkMyRoleImpl target, PartnerLinkMyRoleImpl.RoutingInfo routingInfo, boolean createInstance);
     }
     
-    public void invokeProcess(MyRoleMessageExchangeImpl mex, InvokeHandler invokeHandler) {
+    public boolean invokeProcess(MyRoleMessageExchangeImpl mex, InvokeHandler invokeHandler, boolean enqueue) {
         boolean routed = false;
 
         try {
@@ -214,14 +214,14 @@ public class BpelProcess {
                 String errmsg = __msgs.msgMyRoleRoutingFailure(mex.getMessageExchangeId());
                 __log.error(errmsg);
                 mex.setFailure(MessageExchange.FailureType.UNKNOWN_ENDPOINT, errmsg, null);
-                return;
+                return false;
             }
 
             mex.getDAO().setProcess(getProcessDAO());
 
             if (!processInterceptors(mex, InterceptorInvoker.__onProcessInvoked)) {
                 __log.debug("Aborting processing of mex " + mex + " due to interceptors.");
-                return;
+                return false;
             }
 
             markused();
@@ -233,7 +233,7 @@ public class BpelProcess {
                 routings = target.findRoute(mex);
                 boolean createInstance = target.isCreateInstance(mex);
 
-                if (mex.getStatus() != MessageExchange.Status.FAILURE) {
+                if (mex.getStatus() != MessageExchange.Status.FAILURE && routings!=null) {
                     for (PartnerLinkMyRoleImpl.RoutingInfo routing : routings) {
                         routed = routed || invokeHandler.invoke(target, routing, createInstance);
                     }
@@ -244,7 +244,7 @@ public class BpelProcess {
             }
 
             // Nothing found, saving for later
-            if (!routed) {
+            if (!routed && enqueue) {
                 // TODO this is kind of hackish when no match and more than one myrole is selected.
                 // we save the routing on the last myrole
                 // actually the message queue should be attached to the instance instead of the correlator
@@ -268,6 +268,11 @@ public class BpelProcess {
         if (mex.getPattern().equals(MessageExchange.MessageExchangePattern.REQUEST_ONLY) && routed && getCleanupCategories(false).contains(CLEANUP_CATEGORY.MESSAGES)) {
             mex.release();
         }
+        return routed;
+    }
+    
+    private boolean isActive() {
+    	return _pconf.getState() == org.apache.ode.bpel.iapi.ProcessState.ACTIVE;
     }
     
     /**
@@ -275,21 +280,22 @@ public class BpelProcess {
      *
      * @param mex
      */
-    void invokeProcess(final MyRoleMessageExchangeImpl mex) {
-        invokeProcess(mex, new InvokeHandler() {
+    boolean invokeProcess(final MyRoleMessageExchangeImpl mex, boolean enqueue) {
+        return invokeProcess(mex, new InvokeHandler() {
             public boolean invoke(PartnerLinkMyRoleImpl target, PartnerLinkMyRoleImpl.RoutingInfo routing, boolean createInstance) {
-                  if (routing.messageRoute == null && createInstance) {
+                  if (routing.messageRoute == null && createInstance && isActive()) {
                       // No route but we can create a new instance
                       target.invokeNewInstance(mex, routing);
                       return true;
                   } else if (routing.messageRoute != null) {
                       // Found a route, hitting it
+                      _engine.acquireInstanceLock(routing.messageRoute.getTargetInstance().getInstanceId());
                       target.invokeInstance(mex, routing);
                       return true;
                   }
                   return false;
             }
-        });
+        }, enqueue);
     }
 
     /** Several myroles can use the same service in a given process */
@@ -406,7 +412,8 @@ public class BpelProcess {
     /**
      * @see org.apache.ode.bpel.engine.BpelProcess#handleJobDetails(java.util.Map<java.lang.String,java.lang.Object>)
      */
-    public void handleJobDetails(JobDetails jobData) {
+    public boolean handleJobDetails(JobDetails jobData) {
+    	boolean ret = true;
         try {
             _hydrationLatch.latch(1);
             markused();
@@ -422,7 +429,7 @@ public class BpelProcess {
                     __log.debug("InvokeInternal event for mexid " + we.getMexId());
                 }
                 MyRoleMessageExchangeImpl mex = (MyRoleMessageExchangeImpl) _engine.getMessageExchange(we.getMexId());
-                invokeProcess(mex);
+                ret = invokeProcess(mex, (Boolean) jobData.detailsExt.get("enqueue"));
             } else {
                 // Instance level events
                 ProcessInstanceDAO procInstance = getProcessDAO().getInstance(we.getInstanceId());
@@ -430,7 +437,7 @@ public class BpelProcess {
                     if (__log.isDebugEnabled()) {
                         __log.debug("handleJobDetails: no ProcessInstance found with iid " + we.getInstanceId() + "; ignoring.");
                     }
-                    return;
+                    return true;
                 }
 
                 BpelRuntimeContextImpl processInstance = createRuntimeContext(procInstance, null, null);
@@ -461,7 +468,7 @@ public class BpelProcess {
                         if( procInstance.getState() == ProcessState.STATE_COMPLETED_OK 
                                 || procInstance.getState() == ProcessState.STATE_COMPLETED_WITH_FAULT ) {
                             __log.debug("A matcher event was aborted. The process is already completed.");
-                            return;
+                            return true;
                         }
                         processInstance.matcherEvent(we.getCorrelatorId(), we.getCorrelationKeySet());
                 }
@@ -469,6 +476,7 @@ public class BpelProcess {
         } finally {
             _hydrationLatch.release(1);
         }
+        return ret;
     }
 
     private void setRoles(OProcess oprocess) {

Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerLinkMyRoleImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerLinkMyRoleImpl.java?rev=947459&r1=947458&r2=947459&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerLinkMyRoleImpl.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerLinkMyRoleImpl.java Sun May 23 18:28:57 2010
@@ -85,6 +85,9 @@ public class PartnerLinkMyRoleImpl exten
 
     public boolean isCreateInstance(MyRoleMessageExchangeImpl mex) {
         Operation operation = getMyRoleOperation(mex.getOperationName());
+        if(operation == null) {
+        	return false;
+        }
         return _plinkDef.isCreateInstanceOperation(operation);
     }
 
@@ -98,8 +101,8 @@ public class PartnerLinkMyRoleImpl exten
 
         Operation operation = getMyRoleOperation(mex.getOperationName());
         if (operation == null) {
-            __log.error(__msgs.msgUnknownOperation(mex.getOperationName(), _plinkDef.myRolePortType.getQName()));
-            mex.setFailure(MessageExchange.FailureType.UNKNOWN_OPERATION, mex.getOperationName(), null);
+//            __log.error(__msgs.msgUnknownOperation(mex.getOperationName(), _plinkDef.myRolePortType.getQName()));
+  //          mex.setFailure(MessageExchange.FailureType.UNKNOWN_OPERATION, mex.getOperationName(), null);
             return null;
         }
         setMexRole(mex);

Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/Replayer.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/Replayer.java?rev=947459&r1=947458&r2=947459&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/Replayer.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/Replayer.java Sun May 23 18:28:57 2010
@@ -270,7 +270,7 @@ public class Replayer {
                             }
                             return false;
                         }
-                    });
+                    }, true);
         } else if (we.getType() == JobType.INVOKE_RESPONSE) {
             __log.debug("reply for live communication");
             ReplayerContext ctx = findReplayedInstance(we.getInstanceId());

Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/ReplayerBpelRuntimeContextImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/ReplayerBpelRuntimeContextImpl.java?rev=947459&r1=947458&r2=947459&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/ReplayerBpelRuntimeContextImpl.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/ReplayerBpelRuntimeContextImpl.java Sun May 23 18:28:57 2010
@@ -308,7 +308,7 @@ public class ReplayerBpelRuntimeContextI
                 }
                 return false;
             }
-        });
+        }, true);
 
     }
 

Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/ReplayerContext.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/ReplayerContext.java?rev=947459&r1=947458&r2=947459&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/ReplayerContext.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/ReplayerContext.java Sun May 23 18:28:57 2010
@@ -273,7 +273,7 @@ public class ReplayerContext {
                                     }
                                     return false;
                                 }
-                            });
+                            }, true);
 
                     for (int i = 1; i < exchangeList.size(); i++) {
                         Exchange e2 = exchangeList.get(i);

Modified: ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ProcessDaoImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ProcessDaoImpl.java?rev=947459&r1=947458&r2=947459&view=diff
==============================================================================
--- ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ProcessDaoImpl.java (original)
+++ ode/trunk/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ProcessDaoImpl.java Sun May 23 18:28:57 2010
@@ -151,10 +151,10 @@ public class ProcessDaoImpl extends Hibe
     @SuppressWarnings("unchecked")
     public void deleteProcessAndRoutes() {
         // delete routes
-        deleteByIds(HCorrelatorSelector.class, getSession().getNamedQuery(HCorrelatorSelector.SELECT_MESSAGE_ROUTE_IDS_BY_PROCESS).setParameter("process", _process).list());
+//        deleteByIds(HCorrelatorSelector.class, getSession().getNamedQuery(HCorrelatorSelector.SELECT_MESSAGE_ROUTE_IDS_BY_PROCESS).setParameter("process", _process).list());
 
         // delete process dao
-        deleteByIds(HCorrelator.class, getSession().getNamedQuery(HCorrelator.SELECT_CORRELATOR_IDS_BY_PROCESS).setParameter("process", _process).list());
+  //      deleteByIds(HCorrelator.class, getSession().getNamedQuery(HCorrelator.SELECT_CORRELATOR_IDS_BY_PROCESS).setParameter("process", _process).list());
         try {
             getSession().refresh(_process);
             getSession().delete(_process); // this deletes HCorrelator -> HCorrelatorSelector
@@ -296,4 +296,5 @@ public class ProcessDaoImpl extends Hibe
     public String getGuid() {
         return _process.getGuid();
     }
+    
 }