riftsaw SVN: r681 - in trunk/stress-tests: lib and 27 other directories.
by riftsaw-commits@lists.jboss.org
Author: bbrodt
Date: 2010-05-28 16:37:17 -0400 (Fri, 28 May 2010)
New Revision: 681
Added:
trunk/stress-tests/lib/
trunk/stress-tests/lib/commons-httpclient-3.1.jar
trunk/stress-tests/lib/jboss-logging-spi-2.1.0.GA.jar
trunk/stress-tests/lib/jbossesb-rosetta-4.7.jar
trunk/stress-tests/lib/jetty-util-6.1.12rc1.jar
trunk/stress-tests/lib/log4j-1.2.14.jar
trunk/stress-tests/src/test/java/org/jboss/soa/bpel/tests/performance/
trunk/stress-tests/src/test/java/org/jboss/soa/bpel/tests/performance/PerformanceTestCase.java
trunk/stress-tests/src/test/resources/performance/
trunk/stress-tests/src/test/resources/performance/bpel/
trunk/stress-tests/src/test/resources/performance/bpel/HelloWorldWS.wsdl
trunk/stress-tests/src/test/resources/performance/bpel/SimpleInvoke.bpel
trunk/stress-tests/src/test/resources/performance/bpel/SimpleInvoke.cbp
trunk/stress-tests/src/test/resources/performance/bpel/SimpleInvoke.wsdl
trunk/stress-tests/src/test/resources/performance/bpel/bpel-deploy.xml
trunk/stress-tests/src/test/resources/performance/build.xml
trunk/stress-tests/src/test/resources/performance/messages/
trunk/stress-tests/src/test/resources/performance/messages/hello_request1.xml
trunk/stress-tests/src/test/resources/performance/messages/hello_request2.xml
trunk/stress-tests/src/test/resources/performance/war/
trunk/stress-tests/src/test/resources/performance/war/resources/
trunk/stress-tests/src/test/resources/performance/war/resources/WEB-INF/
trunk/stress-tests/src/test/resources/performance/war/resources/WEB-INF/classes/
trunk/stress-tests/src/test/resources/performance/war/resources/WEB-INF/lib/
trunk/stress-tests/src/test/resources/performance/war/resources/WEB-INF/web.xml
trunk/stress-tests/src/test/resources/performance/war/src/
trunk/stress-tests/src/test/resources/performance/war/src/org/
trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/
trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/soa/
trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/soa/bpel/
trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/soa/bpel/samples/
trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/soa/bpel/samples/quickstart/
trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/soa/bpel/samples/quickstart/simple_invoke/
trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/soa/bpel/samples/quickstart/simple_invoke/HelloWorldWS.java
trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/soa/esb/
trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/soa/esb/qa/
trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/soa/esb/qa/teargas/
trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/soa/esb/qa/teargas/TeargasConst.java
trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/soa/esb/qa/teargas/message/
trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/soa/esb/qa/teargas/message/generator/
trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/soa/esb/qa/teargas/message/generator/AbstractMessageGenerator.java
trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/soa/esb/qa/teargas/message/generator/ImmediateMessageGenerator.java
trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/soa/esb/qa/teargas/message/generator/QSMessageGenerator.java
trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/soa/esb/qa/teargas/message/sender/
trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/soa/esb/qa/teargas/message/sender/HTTPSender.java
trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/soa/esb/qa/teargas/message/sender/MessageSender.java
trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/soa/esb/qa/teargas/qs/
trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/soa/esb/qa/teargas/qs/QSRunTest.java
trunk/stress-tests/src/test/resources/performance/war/view/
trunk/stress-tests/src/test/resources/performance/war/view/index.jsp
Modified:
trunk/stress-tests/.classpath
trunk/stress-tests/build.xml
trunk/stress-tests/pom.xml
trunk/stress-tests/src/test/java/org/jboss/soa/bpel/tests/RiftSawTest.java
trunk/stress-tests/src/test/java/org/jboss/soa/bpel/tests/testcases/RiftSaw155TestCase.java
trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/build.xml
Log:
https://jira.jboss.org/browse/RIFTSAW-182
Added Petr's performance tests
Modified: trunk/stress-tests/.classpath
===================================================================
--- trunk/stress-tests/.classpath 2010-05-28 14:39:11 UTC (rev 680)
+++ trunk/stress-tests/.classpath 2010-05-28 20:37:17 UTC (rev 681)
@@ -1,12 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src/test/java"/>
+ <classpathentry kind="src" path="src/test/resources/performance/war/src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/java-1.6.0-openjdk-1.6.0.0"/>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/3"/>
- <classpathentry kind="lib" path="/home/bbrodt/.m2/repository/commons-httpclient/commons-httpclient/3.1/commons-httpclient-3.1.jar"/>
- <classpathentry kind="lib" path="/home/bbrodt/.m2/repository/org/jboss/logging/jboss-logging-spi/2.1.0.GA/jboss-logging-spi-2.1.0.GA.jar"/>
- <classpathentry kind="lib" path="/home/bbrodt/.m2/repository/org/jboss/soa/bpel/dependencies/esb/jbossesb-rosetta/4.7/jbossesb-rosetta-4.7.jar"/>
- <classpathentry kind="lib" path="/home/bbrodt/.m2/repository/org/mortbay/jetty/jetty-util/6.1.12rc1/jetty-util-6.1.12rc1.jar" sourcepath="/home/bbrodt/.m2/repository/org/mortbay/jetty/jetty-util/6.1.12rc1/jetty-util-6.1.12rc1-sources.jar">
+ <classpathentry kind="lib" path="lib/commons-httpclient-3.1.jar"/>
+ <classpathentry kind="lib" path="lib/jboss-logging-spi-2.1.0.GA.jar"/>
+ <classpathentry kind="lib" path="lib/jbossesb-rosetta-4.7.jar"/>
+ <classpathentry kind="lib" path="lib/jetty-util-6.1.12rc1.jar">
<attributes>
<attribute name="maven.groupId" value="org.mortbay.jetty"/>
<attribute name="maven.artifactId" value="jetty-util"/>
@@ -14,5 +15,6 @@
<attribute name="maven.scope" value="test"/>
</attributes>
</classpathentry>
+ <classpathentry kind="lib" path="lib/log4j-1.2.14.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
Modified: trunk/stress-tests/build.xml
===================================================================
--- trunk/stress-tests/build.xml 2010-05-28 14:39:11 UTC (rev 680)
+++ trunk/stress-tests/build.xml 2010-05-28 20:37:17 UTC (rev 681)
@@ -124,6 +124,7 @@
<mkdir dir="target/tests"/>
<ant antfile="src/test/resources/testcases/RiftSaw_155/build.xml" />
+ <ant antfile="src/test/resources/performance/build.xml" />
</target>
</project>
Added: trunk/stress-tests/lib/commons-httpclient-3.1.jar
===================================================================
(Binary files differ)
Property changes on: trunk/stress-tests/lib/commons-httpclient-3.1.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/stress-tests/lib/jboss-logging-spi-2.1.0.GA.jar
===================================================================
(Binary files differ)
Property changes on: trunk/stress-tests/lib/jboss-logging-spi-2.1.0.GA.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/stress-tests/lib/jbossesb-rosetta-4.7.jar
===================================================================
(Binary files differ)
Property changes on: trunk/stress-tests/lib/jbossesb-rosetta-4.7.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/stress-tests/lib/jetty-util-6.1.12rc1.jar
===================================================================
(Binary files differ)
Property changes on: trunk/stress-tests/lib/jetty-util-6.1.12rc1.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/stress-tests/lib/log4j-1.2.14.jar
===================================================================
(Binary files differ)
Property changes on: trunk/stress-tests/lib/log4j-1.2.14.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: trunk/stress-tests/pom.xml
===================================================================
--- trunk/stress-tests/pom.xml 2010-05-28 14:39:11 UTC (rev 680)
+++ trunk/stress-tests/pom.xml 2010-05-28 20:37:17 UTC (rev 681)
@@ -11,6 +11,33 @@
<artifactId>bpel</artifactId>
<version>2.0.1-SNAPSHOT</version>
</parent>
+
+ <profiles>
+ <profile>
+ <id>tools.jar</id>
+ <activation>
+ <activeByDefault>true</activeByDefault>
+ </activation>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <dependencies>
+ <dependency>
+ <groupId>com.sun</groupId>
+ <artifactId>tools</artifactId>
+ <version>1.6.0</version>
+ <scope>system</scope>
+ <systemPath>${java.home}/../lib/tools.jar</systemPath>
+ </dependency>
+ </dependencies>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
<properties>
<jboss.jbosssx.version>2.0.2.SP3</jboss.jbosssx.version>
<jboss.common.version>1.2.1.GA</jboss.common.version>
Modified: trunk/stress-tests/src/test/java/org/jboss/soa/bpel/tests/RiftSawTest.java
===================================================================
--- trunk/stress-tests/src/test/java/org/jboss/soa/bpel/tests/RiftSawTest.java 2010-05-28 14:39:11 UTC (rev 680)
+++ trunk/stress-tests/src/test/java/org/jboss/soa/bpel/tests/RiftSawTest.java 2010-05-28 20:37:17 UTC (rev 681)
@@ -183,4 +183,19 @@
return(result);
}
+
+ protected String sendAndValidate(String service, String request, String response) throws Exception {
+ String result=sendSOAPMessage(request, service);
+
+ // If testing against cxf, then result is presented slightly differently
+ if (result.indexOf("SOAP-ENV") != -1) {
+ result = result.replaceAll("SOAP-ENV", "env");
+ result = result.replaceAll(" xmlns=\"\"","");
+ result = result.replaceAll("\"","'");
+ result = result.replaceAll("<env:Header />","<env:Header></env:Header>");
+ }
+
+ assertMessageFromFile(result, response);
+ return result;
+ }
}
Added: trunk/stress-tests/src/test/java/org/jboss/soa/bpel/tests/performance/PerformanceTestCase.java
===================================================================
--- trunk/stress-tests/src/test/java/org/jboss/soa/bpel/tests/performance/PerformanceTestCase.java (rev 0)
+++ trunk/stress-tests/src/test/java/org/jboss/soa/bpel/tests/performance/PerformanceTestCase.java 2010-05-28 20:37:17 UTC (rev 681)
@@ -0,0 +1,50 @@
+package org.jboss.soa.bpel.tests.performance;
+
+import junit.framework.Test;
+
+import org.jboss.soa.bpel.tests.RiftSawTest;
+import org.jboss.soa.bpel.tests.RiftSawTestSetup;
+import org.jboss.soa.esb.qa.teargas.qs.QSRunTest;
+
+public class PerformanceTestCase extends RiftSawTest {
+
+ private static final String TEST_NAME = "Performance";
+
+ public PerformanceTestCase(String name) {
+ super(TEST_NAME);
+ }
+
+ public static Test suite() {
+ return(new RiftSawTestSetup(PerformanceTestCase.class,
+ TEST_NAME, "")); // nothing to do here - jars and wars are already deployed
+ }
+
+ public void testRun() throws Exception {
+ String resources = System.getProperty("resources.dir");
+ int count = 1;
+ if (resources==null)
+ resources = "src/test/resources";
+ try
+ {
+ count = Integer.parseInt(System.getProperty("count"));
+ }
+ catch(Exception ex)
+ {
+ fail(ex.getMessage());
+ }
+
+ String[] args = new String[3];
+ args[0] = "-message="+resources+"/performance/messages/hello_request1.xml";
+ args[1] = "-address=http://localhost:8080/SimpleInvoke";
+ args[2] = "-count="+count;
+
+ QSRunTest qs = new QSRunTest();
+ qs.parseArguments(args);
+ if (!qs.validArguments()) {
+ System.out.println("Usage: QSRunTest -address=<WS URL> -message=<message file> -count=<number of messages>");
+ System.out.println("Additional properties for message sender can be specified using -D<property_name>=<value>");
+ } else {
+ qs.runTest();
+ }
+ }
+}
Modified: trunk/stress-tests/src/test/java/org/jboss/soa/bpel/tests/testcases/RiftSaw155TestCase.java
===================================================================
--- trunk/stress-tests/src/test/java/org/jboss/soa/bpel/tests/testcases/RiftSaw155TestCase.java 2010-05-28 14:39:11 UTC (rev 680)
+++ trunk/stress-tests/src/test/java/org/jboss/soa/bpel/tests/testcases/RiftSaw155TestCase.java 2010-05-28 20:37:17 UTC (rev 681)
@@ -33,7 +33,8 @@
import org.mortbay.util.ajax.JSON;
/**
- * Test case for running the RiftSaw_10_doclit testcase.
+ * Test case for running the RIFTSAW-155 JIRA validation.
+ * See https://jira.jboss.org/browse/RIFTSAW-155
*/
public class RiftSaw155TestCase extends RiftSawTest {
@@ -153,22 +154,6 @@
}
}
- private String sendAndValidate(String service, String request, String response) throws Exception
- {
- String result=sendSOAPMessage(request, service);
-
- // If testing against cxf, then result is presented slightly differently
- if (result.indexOf("SOAP-ENV") != -1) {
- result = result.replaceAll("SOAP-ENV", "env");
- result = result.replaceAll(" xmlns=\"\"","");
- result = result.replaceAll("\"","'");
- result = result.replaceAll("<env:Header />","<env:Header></env:Header>");
- }
-
- assertMessageFromFile(result, response);
- return result;
- }
-
private TreeMap<String,ProcInfo> getProcesses(String name) throws Exception
{
TreeMap<String,ProcInfo> procs = new TreeMap<String,ProcInfo>();
Added: trunk/stress-tests/src/test/resources/performance/bpel/HelloWorldWS.wsdl
===================================================================
--- trunk/stress-tests/src/test/resources/performance/bpel/HelloWorldWS.wsdl (rev 0)
+++ trunk/stress-tests/src/test/resources/performance/bpel/HelloWorldWS.wsdl 2010-05-28 20:37:17 UTC (rev 681)
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<definitions name='HelloWorldWSService'
+targetNamespace='http://simple_invoke/helloworld'
+xmlns='http://schemas.xmlsoap.org/wsdl/'
+xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/'
+xmlns:tns='http://simple_invoke/helloworld'
+xmlns:xsd='http://www.w3.org/2001/XMLSchema'
+xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype"
+>
+ <types>
+ <xs:schema targetNamespace='http://simple_invoke/helloworld' version='1.0' xmlns:tns='http://simple_invoke/helloworld' xmlns:xs='http://www.w3.org/2001/XMLSchema'>
+ <xs:element name='sayGoodbye' type='tns:sayGoodbye'/>
+ <xs:element name='sayGoodbyeResponse' type='tns:sayGoodbyeResponse'/>
+ <xs:element name='sayHello' type='tns:sayHello'/>
+ <xs:element name='sayHelloResponse' type='tns:sayHelloResponse'/>
+ <xs:complexType name='sayGoodbye'>
+ <xs:sequence>
+ <xs:element minOccurs='0' name='toWhom' type='xs:string'/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name='sayGoodbyeResponse'>
+ <xs:sequence>
+ <xs:element minOccurs='0' name='return' type='xs:string'/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name='sayHello'>
+ <xs:sequence>
+ <xs:element minOccurs='0' name='toWhom' type='xs:string'/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name='sayHelloResponse'>
+ <xs:sequence>
+ <xs:element minOccurs='0' name='return' type='xs:string'/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:schema>
+ </types>
+ <message name='HelloWorld_sayGoodbye'>
+ <part element='tns:sayGoodbye' name='sayGoodbye'></part>
+ </message>
+ <message name='HelloWorld_sayHello'>
+ <part element='tns:sayHello' name='sayHello'></part>
+ </message>
+ <message name='HelloWorld_sayHelloResponse'>
+ <part element='tns:sayHelloResponse' name='sayHelloResponse'></part>
+ </message>
+ <message name='HelloWorld_sayGoodbyeResponse'>
+ <part element='tns:sayGoodbyeResponse' name='sayGoodbyeResponse'></part>
+ </message>
+ <portType name='HelloWorld'>
+ <operation name='sayGoodbye' parameterOrder='sayGoodbye'>
+ <input message='tns:HelloWorld_sayGoodbye'></input>
+ <output message='tns:HelloWorld_sayGoodbyeResponse'></output>
+ </operation>
+ <operation name='sayHello' parameterOrder='sayHello'>
+ <input message='tns:HelloWorld_sayHello'></input>
+ <output message='tns:HelloWorld_sayHelloResponse'></output>
+ </operation>
+ </portType>
+ <binding name='HelloWorldBinding' type='tns:HelloWorld'>
+ <soap:binding style='document' transport='http://schemas.xmlsoap.org/soap/http'/>
+ <operation name='sayGoodbye'>
+ <soap:operation soapAction=''/>
+ <input>
+ <soap:body use='literal'/>
+ </input>
+ <output>
+ <soap:body use='literal'/>
+ </output>
+ </operation>
+ <operation name='sayHello'>
+ <soap:operation soapAction=''/>
+ <input>
+ <soap:body use='literal'/>
+ </input>
+ <output>
+ <soap:body use='literal'/>
+ </output>
+ </operation>
+ </binding>
+ <service name='HelloWorldWSService'>
+ <port binding='tns:HelloWorldBinding' name='HelloWorldPort'>
+ <soap:address location='http://127.0.0.1:8080/Quickstart_bpel_simple_invoke/HelloWorldWS'/>
+ </port>
+ </service>
+ <plnk:partnerLinkType name="theExternalService_PartnerLinkType">
+ <plnk:role name="callingTheExternalService" portType="tns:HelloWorld"/>
+ </plnk:partnerLinkType>
+</definitions>
\ No newline at end of file
Added: trunk/stress-tests/src/test/resources/performance/bpel/SimpleInvoke.bpel
===================================================================
--- trunk/stress-tests/src/test/resources/performance/bpel/SimpleInvoke.bpel (rev 0)
+++ trunk/stress-tests/src/test/resources/performance/bpel/SimpleInvoke.bpel 2010-05-28 20:37:17 UTC (rev 681)
@@ -0,0 +1,96 @@
+<!--
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, Red Hat Middleware LLC, and others contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ -->
+<process name="SimpleInvoke"
+ targetNamespace="http://www.jboss.org/bpel/examples"
+ xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
+ xmlns:tns="http://www.jboss.org/bpel/examples"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:intf="http://www.jboss.org/bpel/examples/wsdl"
+ xmlns:intf2="http://simple_invoke/helloworld"
+ queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"
+ expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0">
+
+ <import location="SimpleInvoke.wsdl"
+ namespace="http://www.jboss.org/bpel/examples/wsdl"
+ importType="http://schemas.xmlsoap.org/wsdl/" />
+
+ <import location="HelloWorldWS.wsdl"
+ namespace="http://simple_invoke/helloworld"
+ importType="http://schemas.xmlsoap.org/wsdl/" />
+
+ <partnerLinks>
+ <partnerLink name="theClient_PartnerLink"
+ partnerLinkType="intf:myClientCalling_PartnerLinkType"
+ myRole="me" />
+ <partnerLink name="theExternalService_PartnerLink"
+ partnerLinkType="intf2:theExternalService_PartnerLinkType"
+ partnerRole="callingTheExternalService"
+ initializePartnerRole="yes"/>
+ </partnerLinks>
+
+ <variables>
+ <variable name="myVar" messageType="intf:GreetingTarget_Message"/>
+ <variable name="inVar" messageType="intf2:HelloWorld_sayHello"/>
+ <variable name="outVar" messageType="intf2:HelloWorld_sayHelloResponse"/>
+ <variable name="tempVar" type="xsd:string"/>
+ </variables>
+
+ <sequence>
+ <receive
+ name="request"
+ partnerLink="theClient_PartnerLink"
+ portType="intf:SimpleInvoke_PortType"
+ operation="sayHelloTo"
+ variable="myVar"
+ createInstance="yes"/>
+
+ <assign name="assignRequestToHelloWorldWS">
+ <!-- Ode requires variable initialization -->
+ <copy>
+ <from><literal><intf2:sayHello><toWhom xmlns=""/></intf2:sayHello></literal></from>
+ <to variable="inVar" part="sayHello"/>
+ </copy>
+ <!-- now the real copy -->
+ <copy>
+ <from variable="myVar" part="ToWhom"/>
+ <to>$inVar.sayHello/toWhom</to>
+ </copy>
+ </assign>
+
+ <invoke name="ICallTheExternalService"
+ partnerLink="theExternalService_PartnerLink"
+ portType="intf2:HelloWorld"
+ operation="sayHello"
+ inputVariable="inVar"
+ outputVariable="outVar"
+ />
+
+ <assign name="assignResponseOfHelloWorldWS">
+ <copy>
+ <from>$outVar.sayHelloResponse/return</from>
+ <to variable="myVar" part="ToWhom"/>
+ </copy>
+ </assign>
+
+ <reply name="response"
+ partnerLink="theClient_PartnerLink"
+ portType="intf:SimpleInvoke_PortType"
+ operation="sayHelloTo"
+ variable="myVar"/>
+ </sequence>
+</process>
Added: trunk/stress-tests/src/test/resources/performance/bpel/SimpleInvoke.cbp
===================================================================
(Binary files differ)
Property changes on: trunk/stress-tests/src/test/resources/performance/bpel/SimpleInvoke.cbp
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/stress-tests/src/test/resources/performance/bpel/SimpleInvoke.wsdl
===================================================================
--- trunk/stress-tests/src/test/resources/performance/bpel/SimpleInvoke.wsdl (rev 0)
+++ trunk/stress-tests/src/test/resources/performance/bpel/SimpleInvoke.wsdl 2010-05-28 20:37:17 UTC (rev 681)
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, Red Hat Middleware LLC, and others contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ -->
+<wsdl:definitions
+ targetNamespace="http://www.jboss.org/bpel/examples/wsdl"
+ xmlns="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://www.jboss.org/bpel/examples/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:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype">
+
+ <wsdl:message name="GreetingTarget_Message">
+ <wsdl:part name="ToWhom" type="xsd:string"/>
+ </wsdl:message>
+
+ <wsdl:portType name="SimpleInvoke_PortType">
+ <wsdl:operation name="sayHelloTo">
+ <wsdl:input message="tns:GreetingTarget_Message" name="TestIn"/>
+ <wsdl:output message="tns:GreetingTarget_Message" name="TestOut"/>
+ </wsdl:operation>
+ </wsdl:portType>
+
+ <wsdl:binding name="SimpleInvoke_SoapBinding" type="tns:SimpleInvoke_PortType">
+ <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
+ <wsdl:operation name="sayHelloTo">
+ <soap:operation soapAction="" style="rpc"/>
+ <wsdl:input>
+ <soap:body
+ namespace="http://www.jboss.org/bpel/examples/wsdl"
+ use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body
+ namespace="http://www.jboss.org/bpel/examples/wsdl"
+ use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="SimpleInvoke_Service">
+ <wsdl:port name="SimpleInvoke_Port" binding="tns:SimpleInvoke_SoapBinding">
+ <soap:address location="http://localhost:8080/bpel/processes/simpleInvoke"/>
+ </wsdl:port>
+ </wsdl:service>
+
+ <plnk:partnerLinkType name="myClientCalling_PartnerLinkType">
+ <plnk:role name="me" portType="tns:SimpleInvoke_PortType"/>
+ <plnk:role name="you" portType="tns:SimpleInvoke_PortType"/>
+ </plnk:partnerLinkType>
+</wsdl:definitions>
+
Added: trunk/stress-tests/src/test/resources/performance/bpel/bpel-deploy.xml
===================================================================
--- trunk/stress-tests/src/test/resources/performance/bpel/bpel-deploy.xml (rev 0)
+++ trunk/stress-tests/src/test/resources/performance/bpel/bpel-deploy.xml 2010-05-28 20:37:17 UTC (rev 681)
@@ -0,0 +1,32 @@
+<!--
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, Red Hat Middleware LLC, and others contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ -->
+<deploy xmlns="http://www.apache.org/ode/schemas/dd/2007/03"
+ xmlns:bpl="http://www.jboss.org/bpel/examples"
+ xmlns:intf="http://www.jboss.org/bpel/examples/wsdl"
+ xmlns:intf2="http://simple_invoke/helloworld">
+
+ <process name="bpl:SimpleInvoke">
+ <active>true</active>
+ <provide partnerLink="theClient_PartnerLink">
+ <service name="intf:SimpleInvoke_Service" port="SimpleInvoke_Port"/>
+ </provide>
+ <invoke partnerLink="theExternalService_PartnerLink">
+ <service name="intf2:HelloWorldWSService" port="HelloWorldPort"/>
+ </invoke>
+ </process>
+</deploy>
Added: trunk/stress-tests/src/test/resources/performance/build.xml
===================================================================
--- trunk/stress-tests/src/test/resources/performance/build.xml (rev 0)
+++ trunk/stress-tests/src/test/resources/performance/build.xml 2010-05-28 20:37:17 UTC (rev 681)
@@ -0,0 +1,108 @@
+<project name="Quickstart_bpel_simple_invoke" default="deploy" basedir=".">
+
+ <description>
+ ${ant.project.name}
+ ${line.separator}
+ </description>
+
+ <!-- Import the base Ant build script... -->
+ <property file="${riftsaw.test.deployment.properties}" />
+
+ <property name="version" value="1" />
+
+ <property name="server.dir" value="${org.jboss.as.home}/server/${org.jboss.as.config}"/>
+ <property name="conf.dir" value="${server.dir}/conf"/>
+ <property name="deploy.dir" value="${server.dir}/deploy"/>
+ <property name="server.lib.dir" value="${server.dir}/lib"/>
+ <property name="sample.jar.name" value="${ant.project.name}-${version}.jar" />
+ <property name="test.dir" value="src/test/resources/performance"/>
+
+ <property name="war.build.dir" value="bin"/>
+
+ <path id="compile-classpath">
+ <fileset dir="${org.jboss.as.home}/client" includes="*.jar" /> <!-- Required for JMS Client Code. -->
+ </path>
+ <property name="compile-classpath" refid="compile-classpath"/>
+
+ <target name="makewar" description="make war">
+ <!-- Compile... -->
+ <mkdir dir="${war.build.dir}" />
+ <javac srcdir="${test.dir}/war/src" destdir="${war.build.dir}" debug="true">
+ <classpath>
+ <pathelement location="${war.build.dir}"/>
+ <pathelement path="${java.class.path}"/>
+ </classpath>
+ <classpath>
+ <path refid="compile-classpath" />
+ <fileset dir="${test.dir}/war/resources/WEB-INF/lib" includes="*.jar" />
+ </classpath>
+ </javac>
+
+ <!-- War... -->
+ <war warfile="${war.build.dir}/${ant.project.name}.war"
+ webxml="${test.dir}/war/resources/WEB-INF/web.xml">
+ <webinf dir="${test.dir}/war/resources/WEB-INF">
+ <include name="jboss-web.xml"/>
+ </webinf>
+ <classes dir="${war.build.dir}" includes="**/*.class"/>
+ <fileset dir="${test.dir}/war/view">
+ <include name="**/*"/>
+ </fileset>
+ <classes dir="${test.dir}">
+ <include name="juddi.properties"/>
+ </classes>
+ </war>
+ </target>
+
+ <target name="deploywar" depends="makewar" >
+ <copy todir="${deploy.dir}"
+ file="${war.build.dir}/${ant.project.name}.war"/>
+ </target>
+
+ <target name="undeploywar">
+ <delete file="${deploy.dir}/${ant.project.name}.war"/>
+ </target>
+
+ <target name="deploy" depends="deploywar" >
+ <echo>Deploy ${ant.project.name}</echo>
+ <jar basedir="${test.dir}/bpel" destfile="${deploy.dir}/${sample.jar.name}" />
+ </target>
+
+ <target name="undeploy" depends="undeploywar" >
+ <echo>Undeploy ${ant.project.name}</echo>
+ <delete file="${deploy.dir}/${sample.jar.name}" />
+ </target>
+
+<!-- this is executed from the PerformanceTestCase JUNIT test class
+ <target name="perf-ws" description="Performance test">
+ <path id="exec-classpath">
+ <pathelement location="${deploy.dir}/${ant.project.name}.war" />
+ </path>
+ <java fork="yes" classname="org.jboss.soa.esb.qa.teargas.qs.QSRunTest" failonerror="true">
+ <arg value="-message=messages/hello_request2.xml" />
+ <arg value="-address=http://localhost:8080/Quickstart_bpel_simple_invoke/HelloWorldWS" />
+ <arg value="-count=100" />
+ <classpath>
+ <pathelement location="build/war/classes"/>
+ <pathelement path="${java.class.path}"/>
+ </classpath>
+ </java>
+ </target>
+
+ <target name="perf-bpel" description="Performance test">
+ <path id="exec-classpath">
+ <pathelement location="${deploy.dir}/${ant.project.name}.war" />
+ </path>
+ <java fork="yes" classname="org.jboss.soa.esb.qa.teargas.qs.QSRunTest" failonerror="true">
+ <arg value="-message=messages/hello_request1.xml" />
+ <arg value="-address=http://localhost:8080/bpel/processes/simpleInvoke" />
+ <arg value="-count=100" />
+ <classpath>
+ <pathelement location="build/war/classes"/>
+ <pathelement path="${java.class.path}"/>
+ </classpath>
+ </java>
+ </target>
+-->
+
+</project>
Added: trunk/stress-tests/src/test/resources/performance/messages/hello_request1.xml
===================================================================
--- trunk/stress-tests/src/test/resources/performance/messages/hello_request1.xml (rev 0)
+++ trunk/stress-tests/src/test/resources/performance/messages/hello_request1.xml 2010-05-28 20:37:17 UTC (rev 681)
@@ -0,0 +1,8 @@
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsdl="http://www.jboss.org/bpel/examples/wsdl">
+ <soapenv:Header/>
+ <soapenv:Body>
+ <wsdl:sayHelloTo>
+ <ToWhom>Jehu</ToWhom>
+ </wsdl:sayHelloTo>
+ </soapenv:Body>
+</soapenv:Envelope>
Added: trunk/stress-tests/src/test/resources/performance/messages/hello_request2.xml
===================================================================
--- trunk/stress-tests/src/test/resources/performance/messages/hello_request2.xml (rev 0)
+++ trunk/stress-tests/src/test/resources/performance/messages/hello_request2.xml 2010-05-28 20:37:17 UTC (rev 681)
@@ -0,0 +1,8 @@
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:hel="http://simple_invoke/helloworld">
+ <soapenv:Header/>
+ <soapenv:Body>
+ <hel:sayHello>
+ <toWhom>Jehu</toWhom>
+ </hel:sayHello>
+ </soapenv:Body>
+</soapenv:Envelope>
Added: trunk/stress-tests/src/test/resources/performance/war/resources/WEB-INF/web.xml
===================================================================
--- trunk/stress-tests/src/test/resources/performance/war/resources/WEB-INF/web.xml (rev 0)
+++ trunk/stress-tests/src/test/resources/performance/war/resources/WEB-INF/web.xml 2010-05-28 20:37:17 UTC (rev 681)
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
+ version="2.4">
+
+ <servlet>
+ <servlet-name>HelloWorldWS</servlet-name>
+ <servlet-class>org.jboss.soa.bpel.samples.quickstart.simple_invoke.HelloWorldWS</servlet-class>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>HelloWorldWS</servlet-name>
+ <url-pattern>/HelloWorldWS</url-pattern>
+ </servlet-mapping>
+
+</web-app>
Added: trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/soa/bpel/samples/quickstart/simple_invoke/HelloWorldWS.java
===================================================================
--- trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/soa/bpel/samples/quickstart/simple_invoke/HelloWorldWS.java (rev 0)
+++ trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/soa/bpel/samples/quickstart/simple_invoke/HelloWorldWS.java 2010-05-28 20:37:17 UTC (rev 681)
@@ -0,0 +1,56 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and others contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ *
+ * (C) 2005-2006,
+ * @author JBoss Inc.
+ */
+
+package org.jboss.soa.bpel.samples.quickstart.simple_invoke;
+
+import javax.jws.WebMethod;
+import javax.jws.WebService;
+import javax.jws.soap.SOAPBinding;
+import javax.jws.WebParam;
+
+@WebService(name = "HelloWorld", targetNamespace = "http://simple_invoke/helloworld")
+public class HelloWorldWS
+{
+ @WebMethod
+ public String sayHello(@WebParam(name = "toWhom")
+ String toWhom)
+ {
+ System.out.println("\n");
+ System.out.println("*************************************************");
+ System.out.println("toWhom Parameter: " + toWhom );
+ System.out.println("*************************************************");
+ System.out.println("\n");
+ String greeting = "Hello " + toWhom + ". Sincerely, JBossWS";
+ return greeting;
+
+ }
+
+ @WebMethod
+ public String sayGoodbye(@WebParam(name = "toWhom")
+ String toWhom)
+ {
+
+ String greeting = "Goodbye Cruel World, sincerely '" + toWhom + "' at " + new java.util.Date();
+
+ return greeting;
+
+ }
+}
Added: trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/soa/esb/qa/teargas/TeargasConst.java
===================================================================
--- trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/soa/esb/qa/teargas/TeargasConst.java (rev 0)
+++ trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/soa/esb/qa/teargas/TeargasConst.java 2010-05-28 20:37:17 UTC (rev 681)
@@ -0,0 +1,38 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and others contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ *
+ * (C) 2005-2008,
+ */
+
+package org.jboss.soa.esb.qa.teargas;
+
+/**
+ *
+ * @author mvecera
+ */
+public class TeargasConst {
+
+ public static final String MONITORING_QUEUE = "queue/teargas_jms_monitor";
+ public static final String STOP_MESSAGE_PROPERTY = "This_is_the_very_last_message";
+ public static final String PERFORMANCE_MESSAGE_PROPERTY = "Teargas_Performance";
+ public static final String TIME_MESSAGE_PROPERTY = "Teargas_Performance_Time";
+ public static final String COUNT_MESSAGE_PROPERTY = "Teargas_Performance_Count";
+ public static final String START_VALUE = "**START**";
+ public static final String STOP_VALUE = "**STOP**";
+ public static final String CHECK_POINT_VALUE = "**CHECK**";
+
+}
Added: trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/soa/esb/qa/teargas/message/generator/AbstractMessageGenerator.java
===================================================================
--- trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/soa/esb/qa/teargas/message/generator/AbstractMessageGenerator.java (rev 0)
+++ trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/soa/esb/qa/teargas/message/generator/AbstractMessageGenerator.java 2010-05-28 20:37:17 UTC (rev 681)
@@ -0,0 +1,31 @@
+package org.jboss.soa.esb.qa.teargas.message.generator;
+
+import java.io.Serializable;
+import org.jboss.soa.esb.qa.teargas.message.sender.MessageSender;
+
+/**
+ *
+ * @author pmacik
+ */
+public abstract class AbstractMessageGenerator {
+
+ protected MessageSender sender;
+ protected int threads = 1;
+
+ public void setProperty(String property, String value) {
+ if ("threads".equals(property)) {
+ threads = Integer.valueOf(value);
+ }
+ }
+
+ public void init(String address, MessageSender sender) throws Exception {
+ this.sender = sender;
+ this.sender.init(address);
+ }
+
+ public void close() {
+ sender.close();
+ }
+
+ public abstract void generate(Serializable message, int count) throws Exception;
+}
Added: trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/soa/esb/qa/teargas/message/generator/ImmediateMessageGenerator.java
===================================================================
--- trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/soa/esb/qa/teargas/message/generator/ImmediateMessageGenerator.java (rev 0)
+++ trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/soa/esb/qa/teargas/message/generator/ImmediateMessageGenerator.java 2010-05-28 20:37:17 UTC (rev 681)
@@ -0,0 +1,111 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.soa.esb.qa.teargas.message.generator;
+
+import java.io.Serializable;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
+import org.apache.log4j.Logger;
+import org.jboss.soa.esb.qa.teargas.message.sender.MessageSender;
+
+/**
+ *
+ * @author mvecera
+ */
+public class ImmediateMessageGenerator extends AbstractMessageGenerator {
+ private static final Logger log = Logger.getLogger(ImmediateMessageGenerator.class);
+ private AtomicInteger counter = new AtomicInteger(0);
+ protected long start = -1;
+ protected long stop = -1;
+
+ protected void setStartTime() {
+ if (start == -1) {
+ start = System.currentTimeMillis();
+ }
+ }
+
+ protected void setStopTime() {
+ if (stop == -1) {
+ stop = System.currentTimeMillis();
+ }
+ }
+
+ protected float getSpeed(int count) {
+ long now = (stop == -1) ? System.currentTimeMillis() : stop;
+ return 1000f * count / (now - start);
+ }
+
+ @Override
+ public void generate(Serializable message, int count) throws Exception {
+ setStartTime();
+
+ log.info("Preparing senders");
+ ExecutorService es = Executors.newFixedThreadPool(threads);
+ for (int i = 0; i < count; i++) {
+ es.submit(new SenderTask(counter, sender, message));
+ }
+
+ es.shutdown();
+ boolean terminated = false;
+ int lastValue = 0;
+ while (!terminated) {
+ try {
+ terminated = es.awaitTermination(1, TimeUnit.SECONDS);
+
+ // should we log a change?
+ int cnt = counter.get();
+ if (cnt != lastValue) {
+ lastValue = cnt;
+ log.info("Messages sent: " + cnt + " (" + getSpeed(cnt) + " msgs/s)");
+ }
+ } catch (InterruptedException ie) {
+ // "Shit happens!", Forrest Gump
+ }
+ }
+
+ setStopTime();
+ }
+
+ private static class SenderTask implements Runnable {
+ private MessageSender sender;
+ private Serializable message;
+ private AtomicInteger counter;
+
+ public SenderTask(AtomicInteger counter, MessageSender sender, Serializable message) {
+ this.sender = sender;
+ this.message = message;
+ this.counter = counter;
+ }
+
+ @Override
+ public void run() {
+ try {
+ sender.send(message, null);
+ counter.incrementAndGet();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+}
Added: trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/soa/esb/qa/teargas/message/generator/QSMessageGenerator.java
===================================================================
--- trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/soa/esb/qa/teargas/message/generator/QSMessageGenerator.java (rev 0)
+++ trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/soa/esb/qa/teargas/message/generator/QSMessageGenerator.java 2010-05-28 20:37:17 UTC (rev 681)
@@ -0,0 +1,40 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.soa.esb.qa.teargas.message.generator;
+
+import java.io.Serializable;
+import org.apache.log4j.Logger;
+
+/**
+ *
+ * @author mvecera
+ */
+public class QSMessageGenerator extends ImmediateMessageGenerator {
+ private static final Logger log = Logger.getLogger(QSMessageGenerator.class);
+
+ @Override
+ public void generate(Serializable message, int count) throws Exception {
+ super.generate(message, count);
+
+ System.out.println("Messages sent: " + count + " (" + getSpeed(count) + " msgs/s)");
+ }
+}
Added: trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/soa/esb/qa/teargas/message/sender/HTTPSender.java
===================================================================
--- trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/soa/esb/qa/teargas/message/sender/HTTPSender.java (rev 0)
+++ trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/soa/esb/qa/teargas/message/sender/HTTPSender.java 2010-05-28 20:37:17 UTC (rev 681)
@@ -0,0 +1,119 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.soa.esb.qa.teargas.message.sender;
+
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.io.Serializable;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
+import org.apache.log4j.Logger;
+
+/**
+ *
+ * @author mvecera(a)redhat.com, pmacik(a)redhat.com
+ */
+public class HTTPSender implements MessageSender {
+
+ private URL url;
+ private String method = "POST";
+ private Map<String, String> headers = new HashMap<String, String>();
+ private final Logger log = Logger.getLogger(HTTPSender.class);
+
+ @Override
+ public void setProperty(String prop, String value) {
+ if ("method".equals(prop)) {
+ method = value;
+ }
+ }
+
+ public void setHeader(String name, String value) {
+ headers.put(name, value);
+ }
+
+ @Override
+ public void init(String address) throws Exception {
+ url = new URL(address);
+ }
+
+ @Override
+ public void close() {
+ }
+
+ @Override
+ public Serializable send(Serializable message, Map properties) throws Exception {
+ HttpURLConnection rc = (HttpURLConnection) url.openConnection();
+ rc.setRequestMethod(method);
+ rc.setDoOutput(true);
+ rc.setDoInput(true);
+ rc.setRequestProperty("Content-Type", "text/xml; charset=utf-8");
+
+ String reqStr = message.toString();
+ int len = reqStr.length();
+ rc.setRequestProperty("Content-Length", Integer.toString(len));
+ //rc.setRequestProperty("SOAPAction", soapActions[actionLookup(action)]);
+
+ if(headers.entrySet().size() > 0){
+ log.debug("Setting HTTP headers");
+ for (Map.Entry<String, String> header : headers.entrySet()) {
+ log.debug(header.getKey() + ": " + header.getValue());
+ rc.setRequestProperty(header.getKey(), header.getValue());
+ }
+ }
+ rc.connect();
+
+ OutputStreamWriter out = new OutputStreamWriter(rc.getOutputStream());
+ out.write(reqStr, 0, len);
+ out.flush();
+
+ rc.getOutputStream().close();
+
+ char[] cbuf = new char[10 * 1024];
+ InputStreamReader read = new InputStreamReader(rc.getInputStream());
+ // note that Content-Length is available at this point
+ StringBuilder sb = new StringBuilder();
+ int ch = read.read(cbuf);
+ while (ch != -1) {
+ sb.append(cbuf, 0, ch);
+ ch = read.read(cbuf);
+ }
+ read.close();
+ rc.getInputStream().close();
+ rc.disconnect();
+
+ return sb.toString();
+ }
+
+ @Override
+ public MessageSender clone() {
+ HTTPSender senderClone = new HTTPSender();
+ senderClone.url = this.url;
+ senderClone.method = this.method;
+ for (Map.Entry<String, String> header : headers.entrySet()) {
+ senderClone.setHeader(header.getKey(), header.getValue());
+ }
+ return senderClone;
+ }
+}
Added: trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/soa/esb/qa/teargas/message/sender/MessageSender.java
===================================================================
--- trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/soa/esb/qa/teargas/message/sender/MessageSender.java (rev 0)
+++ trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/soa/esb/qa/teargas/message/sender/MessageSender.java 2010-05-28 20:37:17 UTC (rev 681)
@@ -0,0 +1,21 @@
+package org.jboss.soa.esb.qa.teargas.message.sender;
+
+import java.io.Serializable;
+import java.util.Map;
+
+/**
+ *
+ * @author pmacik
+ */
+public interface MessageSender {
+
+ public void setProperty(String prop, String value);
+
+ public void init(String address) throws Exception;
+
+ public void close();
+
+ public Serializable send(Serializable message, Map properties) throws Exception;
+
+ public MessageSender clone();
+}
Added: trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/soa/esb/qa/teargas/qs/QSRunTest.java
===================================================================
--- trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/soa/esb/qa/teargas/qs/QSRunTest.java (rev 0)
+++ trunk/stress-tests/src/test/resources/performance/war/src/org/jboss/soa/esb/qa/teargas/qs/QSRunTest.java 2010-05-28 20:37:17 UTC (rev 681)
@@ -0,0 +1,163 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.soa.esb.qa.teargas.qs;
+
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.Hashtable;
+import java.util.Map.Entry;
+import java.util.Vector;
+import org.jboss.soa.esb.qa.teargas.message.generator.AbstractMessageGenerator;
+import org.jboss.soa.esb.qa.teargas.message.generator.QSMessageGenerator;
+import org.jboss.soa.esb.qa.teargas.message.sender.HTTPSender;
+import org.jboss.soa.esb.qa.teargas.message.sender.MessageSender;
+
+/**
+ *
+ * @author mvecera
+ */
+public class QSRunTest {
+ private Vector<String> params = new Vector<String>();
+ private Hashtable<String, String> options = new Hashtable<String, String>();
+ private Hashtable<String, String> properties = new Hashtable<String, String>();
+
+ private int count;
+ private StringBuilder sbMessage = new StringBuilder();
+ private String address;
+ private MessageSender sender = null;
+
+ public void parseArguments(String[] args) {
+ int paramIndex = 0;
+ for (int i = 0; i < args.length; i++) {
+ if (args[i].startsWith("-")) {
+ if (args[i].startsWith("-D")) {
+ int loc = args[i].indexOf("=");
+ String key = (loc > 0) ? args[i].substring(2, loc) : args[i].substring(2);
+ String value = (loc > 0) ? args[i].substring(loc + 1) : "";
+ properties.put(key.toLowerCase(), value);
+ } else {
+ int loc = args[i].indexOf("=");
+ String key = (loc > 0) ? args[i].substring(1, loc) : args[i].substring(1);
+ String value = (loc > 0) ? args[i].substring(loc + 1) : "";
+ options.put(key.toLowerCase(), value);
+ }
+ } else {
+ params.addElement(args[i]);
+ }
+ }
+ }
+
+ private boolean hasOption(String opt) {
+ return options.containsKey(opt.toLowerCase());
+ }
+
+ private String getOption(String opt) {
+ return options.get(opt.toLowerCase());
+ }
+
+ public void runTest() throws Exception {
+ AbstractMessageGenerator generator = new QSMessageGenerator();
+ if (sender == null) {
+ sender = new HTTPSender();
+ }
+
+ for (Entry<String, String> e: properties.entrySet()) {
+ sender.setProperty(e.getKey(), e.getValue());
+ generator.setProperty(e.getKey(), e.getValue());
+ }
+
+ generator.init(address, sender);
+ generator.generate(sbMessage.toString(), count);
+ generator.close();
+ }
+
+ private void loadMessage(String fileName) throws IOException {
+ FileReader fr = new FileReader(fileName);
+ BufferedReader br = new BufferedReader(fr);
+
+ String line = "";
+ while ((line = br.readLine()) != null) {
+ sbMessage.append(line);
+ }
+
+ br.close();
+ fr.close();
+ }
+
+ public boolean validArguments() {
+ if (hasOption("message") && hasOption("address") && hasOption("count")) {
+ try {
+ count = Integer.parseInt(getOption("count"));
+ } catch (NumberFormatException e) {
+ System.err.println("Option count is not a valid number.");
+ return false;
+ }
+
+ try {
+ loadMessage(getOption("message"));
+ } catch (IOException e) {
+ System.err.println("Unable to read meesage file.");
+ return false;
+ }
+
+ address = getOption("address");
+ if (address == null || "".equals(address)) {
+ System.err.println("Invalid address.");
+ return false;
+ }
+ }
+
+ if (hasOption("sender")) {
+ String senderClass = "org.jboss.soa.esb.qa.teargas.message.sender." + getOption("sender");
+
+ try {
+ sender = (MessageSender) Class.forName(senderClass, false, this.getClass().getClassLoader()).newInstance();
+ } catch (ClassNotFoundException e) {
+ System.err.println("Unable to instantiate sender class - class not found: " + senderClass);
+ return false;
+ } catch (InstantiationException e) {
+ System.err.println("Unable to instantiate sender class.");
+ return false;
+ } catch (IllegalAccessException e) {
+ System.err.println("Unable to instantiate sender class.");
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ public static void main(String[] args) throws Exception {
+ System.out.println("Teargas testing framework - QS Performance measurement");
+
+ QSRunTest qs = new QSRunTest();
+ qs.parseArguments(args);
+ if (!qs.validArguments()) {
+ System.out.println("Usage: QSRunTest -address=<WS URL> -message=<message file> -count=<number of messages>");
+ System.out.println("Additional properties for message sender can be specified using -D<property_name>=<value>");
+ } else {
+ qs.runTest();
+ }
+ }
+
+}
Added: trunk/stress-tests/src/test/resources/performance/war/view/index.jsp
===================================================================
--- trunk/stress-tests/src/test/resources/performance/war/view/index.jsp (rev 0)
+++ trunk/stress-tests/src/test/resources/performance/war/view/index.jsp 2010-05-28 20:37:17 UTC (rev 681)
@@ -0,0 +1,9 @@
+<html>
+ <body>
+ This is just a place holder.<br>
+ Verify the that the WS has been deployed by hitting
+ <a href="http://localhost:8080/jbossws">
+ http://localhost:8080/jbossws
+ </a>
+ </body>
+</html>
\ No newline at end of file
Modified: trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/build.xml
===================================================================
--- trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/build.xml 2010-05-28 14:39:11 UTC (rev 680)
+++ trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/build.xml 2010-05-28 20:37:17 UTC (rev 681)
@@ -1,4 +1,4 @@
-<project name="RiftSaw_155" default="deploy" basedir="/home/bbrodt/workspace/test">
+<project name="RiftSaw_155" default="deploy" basedir=".">
<description>
${ant.project.name}
15 years, 4 months
riftsaw SVN: r680 - in trunk/docs/docbook/userguide/src/main: module and 1 other directory.
by riftsaw-commits@lists.jboss.org
Author: objectiser
Date: 2010-05-28 10:39:11 -0400 (Fri, 28 May 2010)
New Revision: 680
Added:
trunk/docs/docbook/userguide/src/main/module/wsconfig.xml
Modified:
trunk/docs/docbook/userguide/src/main/master.xml
Log:
Added new section for WS configuration, and first sub-section on JAX-WS handlers.
Modified: trunk/docs/docbook/userguide/src/main/master.xml
===================================================================
--- trunk/docs/docbook/userguide/src/main/master.xml 2010-05-28 11:08:19 UTC (rev 679)
+++ trunk/docs/docbook/userguide/src/main/master.xml 2010-05-28 14:39:11 UTC (rev 680)
@@ -14,6 +14,7 @@
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="module/introduction.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="module/admin.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="module/deploy.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="module/wsconfig.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="module/uddi.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="module/esb.xml"/>
</book>
Added: trunk/docs/docbook/userguide/src/main/module/wsconfig.xml
===================================================================
--- trunk/docs/docbook/userguide/src/main/module/wsconfig.xml (rev 0)
+++ trunk/docs/docbook/userguide/src/main/module/wsconfig.xml 2010-05-28 14:39:11 UTC (rev 680)
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+<chapter id="wsconfig">
+ <title>Web Service Configuration</title>
+
+ <section>
+ <title>Overview</title>
+
+ <para>
+ This section outlines the mechanisms that are available for
+ configuring the web service stack used in providing the web service for
+ a BPEL process, as well as invoking external web services from a BPEL
+ process.
+ </para>
+
+ </section>
+
+ <section>
+ <title>Configuring a JAX-WS Handler</title>
+
+ <para>
+ JAX-WS is a standard Java API for client and server support of web services.
+ The JAX-WS handler mechanism can be used by a client or server (i.e. the
+ web service) to invoke a user specified class whenever a message (or fault)
+ is sent or received. The handler is therefore installed into the message
+ pipeline, and can manipulate the message header or body as required.
+ </para>
+
+ <para>
+ The handlers are usually installed either programmatically, or through a
+ <emphasis>HandlerChain</emphasis> annotation on the Java interface
+ representing the Web Service. However, in the case of a BPEL process
+ deployed to RiftSaw, the JAX-WS service (representing the web service
+ associated with the BPEL process) is dynamically created on deployment.
+ </para>
+
+ <para>
+ Therefore to associate the configuration of a JAX-WS handler chain with
+ the Web Service dynamically created to support the BPEL process, the
+ user must place a file called <filename>jws_handler.xml</filename> alongside
+ the BPEL process definition and deployment descriptor.
+ </para>
+
+ <para>
+ The following provides an example of the XML configuration associated with
+ the <filename>jws_handler.xml</filename> file. This particular example is used by the
+ <emphasis>service_handler</emphasis> quickstart sample.
+ </para>
+
+ <informalexample>
+ <programlisting role="XML" ><![CDATA[
+<handler-chains xmlns="http://java.sun.com/xml/ns/javaee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee">
+ <handler-chain>
+ <handler>
+ <handler-name>JAXWSHandler</handler-name>
+ <handler-class>org.jboss.soa.bpel.examples.jaxws.JAXWSHandler</handler-class>
+ <init-param>
+ <param-name>TestParam</param-name>
+ <param-value>TestValue</param-value>
+ </init-param>
+ </handler>
+ </handler-chain>
+</handler-chains>
+ ]]></programlisting>
+ </informalexample>
+
+ <para>
+ The format of this file is the standard JAX-WS handler chain configuration.
+ One or more handler elements can be specified, with each handler defining
+ a name and class. The handler configuration can optionally provide
+ initialization parameters that are passed to the <emphasis>init</emphasis>
+ method on the handler implementation.
+ </para>
+
+ <note>
+ <para>
+ This mechanism only installs JAX-WS handlers on the 'provider' web service. It
+ is not currently possible to configure JAX-WS handlers for the client endpoints
+ that invoke external web services from a BPEL process.
+ </para>
+ </note>
+
+ <para>
+ An example of this mechanism can be found in the <emphasis>service_handler</emphasis>
+ quickstart sample.
+ </para>
+
+ </section>
+
+</chapter>
15 years, 4 months
riftsaw SVN: r679 - in trunk: distribution/src/main/assembly and 81 other directories.
by riftsaw-commits@lists.jboss.org
Author: objectiser
Date: 2010-05-28 07:08:19 -0400 (Fri, 28 May 2010)
New Revision: 679
Added:
trunk/distribution/src/main/release/db/wsstack/
trunk/distribution/src/main/release/db/wsstack/cxf.properties
trunk/distribution/src/main/release/db/wsstack/native.properties
trunk/runtime/engine/src/main/java/org/jboss/soa/bpel/runtime/ws/CXFJAXWSInitializer.java
trunk/runtime/engine/src/main/java/org/jboss/soa/bpel/runtime/ws/JAXWSInitializer.java
trunk/samples/quickstart/secure_invoke/
trunk/samples/quickstart/secure_invoke/.settings/
trunk/samples/quickstart/secure_invoke/.settings/org.eclipse.wst.common.component
trunk/samples/quickstart/secure_invoke/.settings/org.eclipse.wst.common.project.facet.core.xml
trunk/samples/quickstart/secure_invoke/bpelContent/
trunk/samples/quickstart/secure_invoke/bpelContent/SecureHelloWorldWS.wsdl
trunk/samples/quickstart/secure_invoke/bpelContent/SecureInvoke.bpel
trunk/samples/quickstart/secure_invoke/bpelContent/SecureInvoke.wsdl
trunk/samples/quickstart/secure_invoke/bpelContent/bpel-deploy.xml
trunk/samples/quickstart/secure_invoke/bpelContent/etc/
trunk/samples/quickstart/secure_invoke/bpelContent/etc/Client_Encrypt.properties
trunk/samples/quickstart/secure_invoke/bpelContent/etc/Client_Sign.properties
trunk/samples/quickstart/secure_invoke/bpelContent/jbossws-cxf-SecureHelloWorldPort.xml
trunk/samples/quickstart/secure_invoke/bpelContent/keystore/
trunk/samples/quickstart/secure_invoke/bpelContent/keystore/client-keystore.jks
trunk/samples/quickstart/secure_invoke/bpelContent/keystore/client-truststore.jks
trunk/samples/quickstart/secure_invoke/build.xml
trunk/samples/quickstart/secure_invoke/messages/
trunk/samples/quickstart/secure_invoke/messages/hello_request1.xml
trunk/samples/quickstart/secure_invoke/readme.txt
trunk/samples/quickstart/secure_invoke/war/
trunk/samples/quickstart/secure_invoke/war/resources/
trunk/samples/quickstart/secure_invoke/war/resources/WEB-INF/
trunk/samples/quickstart/secure_invoke/war/resources/WEB-INF/classes/
trunk/samples/quickstart/secure_invoke/war/resources/WEB-INF/etc/
trunk/samples/quickstart/secure_invoke/war/resources/WEB-INF/etc/Server_Decrypt.properties
trunk/samples/quickstart/secure_invoke/war/resources/WEB-INF/etc/Server_SignVerf.properties
trunk/samples/quickstart/secure_invoke/war/resources/WEB-INF/jbossws-cxf.xml
trunk/samples/quickstart/secure_invoke/war/resources/WEB-INF/keystore/
trunk/samples/quickstart/secure_invoke/war/resources/WEB-INF/keystore/server-keystore.jks
trunk/samples/quickstart/secure_invoke/war/resources/WEB-INF/keystore/server-truststore.jks
trunk/samples/quickstart/secure_invoke/war/resources/WEB-INF/lib/
trunk/samples/quickstart/secure_invoke/war/resources/WEB-INF/web.xml
trunk/samples/quickstart/secure_invoke/war/src/
trunk/samples/quickstart/secure_invoke/war/src/jws_handlers.xml
trunk/samples/quickstart/secure_invoke/war/src/org/
trunk/samples/quickstart/secure_invoke/war/src/org/jboss/
trunk/samples/quickstart/secure_invoke/war/src/org/jboss/soa/
trunk/samples/quickstart/secure_invoke/war/src/org/jboss/soa/bpel/
trunk/samples/quickstart/secure_invoke/war/src/org/jboss/soa/bpel/examples/
trunk/samples/quickstart/secure_invoke/war/src/org/jboss/soa/bpel/examples/jaxws/
trunk/samples/quickstart/secure_invoke/war/src/org/jboss/soa/bpel/examples/jaxws/JAXWSHandler.java
trunk/samples/quickstart/secure_invoke/war/src/org/jboss/soa/bpel/samples/
trunk/samples/quickstart/secure_invoke/war/src/org/jboss/soa/bpel/samples/quickstart/
trunk/samples/quickstart/secure_invoke/war/src/org/jboss/soa/bpel/samples/quickstart/secure_invoke/
trunk/samples/quickstart/secure_invoke/war/src/org/jboss/soa/bpel/samples/quickstart/secure_invoke/SecureHelloWorldWS.java
trunk/samples/quickstart/secure_invoke/war/src/org/jboss/test/
trunk/samples/quickstart/secure_invoke/war/src/org/jboss/test/ws/
trunk/samples/quickstart/secure_invoke/war/src/org/jboss/test/ws/jaxws/
trunk/samples/quickstart/secure_invoke/war/src/org/jboss/test/ws/jaxws/samples/
trunk/samples/quickstart/secure_invoke/war/src/org/jboss/test/ws/jaxws/samples/wsse/
trunk/samples/quickstart/secure_invoke/war/src/org/jboss/test/ws/jaxws/samples/wsse/ClientUsernamePasswordCallback.java
trunk/samples/quickstart/secure_invoke/war/src/org/jboss/test/ws/jaxws/samples/wsse/ServerUsernamePasswordCallback.java
trunk/samples/quickstart/secure_invoke/war/view/
trunk/samples/quickstart/secure_invoke/war/view/index.jsp
trunk/samples/quickstart/secure_service/
trunk/samples/quickstart/secure_service/.project
trunk/samples/quickstart/secure_service/.settings/
trunk/samples/quickstart/secure_service/.settings/org.eclipse.wst.common.component
trunk/samples/quickstart/secure_service/.settings/org.eclipse.wst.common.project.facet.core.xml
trunk/samples/quickstart/secure_service/bpelContent/
trunk/samples/quickstart/secure_service/bpelContent/HelloWorld.bpel
trunk/samples/quickstart/secure_service/bpelContent/HelloWorld.bpelex
trunk/samples/quickstart/secure_service/bpelContent/HelloWorld.wsdl
trunk/samples/quickstart/secure_service/bpelContent/bpel-deploy.xml
trunk/samples/quickstart/secure_service/bpelContent/etc/
trunk/samples/quickstart/secure_service/bpelContent/etc/Server_Decrypt.properties
trunk/samples/quickstart/secure_service/bpelContent/etc/Server_SignVerf.properties
trunk/samples/quickstart/secure_service/bpelContent/jbossws-cxf.xml
trunk/samples/quickstart/secure_service/bpelContent/jws_handlers.xml
trunk/samples/quickstart/secure_service/bpelContent/keystore/
trunk/samples/quickstart/secure_service/bpelContent/keystore/server-keystore.jks
trunk/samples/quickstart/secure_service/bpelContent/keystore/server-truststore.jks
trunk/samples/quickstart/secure_service/build.xml
trunk/samples/quickstart/secure_service/client/
trunk/samples/quickstart/secure_service/client/resources/
trunk/samples/quickstart/secure_service/client/resources/etc/
trunk/samples/quickstart/secure_service/client/resources/etc/Client_Encrypt.properties
trunk/samples/quickstart/secure_service/client/resources/etc/Client_Sign.properties
trunk/samples/quickstart/secure_service/client/resources/keystore/
trunk/samples/quickstart/secure_service/client/resources/keystore/client-keystore.jks
trunk/samples/quickstart/secure_service/client/resources/keystore/client-truststore.jks
trunk/samples/quickstart/secure_service/client/resources/wssec.xml
trunk/samples/quickstart/secure_service/client/src/
trunk/samples/quickstart/secure_service/client/src/org/
trunk/samples/quickstart/secure_service/client/src/org/jboss/
trunk/samples/quickstart/secure_service/client/src/org/jboss/soa/
trunk/samples/quickstart/secure_service/client/src/org/jboss/soa/bpel/
trunk/samples/quickstart/secure_service/client/src/org/jboss/soa/bpel/examples/
trunk/samples/quickstart/secure_service/client/src/org/jboss/soa/bpel/examples/jaxws/
trunk/samples/quickstart/secure_service/client/src/org/jboss/soa/bpel/examples/jaxws/JAXWSDispatcherClient.java
trunk/samples/quickstart/secure_service/client/src/org/jboss/test/
trunk/samples/quickstart/secure_service/client/src/org/jboss/test/ws/
trunk/samples/quickstart/secure_service/client/src/org/jboss/test/ws/jaxws/
trunk/samples/quickstart/secure_service/client/src/org/jboss/test/ws/jaxws/samples/
trunk/samples/quickstart/secure_service/client/src/org/jboss/test/ws/jaxws/samples/wsse/
trunk/samples/quickstart/secure_service/client/src/org/jboss/test/ws/jaxws/samples/wsse/ClientUsernamePasswordCallback.java
trunk/samples/quickstart/secure_service/client/src/org/jboss/test/ws/jaxws/samples/wsse/ServerUsernamePasswordCallback.java
trunk/samples/quickstart/secure_service/messages/
trunk/samples/quickstart/secure_service/messages/hello_request1.xml
trunk/samples/quickstart/secure_service/readme.txt
trunk/samples/quickstart/secure_service/server/
trunk/samples/quickstart/secure_service/server/src/
trunk/samples/quickstart/secure_service/server/src/org/
trunk/samples/quickstart/secure_service/server/src/org/jboss/
trunk/samples/quickstart/secure_service/server/src/org/jboss/soa/
trunk/samples/quickstart/secure_service/server/src/org/jboss/soa/bpel/
trunk/samples/quickstart/secure_service/server/src/org/jboss/soa/bpel/examples/
trunk/samples/quickstart/secure_service/server/src/org/jboss/soa/bpel/examples/jaxws/
trunk/samples/quickstart/secure_service/server/src/org/jboss/soa/bpel/examples/jaxws/JAXWSHandler.java
trunk/samples/quickstart/secure_service/server/src/org/jboss/test/
trunk/samples/quickstart/secure_service/server/src/org/jboss/test/ws/
trunk/samples/quickstart/secure_service/server/src/org/jboss/test/ws/jaxws/
trunk/samples/quickstart/secure_service/server/src/org/jboss/test/ws/jaxws/samples/
trunk/samples/quickstart/secure_service/server/src/org/jboss/test/ws/jaxws/samples/wsse/
trunk/samples/quickstart/secure_service/server/src/org/jboss/test/ws/jaxws/samples/wsse/ClientUsernamePasswordCallback.java
trunk/samples/quickstart/secure_service/server/src/org/jboss/test/ws/jaxws/samples/wsse/ServerUsernamePasswordCallback.java
trunk/samples/quickstart/secure_service/wssec.xml
trunk/samples/quickstart/service_handler/
trunk/samples/quickstart/service_handler/.settings/
trunk/samples/quickstart/service_handler/.settings/org.eclipse.wst.common.component
trunk/samples/quickstart/service_handler/.settings/org.eclipse.wst.common.project.facet.core.xml
trunk/samples/quickstart/service_handler/bpelContent/
trunk/samples/quickstart/service_handler/bpelContent/HelloWorld.bpel
trunk/samples/quickstart/service_handler/bpelContent/HelloWorld.wsdl
trunk/samples/quickstart/service_handler/bpelContent/bpel-deploy.xml
trunk/samples/quickstart/service_handler/bpelContent/jws_handlers.xml
trunk/samples/quickstart/service_handler/build.xml
trunk/samples/quickstart/service_handler/code/
trunk/samples/quickstart/service_handler/code/src/
trunk/samples/quickstart/service_handler/code/src/org/
trunk/samples/quickstart/service_handler/code/src/org/jboss/
trunk/samples/quickstart/service_handler/code/src/org/jboss/soa/
trunk/samples/quickstart/service_handler/code/src/org/jboss/soa/bpel/
trunk/samples/quickstart/service_handler/code/src/org/jboss/soa/bpel/examples/
trunk/samples/quickstart/service_handler/code/src/org/jboss/soa/bpel/examples/jaxws/
trunk/samples/quickstart/service_handler/code/src/org/jboss/soa/bpel/examples/jaxws/JAXWSHandler.java
trunk/samples/quickstart/service_handler/messages/
trunk/samples/quickstart/service_handler/messages/hello_request1.xml
trunk/samples/quickstart/service_handler/readme.txt
Modified:
trunk/distribution/src/main/assembly/bin.xml
trunk/distribution/src/main/release/db/bpel.properties
trunk/distribution/src/main/release/install/build.xml
trunk/pom.xml
trunk/runtime/engine/pom.xml
trunk/runtime/engine/src/main/java/org/jboss/soa/bpel/runtime/engine/ode/JAXWSBindingContext.java
trunk/runtime/engine/src/main/java/org/jboss/soa/bpel/runtime/ws/DeploymentBuilder.java
trunk/runtime/engine/src/main/java/org/jboss/soa/bpel/runtime/ws/EndpointManager.java
trunk/runtime/engine/src/main/java/org/jboss/soa/bpel/runtime/ws/WebServiceClient.java
trunk/runtime/engine/src/main/java/org/jboss/soa/bpel/runtime/ws/WebServiceProviderFactory.java
Log:
RIFTSAW-75 - support ws-security.
Only supported on the jbossws-cxf stack. Includes examples that demonstrate username token and signature authentication.
Modified: trunk/distribution/src/main/assembly/bin.xml
===================================================================
--- trunk/distribution/src/main/assembly/bin.xml 2010-05-28 05:11:17 UTC (rev 678)
+++ trunk/distribution/src/main/assembly/bin.xml 2010-05-28 11:08:19 UTC (rev 679)
@@ -68,14 +68,17 @@
<include>esb/bpel_helloworld/**</include>
<include>esb/bpel_loan_fault/**</include>
<include>esb/webservice_esb_bpel/**</include>
+ <include>quickstart/bpel_event_listener/**</include>
<include>quickstart/hello_world/**</include>
<include>quickstart/hello_world_header_ode/**</include>
<include>quickstart/hello_world_header_wsdl/**</include>
<include>quickstart/loan_approval/**</include>
+ <include>quickstart/secure_invoke/**</include>
+ <include>quickstart/secure_service/**</include>
+ <include>quickstart/service_handler/**</include>
<include>quickstart/simple_correlation/**</include>
<include>quickstart/simple_invoke/**</include>
<include>quickstart/simple_pick/**</include>
- <include>quickstart/bpel_event_listener/**</include>
<include>tutorial/BPEL-BluePrint1/**</include>
<include>tutorial/BPEL-BluePrint2/**</include>
<include>tutorial/BPEL-BluePrint3/**</include>
Modified: trunk/distribution/src/main/release/db/bpel.properties
===================================================================
--- trunk/distribution/src/main/release/db/bpel.properties 2010-05-28 05:11:17 UTC (rev 678)
+++ trunk/distribution/src/main/release/db/bpel.properties 2010-05-28 11:08:19 UTC (rev 679)
@@ -105,6 +105,8 @@
# name of the clerk
bpel.uddi.clerk=BPELClerk
+bpel.jaxws.client.initializer.impl=(a)jaxws.client.initializer.impl@
+
hibernate.dialect=@dialect@
hibernate.hbm2ddl.auto=update
hibernate.current_session_context_class=jta
Added: trunk/distribution/src/main/release/db/wsstack/cxf.properties
===================================================================
--- trunk/distribution/src/main/release/db/wsstack/cxf.properties (rev 0)
+++ trunk/distribution/src/main/release/db/wsstack/cxf.properties 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1 @@
+jaxws.client.initializer.impl=org.jboss.soa.bpel.runtime.ws.CXFJAXWSInitializer
Added: trunk/distribution/src/main/release/db/wsstack/native.properties
===================================================================
--- trunk/distribution/src/main/release/db/wsstack/native.properties (rev 0)
+++ trunk/distribution/src/main/release/db/wsstack/native.properties 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1 @@
+jaxws.client.initializer.impl=
Modified: trunk/distribution/src/main/release/install/build.xml
===================================================================
--- trunk/distribution/src/main/release/install/build.xml 2010-05-28 05:11:17 UTC (rev 678)
+++ trunk/distribution/src/main/release/install/build.xml 2010-05-28 11:08:19 UTC (rev 679)
@@ -81,6 +81,7 @@
toFile="${deploy.dir}/${bpel-runtime}/bpel.properties"
overwrite="true">
<filterset filtersfile="../db/jdbc/${database}.properties" />
+ <filterset filtersfile="../db/wsstack/${ws.stack}.properties" />
</copy>
<copy file="../db/datasource/bpel-${database}-ds.xml"
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2010-05-28 05:11:17 UTC (rev 678)
+++ trunk/pom.xml 2010-05-28 11:08:19 UTC (rev 679)
@@ -88,6 +88,7 @@
<commons.codec.version>1.3</commons.codec.version>
<xerces.version>2.9.0</xerces.version>
<commons.httpclient.version>3.1</commons.httpclient.version>
+ <cxf.version>2.2.8</cxf.version>
</properties>
<dependencyManagement>
Modified: trunk/runtime/engine/pom.xml
===================================================================
--- trunk/runtime/engine/pom.xml 2010-05-28 05:11:17 UTC (rev 678)
+++ trunk/runtime/engine/pom.xml 2010-05-28 11:08:19 UTC (rev 679)
@@ -118,6 +118,18 @@
<artifactId>riftsaw-bpel-compiler</artifactId>
<scope>provided</scope>
</dependency>
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-core</artifactId>
+ <version>${cxf.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-ws-security</artifactId>
+ <version>${cxf.version}</version>
+ <scope>provided</scope>
+ </dependency>
<!-- for H2Database -->
<dependency>
Modified: trunk/runtime/engine/src/main/java/org/jboss/soa/bpel/runtime/engine/ode/JAXWSBindingContext.java
===================================================================
--- trunk/runtime/engine/src/main/java/org/jboss/soa/bpel/runtime/engine/ode/JAXWSBindingContext.java 2010-05-28 05:11:17 UTC (rev 678)
+++ trunk/runtime/engine/src/main/java/org/jboss/soa/bpel/runtime/engine/ode/JAXWSBindingContext.java 2010-05-28 11:08:19 UTC (rev 679)
@@ -226,10 +226,12 @@
initialPartnerEndpoint.serviceName, initialPartnerEndpoint.portName,
processId, endpointId
);
+
+ ProcessConf pconf=engine._store.getProcessConfiguration(processId);
try
{
- PartnerChannel channel = endpointManager.createClient(endpointMD, wsdlDefinition, wsdlUrl);
+ PartnerChannel channel = endpointManager.createClient(endpointMD, wsdlDefinition, wsdlUrl, pconf);
return new PartnerRoleChannelImpl(channel);
}
Added: trunk/runtime/engine/src/main/java/org/jboss/soa/bpel/runtime/ws/CXFJAXWSInitializer.java
===================================================================
--- trunk/runtime/engine/src/main/java/org/jboss/soa/bpel/runtime/ws/CXFJAXWSInitializer.java (rev 0)
+++ trunk/runtime/engine/src/main/java/org/jboss/soa/bpel/runtime/ws/CXFJAXWSInitializer.java 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,77 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.soa.bpel.runtime.ws;
+
+import java.net.URL;
+import java.net.URLClassLoader;
+
+import javax.xml.namespace.QName;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.cxf.Bus;
+import org.apache.cxf.BusFactory;
+import org.apache.cxf.bus.spring.SpringBusFactory;
+
+/**
+ * This class implements the JAXWSInitializer interface to
+ * provide Apache CXF specific initialization.
+ *
+ * @author gbrown
+ *
+ */
+public class CXFJAXWSInitializer implements JAXWSInitializer {
+
+ protected final Log log = LogFactory.getLog(getClass());
+
+ /**
+ * This method initializes the web service stack in preparation for
+ * calling the service and port supplied as parameters.
+ *
+ * @param serviceName The service name
+ * @param portName The port name
+ * @param baseURI The base URI of the deployment
+ */
+ public void initializeStack(QName serviceName, QName portName, java.net.URI baseURI) {
+ try {
+ SpringBusFactory bf = new SpringBusFactory();
+
+ URLClassLoader urlcl=new URLClassLoader(new URL[]{baseURI.toURL()});
+
+ String filename="jbossws-cxf-"+portName.getLocalPart()+".xml";
+
+ URL busFile = urlcl.getResource(filename);
+
+ log.debug("Web Stack initialization file: name="+filename+" file="+busFile);
+
+ if (busFile != null) {
+ Bus bus = bf.createBus(busFile.toString());
+ bf.setThreadDefaultBus(bus);
+
+ log.debug("Set thread default bus="+bus);
+ }
+
+ } catch(Exception e) {
+ log.error("Failed to initialize WS-Security in stack", e);
+ }
+ }
+}
Modified: trunk/runtime/engine/src/main/java/org/jboss/soa/bpel/runtime/ws/DeploymentBuilder.java
===================================================================
--- trunk/runtime/engine/src/main/java/org/jboss/soa/bpel/runtime/ws/DeploymentBuilder.java 2010-05-28 05:11:17 UTC (rev 678)
+++ trunk/runtime/engine/src/main/java/org/jboss/soa/bpel/runtime/ws/DeploymentBuilder.java 2010-05-28 11:08:19 UTC (rev 679)
@@ -72,10 +72,18 @@
{
public boolean accept(File f)
{
- return (
+ return (true
+ /* Commented out, to ensure all appropriate artifacts are deployed
f.getName().endsWith(".wsdl")
|| f.getName().endsWith(".xsd")
+ || f.getName().endsWith(".xml")
+ || f.getName().endsWith(".properties")
+ || f.getName().endsWith(".jks")
+ || f.getName().endsWith(".keystore")
+ || f.getName().endsWith(".pem")
+ || f.getName().endsWith(".chain")
|| f.isDirectory()
+ */
);
}
};
@@ -84,9 +92,76 @@
{
if(f.equals(wsdl)) continue;
copy(f, new File(this.wsdlDir, f.getName()));
+ copy(f, new File(this.webInf, f.getName()));
+
+
+/* Causes problems with testcase RIFTSAW-70 on jbossws-native. Ok
+ on jbossws-cxf. So just copying all artifacts to both locations
+ for now.
+
+ if (f.getName().endsWith(".wsdl") ||
+ f.getName().endsWith(".xsd")) {
+ copy(f, new File(this.wsdlDir, f.getName()));
+ } else {
+ copy(f, new File(this.webInf, f.getName()));
+ }
+*/
}
return this;
}
+
+ public DeploymentBuilder setProvider(javax.xml.ws.Provider<?> provider) {
+
+ // Check if jbossws-cxf.xml is present, and if so, updated the provider implementation class attribute
+ File f=new File(this.webInf, "jbossws-cxf.xml");
+
+ if (f.exists()) {
+ FileInputStream fis=null;
+ FileOutputStream fos=null;
+
+ try {
+ fis=new FileInputStream(f);
+
+ byte[] b=new byte[fis.available()];
+ fis.read(b);
+
+ String str=new String(b);
+
+ fis.close();
+ fis = null;
+
+ if (str.indexOf("@provider@") != -1) {
+ fos=new FileOutputStream(f);
+
+ str = str.replaceAll("@provider@", provider.getClass().getName());
+
+ fos.write(str.getBytes());
+
+ fos.flush();
+ fos.close();
+
+ fos = null;
+ } else {
+ // Report error
+ System.err.println("jbossws-cxf.xml file does not contain @provider@ field");
+ }
+
+ } catch (IOException e) {
+ throw new RuntimeException("Failed to copy files", e);
+ } finally {
+ try {
+ if (fis != null) fis.close();
+ } catch (IOException e) {
+ }
+ try {
+ if (fos != null) fos.close();
+ } catch (IOException e) {
+ }
+ }
+ }
+
+ return this;
+ }
public File build()
{
Modified: trunk/runtime/engine/src/main/java/org/jboss/soa/bpel/runtime/ws/EndpointManager.java
===================================================================
--- trunk/runtime/engine/src/main/java/org/jboss/soa/bpel/runtime/ws/EndpointManager.java 2010-05-28 05:11:17 UTC (rev 678)
+++ trunk/runtime/engine/src/main/java/org/jboss/soa/bpel/runtime/ws/EndpointManager.java 2010-05-28 11:08:19 UTC (rev 679)
@@ -24,6 +24,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.ode.bpel.iapi.EndpointReference;
+import org.apache.ode.bpel.iapi.ProcessConf;
import org.jboss.dependency.spi.ControllerContext;
import org.jboss.deployers.client.spi.DeployerClient;
import org.jboss.deployers.client.spi.Deployment;
@@ -93,16 +94,16 @@
{
try
{
+
+ // Check if a handler file has been specified
+ File wsdlFile=new File(wsdlRef.getWsdlURL().toURI());
+
+ File handlerFile=new File(wsdlFile.getParentFile(), "jws_handlers.xml");
+
+ if (handlerFile.exists() == false) {
+ handlerFile = null;
+ }
- // create deployment structure (maybe replaced by shrinkwrap)
- File warArchive = new DeploymentBuilder(serverConfig)
- .setEndpoint(metaData.getEndpointId())
- .setWSDL(new File(wsdlRef.getWsdlURL().toURI()))
- .build();
-
- //Deployment deployment = createInMemoryDeployment(endpointId);
- Deployment deployment = createVFSDeployment(warArchive);
-
// generate provider impl
WebServiceProviderFactory providerFactory = new WebServiceProviderFactory();
@@ -112,11 +113,22 @@
metaData.getPortName(),
metaData.getEndpointId(),
wsdlRef,
- classLoader
+ classLoader,
+ handlerFile
);
log.debug("Created dynamic endpoint class " + providerImpl.getClass().getName());
+ // create deployment structure (maybe replaced by shrinkwrap)
+ File warArchive = new DeploymentBuilder(serverConfig)
+ .setEndpoint(metaData.getEndpointId())
+ .setWSDL(wsdlFile)
+ .setProvider(providerImpl)
+ .build();
+
+ //Deployment deployment = createInMemoryDeployment(endpointId);
+ Deployment deployment = createVFSDeployment(warArchive);
+
// Classloading
ClassLoaderFactory clf = new DelegatingClassLoaderFactory(classLoader);
@@ -290,13 +302,13 @@
}
public WebServiceClient createClient(
- EndpointMetaData metaData,Definition wsdlDefinition, URL wsdlUrl)
+ EndpointMetaData metaData,Definition wsdlDefinition, URL wsdlUrl, ProcessConf pconf)
throws EndpointManagementException
{
try
{
WebServiceClient client =
- new WebServiceClient(metaData, wsdlDefinition, wsdlUrl, executionEnvironment);
+ new WebServiceClient(metaData, wsdlDefinition, wsdlUrl, executionEnvironment, pconf);
return client;
Added: trunk/runtime/engine/src/main/java/org/jboss/soa/bpel/runtime/ws/JAXWSInitializer.java
===================================================================
--- trunk/runtime/engine/src/main/java/org/jboss/soa/bpel/runtime/ws/JAXWSInitializer.java (rev 0)
+++ trunk/runtime/engine/src/main/java/org/jboss/soa/bpel/runtime/ws/JAXWSInitializer.java 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,49 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.soa.bpel.runtime.ws;
+
+import javax.xml.namespace.QName;
+
+/**
+ * This interface defines the component responsible for initializing the
+ * JAX-WS compliant web service stack. Although JAX-WS provides a standard
+ * API for communicating with external web services, it does not provide
+ * standardisation for the initialization of high layers of the web
+ * stack, e.g. related to WS-Security. Therefore, specific initialization
+ * is required on a per stack basis.
+ *
+ * @author gbrown
+ *
+ */
+public interface JAXWSInitializer {
+
+ /**
+ * This method initializes the web service stack in preparation for
+ * calling the service and port supplied as parameters.
+ *
+ * @param serviceName The service name
+ * @param portName The port name
+ * @param baseURI The base URI of the deployment
+ */
+ public void initializeStack(QName serviceName, QName portName, java.net.URI baseURI);
+
+}
Modified: trunk/runtime/engine/src/main/java/org/jboss/soa/bpel/runtime/ws/WebServiceClient.java
===================================================================
--- trunk/runtime/engine/src/main/java/org/jboss/soa/bpel/runtime/ws/WebServiceClient.java 2010-05-28 05:11:17 UTC (rev 678)
+++ trunk/runtime/engine/src/main/java/org/jboss/soa/bpel/runtime/ws/WebServiceClient.java 2010-05-28 11:08:19 UTC (rev 679)
@@ -42,6 +42,7 @@
import org.apache.ode.bpel.iapi.Message;
import org.apache.ode.bpel.iapi.MessageExchange;
import org.apache.ode.bpel.iapi.PartnerRoleMessageExchange;
+import org.apache.ode.bpel.iapi.ProcessConf;
import org.apache.ode.bpel.iapi.Scheduler;
import org.apache.ode.utils.DOMUtils;
import org.jboss.soa.bpel.runtime.engine.EndpointReference;
@@ -58,6 +59,8 @@
*/
public class WebServiceClient implements PartnerChannel
{
+ private static final String JAXWS_CLIENT_INITIALIZER = "jaxws.client.initializer.impl";
+
protected final Log log = LogFactory.getLog(getClass());
private URL wsdlUrl;
@@ -74,8 +77,10 @@
private SOAPMessageAdapter messageAdapter;
private ExecutionEnvironment executionEnvironment;
-
- public WebServiceClient(EndpointMetaData metaData, Definition wsdlDefintion, URL wsdlUrl , ExecutionEnvironment env)
+ private java.net.URI baseURI;
+
+ public WebServiceClient(EndpointMetaData metaData, Definition wsdlDefintion, URL wsdlUrl , ExecutionEnvironment env,
+ ProcessConf pconf)
{
this.executionEnvironment = env;
this.metaData = metaData;
@@ -87,7 +92,11 @@
this.port = new QName(serviceName.getNamespaceURI(), metaData.getPortName());
this.messageAdapter = new SOAPMessageAdapter(this.wsdlDefintion, serviceName, port.getLocalPart());
- }
+
+ this.baseURI = pconf.getBaseURI();
+
+ log.debug("Web Service Client: Base URI="+pconf.getBaseURI());
+ }
public EndpointReference getEndpointReference()
{
@@ -292,6 +301,8 @@
if(null==dispatcher)
{
log.debug("Creating Dispatcher ("+this.id+") on " + wsdlUrl + ": "+serviceName);
+
+ initializeStack(portName);
Service service = Service.create(this.wsdlUrl, serviceName);
dispatcher = service.createDispatch(
@@ -303,7 +314,30 @@
return dispatcher;
}
+
+ private synchronized void initializeStack(QName portName) {
+ String impl=this.executionEnvironment.getOdeConfig().getProperty(JAXWS_CLIENT_INITIALIZER);
+ if (impl != null && impl.trim().length() > 0) {
+ JAXWSInitializer initializer=null;
+
+ try {
+ Class<?> cls=Class.forName(impl);
+
+ initializer = (JAXWSInitializer)cls.newInstance();
+
+ } catch(Exception e) {
+ log.error("Unable to obtain JAXWS Initializer class '"+impl+"'", e);
+ }
+
+ if (initializer != null) {
+ initializer.initializeStack(this.serviceName, portName, this.baseURI);
+ }
+ } else {
+ log.debug("JAXWS Client Initializer not defined");
+ }
+ }
+
public String toString()
{
return "WebServiceClient {service="+serviceName+",port="+port+"}";
Modified: trunk/runtime/engine/src/main/java/org/jboss/soa/bpel/runtime/ws/WebServiceProviderFactory.java
===================================================================
--- trunk/runtime/engine/src/main/java/org/jboss/soa/bpel/runtime/ws/WebServiceProviderFactory.java 2010-05-28 05:11:17 UTC (rev 678)
+++ trunk/runtime/engine/src/main/java/org/jboss/soa/bpel/runtime/ws/WebServiceProviderFactory.java 2010-05-28 11:08:19 UTC (rev 679)
@@ -47,7 +47,8 @@
QName service, String port,
String endpointId,
WSDLReference wsdlRef,
- ClassLoader loader
+ ClassLoader loader,
+ java.io.File handlerFile
)
throws Exception
{
@@ -57,6 +58,7 @@
// Imports
pool.importPackage("java.lang");
pool.importPackage("javax.xml.ws");
+ pool.importPackage("javax.jws");
CtClass stringType = pool.get("java.lang.String");
@@ -141,6 +143,18 @@
attr.addAnnotation(annotation2);
classFile.addAttribute(attr);
+
+
+ // Check if handler chain should be established
+ if (handlerFile != null) {
+ Annotation handlerChain = new Annotation("javax.jws.HandlerChain", constantPool);
+
+ handlerChain.addMemberValue("file",
+ new StringMemberValue("/"+handlerFile.getName(), constantPool));
+
+ attr.addAnnotation(handlerChain);
+ }
+
createStringGetter(impl, stringType, "endpointId", "getEndpointId");
createStringGetter(impl, stringType, "serviceName", "getServiceName");
Added: trunk/samples/quickstart/secure_invoke/.settings/org.eclipse.wst.common.component
===================================================================
--- trunk/samples/quickstart/secure_invoke/.settings/org.eclipse.wst.common.component (rev 0)
+++ trunk/samples/quickstart/secure_invoke/.settings/org.eclipse.wst.common.component 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-modules id="moduleCoreId" project-version="1.5.0">
+ <wb-module deploy-name="Quickstart_bpel_simple_invoke">
+ <wb-resource deploy-path="/" source-path="/bpelContent"/>
+ <dependent-module deploy-path="/" handle="module:/org.jboss.ide.eclipse.as.wtp.core.vcf.outputFolders/">
+ <dependency-type>consumes</dependency-type>
+ </dependent-module>
+ </wb-module>
+</project-modules>
Added: trunk/samples/quickstart/secure_invoke/.settings/org.eclipse.wst.common.project.facet.core.xml
===================================================================
--- trunk/samples/quickstart/secure_invoke/.settings/org.eclipse.wst.common.project.facet.core.xml (rev 0)
+++ trunk/samples/quickstart/secure_invoke/.settings/org.eclipse.wst.common.project.facet.core.xml 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<faceted-project>
+ <fixed facet="jbt.bpel.facet.core"/>
+ <installed facet="jbt.bpel.facet.core" version="2.0"/>
+</faceted-project>
Added: trunk/samples/quickstart/secure_invoke/bpelContent/SecureHelloWorldWS.wsdl
===================================================================
--- trunk/samples/quickstart/secure_invoke/bpelContent/SecureHelloWorldWS.wsdl (rev 0)
+++ trunk/samples/quickstart/secure_invoke/bpelContent/SecureHelloWorldWS.wsdl 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<definitions name='SecureHelloWorldWSService'
+targetNamespace='http://secure_invoke/helloworld'
+xmlns='http://schemas.xmlsoap.org/wsdl/'
+xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/'
+xmlns:tns='http://secure_invoke/helloworld'
+xmlns:xsd='http://www.w3.org/2001/XMLSchema'
+xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype"
+>
+ <types>
+ <xs:schema targetNamespace='http://secure_invoke/helloworld' version='1.0' xmlns:tns='http://secure_invoke/helloworld' xmlns:xs='http://www.w3.org/2001/XMLSchema'>
+ <xs:element name='sayGoodbye' type='tns:sayGoodbye'/>
+ <xs:element name='sayGoodbyeResponse' type='tns:sayGoodbyeResponse'/>
+ <xs:element name='sayHello' type='tns:sayHello'/>
+ <xs:element name='sayHelloResponse' type='tns:sayHelloResponse'/>
+ <xs:complexType name='sayGoodbye'>
+ <xs:sequence>
+ <xs:element minOccurs='0' name='toWhom' type='xs:string'/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name='sayGoodbyeResponse'>
+ <xs:sequence>
+ <xs:element minOccurs='0' name='return' type='xs:string'/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name='sayHello'>
+ <xs:sequence>
+ <xs:element minOccurs='0' name='toWhom' type='xs:string'/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name='sayHelloResponse'>
+ <xs:sequence>
+ <xs:element minOccurs='0' name='return' type='xs:string'/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:schema>
+ </types>
+ <message name='HelloWorld_sayGoodbye'>
+ <part element='tns:sayGoodbye' name='sayGoodbye'></part>
+ </message>
+ <message name='HelloWorld_sayHello'>
+ <part element='tns:sayHello' name='sayHello'></part>
+ </message>
+ <message name='HelloWorld_sayHelloResponse'>
+ <part element='tns:sayHelloResponse' name='sayHelloResponse'></part>
+ </message>
+ <message name='HelloWorld_sayGoodbyeResponse'>
+ <part element='tns:sayGoodbyeResponse' name='sayGoodbyeResponse'></part>
+ </message>
+ <portType name='SecureHelloWorld'>
+ <operation name='sayGoodbye' parameterOrder='sayGoodbye'>
+ <input message='tns:HelloWorld_sayGoodbye'></input>
+ <output message='tns:HelloWorld_sayGoodbyeResponse'></output>
+ </operation>
+ <operation name='sayHello' parameterOrder='sayHello'>
+ <input message='tns:HelloWorld_sayHello'></input>
+ <output message='tns:HelloWorld_sayHelloResponse'></output>
+ </operation>
+ </portType>
+ <binding name='SecureHelloWorldBinding' type='tns:SecureHelloWorld'>
+ <soap:binding style='document' transport='http://schemas.xmlsoap.org/soap/http'/>
+ <operation name='sayGoodbye'>
+ <soap:operation soapAction=''/>
+ <input>
+ <soap:body use='literal'/>
+ </input>
+ <output>
+ <soap:body use='literal'/>
+ </output>
+ </operation>
+ <operation name='sayHello'>
+ <soap:operation soapAction=''/>
+ <input>
+ <soap:body use='literal'/>
+ </input>
+ <output>
+ <soap:body use='literal'/>
+ </output>
+ </operation>
+ </binding>
+ <service name='SecureHelloWorldWSService'>
+ <port binding='tns:SecureHelloWorldBinding' name='SecureHelloWorldPort'>
+ <soap:address location='http://127.0.0.1:8080/Quickstart_bpel_secure_invoke/SecureHelloWorldWS'/>
+ </port>
+ </service>
+ <plnk:partnerLinkType name="theExternalService_PartnerLinkType">
+ <plnk:role name="callingTheExternalService" portType="tns:SecureHelloWorld"/>
+ </plnk:partnerLinkType>
+</definitions>
Added: trunk/samples/quickstart/secure_invoke/bpelContent/SecureInvoke.bpel
===================================================================
--- trunk/samples/quickstart/secure_invoke/bpelContent/SecureInvoke.bpel (rev 0)
+++ trunk/samples/quickstart/secure_invoke/bpelContent/SecureInvoke.bpel 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,96 @@
+<!--
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, Red Hat Middleware LLC, and others contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ -->
+<process name="SecureInvoke"
+ targetNamespace="http://www.jboss.org/bpel/examples"
+ xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
+ xmlns:tns="http://www.jboss.org/bpel/examples"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:intf="http://www.jboss.org/bpel/examples/wsdl"
+ xmlns:intf2="http://secure_invoke/helloworld"
+ queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"
+ expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0">
+
+ <import location="SecureInvoke.wsdl"
+ namespace="http://www.jboss.org/bpel/examples/wsdl"
+ importType="http://schemas.xmlsoap.org/wsdl/" />
+
+ <import location="SecureHelloWorldWS.wsdl"
+ namespace="http://secure_invoke/helloworld"
+ importType="http://schemas.xmlsoap.org/wsdl/" />
+
+ <partnerLinks>
+ <partnerLink name="theClient_PartnerLink"
+ partnerLinkType="intf:myClientCalling_PartnerLinkType"
+ myRole="me" />
+ <partnerLink name="theExternalService_PartnerLink"
+ partnerLinkType="intf2:theExternalService_PartnerLinkType"
+ partnerRole="callingTheExternalService"
+ initializePartnerRole="yes"/>
+ </partnerLinks>
+
+ <variables>
+ <variable name="myVar" messageType="intf:GreetingTarget_Message"/>
+ <variable name="inVar" messageType="intf2:HelloWorld_sayHello"/>
+ <variable name="outVar" messageType="intf2:HelloWorld_sayHelloResponse"/>
+ <variable name="tempVar" type="xsd:string"/>
+ </variables>
+
+ <sequence>
+ <receive
+ name="request"
+ partnerLink="theClient_PartnerLink"
+ portType="intf:SecureInvoke_PortType"
+ operation="sayHelloTo"
+ variable="myVar"
+ createInstance="yes"/>
+
+ <assign name="assignRequestToHelloWorldWS">
+ <!-- Ode requires variable initialization -->
+ <copy>
+ <from><literal><intf2:sayHello><toWhom xmlns=""/></intf2:sayHello></literal></from>
+ <to variable="inVar" part="sayHello"/>
+ </copy>
+ <!-- now the real copy -->
+ <copy>
+ <from variable="myVar" part="ToWhom"/>
+ <to>$inVar.sayHello/toWhom</to>
+ </copy>
+ </assign>
+
+ <invoke name="ICallTheExternalService"
+ partnerLink="theExternalService_PartnerLink"
+ portType="intf2:SecureHelloWorld"
+ operation="sayHello"
+ inputVariable="inVar"
+ outputVariable="outVar"
+ />
+
+ <assign name="assignResponseOfHelloWorldWS">
+ <copy>
+ <from>concat($outVar.sayHelloResponse/return,' and BPEL')</from>
+ <to variable="myVar" part="ToWhom"/>
+ </copy>
+ </assign>
+
+ <reply name="response"
+ partnerLink="theClient_PartnerLink"
+ portType="intf:SecureInvoke_PortType"
+ operation="sayHelloTo"
+ variable="myVar"/>
+ </sequence>
+</process>
Added: trunk/samples/quickstart/secure_invoke/bpelContent/SecureInvoke.wsdl
===================================================================
--- trunk/samples/quickstart/secure_invoke/bpelContent/SecureInvoke.wsdl (rev 0)
+++ trunk/samples/quickstart/secure_invoke/bpelContent/SecureInvoke.wsdl 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, Red Hat Middleware LLC, and others contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ -->
+<wsdl:definitions
+ targetNamespace="http://www.jboss.org/bpel/examples/wsdl"
+ xmlns="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://www.jboss.org/bpel/examples/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:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype">
+
+ <wsdl:message name="GreetingTarget_Message">
+ <wsdl:part name="ToWhom" type="xsd:string"/>
+ </wsdl:message>
+
+ <wsdl:portType name="SecureInvoke_PortType">
+ <wsdl:operation name="sayHelloTo">
+ <wsdl:input message="tns:GreetingTarget_Message" name="TestIn"/>
+ <wsdl:output message="tns:GreetingTarget_Message" name="TestOut"/>
+ </wsdl:operation>
+ </wsdl:portType>
+
+ <wsdl:binding name="SecureInvoke_SoapBinding" type="tns:SecureInvoke_PortType">
+ <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
+ <wsdl:operation name="sayHelloTo">
+ <soap:operation soapAction="" style="rpc"/>
+ <wsdl:input>
+ <soap:body
+ namespace="http://www.jboss.org/bpel/examples/wsdl"
+ use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body
+ namespace="http://www.jboss.org/bpel/examples/wsdl"
+ use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="SecureInvoke_Service">
+ <wsdl:port name="SecureInvoke_Port" binding="tns:SecureInvoke_SoapBinding">
+ <soap:address location="http://localhost:8080/Quickstart_bpel_secure_invokeWS"/>
+ </wsdl:port>
+ </wsdl:service>
+
+ <plnk:partnerLinkType name="myClientCalling_PartnerLinkType">
+ <plnk:role name="me" portType="tns:SecureInvoke_PortType"/>
+ <plnk:role name="you" portType="tns:SecureInvoke_PortType"/>
+ </plnk:partnerLinkType>
+</wsdl:definitions>
+
Added: trunk/samples/quickstart/secure_invoke/bpelContent/bpel-deploy.xml
===================================================================
--- trunk/samples/quickstart/secure_invoke/bpelContent/bpel-deploy.xml (rev 0)
+++ trunk/samples/quickstart/secure_invoke/bpelContent/bpel-deploy.xml 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,32 @@
+<!--
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, Red Hat Middleware LLC, and others contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ -->
+<deploy xmlns="http://www.apache.org/ode/schemas/dd/2007/03"
+ xmlns:bpl="http://www.jboss.org/bpel/examples"
+ xmlns:intf="http://www.jboss.org/bpel/examples/wsdl"
+ xmlns:intf2="http://secure_invoke/helloworld">
+
+ <process name="bpl:SecureInvoke">
+ <active>true</active>
+ <provide partnerLink="theClient_PartnerLink">
+ <service name="intf:SecureInvoke_Service" port="SecureInvoke_Port"/>
+ </provide>
+ <invoke partnerLink="theExternalService_PartnerLink">
+ <service name="intf2:SecureHelloWorldWSService" port="SecureHelloWorldPort"/>
+ </invoke>
+ </process>
+</deploy>
Added: trunk/samples/quickstart/secure_invoke/bpelContent/etc/Client_Encrypt.properties
===================================================================
--- trunk/samples/quickstart/secure_invoke/bpelContent/etc/Client_Encrypt.properties (rev 0)
+++ trunk/samples/quickstart/secure_invoke/bpelContent/etc/Client_Encrypt.properties 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,5 @@
+org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
+org.apache.ws.security.crypto.merlin.keystore.type=jks
+org.apache.ws.security.crypto.merlin.keystore.password=storepassword
+org.apache.ws.security.crypto.merlin.keystore.alias=serverx509v1
+org.apache.ws.security.crypto.merlin.file=keystore/client-truststore.jks
\ No newline at end of file
Added: trunk/samples/quickstart/secure_invoke/bpelContent/etc/Client_Sign.properties
===================================================================
--- trunk/samples/quickstart/secure_invoke/bpelContent/etc/Client_Sign.properties (rev 0)
+++ trunk/samples/quickstart/secure_invoke/bpelContent/etc/Client_Sign.properties 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,6 @@
+org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
+org.apache.ws.security.crypto.merlin.keystore.type=jks
+org.apache.ws.security.crypto.merlin.keystore.password=storepassword
+org.apache.ws.security.crypto.merlin.keystore.alias=clientx509v1
+org.apache.ws.security.crypto.merlin.file=keystore/client-keystore.jks
+
Added: trunk/samples/quickstart/secure_invoke/bpelContent/jbossws-cxf-SecureHelloWorldPort.xml
===================================================================
--- trunk/samples/quickstart/secure_invoke/bpelContent/jbossws-cxf-SecureHelloWorldPort.xml (rev 0)
+++ trunk/samples/quickstart/secure_invoke/bpelContent/jbossws-cxf-SecureHelloWorldPort.xml 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,79 @@
+<?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.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:cxf="http://cxf.apache.org/core"
+ xmlns:wsa="http://cxf.apache.org/ws/addressing"
+ xmlns:http="http://cxf.apache.org/transports/http/configuration"
+ xmlns:wsrm-policy="http://schemas.xmlsoap.org/ws/2005/02/rm/policy"
+ xmlns:wsrm-mgr="http://cxf.apache.org/ws/rm/manager"
+ xmlns:beans='http://www.springframework.org/schema/beans'
+ xmlns:jaxws='http://cxf.apache.org/jaxws'
+ xmlns:ns1='http://secure_invoke/helloworld'
+ xsi:schemaLocation="
+ http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
+ http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd
+ http://schemas.xmlsoap.org/ws/2005/02/rm/policy http://schemas.xmlsoap.org/ws/2005/02/rm/wsrm-policy.xsd
+ http://cxf.apache.org/ws/rm/manager http://cxf.apache.org/schemas/configuration/wsrm-manager.xsd
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+ http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
+
+ <bean id="UsernameTokenSign_Request" class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor"
+ name="{http://secure_invoke/helloworld}SecureHelloWorldPort.Request" >
+ <constructor-arg>
+ <map>
+ <entry key="action" value="UsernameToken Timestamp Signature"/>
+ <entry key="passwordType" value="PasswordDigest"/>
+ <entry key="user" value="clientx509v1"/>
+ <entry key="passwordCallbackClass" value="org.jboss.test.ws.jaxws.samples.wsse.ClientUsernamePasswordCallback"/>
+ <entry key="signaturePropFile" value="etc/Client_Sign.properties"/>
+ <entry key="signatureKeyIdentifier" value="DirectReference"/>
+ <entry key="signatureParts" value="{Element}{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd}Timestamp;{Element}{http://schemas.xmlsoap.org/soap/envelope/}Body"/>
+ </map>
+ </constructor-arg>
+ </bean>
+
+ <bean id="UsernameTokenSign_Response" class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor"
+ name="{http://secure_invoke/helloworld}SecureHelloWorldPort.Response" >
+ <constructor-arg>
+ <map>
+ <entry key="action" value="UsernameToken Timestamp Signature"/>
+ <entry key="passwordType" value="PasswordText"/>
+ <entry key="user" value="serverx509v1"/>
+ <entry key="passwordCallbackClass" value="org.jboss.test.ws.jaxws.samples.wsse.ClientUsernamePasswordCallback"/>
+ <entry key="signaturePropFile" value="etc/Client_Encrypt.properties"/>
+ <entry key="signatureKeyIdentifier" value="DirectReference"/>
+ </map>
+ </constructor-arg>
+ </bean>
+
+
+ <cxf:bus>
+ <cxf:outInterceptors>
+ <ref bean="UsernameTokenSign_Request"/>
+ <bean class="org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor"/>
+ </cxf:outInterceptors>
+ <cxf:inInterceptors>
+ <ref bean="UsernameTokenSign_Response"/>
+ <bean class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor"/>
+ </cxf:inInterceptors>
+ </cxf:bus>
+
+</beans>
Added: trunk/samples/quickstart/secure_invoke/bpelContent/keystore/client-keystore.jks
===================================================================
(Binary files differ)
Property changes on: trunk/samples/quickstart/secure_invoke/bpelContent/keystore/client-keystore.jks
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/samples/quickstart/secure_invoke/bpelContent/keystore/client-truststore.jks
===================================================================
(Binary files differ)
Property changes on: trunk/samples/quickstart/secure_invoke/bpelContent/keystore/client-truststore.jks
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/samples/quickstart/secure_invoke/build.xml
===================================================================
--- trunk/samples/quickstart/secure_invoke/build.xml (rev 0)
+++ trunk/samples/quickstart/secure_invoke/build.xml 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,104 @@
+<project name="Quickstart_bpel_secure_invoke" default="deploy" basedir=".">
+
+ <description>
+ ${ant.project.name}
+ ${line.separator}
+ </description>
+
+ <!-- Import the base Ant build script... -->
+ <property file="../../../install/deployment.properties" />
+
+ <property name="version" value="1" />
+
+ <property name="server.dir" value="${org.jboss.as.home}/server/${org.jboss.as.config}"/>
+ <property name="conf.dir" value="${server.dir}/conf"/>
+ <property name="deploy.dir" value="${server.dir}/deploy"/>
+ <property name="deployers.dir" value="${server.dir}/deployers"/>
+ <property name="server.lib.dir" value="${server.dir}/lib"/>
+
+ <property name="sample.jar.name" value="${ant.project.name}-${version}.jar" />
+
+ <property name="war.build.dir" location="build/war/classes"/>
+
+ <path id="compile-classpath">
+ <fileset dir="${org.jboss.as.home}/client" includes="*.jar" /> <!-- Required for JMS Client Code. -->
+ <fileset dir="${deployers.dir}/jbossws.deployer" includes="*.jar" />
+ </path>
+ <property name="compile-classpath" refid="compile-classpath"/>
+
+ <copy file="war/src/jws_handlers.xml" todir="${war.build.dir}" />
+
+ <target name="makewar" description="make war">
+ <!-- Compile... -->
+ <mkdir dir="${war.build.dir}" />
+ <javac srcdir="war/src" destdir="${war.build.dir}" debug="true">
+ <classpath>
+ <path refid="compile-classpath" />
+ <fileset dir="war/resources/WEB-INF/lib" includes="*.jar" />
+ </classpath>
+ </javac>
+
+ <!-- War... -->
+ <war warfile="build/${ant.project.name}.war"
+ webxml="${basedir}/war/resources/WEB-INF/web.xml">
+ <webinf dir="${basedir}/war/resources/WEB-INF">
+ <include name="jboss-web.xml"/>
+ <include name="jbossws-cxf.xml"/>
+ </webinf>
+<!--
+ <classes dir="${war.build.dir}" includes="**/*.class"/>
+-->
+ <classes dir="${war.build.dir}">
+ <include name="**/*.class" />
+ <include name="**/*.xml" />
+ </classes>
+ <classes dir="${basedir}/war/resources/WEB-INF">
+ <include name="etc/*"/>
+ <include name="keystore/*"/>
+ </classes>
+ <fileset dir="${basedir}/war/view">
+ <include name="**/*"/>
+ </fileset>
+ <classes dir="${basedir}">
+ <include name="juddi.properties"/>
+ </classes>
+ </war>
+ </target>
+
+ <target name="deploywar" depends="makewar" >
+ <copy todir="${deploy.dir}"
+ file="build/${ant.project.name}.war"/>
+ </target>
+
+ <target name="undeploywar">
+ <delete file="${deploy.dir}/${ant.project.name}.war"/>
+ </target>
+
+ <target name="deploy" depends="deploywar" >
+ <echo>Deploy ${ant.project.name}</echo>
+ <jar destfile="${deploy.dir}/${sample.jar.name}" >
+ <fileset dir="bpelContent"/>
+ <fileset dir="${war.build.dir}"/>
+ </jar>
+ </target>
+
+ <target name="undeploy" depends="undeploywar" >
+ <echo>Undeploy ${ant.project.name}</echo>
+ <delete file="${deploy.dir}/${sample.jar.name}" />
+ </target>
+
+ <target name="sendhello">
+ <echo>Send test message to: ${ant.project.name}</echo>
+ <java classname="org.apache.ode.tools.sendsoap.cline.HttpSoapSender">
+ <arg value="http://localhost:8080/Quickstart_bpel_secure_invokeWS"/>
+ <arg value="messages/hello_request1.xml"/>
+ <classpath>
+ <fileset dir="../../common/lib">
+ <include name="**/*.jar"/>
+ </fileset>
+ <pathelement path="${java.class.path}"/>
+ </classpath>
+ </java>
+ </target>
+
+</project>
Added: trunk/samples/quickstart/secure_invoke/messages/hello_request1.xml
===================================================================
--- trunk/samples/quickstart/secure_invoke/messages/hello_request1.xml (rev 0)
+++ trunk/samples/quickstart/secure_invoke/messages/hello_request1.xml 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,8 @@
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsdl="http://www.jboss.org/bpel/examples/wsdl">
+ <soapenv:Header/>
+ <soapenv:Body>
+ <wsdl:sayHelloTo>
+ <ToWhom>ME</ToWhom>
+ </wsdl:sayHelloTo>
+ </soapenv:Body>
+</soapenv:Envelope>
Added: trunk/samples/quickstart/secure_invoke/readme.txt
===================================================================
--- trunk/samples/quickstart/secure_invoke/readme.txt (rev 0)
+++ trunk/samples/quickstart/secure_invoke/readme.txt 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,31 @@
+Quickstart Examples - Simple Invoke
+===================================
+
+This is a simple echo example, used to respond to a sent message with a
+modified version of the request message being returned in a response. The
+difference with this example, compared to the Hello World sample, is
+that the invoked service calls another JAX-WS based service to construct
+the response message. The BPEL process in this example, is primarily
+acting as a relay between the client and the invoked JAX-WS service, although
+the BPEL process also appends some text to the response message aswell.
+
+To deploy the example, open a command line window in the example's folder,
+and simply type 'ant deploy'. To undeploy, use the command 'ant undeploy'.
+
+To test the example, for example using the SOAPUI client, an example message
+can be found in the messages sub-folder, with the relevant WSDL being
+located in the bpel sub-folder.
+
+Alternatively, use the 'ant sendhello' command (from a command line window)
+to send the example message directly to the deployed process.
+
+NOTE: The "ant deploy" command will by default deploy version 1 of the
+example to the server. If you wish to change the example, and redeploy,
+then you will need to update the version number in the build.xml, or
+override the version property, e.g. "ant -Dversion=2 deploy" (and similarly
+when undeploying "ant -Dversion=2 undeploy").
+
+Some handy URLs:
+http://localhost:8080/bpel-console is the BPEL console
+http://localhost:8080/Quickstart_bpel_simple_invokeWS?wsdl is the URL to the BPEL process' WSDL
+http://localhost:8080/Quickstart_bpel_simple_invoke/HelloWorldWS?wsdl is the JBossWS endpoint's WSDL
Added: trunk/samples/quickstart/secure_invoke/war/resources/WEB-INF/etc/Server_Decrypt.properties
===================================================================
--- trunk/samples/quickstart/secure_invoke/war/resources/WEB-INF/etc/Server_Decrypt.properties (rev 0)
+++ trunk/samples/quickstart/secure_invoke/war/resources/WEB-INF/etc/Server_Decrypt.properties 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,5 @@
+org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
+org.apache.ws.security.crypto.merlin.keystore.type=jks
+org.apache.ws.security.crypto.merlin.keystore.password=storepassword
+org.apache.ws.security.crypto.merlin.keystore.alias=serverx509v1
+org.apache.ws.security.crypto.merlin.file=keystore/server-keystore.jks
Added: trunk/samples/quickstart/secure_invoke/war/resources/WEB-INF/etc/Server_SignVerf.properties
===================================================================
--- trunk/samples/quickstart/secure_invoke/war/resources/WEB-INF/etc/Server_SignVerf.properties (rev 0)
+++ trunk/samples/quickstart/secure_invoke/war/resources/WEB-INF/etc/Server_SignVerf.properties 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,5 @@
+org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
+org.apache.ws.security.crypto.merlin.keystore.type=jks
+org.apache.ws.security.crypto.merlin.keystore.password=storepassword
+org.apache.ws.security.crypto.merlin.keystore.alias=clientx509v1
+org.apache.ws.security.crypto.merlin.file=keystore/server-truststore.jks
Added: trunk/samples/quickstart/secure_invoke/war/resources/WEB-INF/jbossws-cxf.xml
===================================================================
--- trunk/samples/quickstart/secure_invoke/war/resources/WEB-INF/jbossws-cxf.xml (rev 0)
+++ trunk/samples/quickstart/secure_invoke/war/resources/WEB-INF/jbossws-cxf.xml 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,55 @@
+<beans
+ xmlns='http://www.springframework.org/schema/beans'
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
+ xmlns:beans='http://www.springframework.org/schema/beans'
+ xmlns:jaxws='http://cxf.apache.org/jaxws'
+ xsi:schemaLocation='http://cxf.apache.org/core
+ http://cxf.apache.org/schemas/core.xsd
+ http://www.springframework.org/schema/beans
+ http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+ http://cxf.apache.org/jaxws
+ http://cxf.apache.org/schemas/jaxws.xsd'>
+
+ <bean id="UsernameTokenSign_Request" class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
+ <constructor-arg>
+ <map>
+ <entry key="action" value="UsernameToken Timestamp Signature"/>
+ <entry key="passwordType" value="PasswordDigest"/>
+ <entry key="user" value="serverx509v1"/>
+ <entry key="passwordCallbackClass" value="org.jboss.test.ws.jaxws.samples.wsse.ServerUsernamePasswordCallback"/>
+ <entry key="signaturePropFile" value="etc/Server_SignVerf.properties"/>
+ <entry key="signatureKeyIdentifier" value="DirectReference"/>
+ </map>
+ </constructor-arg>
+ </bean>
+
+ <bean id="UsernameTokenSign_Response" class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor">
+ <constructor-arg>
+ <map>
+ <entry key="action" value="UsernameToken Timestamp Signature"/>
+ <entry key="passwordType" value="PasswordText"/>
+ <entry key="user" value="serverx509v1"/>
+ <entry key="passwordCallbackClass" value="org.jboss.test.ws.jaxws.samples.wsse.ServerUsernamePasswordCallback"/>
+ <entry key="signaturePropFile" value="etc/Server_Decrypt.properties"/>
+ <entry key="signatureKeyIdentifier" value="DirectReference"/>
+ <entry key="signatureParts" value="{Element}{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd}Timestamp;{Element}{http://schemas.xmlsoap.org/soap/envelope/}Body"/>
+ </map>
+ </constructor-arg>
+ </bean>
+
+ <jaxws:endpoint
+ id='SecureHelloWorldWS'
+ address='http://@jboss.bind.address@:8080/Quickstart_bpel_secure_invoke/SecureHelloWorldWS'
+ implementor='org.jboss.soa.bpel.samples.quickstart.secure_invoke.SecureHelloWorldWS'>
+ <jaxws:inInterceptors>
+ <ref bean="UsernameTokenSign_Request"/>
+ <bean class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor"/>
+ </jaxws:inInterceptors>
+ <jaxws:outInterceptors>
+ <ref bean="UsernameTokenSign_Response"/>
+ <bean class="org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor"/>
+ </jaxws:outInterceptors>
+ </jaxws:endpoint>
+
+
+</beans>
Added: trunk/samples/quickstart/secure_invoke/war/resources/WEB-INF/keystore/server-keystore.jks
===================================================================
(Binary files differ)
Property changes on: trunk/samples/quickstart/secure_invoke/war/resources/WEB-INF/keystore/server-keystore.jks
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/samples/quickstart/secure_invoke/war/resources/WEB-INF/keystore/server-truststore.jks
===================================================================
(Binary files differ)
Property changes on: trunk/samples/quickstart/secure_invoke/war/resources/WEB-INF/keystore/server-truststore.jks
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/samples/quickstart/secure_invoke/war/resources/WEB-INF/web.xml
===================================================================
--- trunk/samples/quickstart/secure_invoke/war/resources/WEB-INF/web.xml (rev 0)
+++ trunk/samples/quickstart/secure_invoke/war/resources/WEB-INF/web.xml 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
+ version="2.4">
+
+ <servlet>
+ <servlet-name>SecureHelloWorldWS</servlet-name>
+ <servlet-class>org.jboss.soa.bpel.samples.quickstart.secure_invoke.SecureHelloWorldWS</servlet-class>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>SecureHelloWorldWS</servlet-name>
+ <url-pattern>/SecureHelloWorldWS</url-pattern>
+ </servlet-mapping>
+
+</web-app>
Added: trunk/samples/quickstart/secure_invoke/war/src/jws_handlers.xml
===================================================================
--- trunk/samples/quickstart/secure_invoke/war/src/jws_handlers.xml (rev 0)
+++ trunk/samples/quickstart/secure_invoke/war/src/jws_handlers.xml 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,33 @@
+<?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.
+-->
+<handler-chains xmlns="http://java.sun.com/xml/ns/javaee"
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:schemaLocation="http://java.sun.com/xml/ns/javaee">
+ <handler-chain>
+ <handler>
+ <handler-name>JAXWSHandler</handler-name>
+ <handler-class>org.jboss.soa.bpel.examples.jaxws.JAXWSHandler</handler-class>
+ <init-param>
+ <param-name>TestParam</param-name>
+ <param-value>TestValue</param-value>
+ </init-param>
+ </handler>
+ </handler-chain>
+</handler-chains>
Added: trunk/samples/quickstart/secure_invoke/war/src/org/jboss/soa/bpel/examples/jaxws/JAXWSHandler.java
===================================================================
--- trunk/samples/quickstart/secure_invoke/war/src/org/jboss/soa/bpel/examples/jaxws/JAXWSHandler.java (rev 0)
+++ trunk/samples/quickstart/secure_invoke/war/src/org/jboss/soa/bpel/examples/jaxws/JAXWSHandler.java 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,101 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, Red Hat Middleware LLC, and others contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ */
+package org.jboss.soa.bpel.examples.jaxws;
+
+import java.io.PrintStream;
+import java.util.Map;
+import java.util.Set;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.SOAPMessage;
+import javax.xml.ws.handler.MessageContext;
+import javax.xml.ws.handler.soap.SOAPHandler;
+import javax.xml.ws.handler.soap.SOAPMessageContext;
+
+/**
+ * This class provides an example jaxws handler that can be deployed with
+ * a BPEL process, to provide visibility of messages inbound and outbound
+ * from the web service interface.
+ *
+ * @author gbrown
+ *
+ */
+public class JAXWSHandler implements SOAPHandler<SOAPMessageContext> {
+
+ private PrintStream out;
+
+ public JAXWSHandler() {
+ setLogStream(System.out);
+ }
+
+ protected final void setLogStream(PrintStream ps) {
+ out = ps;
+ }
+
+ public void init(Map c) {
+ System.out.println("JAXWSHandler : init() Called....:"+c);
+ }
+
+ public Set<QName> getHeaders() {
+ return null;
+ }
+
+ public boolean handleMessage(SOAPMessageContext smc) {
+ System.out.println("JAXWSHandler : handleMessage Called....");
+ logToSystemOut(smc);
+ return true;
+ }
+
+ public boolean handleFault(SOAPMessageContext smc) {
+ System.out.println("JAXWSHandler : handleFault Called....");
+ logToSystemOut(smc);
+ return true;
+ }
+
+ public void close(MessageContext messageContext) {
+ System.out.println("JAXWSHandler : close() Called....");
+ }
+
+ public void destroy() {
+ System.out.println("JAXWSHandler : destroy() Called....");
+ }
+
+ protected void logToSystemOut(SOAPMessageContext smc) {
+ Boolean outboundProperty = (Boolean)
+ smc.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
+
+ if (outboundProperty.booleanValue()) {
+ out.println("\nOutbound message:");
+ } else {
+ out.println("\nInbound message:");
+ }
+
+ SOAPMessage message = smc.getMessage();
+ try {
+ message.writeTo(out);
+ out.println();
+ } catch (Exception e) {
+ out.println("Exception in handler: " + e);
+ }
+
+ out.println("WSDL_SERVICE = "+smc.get(MessageContext.WSDL_SERVICE));
+ out.println("WSDL_INTERFACE = "+smc.get(MessageContext.WSDL_INTERFACE));
+ out.println("WSDL_PORT = "+smc.get(MessageContext.WSDL_PORT));
+ out.println("WSDL_OPERATION = "+smc.get(MessageContext.WSDL_OPERATION));
+ }
+}
Added: trunk/samples/quickstart/secure_invoke/war/src/org/jboss/soa/bpel/samples/quickstart/secure_invoke/SecureHelloWorldWS.java
===================================================================
--- trunk/samples/quickstart/secure_invoke/war/src/org/jboss/soa/bpel/samples/quickstart/secure_invoke/SecureHelloWorldWS.java (rev 0)
+++ trunk/samples/quickstart/secure_invoke/war/src/org/jboss/soa/bpel/samples/quickstart/secure_invoke/SecureHelloWorldWS.java 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,58 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and others contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ *
+ * (C) 2005-2006,
+ * @author JBoss Inc.
+ */
+
+package org.jboss.soa.bpel.samples.quickstart.secure_invoke;
+
+import javax.jws.WebMethod;
+import javax.jws.WebService;
+import javax.jws.soap.SOAPBinding;
+import javax.jws.WebParam;
+import javax.jws.*;
+
+@WebService(name = "SecureHelloWorld", targetNamespace = "http://secure_invoke/helloworld")
+@HandlerChain(file="/jws_handlers.xml")
+public class SecureHelloWorldWS
+{
+ @WebMethod
+ public String sayHello(@WebParam(name = "toWhom")
+ String toWhom)
+ {
+ System.out.println("\n");
+ System.out.println("*************************************************");
+ System.out.println("toWhom Parameter: " + toWhom );
+ System.out.println("*************************************************");
+ System.out.println("\n");
+ String greeting = "Secure Hello " + toWhom + ". Sincerely, JBossWS";
+ return greeting;
+
+ }
+
+ @WebMethod
+ public String sayGoodbye(@WebParam(name = "toWhom")
+ String toWhom)
+ {
+
+ String greeting = "Secure Goodbye Cruel World, sincerely '" + toWhom + "' at " + new java.util.Date();
+
+ return greeting;
+
+ }
+}
Added: trunk/samples/quickstart/secure_invoke/war/src/org/jboss/test/ws/jaxws/samples/wsse/ClientUsernamePasswordCallback.java
===================================================================
--- trunk/samples/quickstart/secure_invoke/war/src/org/jboss/test/ws/jaxws/samples/wsse/ClientUsernamePasswordCallback.java (rev 0)
+++ trunk/samples/quickstart/secure_invoke/war/src/org/jboss/test/ws/jaxws/samples/wsse/ClientUsernamePasswordCallback.java 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,75 @@
+/**
+ * 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.jboss.test.ws.jaxws.samples.wsse;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.UnsupportedCallbackException;
+
+import org.apache.ws.security.WSPasswordCallback;
+
+/**
+ */
+
+public class ClientUsernamePasswordCallback implements CallbackHandler {
+
+ private Map<String, String> passwords =
+ new HashMap<String, String>();
+
+ public ClientUsernamePasswordCallback() {
+ passwords.put("Alice", "ecilA");
+ passwords.put("abcd", "dcba");
+ passwords.put("clientx509v1", "storepassword");
+ passwords.put("serverx509v1", "storepassword");
+ }
+
+ /**
+ * Here, we attempt to get the password from the private
+ * alias/passwords map.
+ */
+ public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
+ for (int i = 0; i < callbacks.length; i++) {
+ WSPasswordCallback pc = (WSPasswordCallback)callbacks[i];
+
+ System.out.println("**************** Client checking id: "+pc.getIdentifer());
+
+ String pass = passwords.get(pc.getIdentifier());
+ if (pass != null) {
+ pc.setPassword(pass);
+ return;
+ }
+ }
+
+ //
+ // Password not found
+ //
+ throw new IOException();
+ }
+
+ /**
+ * Add an alias/password pair to the callback mechanism.
+ */
+ public void setAliasPassword(String alias, String password) {
+ passwords.put(alias, password);
+ }
+}
Added: trunk/samples/quickstart/secure_invoke/war/src/org/jboss/test/ws/jaxws/samples/wsse/ServerUsernamePasswordCallback.java
===================================================================
--- trunk/samples/quickstart/secure_invoke/war/src/org/jboss/test/ws/jaxws/samples/wsse/ServerUsernamePasswordCallback.java (rev 0)
+++ trunk/samples/quickstart/secure_invoke/war/src/org/jboss/test/ws/jaxws/samples/wsse/ServerUsernamePasswordCallback.java 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,73 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.ws.jaxws.samples.wsse;
+
+import java.io.IOException;
+import java.util.*;
+
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.UnsupportedCallbackException;
+import org.apache.ws.security.WSPasswordCallback;
+
+public class ServerUsernamePasswordCallback implements CallbackHandler
+{
+ private Map<String, String> passwords =
+ new HashMap<String, String>();
+
+ public ServerUsernamePasswordCallback() {
+ passwords.put("Alice", "ecilA");
+ passwords.put("abcd", "dcba");
+ passwords.put("clientx509v1", "storepassword");
+ passwords.put("serverx509v1", "storepassword");
+ }
+
+ /**
+ * Here, we attempt to get the password from the private
+ * alias/passwords map.
+ */
+ public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
+ for (int i = 0; i < callbacks.length; i++) {
+ WSPasswordCallback pc = (WSPasswordCallback)callbacks[i];
+
+ System.out.println("**************** Server checking id: "+pc.getIdentifer());
+
+ String pass = passwords.get(pc.getIdentifier());
+ if (pass != null) {
+ pc.setPassword(pass);
+ return;
+ }
+ }
+
+ //
+ // Password not found
+ //
+ throw new IOException();
+ }
+
+ /**
+ * Add an alias/password pair to the callback mechanism.
+ */
+ public void setAliasPassword(String alias, String password) {
+ passwords.put(alias, password);
+ }
+}
Added: trunk/samples/quickstart/secure_invoke/war/view/index.jsp
===================================================================
--- trunk/samples/quickstart/secure_invoke/war/view/index.jsp (rev 0)
+++ trunk/samples/quickstart/secure_invoke/war/view/index.jsp 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,9 @@
+<html>
+ <body>
+ This is just a place holder.<br>
+ Verify the that the WS has been deployed by hitting
+ <a href="http://localhost:8080/jbossws">
+ http://localhost:8080/jbossws
+ </a>
+ </body>
+</html>
\ No newline at end of file
Added: trunk/samples/quickstart/secure_service/.project
===================================================================
--- trunk/samples/quickstart/secure_service/.project (rev 0)
+++ trunk/samples/quickstart/secure_service/.project 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>Quickstart_bpel_hello_world</name>
+ <comment></comment>
+ <projects>
+ <project>Quickstart_bpel_hello_world</project>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.wst.common.project.facet.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.wst.validation.validationbuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.bpel.validator.builder</name>
+ <arguments>
+ <dictionary>
+ <key>debug</key>
+ <value>false</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
+ <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
+ <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
+ </natures>
+</projectDescription>
Added: trunk/samples/quickstart/secure_service/.settings/org.eclipse.wst.common.component
===================================================================
--- trunk/samples/quickstart/secure_service/.settings/org.eclipse.wst.common.component (rev 0)
+++ trunk/samples/quickstart/secure_service/.settings/org.eclipse.wst.common.component 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-modules id="moduleCoreId" project-version="1.5.0">
+ <wb-module deploy-name="Quickstart_bpel_hello_world">
+ <wb-resource deploy-path="/" source-path="/bpelContent"/>
+ <dependent-module deploy-path="/" handle="module:/org.jboss.ide.eclipse.as.wtp.core.vcf.outputFolders/">
+ <dependency-type>consumes</dependency-type>
+ </dependent-module>
+ </wb-module>
+</project-modules>
Added: trunk/samples/quickstart/secure_service/.settings/org.eclipse.wst.common.project.facet.core.xml
===================================================================
--- trunk/samples/quickstart/secure_service/.settings/org.eclipse.wst.common.project.facet.core.xml (rev 0)
+++ trunk/samples/quickstart/secure_service/.settings/org.eclipse.wst.common.project.facet.core.xml 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<faceted-project>
+ <fixed facet="jbt.bpel.facet.core"/>
+ <installed facet="jbt.bpel.facet.core" version="2.0"/>
+</faceted-project>
Added: trunk/samples/quickstart/secure_service/bpelContent/HelloWorld.bpel
===================================================================
--- trunk/samples/quickstart/secure_service/bpelContent/HelloWorld.bpel (rev 0)
+++ trunk/samples/quickstart/secure_service/bpelContent/HelloWorld.bpel 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,69 @@
+<!--
+ ~ 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="SecureHelloWorld"
+ targetNamespace="http://www.jboss.org/bpel/examples"
+ xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
+ xmlns:tns="http://www.jboss.org/bpel/examples"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:intf="http://www.jboss.org/bpel/examples/wsdl"
+ queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"
+ expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0" xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable">
+
+ <import location="HelloWorld.wsdl"
+ namespace="http://www.jboss.org/bpel/examples/wsdl"
+ importType="http://schemas.xmlsoap.org/wsdl/" />
+
+ <partnerLinks>
+ <partnerLink name="helloPartnerLink"
+ partnerLinkType="intf:SecureHelloPartnerLinkType"
+ myRole="me" />
+ </partnerLinks>
+
+ <variables>
+ <variable name="reqVar" messageType="intf:HelloMessage"/>
+ <variable name="respVar" messageType="intf:HelloMessage"/>
+ <variable name="mesgVar" type="xsd:string"/>
+ </variables>
+
+ <sequence>
+ <receive
+ name="start"
+ partnerLink="helloPartnerLink"
+ portType="intf:SecureHelloPortType"
+ operation="hello"
+ variable="reqVar"
+ createInstance="yes"/>
+
+ <assign name="assignHelloMesg">
+ <copy>
+ <from variable="reqVar" part="TestPart"/>
+ <to variable="mesgVar"/>
+ </copy>
+ <copy>
+ <from>concat($mesgVar,' World')</from>
+ <to variable="respVar" part="TestPart"/>
+ </copy>
+ </assign>
+ <reply name="end"
+ partnerLink="helloPartnerLink"
+ portType="intf:SecureHelloPortType"
+ operation="hello"
+ variable="respVar"/>
+ </sequence>
+</process>
Added: trunk/samples/quickstart/secure_service/bpelContent/HelloWorld.bpelex
===================================================================
--- trunk/samples/quickstart/secure_service/bpelContent/HelloWorld.bpelex (rev 0)
+++ trunk/samples/quickstart/secure_service/bpelContent/HelloWorld.bpelex 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="ASCII"?>
+<extensionmodel:ExtensionMap xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:extensionmodel="http:///extensionmodel.ecore" xmlns:org.eclipse.bpel.ui.uiextensionmodel="http:///org/eclipse/bpel/ui/uiextensionmodel.ecore" namespace="http://org.eclipse.bpel.ui/">
+ <extensions>
+ <extendedObject href="HelloWorld.bpel#//@variables/(a)children.0"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:VariableExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="HelloWorld.bpel#//@variables/(a)children.2"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:VariableExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="HelloWorld.bpel#//@activity"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:ActivityExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="HelloWorld.bpel#//@activity/(a)activities.0"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:ActivityExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="HelloWorld.bpel#//@activity/(a)activities.1"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:ActivityExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="HelloWorld.bpel#//@activity/@activities.1/(a)copy.0"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:CopyExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="HelloWorld.bpel#//@activity/@activities.1/(a)copy.1"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:CopyExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="HelloWorld.bpel#//@activity/(a)activities.2"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:ActivityExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="HelloWorld.bpel#/"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:ProcessExtension" modificationStamp="1274978025000"/>
+ </extensions>
+</extensionmodel:ExtensionMap>
Added: trunk/samples/quickstart/secure_service/bpelContent/HelloWorld.wsdl
===================================================================
--- trunk/samples/quickstart/secure_service/bpelContent/HelloWorld.wsdl (rev 0)
+++ trunk/samples/quickstart/secure_service/bpelContent/HelloWorld.wsdl 2010-05-28 11:08:19 UTC (rev 679)
@@ -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.
+ -->
+<wsdl:definitions
+ targetNamespace="http://www.jboss.org/bpel/examples/wsdl"
+ xmlns="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://www.jboss.org/bpel/examples/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:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype">
+
+ <wsdl:message name="HelloMessage">
+ <wsdl:part name="TestPart" type="xsd:string"/>
+ </wsdl:message>
+
+ <wsdl:portType name="SecureHelloPortType">
+ <wsdl:operation name="hello">
+ <wsdl:input message="tns:HelloMessage" name="TestIn"/>
+ <wsdl:output message="tns:HelloMessage" name="TestOut"/>
+ </wsdl:operation>
+ </wsdl:portType>
+
+ <wsdl:binding name="SecureHelloSoapBinding" type="tns:SecureHelloPortType">
+ <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
+ <wsdl:operation name="hello">
+ <soap:operation soapAction="" style="rpc"/>
+ <wsdl:input>
+ <soap:body
+ namespace="http://www.jboss.org/bpel/examples/wsdl"
+ use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body
+ namespace="http://www.jboss.org/bpel/examples/wsdl"
+ use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="SecureHelloService">
+ <wsdl:port name="SecureHelloPort" binding="tns:SecureHelloSoapBinding">
+ <soap:address location="http://localhost:8080/Quickstart_bpel_secure_serviceWS"/>
+ </wsdl:port>
+ </wsdl:service>
+
+ <plnk:partnerLinkType name="SecureHelloPartnerLinkType">
+ <plnk:role name="me" portType="tns:SecureHelloPortType"/>
+ <plnk:role name="you" portType="tns:SecureHelloPortType"/>
+ </plnk:partnerLinkType>
+</wsdl:definitions>
+
Added: trunk/samples/quickstart/secure_service/bpelContent/bpel-deploy.xml
===================================================================
--- trunk/samples/quickstart/secure_service/bpelContent/bpel-deploy.xml (rev 0)
+++ trunk/samples/quickstart/secure_service/bpelContent/bpel-deploy.xml 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,30 @@
+<!--
+ ~ 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:bpl="http://www.jboss.org/bpel/examples"
+ xmlns:intf="http://www.jboss.org/bpel/examples/wsdl">
+
+
+ <process name="bpl:SecureHelloWorld">
+ <active>true</active>
+ <provide partnerLink="helloPartnerLink">
+ <service name="intf:SecureHelloService" port="SecureHelloPort"/>
+ </provide>
+ </process>
+</deploy>
Added: trunk/samples/quickstart/secure_service/bpelContent/etc/Server_Decrypt.properties
===================================================================
--- trunk/samples/quickstart/secure_service/bpelContent/etc/Server_Decrypt.properties (rev 0)
+++ trunk/samples/quickstart/secure_service/bpelContent/etc/Server_Decrypt.properties 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,5 @@
+org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
+org.apache.ws.security.crypto.merlin.keystore.type=jks
+org.apache.ws.security.crypto.merlin.keystore.password=storepassword
+org.apache.ws.security.crypto.merlin.keystore.alias=serverx509v1
+org.apache.ws.security.crypto.merlin.file=keystore/server-keystore.jks
\ No newline at end of file
Added: trunk/samples/quickstart/secure_service/bpelContent/etc/Server_SignVerf.properties
===================================================================
--- trunk/samples/quickstart/secure_service/bpelContent/etc/Server_SignVerf.properties (rev 0)
+++ trunk/samples/quickstart/secure_service/bpelContent/etc/Server_SignVerf.properties 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,5 @@
+org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
+org.apache.ws.security.crypto.merlin.keystore.type=jks
+org.apache.ws.security.crypto.merlin.keystore.password=storepassword
+org.apache.ws.security.crypto.merlin.keystore.alias=clientx509v1
+org.apache.ws.security.crypto.merlin.file=keystore/server-truststore.jks
Added: trunk/samples/quickstart/secure_service/bpelContent/jbossws-cxf.xml
===================================================================
--- trunk/samples/quickstart/secure_service/bpelContent/jbossws-cxf.xml (rev 0)
+++ trunk/samples/quickstart/secure_service/bpelContent/jbossws-cxf.xml 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,55 @@
+<beans
+ xmlns='http://www.springframework.org/schema/beans'
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
+ xmlns:beans='http://www.springframework.org/schema/beans'
+ xmlns:jaxws='http://cxf.apache.org/jaxws'
+ xsi:schemaLocation='http://cxf.apache.org/core
+ http://cxf.apache.org/schemas/core.xsd
+ http://www.springframework.org/schema/beans
+ http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+ http://cxf.apache.org/jaxws
+ http://cxf.apache.org/schemas/jaxws.xsd'>
+
+ <bean id="UsernameTokenSign_Request" class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
+ <constructor-arg>
+ <map>
+ <entry key="action" value="UsernameToken Timestamp Signature"/>
+ <entry key="passwordType" value="PasswordDigest"/>
+ <entry key="user" value="serverx509v1"/>
+ <entry key="passwordCallbackClass" value="org.jboss.test.ws.jaxws.samples.wsse.ServerUsernamePasswordCallback"/>
+ <entry key="signaturePropFile" value="etc/Server_SignVerf.properties"/>
+ <entry key="signatureKeyIdentifier" value="DirectReference"/>
+ </map>
+ </constructor-arg>
+ </bean>
+
+ <bean id="UsernameTokenSign_Response" class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor">
+ <constructor-arg>
+ <map>
+ <entry key="action" value="UsernameToken Timestamp Signature"/>
+ <entry key="passwordType" value="PasswordText"/>
+ <entry key="user" value="serverx509v1"/>
+ <entry key="passwordCallbackClass" value="org.jboss.test.ws.jaxws.samples.wsse.ServerUsernamePasswordCallback"/>
+ <entry key="signaturePropFile" value="etc/Server_Decrypt.properties"/>
+ <entry key="signatureKeyIdentifier" value="DirectReference"/>
+ <entry key="signatureParts" value="{Element}{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd}Timestamp;{Element}{http://schemas.xmlsoap.org/soap/envelope/}Body"/>
+ </map>
+ </constructor-arg>
+ </bean>
+
+ <jaxws:endpoint
+ id='SecureHelloWorldWS'
+ address='http://@jboss.bind.address@:8080/Quickstart_bpel_secure_serviceWS'
+ implementor='@provider@'>
+ <jaxws:inInterceptors>
+ <ref bean="UsernameTokenSign_Request"/>
+ <bean class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor"/>
+ </jaxws:inInterceptors>
+ <jaxws:outInterceptors>
+ <ref bean="UsernameTokenSign_Response"/>
+ <bean class="org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor"/>
+ </jaxws:outInterceptors>
+ </jaxws:endpoint>
+
+
+</beans>
Added: trunk/samples/quickstart/secure_service/bpelContent/jws_handlers.xml
===================================================================
--- trunk/samples/quickstart/secure_service/bpelContent/jws_handlers.xml (rev 0)
+++ trunk/samples/quickstart/secure_service/bpelContent/jws_handlers.xml 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,33 @@
+<?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.
+-->
+<handler-chains xmlns="http://java.sun.com/xml/ns/javaee"
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:schemaLocation="http://java.sun.com/xml/ns/javaee">
+ <handler-chain>
+ <handler>
+ <handler-name>JAXWSHandler</handler-name>
+ <handler-class>org.jboss.soa.bpel.examples.jaxws.JAXWSHandler</handler-class>
+ <init-param>
+ <param-name>TestParam</param-name>
+ <param-value>TestValue</param-value>
+ </init-param>
+ </handler>
+ </handler-chain>
+</handler-chains>
Added: trunk/samples/quickstart/secure_service/bpelContent/keystore/server-keystore.jks
===================================================================
(Binary files differ)
Property changes on: trunk/samples/quickstart/secure_service/bpelContent/keystore/server-keystore.jks
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/samples/quickstart/secure_service/bpelContent/keystore/server-truststore.jks
===================================================================
(Binary files differ)
Property changes on: trunk/samples/quickstart/secure_service/bpelContent/keystore/server-truststore.jks
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/samples/quickstart/secure_service/build.xml
===================================================================
--- trunk/samples/quickstart/secure_service/build.xml (rev 0)
+++ trunk/samples/quickstart/secure_service/build.xml 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,77 @@
+<project name="Quickstart_bpel_secure_service" default="deploy" basedir=".">
+
+ <description>
+ ${ant.project.name}
+ ${line.separator}
+ </description>
+
+ <!-- Import the base Ant build script... -->
+ <property file="../../../install/deployment.properties" />
+
+ <property name="version" value="1" />
+
+ <property name="server.dir" value="${org.jboss.as.home}/server/${org.jboss.as.config}"/>
+ <property name="conf.dir" value="${server.dir}/conf"/>
+ <property name="deploy.dir" value="${server.dir}/deploy"/>
+ <property name="deployers.dir" value="${server.dir}/deployers"/>
+ <property name="server.lib.dir" value="${server.dir}/lib"/>
+
+ <property name="sample.jar.name" value="${ant.project.name}-${version}.jar" />
+
+ <property name="server.build.dir" location="build/server"/>
+ <property name="client.build.dir" location="build/client"/>
+
+ <path id="compile-classpath">
+ <fileset dir="${org.jboss.as.home}/client" includes="*.jar" />
+ <fileset dir="${deployers.dir}/jbossws.deployer" includes="*.jar" />
+ </path>
+ <property name="compile-classpath" refid="compile-classpath"/>
+
+ <target name="compileserver" description="build server code">
+ <!-- Compile... -->
+ <mkdir dir="${server.build.dir}" />
+ <javac srcdir="server/src" destdir="${server.build.dir}" debug="true">
+ <classpath>
+ <path refid="compile-classpath" />
+ </classpath>
+ </javac>
+ </target>
+
+ <target name="deploy" depends="compileserver" >
+ <echo>Deploy ${ant.project.name}</echo>
+ <jar destfile="${deploy.dir}/${sample.jar.name}" >
+ <fileset dir="bpelContent"/>
+ <fileset dir="${server.build.dir}"/>
+ </jar>
+ </target>
+
+ <target name="undeploy">
+ <echo>Undeploy ${ant.project.name}</echo>
+ <delete file="${deploy.dir}/${sample.jar.name}" />
+ </target>
+
+ <target name="makeclient" description="make client">
+ <!-- Compile... -->
+ <mkdir dir="${client.build.dir}" />
+ <javac srcdir="client/src" destdir="${client.build.dir}" debug="true">
+ <classpath>
+ <path refid="compile-classpath" />
+ </classpath>
+ </javac>
+ </target>
+
+ <target name="sendhello" description="run jaxws static client" depends="makeclient" >
+ <java classname="org.jboss.soa.bpel.examples.jaxws.JAXWSDispatcherClient" fork="yes" >
+ <arg value="${basedir}/bpelContent/HelloWorld.wsdl"/>
+ <!-- arg value="http://localhost:8080/Quickstart_bpel_secure_serviceWS"/ -->
+ <arg value="messages/hello_request1.xml"/>
+ <classpath>
+ <pathelement location="${client.build.dir}"/>
+ <path refid="compile-classpath" />
+ <pathelement location="${basedir}/client/resources"/>
+ <fileset dir="${org.jboss.as.home}/lib/endorsed" includes="*.jar" />
+ </classpath>
+ </java>
+ </target>
+
+</project>
Added: trunk/samples/quickstart/secure_service/client/resources/etc/Client_Encrypt.properties
===================================================================
--- trunk/samples/quickstart/secure_service/client/resources/etc/Client_Encrypt.properties (rev 0)
+++ trunk/samples/quickstart/secure_service/client/resources/etc/Client_Encrypt.properties 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,5 @@
+org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
+org.apache.ws.security.crypto.merlin.keystore.type=jks
+org.apache.ws.security.crypto.merlin.keystore.password=storepassword
+org.apache.ws.security.crypto.merlin.keystore.alias=serverx509v1
+org.apache.ws.security.crypto.merlin.file=keystore/client-truststore.jks
\ No newline at end of file
Added: trunk/samples/quickstart/secure_service/client/resources/etc/Client_Sign.properties
===================================================================
--- trunk/samples/quickstart/secure_service/client/resources/etc/Client_Sign.properties (rev 0)
+++ trunk/samples/quickstart/secure_service/client/resources/etc/Client_Sign.properties 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,6 @@
+org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
+org.apache.ws.security.crypto.merlin.keystore.type=jks
+org.apache.ws.security.crypto.merlin.keystore.password=storepassword
+org.apache.ws.security.crypto.merlin.keystore.alias=clientx509v1
+org.apache.ws.security.crypto.merlin.file=keystore/client-keystore.jks
+
Added: trunk/samples/quickstart/secure_service/client/resources/keystore/client-keystore.jks
===================================================================
(Binary files differ)
Property changes on: trunk/samples/quickstart/secure_service/client/resources/keystore/client-keystore.jks
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/samples/quickstart/secure_service/client/resources/keystore/client-truststore.jks
===================================================================
(Binary files differ)
Property changes on: trunk/samples/quickstart/secure_service/client/resources/keystore/client-truststore.jks
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/samples/quickstart/secure_service/client/resources/wssec.xml
===================================================================
--- trunk/samples/quickstart/secure_service/client/resources/wssec.xml (rev 0)
+++ trunk/samples/quickstart/secure_service/client/resources/wssec.xml 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,79 @@
+<?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.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:cxf="http://cxf.apache.org/core"
+ xmlns:wsa="http://cxf.apache.org/ws/addressing"
+ xmlns:http="http://cxf.apache.org/transports/http/configuration"
+ xmlns:wsrm-policy="http://schemas.xmlsoap.org/ws/2005/02/rm/policy"
+ xmlns:wsrm-mgr="http://cxf.apache.org/ws/rm/manager"
+ xmlns:beans='http://www.springframework.org/schema/beans'
+ xmlns:jaxws='http://cxf.apache.org/jaxws'
+ xmlns:ns1='http://secure_invoke/helloworld'
+ xsi:schemaLocation="
+ http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
+ http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd
+ http://schemas.xmlsoap.org/ws/2005/02/rm/policy http://schemas.xmlsoap.org/ws/2005/02/rm/wsrm-policy.xsd
+ http://cxf.apache.org/ws/rm/manager http://cxf.apache.org/schemas/configuration/wsrm-manager.xsd
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+ http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
+
+ <bean id="UsernameTokenSign_Request" class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor"
+ name="{http://secure_invoke/helloworld}SecureHelloWorldPort.Request" >
+ <constructor-arg>
+ <map>
+ <entry key="action" value="UsernameToken Timestamp Signature"/>
+ <entry key="passwordType" value="PasswordDigest"/>
+ <entry key="user" value="clientx509v1"/>
+ <entry key="passwordCallbackClass" value="org.jboss.test.ws.jaxws.samples.wsse.ClientUsernamePasswordCallback"/>
+ <entry key="signaturePropFile" value="etc/Client_Sign.properties"/>
+ <entry key="signatureKeyIdentifier" value="DirectReference"/>
+ <entry key="signatureParts" value="{Element}{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd}Timestamp;{Element}{http://schemas.xmlsoap.org/soap/envelope/}Body"/>
+ </map>
+ </constructor-arg>
+ </bean>
+
+ <bean id="UsernameTokenSign_Response" class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor"
+ name="{http://secure_invoke/helloworld}SecureHelloWorldPort.Response" >
+ <constructor-arg>
+ <map>
+ <entry key="action" value="UsernameToken Timestamp Signature"/>
+ <entry key="passwordType" value="PasswordText"/>
+ <entry key="user" value="serverx509v1"/>
+ <entry key="passwordCallbackClass" value="org.jboss.test.ws.jaxws.samples.wsse.ClientUsernamePasswordCallback"/>
+ <entry key="signaturePropFile" value="etc/Client_Encrypt.properties"/>
+ <entry key="signatureKeyIdentifier" value="DirectReference"/>
+ </map>
+ </constructor-arg>
+ </bean>
+
+
+ <cxf:bus>
+ <cxf:outInterceptors>
+ <ref bean="UsernameTokenSign_Request"/>
+ <bean class="org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor"/>
+ </cxf:outInterceptors>
+ <cxf:inInterceptors>
+ <ref bean="UsernameTokenSign_Response"/>
+ <bean class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor"/>
+ </cxf:inInterceptors>
+ </cxf:bus>
+
+</beans>
Added: trunk/samples/quickstart/secure_service/client/src/org/jboss/soa/bpel/examples/jaxws/JAXWSDispatcherClient.java
===================================================================
--- trunk/samples/quickstart/secure_service/client/src/org/jboss/soa/bpel/examples/jaxws/JAXWSDispatcherClient.java (rev 0)
+++ trunk/samples/quickstart/secure_service/client/src/org/jboss/soa/bpel/examples/jaxws/JAXWSDispatcherClient.java 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,90 @@
+
+package org.jboss.soa.bpel.examples.jaxws;
+
+/**
+ * Please modify this class to meet your needs
+ * This class is not complete
+ */
+
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.MessageFactory;
+import javax.xml.soap.SOAPMessage;
+import javax.xml.ws.Dispatch;
+import javax.xml.ws.Service;
+
+import org.apache.cxf.Bus;
+import org.apache.cxf.bus.spring.SpringBusFactory;
+import org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor;
+import org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor;
+
+/**
+ * This class was generated by Apache CXF 2.2.6
+ * Thu May 06 14:29:08 BST 2010
+ * Generated source version: 2.2.6
+ *
+ */
+
+public final class JAXWSDispatcherClient {
+
+ private static final QName SERVICE_NAME = new QName("http://www.jboss.org/bpel/examples/wsdl", "SecureHelloService");
+
+ private JAXWSDispatcherClient() {
+ }
+
+ public static void main(String args[]) throws Exception {
+ URL wsdlURL = null;
+
+ if (args.length != 2) {
+ System.err.println("Usage: JAXWSDispatcherClient wsdlURL messageFile");
+ System.exit(1);
+ }
+
+ File wsdlFile = new File(args[0]);
+ try {
+ if (wsdlFile.exists()) {
+ wsdlURL = wsdlFile.toURI().toURL();
+ } else {
+ wsdlURL = new URL(args[0]);
+ }
+ } catch (MalformedURLException e) {
+ e.printStackTrace();
+ System.exit(2);
+ }
+
+ SpringBusFactory bf = new SpringBusFactory();
+ URL busFile = ClassLoader.getSystemResource("wssec.xml");
+ Bus bus = bf.createBus(busFile.toString());
+ bf.setDefaultBus(bus);
+
+ QName portName=new QName("http://www.jboss.org/bpel/examples/wsdl", "SecureHelloPort");
+
+
+ Service service = Service.create(wsdlURL, SERVICE_NAME);
+ Dispatch<SOAPMessage> dispatcher = service.createDispatch(
+ portName,
+ SOAPMessage.class,
+ Service.Mode.MESSAGE
+ );
+
+ MessageFactory factory = MessageFactory.newInstance();
+
+ String str="<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:wsdl=\"http://www.jboss.org/bpel/examples/wsdl\">"+
+ "<soapenv:Header/><soapenv:Body><wsdl:hello><TestPart>Hello</TestPart></wsdl:hello></soapenv:Body></soapenv:Envelope>";
+ java.io.InputStream is=new java.io.ByteArrayInputStream(str.getBytes());
+
+ SOAPMessage soapReq1 = factory.createMessage(null, is);
+
+ System.out.println("Invoking server through Dispatch interface using SOAPMessage");
+ SOAPMessage soapResp = dispatcher.invoke(soapReq1);
+ System.out.println("Response from server: " + soapResp.getSOAPBody().getTextContent());
+
+ System.exit(0);
+ }
+
+}
Added: trunk/samples/quickstart/secure_service/client/src/org/jboss/test/ws/jaxws/samples/wsse/ClientUsernamePasswordCallback.java
===================================================================
--- trunk/samples/quickstart/secure_service/client/src/org/jboss/test/ws/jaxws/samples/wsse/ClientUsernamePasswordCallback.java (rev 0)
+++ trunk/samples/quickstart/secure_service/client/src/org/jboss/test/ws/jaxws/samples/wsse/ClientUsernamePasswordCallback.java 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,73 @@
+/**
+ * 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.jboss.test.ws.jaxws.samples.wsse;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.UnsupportedCallbackException;
+
+import org.apache.ws.security.WSPasswordCallback;
+
+/**
+ */
+
+public class ClientUsernamePasswordCallback implements CallbackHandler {
+
+ private Map<String, String> passwords =
+ new HashMap<String, String>();
+
+ public ClientUsernamePasswordCallback() {
+ passwords.put("Alice", "ecilA");
+ passwords.put("abcd", "dcba");
+ passwords.put("clientx509v1", "storepassword");
+ passwords.put("serverx509v1", "storepassword");
+ }
+
+ /**
+ * Here, we attempt to get the password from the private
+ * alias/passwords map.
+ */
+ public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
+ for (int i = 0; i < callbacks.length; i++) {
+ WSPasswordCallback pc = (WSPasswordCallback)callbacks[i];
+
+ String pass = passwords.get(pc.getIdentifier());
+ if (pass != null) {
+ pc.setPassword(pass);
+ return;
+ }
+ }
+
+ //
+ // Password not found
+ //
+ throw new IOException();
+ }
+
+ /**
+ * Add an alias/password pair to the callback mechanism.
+ */
+ public void setAliasPassword(String alias, String password) {
+ passwords.put(alias, password);
+ }
+}
Added: trunk/samples/quickstart/secure_service/client/src/org/jboss/test/ws/jaxws/samples/wsse/ServerUsernamePasswordCallback.java
===================================================================
--- trunk/samples/quickstart/secure_service/client/src/org/jboss/test/ws/jaxws/samples/wsse/ServerUsernamePasswordCallback.java (rev 0)
+++ trunk/samples/quickstart/secure_service/client/src/org/jboss/test/ws/jaxws/samples/wsse/ServerUsernamePasswordCallback.java 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,73 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.ws.jaxws.samples.wsse;
+
+import java.io.IOException;
+import java.util.*;
+
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.UnsupportedCallbackException;
+import org.apache.ws.security.WSPasswordCallback;
+
+public class ServerUsernamePasswordCallback implements CallbackHandler
+{
+ private Map<String, String> passwords =
+ new HashMap<String, String>();
+
+ public ServerUsernamePasswordCallback() {
+ passwords.put("Alice", "ecilA");
+ passwords.put("abcd", "dcba");
+ passwords.put("clientx509v1", "storepassword");
+ passwords.put("serverx509v1", "storepassword");
+ }
+
+ /**
+ * Here, we attempt to get the password from the private
+ * alias/passwords map.
+ */
+ public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
+ for (int i = 0; i < callbacks.length; i++) {
+ WSPasswordCallback pc = (WSPasswordCallback)callbacks[i];
+
+ System.out.println("**************** Server check id: "+pc.getIdentifer());
+
+ String pass = passwords.get(pc.getIdentifier());
+ if (pass != null) {
+ pc.setPassword(pass);
+ return;
+ }
+ }
+
+ //
+ // Password not found
+ //
+ throw new IOException();
+ }
+
+ /**
+ * Add an alias/password pair to the callback mechanism.
+ */
+ public void setAliasPassword(String alias, String password) {
+ passwords.put(alias, password);
+ }
+}
Added: trunk/samples/quickstart/secure_service/messages/hello_request1.xml
===================================================================
--- trunk/samples/quickstart/secure_service/messages/hello_request1.xml (rev 0)
+++ trunk/samples/quickstart/secure_service/messages/hello_request1.xml 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,8 @@
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsdl="http://www.jboss.org/bpel/examples/wsdl">
+ <soapenv:Header/>
+ <soapenv:Body>
+ <wsdl:hello>
+ <TestPart>Hello</TestPart>
+ </wsdl:hello>
+ </soapenv:Body>
+</soapenv:Envelope>
\ No newline at end of file
Added: trunk/samples/quickstart/secure_service/readme.txt
===================================================================
--- trunk/samples/quickstart/secure_service/readme.txt (rev 0)
+++ trunk/samples/quickstart/secure_service/readme.txt 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,25 @@
+Quickstart Examples - Hello World
+=================================
+
+This is a simple echo example, used to respond to a sent message with a
+modified version of the request message being returned in a response.
+
+To deploy the example, open a command line window in the example's folder,
+and simply type 'ant deploy'. To undeploy, use the command 'ant undeploy'.
+
+To test the example, for example using the SOAPUI client, an example message
+can be found in the messages sub-folder, with the relevant WSDL being
+located in the bpel sub-folder.
+
+Alternatively, use the 'ant sendhello' command (from a command line window)
+to send the example message directly to the deployed process.
+
+NOTE: The "ant deploy" command will by default deploy version 1 of the
+example to the server. If you wish to change the example, and redeploy,
+then you will need to update the version number in the build.xml, or
+override the version property, e.g. "ant -Dversion=2 deploy" (and similarly
+when undeploying "ant -Dversion=2 undeploy").
+
+Some handy URLs:
+http://localhost:8080/bpel-console is the BPEL console
+http://localhost:8080/Quickstart_bpel_hello_worldWS?wsdl is the URL to the BPEL process' WSDL
Added: trunk/samples/quickstart/secure_service/server/src/org/jboss/soa/bpel/examples/jaxws/JAXWSHandler.java
===================================================================
--- trunk/samples/quickstart/secure_service/server/src/org/jboss/soa/bpel/examples/jaxws/JAXWSHandler.java (rev 0)
+++ trunk/samples/quickstart/secure_service/server/src/org/jboss/soa/bpel/examples/jaxws/JAXWSHandler.java 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,109 @@
+/**
+ * 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.jboss.soa.bpel.examples.jaxws;
+
+
+import java.io.PrintStream;
+import java.util.Map;
+import java.util.Set;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.SOAPMessage;
+import javax.xml.ws.handler.MessageContext;
+import javax.xml.ws.handler.soap.SOAPHandler;
+import javax.xml.ws.handler.soap.SOAPMessageContext;
+
+/*
+ * This simple SOAPHandler will output the contents of incoming
+ * and outgoing messages.
+ */
+public class JAXWSHandler implements SOAPHandler<SOAPMessageContext> {
+
+ private PrintStream out;
+
+ public JAXWSHandler() {
+ setLogStream(System.out);
+ }
+
+ protected final void setLogStream(PrintStream ps) {
+ out = ps;
+ }
+
+ public void init(Map c) {
+ System.out.println("JAXWSHandler : init() Called....:"+c);
+ }
+
+ public Set<QName> getHeaders() {
+ return null;
+ }
+
+ public boolean handleMessage(SOAPMessageContext smc) {
+ System.out.println("JAXWSHandler : handleMessage Called....");
+ logToSystemOut(smc);
+ return true;
+ }
+
+ public boolean handleFault(SOAPMessageContext smc) {
+ System.out.println("JAXWSHandler : handleFault Called....");
+ logToSystemOut(smc);
+ return true;
+ }
+
+ // nothing to clean up
+ public void close(MessageContext messageContext) {
+ System.out.println("JAXWSHandler : close() Called....");
+ }
+
+ // nothing to clean up
+ public void destroy() {
+ System.out.println("LoggingHandler : destroy() Called....");
+ }
+
+ /*
+ * Check the MESSAGE_OUTBOUND_PROPERTY in the context
+ * to see if this is an outgoing or incoming message.
+ * Write a brief message to the print stream and
+ * output the message. The writeTo() method can throw
+ * SOAPException or IOException
+ */
+ protected void logToSystemOut(SOAPMessageContext smc) {
+ Boolean outboundProperty = (Boolean)
+ smc.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
+
+ if (outboundProperty.booleanValue()) {
+ out.println("\nOutbound message:");
+ } else {
+ out.println("\nInbound message:");
+ }
+
+ SOAPMessage message = smc.getMessage();
+ try {
+ message.writeTo(out);
+ out.println();
+ } catch (Exception e) {
+ out.println("Exception in handler: " + e);
+ }
+
+ out.println("WSDL_SERVICE = "+smc.get(MessageContext.WSDL_SERVICE));
+ out.println("WSDL_INTERFACE = "+smc.get(MessageContext.WSDL_INTERFACE));
+ out.println("WSDL_PORT = "+smc.get(MessageContext.WSDL_PORT));
+ out.println("WSDL_OPERATION = "+smc.get(MessageContext.WSDL_OPERATION));
+ }
+}
Added: trunk/samples/quickstart/secure_service/server/src/org/jboss/test/ws/jaxws/samples/wsse/ClientUsernamePasswordCallback.java
===================================================================
--- trunk/samples/quickstart/secure_service/server/src/org/jboss/test/ws/jaxws/samples/wsse/ClientUsernamePasswordCallback.java (rev 0)
+++ trunk/samples/quickstart/secure_service/server/src/org/jboss/test/ws/jaxws/samples/wsse/ClientUsernamePasswordCallback.java 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,73 @@
+/**
+ * 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.jboss.test.ws.jaxws.samples.wsse;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.UnsupportedCallbackException;
+
+import org.apache.ws.security.WSPasswordCallback;
+
+/**
+ */
+
+public class ClientUsernamePasswordCallback implements CallbackHandler {
+
+ private Map<String, String> passwords =
+ new HashMap<String, String>();
+
+ public ClientUsernamePasswordCallback() {
+ passwords.put("Alice", "ecilA");
+ passwords.put("abcd", "dcba");
+ passwords.put("clientx509v1", "storepassword");
+ passwords.put("serverx509v1", "storepassword");
+ }
+
+ /**
+ * Here, we attempt to get the password from the private
+ * alias/passwords map.
+ */
+ public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
+ for (int i = 0; i < callbacks.length; i++) {
+ WSPasswordCallback pc = (WSPasswordCallback)callbacks[i];
+
+ String pass = passwords.get(pc.getIdentifier());
+ if (pass != null) {
+ pc.setPassword(pass);
+ return;
+ }
+ }
+
+ //
+ // Password not found
+ //
+ throw new IOException();
+ }
+
+ /**
+ * Add an alias/password pair to the callback mechanism.
+ */
+ public void setAliasPassword(String alias, String password) {
+ passwords.put(alias, password);
+ }
+}
Added: trunk/samples/quickstart/secure_service/server/src/org/jboss/test/ws/jaxws/samples/wsse/ServerUsernamePasswordCallback.java
===================================================================
--- trunk/samples/quickstart/secure_service/server/src/org/jboss/test/ws/jaxws/samples/wsse/ServerUsernamePasswordCallback.java (rev 0)
+++ trunk/samples/quickstart/secure_service/server/src/org/jboss/test/ws/jaxws/samples/wsse/ServerUsernamePasswordCallback.java 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,73 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.ws.jaxws.samples.wsse;
+
+import java.io.IOException;
+import java.util.*;
+
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.UnsupportedCallbackException;
+import org.apache.ws.security.WSPasswordCallback;
+
+public class ServerUsernamePasswordCallback implements CallbackHandler
+{
+ private Map<String, String> passwords =
+ new HashMap<String, String>();
+
+ public ServerUsernamePasswordCallback() {
+ passwords.put("Alice", "ecilA");
+ passwords.put("abcd", "dcba");
+ passwords.put("clientx509v1", "storepassword");
+ passwords.put("serverx509v1", "storepassword");
+ }
+
+ /**
+ * Here, we attempt to get the password from the private
+ * alias/passwords map.
+ */
+ public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
+ for (int i = 0; i < callbacks.length; i++) {
+ WSPasswordCallback pc = (WSPasswordCallback)callbacks[i];
+
+ System.out.println("**************** Server check id: "+pc.getIdentifer());
+
+ String pass = passwords.get(pc.getIdentifier());
+ if (pass != null) {
+ pc.setPassword(pass);
+ return;
+ }
+ }
+
+ //
+ // Password not found
+ //
+ throw new IOException();
+ }
+
+ /**
+ * Add an alias/password pair to the callback mechanism.
+ */
+ public void setAliasPassword(String alias, String password) {
+ passwords.put(alias, password);
+ }
+}
\ No newline at end of file
Added: trunk/samples/quickstart/secure_service/wssec.xml
===================================================================
--- trunk/samples/quickstart/secure_service/wssec.xml (rev 0)
+++ trunk/samples/quickstart/secure_service/wssec.xml 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,79 @@
+<?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.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:cxf="http://cxf.apache.org/core"
+ xmlns:wsa="http://cxf.apache.org/ws/addressing"
+ xmlns:http="http://cxf.apache.org/transports/http/configuration"
+ xmlns:wsrm-policy="http://schemas.xmlsoap.org/ws/2005/02/rm/policy"
+ xmlns:wsrm-mgr="http://cxf.apache.org/ws/rm/manager"
+ xmlns:beans='http://www.springframework.org/schema/beans'
+ xmlns:jaxws='http://cxf.apache.org/jaxws'
+ xmlns:ns1='http://secure_invoke/helloworld'
+ xsi:schemaLocation="
+ http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
+ http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd
+ http://schemas.xmlsoap.org/ws/2005/02/rm/policy http://schemas.xmlsoap.org/ws/2005/02/rm/wsrm-policy.xsd
+ http://cxf.apache.org/ws/rm/manager http://cxf.apache.org/schemas/configuration/wsrm-manager.xsd
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+ http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
+
+ <bean id="UsernameTokenSign_Request" class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor"
+ name="{http://secure_invoke/helloworld}SecureHelloWorldPort.Request" >
+ <constructor-arg>
+ <map>
+ <entry key="action" value="UsernameToken Timestamp Signature"/>
+ <entry key="passwordType" value="PasswordDigest"/>
+ <entry key="user" value="clientx509v1"/>
+ <entry key="passwordCallbackClass" value="org.jboss.test.ws.jaxws.samples.wsse.ClientUsernamePasswordCallback"/>
+ <entry key="signaturePropFile" value="etc/Client_Sign.properties"/>
+ <entry key="signatureKeyIdentifier" value="DirectReference"/>
+ <entry key="signatureParts" value="{Element}{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd}Timestamp;{Element}{http://schemas.xmlsoap.org/soap/envelope/}Body"/>
+ </map>
+ </constructor-arg>
+ </bean>
+
+ <bean id="UsernameTokenSign_Response" class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor"
+ name="{http://secure_invoke/helloworld}SecureHelloWorldPort.Response" >
+ <constructor-arg>
+ <map>
+ <entry key="action" value="UsernameToken Timestamp Signature"/>
+ <entry key="passwordType" value="PasswordText"/>
+ <entry key="user" value="serverx509v1"/>
+ <entry key="passwordCallbackClass" value="org.jboss.test.ws.jaxws.samples.wsse.ClientUsernamePasswordCallback"/>
+ <entry key="signaturePropFile" value="etc/Client_Encrypt.properties"/>
+ <entry key="signatureKeyIdentifier" value="DirectReference"/>
+ </map>
+ </constructor-arg>
+ </bean>
+
+
+ <cxf:bus>
+ <cxf:outInterceptors>
+ <ref bean="UsernameTokenSign_Request"/>
+ <bean class="org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor"/>
+ </cxf:outInterceptors>
+ <cxf:inInterceptors>
+ <ref bean="UsernameTokenSign_Response"/>
+ <bean class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor"/>
+ </cxf:inInterceptors>
+ </cxf:bus>
+
+</beans>
Added: trunk/samples/quickstart/service_handler/.settings/org.eclipse.wst.common.component
===================================================================
--- trunk/samples/quickstart/service_handler/.settings/org.eclipse.wst.common.component (rev 0)
+++ trunk/samples/quickstart/service_handler/.settings/org.eclipse.wst.common.component 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-modules id="moduleCoreId" project-version="1.5.0">
+ <wb-module deploy-name="Quickstart_bpel_simple_invoke">
+ <wb-resource deploy-path="/" source-path="/bpelContent"/>
+ <dependent-module deploy-path="/" handle="module:/org.jboss.ide.eclipse.as.wtp.core.vcf.outputFolders/">
+ <dependency-type>consumes</dependency-type>
+ </dependent-module>
+ </wb-module>
+</project-modules>
Added: trunk/samples/quickstart/service_handler/.settings/org.eclipse.wst.common.project.facet.core.xml
===================================================================
--- trunk/samples/quickstart/service_handler/.settings/org.eclipse.wst.common.project.facet.core.xml (rev 0)
+++ trunk/samples/quickstart/service_handler/.settings/org.eclipse.wst.common.project.facet.core.xml 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<faceted-project>
+ <fixed facet="jbt.bpel.facet.core"/>
+ <installed facet="jbt.bpel.facet.core" version="2.0"/>
+</faceted-project>
Added: trunk/samples/quickstart/service_handler/bpelContent/HelloWorld.bpel
===================================================================
--- trunk/samples/quickstart/service_handler/bpelContent/HelloWorld.bpel (rev 0)
+++ trunk/samples/quickstart/service_handler/bpelContent/HelloWorld.bpel 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,68 @@
+<!--
+ ~ 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="HelloWorld"
+ targetNamespace="http://www.jboss.org/bpel/examples"
+ xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
+ xmlns:tns="http://www.jboss.org/bpel/examples"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:intf="http://www.jboss.org/bpel/examples/wsdl"
+ queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"
+ expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0">
+
+ <import location="HelloWorld.wsdl"
+ namespace="http://www.jboss.org/bpel/examples/wsdl"
+ importType="http://schemas.xmlsoap.org/wsdl/" />
+
+ <partnerLinks>
+ <partnerLink name="helloPartnerLink"
+ partnerLinkType="intf:HelloPartnerLinkType"
+ myRole="me" />
+ </partnerLinks>
+
+ <variables>
+ <variable name="myVar" messageType="intf:HelloMessage"/>
+ <variable name="mesgVar" type="xsd:string"/>
+ </variables>
+
+ <sequence>
+ <receive
+ name="start"
+ partnerLink="helloPartnerLink"
+ portType="intf:HelloPortType"
+ operation="hello"
+ variable="myVar"
+ createInstance="yes"/>
+
+ <assign name="assignHelloMesg">
+ <copy>
+ <from variable="myVar" part="TestPart"/>
+ <to variable="mesgVar"/>
+ </copy>
+ <copy>
+ <from>concat($mesgVar,' World')</from>
+ <to variable="myVar" part="TestPart"/>
+ </copy>
+ </assign>
+ <reply name="end"
+ partnerLink="helloPartnerLink"
+ portType="intf:HelloPortType"
+ operation="hello"
+ variable="myVar"/>
+ </sequence>
+</process>
Added: trunk/samples/quickstart/service_handler/bpelContent/HelloWorld.wsdl
===================================================================
--- trunk/samples/quickstart/service_handler/bpelContent/HelloWorld.wsdl (rev 0)
+++ trunk/samples/quickstart/service_handler/bpelContent/HelloWorld.wsdl 2010-05-28 11:08:19 UTC (rev 679)
@@ -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.
+ -->
+<wsdl:definitions
+ targetNamespace="http://www.jboss.org/bpel/examples/wsdl"
+ xmlns="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://www.jboss.org/bpel/examples/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:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype">
+
+ <wsdl:message name="HelloMessage">
+ <wsdl:part name="TestPart" type="xsd:string"/>
+ </wsdl:message>
+
+ <wsdl:portType name="HelloPortType">
+ <wsdl:operation name="hello">
+ <wsdl:input message="tns:HelloMessage" name="TestIn"/>
+ <wsdl:output message="tns:HelloMessage" name="TestOut"/>
+ </wsdl:operation>
+ </wsdl:portType>
+
+ <wsdl:binding name="HelloSoapBinding" type="tns:HelloPortType">
+ <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
+ <wsdl:operation name="hello">
+ <soap:operation soapAction="" style="rpc"/>
+ <wsdl:input>
+ <soap:body
+ namespace="http://www.jboss.org/bpel/examples/wsdl"
+ use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body
+ namespace="http://www.jboss.org/bpel/examples/wsdl"
+ use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="HelloService">
+ <wsdl:port name="HelloPort" binding="tns:HelloSoapBinding">
+ <soap:address location="http://localhost:8080/Quickstart_bpel_service_handlerWS"/>
+ </wsdl:port>
+ </wsdl:service>
+
+ <plnk:partnerLinkType name="HelloPartnerLinkType">
+ <plnk:role name="me" portType="tns:HelloPortType"/>
+ <plnk:role name="you" portType="tns:HelloPortType"/>
+ </plnk:partnerLinkType>
+</wsdl:definitions>
+
Added: trunk/samples/quickstart/service_handler/bpelContent/bpel-deploy.xml
===================================================================
--- trunk/samples/quickstart/service_handler/bpelContent/bpel-deploy.xml (rev 0)
+++ trunk/samples/quickstart/service_handler/bpelContent/bpel-deploy.xml 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,30 @@
+<!--
+ ~ 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:bpl="http://www.jboss.org/bpel/examples"
+ xmlns:intf="http://www.jboss.org/bpel/examples/wsdl">
+
+
+ <process name="bpl:HelloWorld">
+ <active>true</active>
+ <provide partnerLink="helloPartnerLink">
+ <service name="intf:HelloService" port="HelloPort"/>
+ </provide>
+ </process>
+</deploy>
Added: trunk/samples/quickstart/service_handler/bpelContent/jws_handlers.xml
===================================================================
--- trunk/samples/quickstart/service_handler/bpelContent/jws_handlers.xml (rev 0)
+++ trunk/samples/quickstart/service_handler/bpelContent/jws_handlers.xml 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,33 @@
+<?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.
+-->
+<handler-chains xmlns="http://java.sun.com/xml/ns/javaee"
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:schemaLocation="http://java.sun.com/xml/ns/javaee">
+ <handler-chain>
+ <handler>
+ <handler-name>JAXWSHandler</handler-name>
+ <handler-class>org.jboss.soa.bpel.examples.jaxws.JAXWSHandler</handler-class>
+ <init-param>
+ <param-name>TestParam</param-name>
+ <param-value>TestValue</param-value>
+ </init-param>
+ </handler>
+ </handler-chain>
+</handler-chains>
Added: trunk/samples/quickstart/service_handler/build.xml
===================================================================
--- trunk/samples/quickstart/service_handler/build.xml (rev 0)
+++ trunk/samples/quickstart/service_handler/build.xml 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,65 @@
+<project name="Quickstart_bpel_service_handler" default="deploy" basedir=".">
+
+ <description>
+ ${ant.project.name}
+ ${line.separator}
+ </description>
+
+ <!-- Import the base Ant build script... -->
+ <property file="../../../install/deployment.properties" />
+
+ <property name="version" value="1" />
+
+ <property name="server.dir" value="${org.jboss.as.home}/server/${org.jboss.as.config}"/>
+ <property name="conf.dir" value="${server.dir}/conf"/>
+ <property name="deploy.dir" value="${server.dir}/deploy"/>
+ <property name="deployers.dir" value="${server.dir}/deployers"/>
+ <property name="server.lib.dir" value="${server.dir}/lib"/>
+
+ <property name="sample.jar.name" value="${ant.project.name}-${version}.jar" />
+
+ <property name="code.build.dir" location="build/classes"/>
+
+ <path id="compile-classpath">
+ <fileset dir="${deployers.dir}/jbossws.deployer" includes="*.jar" />
+ </path>
+
+ <property name="compile-classpath" refid="compile-classpath"/>
+
+ <target name="compilecode" description="build code">
+ <!-- Compile... -->
+ <mkdir dir="${code.build.dir}" />
+ <javac srcdir="code/src" destdir="${code.build.dir}" debug="true">
+ <classpath>
+ <path refid="compile-classpath" />
+ </classpath>
+ </javac>
+ </target>
+
+ <target name="deploy" depends="compilecode" >
+ <echo>Deploy ${ant.project.name}</echo>
+ <jar destfile="${deploy.dir}/${sample.jar.name}" >
+ <fileset dir="bpelContent"/>
+ <fileset dir="${code.build.dir}"/>
+ </jar>
+ </target>
+
+ <target name="undeploy">
+ <echo>Undeploy ${ant.project.name}</echo>
+ <delete file="${deploy.dir}/${sample.jar.name}" />
+ </target>
+
+ <target name="sendhello">
+ <echo>Send test message to: ${ant.project.name}</echo>
+ <java classname="org.apache.ode.tools.sendsoap.cline.HttpSoapSender">
+ <arg value="http://localhost:8080/Quickstart_bpel_service_handlerWS"/>
+ <arg value="messages/hello_request1.xml"/>
+ <classpath>
+ <fileset dir="../../common/lib">
+ <include name="**/*.jar"/>
+ </fileset>
+ <pathelement path="${java.class.path}"/>
+ </classpath>
+ </java>
+ </target>
+</project>
Added: trunk/samples/quickstart/service_handler/code/src/org/jboss/soa/bpel/examples/jaxws/JAXWSHandler.java
===================================================================
--- trunk/samples/quickstart/service_handler/code/src/org/jboss/soa/bpel/examples/jaxws/JAXWSHandler.java (rev 0)
+++ trunk/samples/quickstart/service_handler/code/src/org/jboss/soa/bpel/examples/jaxws/JAXWSHandler.java 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,101 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, Red Hat Middleware LLC, and others contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ */
+package org.jboss.soa.bpel.examples.jaxws;
+
+import java.io.PrintStream;
+import java.util.Map;
+import java.util.Set;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.SOAPMessage;
+import javax.xml.ws.handler.MessageContext;
+import javax.xml.ws.handler.soap.SOAPHandler;
+import javax.xml.ws.handler.soap.SOAPMessageContext;
+
+/**
+ * This class provides an example jaxws handler that can be deployed with
+ * a BPEL process, to provide visibility of messages inbound and outbound
+ * from the web service interface.
+ *
+ * @author gbrown
+ *
+ */
+public class JAXWSHandler implements SOAPHandler<SOAPMessageContext> {
+
+ private PrintStream out;
+
+ public JAXWSHandler() {
+ setLogStream(System.out);
+ }
+
+ protected final void setLogStream(PrintStream ps) {
+ out = ps;
+ }
+
+ public void init(Map c) {
+ System.out.println("JAXWSHandler : init() Called....:"+c);
+ }
+
+ public Set<QName> getHeaders() {
+ return null;
+ }
+
+ public boolean handleMessage(SOAPMessageContext smc) {
+ System.out.println("JAXWSHandler : handleMessage Called....");
+ logToSystemOut(smc);
+ return true;
+ }
+
+ public boolean handleFault(SOAPMessageContext smc) {
+ System.out.println("JAXWSHandler : handleFault Called....");
+ logToSystemOut(smc);
+ return true;
+ }
+
+ public void close(MessageContext messageContext) {
+ System.out.println("JAXWSHandler : close() Called....");
+ }
+
+ public void destroy() {
+ System.out.println("JAXWSHandler : destroy() Called....");
+ }
+
+ protected void logToSystemOut(SOAPMessageContext smc) {
+ Boolean outboundProperty = (Boolean)
+ smc.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
+
+ if (outboundProperty.booleanValue()) {
+ out.println("\nOutbound message:");
+ } else {
+ out.println("\nInbound message:");
+ }
+
+ SOAPMessage message = smc.getMessage();
+ try {
+ message.writeTo(out);
+ out.println();
+ } catch (Exception e) {
+ out.println("Exception in handler: " + e);
+ }
+
+ out.println("WSDL_SERVICE = "+smc.get(MessageContext.WSDL_SERVICE));
+ out.println("WSDL_INTERFACE = "+smc.get(MessageContext.WSDL_INTERFACE));
+ out.println("WSDL_PORT = "+smc.get(MessageContext.WSDL_PORT));
+ out.println("WSDL_OPERATION = "+smc.get(MessageContext.WSDL_OPERATION));
+ }
+}
Added: trunk/samples/quickstart/service_handler/messages/hello_request1.xml
===================================================================
--- trunk/samples/quickstart/service_handler/messages/hello_request1.xml (rev 0)
+++ trunk/samples/quickstart/service_handler/messages/hello_request1.xml 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,8 @@
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsdl="http://www.jboss.org/bpel/examples/wsdl">
+ <soapenv:Header/>
+ <soapenv:Body>
+ <wsdl:hello>
+ <TestPart>Hello</TestPart>
+ </wsdl:hello>
+ </soapenv:Body>
+</soapenv:Envelope>
\ No newline at end of file
Added: trunk/samples/quickstart/service_handler/readme.txt
===================================================================
--- trunk/samples/quickstart/service_handler/readme.txt (rev 0)
+++ trunk/samples/quickstart/service_handler/readme.txt 2010-05-28 11:08:19 UTC (rev 679)
@@ -0,0 +1,29 @@
+Quickstart Examples - Service Handler
+=====================================
+
+This example builds on the hello_world example, which simply echos a message.
+The example is extended by adding a JAXWS handler to the Web Service that
+provides access to the BPEL process. This enables inbound and outbound
+messages (and faults) to be intercepted by a user supplied Java class. In
+this particular example, the JAXWS handler simply displays information
+on the JBoss console.
+
+To deploy the example, open a command line window in the example's folder,
+and simply type 'ant deploy'. To undeploy, use the command 'ant undeploy'.
+
+To test the example, for example using the SOAPUI client, an example message
+can be found in the messages sub-folder, with the relevant WSDL being
+located in the bpel sub-folder.
+
+Alternatively, use the 'ant sendhello' command (from a command line window)
+to send the example message directly to the deployed process.
+
+NOTE: The "ant deploy" command will by default deploy version 1 of the
+example to the server. If you wish to change the example, and redeploy,
+then you will need to update the version number in the build.xml, or
+override the version property, e.g. "ant -Dversion=2 deploy" (and similarly
+when undeploying "ant -Dversion=2 undeploy").
+
+Some handy URLs:
+http://localhost:8080/bpel-console is the BPEL console
+http://localhost:8080/Quickstart_bpel_service_handlerWS?wsdl is the URL to the BPEL process' WSDL
15 years, 4 months
riftsaw SVN: r678 - in branches/ODE/ODE-1.x-jpa: axis2 and 60 other directories.
by riftsaw-commits@lists.jboss.org
Author: jeff.yuchang
Date: 2010-05-28 01:11:17 -0400 (Fri, 28 May 2010)
New Revision: 678
Added:
branches/ODE/ODE-1.x-jpa/axis2-war/src/test/TimeService-soapui-project.xml
branches/ODE/ODE-1.x-jpa/axis2-war/src/test/java/org/apache/ode/axis2/SelectorsTest.java
branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSelectors/
branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool2.bpel
branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool2.wsdl
branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool3.bpel
branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool3.wsdl
branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem.svg
branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem.wsdl
branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSelectors/deploy.xml
branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSelectors/testRequest.soap
branches/ODE/ODE-1.x-jpa/axis2-war/src/test/webapp/WEB-INF/conf/ode-axis2.properties
branches/ODE/ODE-1.x-jpa/bpel-compiler/src/test/java/org/apache/ode/bpel/elang/xpath20/compiler/
branches/ODE/ODE-1.x-jpa/bpel-compiler/src/test/java/org/apache/ode/bpel/elang/xpath20/compiler/XPath20ExpressionCompilerImplTest.java
branches/ODE/ODE-1.x-jpa/jbi/src/test/java/org/apache/ode/jbi/SpringPropertiesJbiTest.java
branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/SpringPropertiesJbiTest/
branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/SpringPropertiesJbiTest/OnEventCorrelation.bpel
branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/SpringPropertiesJbiTest/OnEventCorrelation.wsdl
branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/SpringPropertiesJbiTest/OnEventCorrelationArtifacts.wsdl
branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/SpringPropertiesJbiTest/beans.xml
branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/SpringPropertiesJbiTest/deploy.xml
branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/SpringPropertiesJbiTest/smx.xml
branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/SpringPropertiesJbiTest/test.properties
branches/ODE/ODE-1.x-jpa/scheduler-simple/src/test/resources/log4j.properties
branches/ODE/ODE-1.x-jpa/scheduler-simple/src/test/resources/simplesched-hsql.sql
branches/ODE/ODE-1.x-jpa/schema-updates/
branches/ODE/ODE-1.x-jpa/schema-updates/update01.sql
branches/ODE/ODE-1.x-jpa/schema-updates/update02.sql
Modified:
branches/ODE/ODE-1.x-jpa/KEYS
branches/ODE/ODE-1.x-jpa/Rakefile
branches/ODE/ODE-1.x-jpa/axis2-war/pom.xml
branches/ODE/ODE-1.x-jpa/axis2-war/src/main/assembly/bin.xml
branches/ODE/ODE-1.x-jpa/axis2-war/src/main/webapp/WEB-INF/classes/log4j.properties
branches/ODE/ODE-1.x-jpa/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/ProcessCronCleanupTest.java
branches/ODE/ODE-1.x-jpa/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/SystemCronCleanupTest.java
branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSoapHeader2/HelloWorld2.wsdl
branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSoapHeader2/deploy.xml
branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSoapHeader2/hello-process.bpel
branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSoapHeader2/hello-process.wsdl
branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSoapHeader2/hello.wsdl
branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSoapHeader2/hello.xsd
branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/test-log4j.properties
branches/ODE/ODE-1.x-jpa/axis2/pom.xml
branches/ODE/ODE-1.x-jpa/bpel-api/src/main/java/org/apache/ode/bpel/common/CorrelationKey.java
branches/ODE/ODE-1.x-jpa/bpel-api/src/main/java/org/apache/ode/bpel/common/CorrelationKeySet.java
branches/ODE/ODE-1.x-jpa/bpel-api/src/main/java/org/apache/ode/bpel/evt/ScopeCompletionEvent.java
branches/ODE/ODE-1.x-jpa/bpel-api/src/main/java/org/apache/ode/bpel/evt/VariableModificationEvent.java
branches/ODE/ODE-1.x-jpa/bpel-api/src/main/java/org/apache/ode/bpel/iapi/ClusterAware.java
branches/ODE/ODE-1.x-jpa/bpel-api/src/main/java/org/apache/ode/bpel/iapi/Endpoint.java
branches/ODE/ODE-1.x-jpa/bpel-api/src/main/java/org/apache/ode/bpel/iapi/ProcessConf.java
branches/ODE/ODE-1.x-jpa/bpel-api/src/main/java/org/apache/ode/bpel/iapi/Scheduler.java
branches/ODE/ODE-1.x-jpa/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/BpelCompiler.java
branches/ODE/ODE-1.x-jpa/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/bom/InvokeActivity.java
branches/ODE/ODE-1.x-jpa/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/bom/Scope.java
branches/ODE/ODE-1.x-jpa/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/JaxpFunctionResolver.java
branches/ODE/ODE-1.x-jpa/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/OdeXPathFunctionLibrary.java
branches/ODE/ODE-1.x-jpa/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/SaxonContext.java
branches/ODE/ODE-1.x-jpa/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/XPath20ExpressionCompilerImpl.java
branches/ODE/ODE-1.x-jpa/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xquery10/compiler/XQuery10BpelFunctions.java
branches/ODE/ODE-1.x-jpa/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xquery10/compiler/XQuery10ExpressionCompilerImpl.java
branches/ODE/ODE-1.x-jpa/bpel-compiler/src/test/java/org/apache/ode/bpel/elang/xquery10/compiler/XQuery10ExpressionCompilerImplTest.java
branches/ODE/ODE-1.x-jpa/bpel-compiler/src/test/resources/log4j.properties
branches/ODE/ODE-1.x-jpa/bpel-dao/src/main/java/org/apache/ode/dao/bpel/DeferredProcessInstanceCleanable.java
branches/ODE/ODE-1.x-jpa/bpel-dao/src/main/java/org/apache/ode/dao/bpel/FilteredInstanceDeletable.java
branches/ODE/ODE-1.x-jpa/bpel-dao/src/main/java/org/apache/ode/dao/bpel/ScopeStateEnum.java
branches/ODE/ODE-1.x-jpa/bpel-epr/src/main/java/org/apache/ode/il/MockScheduler.java
branches/ODE/ODE-1.x-jpa/bpel-obj/src/main/java/org/apache/ode/bpel/o/OMessageVarType.java
branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelEngineImpl.java
branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java
branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java
branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java
branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/DebuggerSupport.java
branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/Messages.java
branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeImpl.java
branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerLinkMyRoleImpl.java
branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerRoleMessageExchangeImpl.java
branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java
branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessCleanUpRunnable.java
branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessStatusConverter.java
branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/CronScheduler.java
branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/RuntimeDataCleanupRunnable.java
branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/SystemSchedulesConfig.java
branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/Replayer.java
branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/ReplayerScheduler.java
branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/extvar/jdbc/DbExternalVariable.java
branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/ProcessDaoImpl.java
branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java
branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/SCOPE.java
branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/WAIT.java
branches/ODE/ODE-1.x-jpa/bpel-runtime/src/test/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeImplTest.java
branches/ODE/ODE-1.x-jpa/bpel-runtime/src/test/java/org/apache/ode/bpel/engine/cron/CronSchedulerTest.java
branches/ODE/ODE-1.x-jpa/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java
branches/ODE/ODE-1.x-jpa/bpel-runtime/src/test/resources/recovery/failure-to-fault2.bpel
branches/ODE/ODE-1.x-jpa/bpel-schemas/src/main/xsd/pmapi.xsd
branches/ODE/ODE-1.x-jpa/bpel-scripts/src/main/resources/2.0/good/circularReference/CircularReference.bpel
branches/ODE/ODE-1.x-jpa/bpel-scripts/src/main/resources/2.0/good/circularReference/CircularReference1.wsdl
branches/ODE/ODE-1.x-jpa/bpel-scripts/src/main/resources/2.0/good/circularReference/CircularReference2.wsdl
branches/ODE/ODE-1.x-jpa/bpel-store/src/main/java/org/apache/ode/store/DeploymentUnitDir.java
branches/ODE/ODE-1.x-jpa/bpel-store/src/main/java/org/apache/ode/store/ProcessConfImpl.java
branches/ODE/ODE-1.x-jpa/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java
branches/ODE/ODE-1.x-jpa/bpel-test/src/test/resources/bpel/2.0/TestWait1/Wait1-2.0.bpel
branches/ODE/ODE-1.x-jpa/bpel-test/src/test/resources/bpel/2.0/TestXQueryExpression/HelloXQueryWorld.xsl
branches/ODE/ODE-1.x-jpa/dao-hibernate-db/build.xml
branches/ODE/ODE-1.x-jpa/dao-hibernate-db/src/main/sql/simplesched-derby.sql
branches/ODE/ODE-1.x-jpa/dao-hibernate-db/src/main/sql/simplesched-firebird.sql
branches/ODE/ODE-1.x-jpa/dao-hibernate-db/src/main/sql/simplesched-hsql.sql
branches/ODE/ODE-1.x-jpa/dao-hibernate-db/src/main/sql/simplesched-mysql.sql
branches/ODE/ODE-1.x-jpa/dao-hibernate-db/src/main/sql/simplesched-oracle.sql
branches/ODE/ODE-1.x-jpa/dao-hibernate-db/src/main/sql/simplesched-postgres.sql
branches/ODE/ODE-1.x-jpa/dao-hibernate-db/src/main/sql/simplesched-sqlserver.sql
branches/ODE/ODE-1.x-jpa/dao-hibernate/pom.xml
branches/ODE/ODE-1.x-jpa/dao-hibernate/src/main/java/org/apache/ode/dao/hib/bpel/CriteriaBuilder.java
branches/ODE/ODE-1.x-jpa/dao-hibernate/src/main/java/org/apache/ode/dao/hib/bpel/ProcessInstanceDaoImpl.java
branches/ODE/ODE-1.x-jpa/dao-hibernate/src/main/java/org/apache/ode/dao/hib/bpel/ScopeDaoImpl.java
branches/ODE/ODE-1.x-jpa/dao-hibernate/src/main/java/org/apache/ode/dao/hib/bpel/XmlDataDaoImpl.java
branches/ODE/ODE-1.x-jpa/dao-hibernate/src/main/java/org/apache/ode/dao/hib/bpel/hobj/HXmlData.java
branches/ODE/ODE-1.x-jpa/dao-jpa-ojpa-derby/build.xml
branches/ODE/ODE-1.x-jpa/dao-jpa-ojpa-derby/src/main/scripts/simplesched-derby.sql
branches/ODE/ODE-1.x-jpa/dao-jpa-ojpa-derby/src/main/scripts/simplesched-mysql.sql
branches/ODE/ODE-1.x-jpa/dao-jpa-ojpa-derby/src/main/scripts/simplesched-oracle.sql
branches/ODE/ODE-1.x-jpa/dao-jpa/src/main/java/org/apache/ode/dao/jpa/bpel/ScopeDAOImpl.java
branches/ODE/ODE-1.x-jpa/dependencies.rb
branches/ODE/ODE-1.x-jpa/jbi-bundle/src/main/resources/META-INF/spring/ode-jbi.xml
branches/ODE/ODE-1.x-jpa/jbi/src/main/assembly/bin.xml
branches/ODE/ODE-1.x-jpa/jbi/src/test/java/org/apache/ode/jbi/JbiTestBase.java
branches/ODE/ODE-1.x-jpa/jbi/src/test/java/org/apache/ode/jbi/RetireJbiTest.java
branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/ReplayerJbiTest/initiateRequest.xml
branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/ReplayerJbiTest/replayRequest.xml
branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/ReplayerJbiTest/replayXQueryRequest.xml
branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/log4j.properties
branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/test.wsdl
branches/ODE/ODE-1.x-jpa/pom.xml
branches/ODE/ODE-1.x-jpa/repositories.rb
branches/ODE/ODE-1.x-jpa/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/DatabaseDelegate.java
branches/ODE/ODE-1.x-jpa/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/JdbcDelegate.java
branches/ODE/ODE-1.x-jpa/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/Job.java
branches/ODE/ODE-1.x-jpa/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SimpleScheduler.java
branches/ODE/ODE-1.x-jpa/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/DelegateSupport.java
branches/ODE/ODE-1.x-jpa/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/GeronimoDelegateSupport.java
branches/ODE/ODE-1.x-jpa/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/JdbcDelegateTest.java
branches/ODE/ODE-1.x-jpa/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/RetriesTest.java
branches/ODE/ODE-1.x-jpa/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/SimpleSchedulerTest.java
branches/ODE/ODE-1.x-jpa/tools/src/main/java/org/apache/ode/tools/sendsoap/cline/HttpSoapSender.java
branches/ODE/ODE-1.x-jpa/utils/pom.xml
branches/ODE/ODE-1.x-jpa/utils/src/main/java/org/apache/ode/utils/CronExpression.java
branches/ODE/ODE-1.x-jpa/utils/src/main/java/org/apache/ode/utils/RelativeDateParser.java
Log:
* upgraded to ode 1.3.4 branch.
Modified: branches/ODE/ODE-1.x-jpa/KEYS
===================================================================
--- branches/ODE/ODE-1.x-jpa/KEYS 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/KEYS 2010-05-28 05:11:17 UTC (rev 678)
@@ -153,3 +153,63 @@
AKCCyI4u+Rwi1Lk7rd9V1bUsQyyEFw==
=u9zQ
-----END PGP PUBLIC KEY BLOCK-----
+pub 4096R/3C966102 2010-05-26
+uid Tammo van Lessen (CODE SIGNING KEY) <vanto(a)apache.org>
+sig 3 3C966102 2010-05-26 Tammo van Lessen (CODE SIGNING KEY) <vanto(a)apache.org>
+sig 3 E42E0E4D 2010-05-26 Tammo van Lessen <tvanlessen(a)taval.de>
+sub 4096R/8400A608 2010-05-26
+sig 3C966102 2010-05-26 Tammo van Lessen (CODE SIGNING KEY) <vanto(a)apache.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.4.10 (MingW32)
+
+mQINBEv9r8oBEAC/OjGwUYyKgpQotSgt5DbEsEAk3agbH5bn2nVe7SwXuB1MHwcb
+kcSSRZcez9hM2NybrMpnYqJI4Q/pRzxSUSwGLFeSMwiUr2DpuN61tjDiA2UxM4x5
+CRPaGFt6PqeB1QJf+g1GPPfwPU/Eqn1Y4lLfvoTTjT6Hl+j0rGkNsY+3wDI7v870
+G7MX4bI+9doQRHbuxMa6AtEHv4vvFGnsPthJlydJoAuCA9kchSqKNXJxI+alczHK
+UgFXEyIBWflO6NW6LlsfA2KFqTcu1+MgwUAC3q8f9JeFUwQ5muh2sQrtBOlqrTSB
+wvx2VoSMFPkfIKFiLdx7eaKzE19BhNCn4W2IF/PpMCF3VCsf7dPOtJGB3z7DZbxc
+H+7G6RE3DOEofw3VefYDttl4JAlhElIEkC9UVOfedioQOTs8jvmiwSxS612CmO0H
+Bo+yxwjn0n0EGUFToKcTQu8lUO9evHGDwfsFm+ehj88F0s8ZhklY5JXEQcDTmya9
+JuoNcYEM/BGzgd3RvmA/XBwpBEr2qeDTJmWBtg1z0/L06LW3WqNXNNsLwk3AYpBu
+QPdJJ7WLm3mcgDYQPLQ7esGuUbbuoyTivtw7vRplmwW/Pz6jMOOVrnfHgLACYh29
+cFMOjCYWzpdAozCy8uMa3qR/elGtPCv2j1JYHTDvaBbF5/C/pttaiA8xEwARAQAB
+tDZUYW1tbyB2YW4gTGVzc2VuIChDT0RFIFNJR05JTkcgS0VZKSA8dmFudG9AYXBh
+Y2hlLm9yZz6JAjcEEwECACECGyMCHgECF4AFAkv+TPAFCwkIBwMFFQoJCAsFFgID
+AQAACgkQ2B8u2jyWYQIZtg/+PR+/NuROoArnsW9vE8nMcfRNS/gO3VIBD1BC1Jjf
+OyeHU7stmlrtGI2aIJ+WpTx3umlcaXHfzw2ijbsnvbAX6pkPqPdSidioumztg8QG
+tWCYeufEna/XIJQgiqsp2OPVr4vREEze5ZEsi7siv1r7yPlgBMV7Vujfb2RUQ2JW
+1ttnlPMdDjbbHKIim2/J7jOauP/a+6LB+HvvtEkXWj2BooOZMeUGe/4E0FxU9yaY
+SIJyw9xtxedqj2/ESwIp8P6ClownO3xcGtRhwd0OOgnExrerF1ch5MDn9eBx1QB1
+pZQUhBmj00avYz7iUA7qnXfNF0Hu/KxcashxWUhLyvb6/iAsLUOiLPOJj8Yp3z1J
+1SrFLa9AxjCIaJetYtBIj5suh0kxtN4W+6a76+xfcDuBJCvjzOZTM21J00uJQ7Me
+JvzWfy3kQcQMmIEsBC3duE052NcF5+R/OBktgbULRS+pSLqXFxCh1ENBcnZPlclI
+yDoce76WJdZvxOKvsO2/hnET6hO53IZjDluJiBrtoakaPvSDVoWZLZNa7eBfxK1B
+QzOANrXNPMvcboNsXZk5hPLwAJ3sB+qG6kVE0O6SmUG/88y4lmuHWUQGMvYehoV5
+R4eIqg2IHL41S2r/jjC9Gp6U2/67YynB6UkqaocP83Ci8Fw9zwbd16MkWbT/n7Fg
+rryIRgQTEQIABgUCS/2wjAAKCRDzgigi5C4OTSzrAJ9cGfs5+vrjtCkGOQh35MkC
+q7JGDACdEN8fA9Z4cl9xwDxmcdKztap42ea5Ag0ES/2vygEQAOCkQU40N45EzNH3
+SQ0Ze6WnNw0K4q11AMrKrkpQzGMEacxAg6V6CaL7rvCWcl9qZ/brKgMSBGU4sck2
+pzXF6rC45MOlzm8rz1THaq+P9KU4/7GiMM+1ntu4NPX9LKBANNDDtPhIdig11qJl
+N+U+nLULlv+wd1At93NssLdltOLyHRFujBbw2ZRLcJct8zkdmpmZbko1ZMKuT7VA
++59c049iZoVp8dZQaule98l6LGQjVd2qMC28SA4Cqwjp4mR+0bXb5gxFNlL3zQol
+qYoVRzoFH6vZvvksJa8REIghRb0JasHirFscI0/eiV4DvAlaM6KKI8HTTqd76CTo
+jNsYTYWap6h330jODwiXEGZJERuAJdY48PZOCeJavow8RxhzNIfRLCBUgpLNxn4f
+HQy92B7ym65GVo37GA45lXa8y1ov3g9eHhSsv+kLaKH+Hl22lvWMnFpPcxfkxBgD
+X61d8FV7ZRlpRErcGFCd+wUbfq41VEZpKRZ6fRWTQ0ooTXTQOaJv4t7amyqwED8o
+0puxZNZ5ATjTuaI6oMPVAMfhSdohqAOGiabSo4NCHfISWgg+8HmtrsD6vZlmZw2C
+W8TC0kgU6N8D7RlLyLCZg+Vbnl4qMCuTwn7iyO8dSUHWba+IecDJTh9NmBfln2fT
+y71W0tA0kuvory4G8TM8V+tFHxGLABEBAAGJAh8EGAECAAkFAkv9r8oCGwwACgkQ
+2B8u2jyWYQIJqRAAsnaiZAlI7MMoKP1MjMk7qWlkb0dFLO26/pdsaiLm+tmYt/Nm
+r+1+ROOpgZpedRVM9+ZIclwrKag7vZ6c13O5v4XssvO0rE9mnQdhW9Ts3EKO7/BN
+0gSFKPrA8JlRBRvTExCFZHLcNNmS7fyaZsiuPFPamggKThKEn6CJnUYABDopiKul
+rb089vPVzQMpYtwazaqjKh/33mSQ98BUwtb8t2gUEwCUTxmxNvgMf4GwqQp3ooVY
+Hp57v2x2lmpvooaWsm9UGO87N6ubmiJBP309Yp7XgdElXsUWeZGwPozqtKUg+jYn
+PIhshjQD+GVrWmoQ0HXzTSEPkFbmWnu2oJGTlu+AjnNKwXQQ5OB80gDDjcdQmEOI
+wPPfKkcvvg4IlGN/hTFE7OVvy3FQhD6Cy0E05wKyFX9ESpoG9uAeJ6u52LJbXcS2
+6mb9YZY8boGLWj6QabG/LDQVMlYOjM2zzYN015uOKmULvKVt3t8/016qberdMl/e
+C+kf3ivwBekplcprHBQbVK0t4JizVRFWkiPFElKh04HgP8jf3HVl/tgohf1vSVTV
+amb+vHQUM5Gzd5586gXBNs8qFBS4VvTdmCfniaDvo9ZfXJGjuLuBNhRQbP+1rNfU
+Us7l63zTphxRaa8+oRYRX+QMCBMc5v0GeHIVhvz6DwGlv3okFIRbJvx+goc=
+=DCAF
+-----END PGP PUBLIC KEY BLOCK-----
Modified: branches/ODE/ODE-1.x-jpa/Rakefile
===================================================================
--- branches/ODE/ODE-1.x-jpa/Rakefile 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/Rakefile 2010-05-28 05:11:17 UTC (rev 678)
@@ -26,7 +26,7 @@
require File.join(File.dirname(__FILE__), 'dependencies.rb')
# Keep this structure to allow the build system to update version numbers.
-VERSION_NUMBER = "1.3.4-SNAPSHOT"
+VERSION_NUMBER = "1.3.4"
BUNDLE_VERSIONS = {
"ode.version" => VERSION_NUMBER,
@@ -76,7 +76,7 @@
COMMONS.lang, COMMONS.logging, COMMONS.pool, DERBY, DERBY_TOOLS, JAXEN, JAVAX.activation, JAVAX.ejb, JAVAX.javamail,
JAVAX.connector, JAVAX.jms, JAVAX.persistence, JAVAX.transaction, JAVAX.stream, JIBX,
GERONIMO.connector, GERONIMO.kernel, GERONIMO.transaction, LOG4J, OPENJPA, SAXON, TRANQL,
- WOODSTOX, WSDL4J, WS_COMMONS, XALAN, XERCES, XMLBEANS,
+ WOODSTOX, WSDL4J, WS_COMMONS, XALAN, XERCES, XMLBEANS, SPRING,
AXIS2_MODULES.libs
package(:war).with(:libs=>libs).path("WEB-INF").tap do |web_inf|
@@ -103,8 +103,8 @@
end
end
- test.using :testng, :properties=>{ "log4j.debug" => true, "log4j.configuration"=>"test-log4j.properties", "test.ports" => ENV['TEST_PORTS'] }
- test.with projects("tools"), libs, AXIS2_TEST, AXIOM, JAVAX.servlet, Buildr::Jetty::REQUIRES, HIBERNATE, DOM4J
+ test.using :testng, :properties=>{ "log4j.debug" => true, "log4j.configuration"=>"test-log4j.properties", "test.ports" => ENV['TEST_PORTS'] }, :java_args=>['-Xmx1024M', '-XX:MaxPermSize=1024m']
+ test.with projects("tools"), libs, AXIS2_TEST, AXIOM, JAVAX.servlet, Buildr::Jetty::REQUIRES, HIBERNATE, DOM4J, SLF4J, LOG4J
webapp_dir = "#{test.compile.target}/webapp"
test.setup task(:prepare_webapp) do |task|
cp_r _("src/main/webapp"), test.compile.target.to_s
@@ -198,8 +198,10 @@
compile.from apt
compile.with projects("bpel-api", "bpel-compiler", "bpel-dao", "bpel-epr", "bpel-obj", "bpel-schemas",
"bpel-store", "jacob", "jacob-ap", "utils", "agents"),
- COMMONS.logging, COMMONS.collections, COMMONS.httpclient, JAXEN, JAVAX.persistence, JAVAX.stream, SAXON, WSDL4J, XMLBEANS
+ COMMONS.logging, COMMONS.collections, COMMONS.httpclient, JAXEN, JAVAX.persistence, JAVAX.stream, SAXON, WSDL4J, XMLBEANS,
+ SPRING
+
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,
@@ -234,7 +236,7 @@
define "bpel-store" do
compile.with projects("bpel-api", "bpel-compiler", "bpel-dao", "bpel-obj", "bpel-schemas", "bpel-epr",
"dao-hibernate", "dao-jpa", "utils"),
- COMMONS.logging, JAVAX.persistence, JAVAX.stream, JAVAX.transaction, HIBERNATE, HSQLDB, XMLBEANS, XERCES, WSDL4J, OPENJPA
+ COMMONS.logging, JAVAX.persistence, JAVAX.stream, JAVAX.transaction, HIBERNATE, HSQLDB, XMLBEANS, XERCES, WSDL4J, OPENJPA, SPRING
compile { open_jpa_enhance }
resources hibernate_doclet(:package=>"org.apache.ode.store.hib", :excludedtags=>"@version,@author,@todo")
@@ -246,14 +248,14 @@
desc "ODE BPEL Tests"
define "bpel-test" do
compile.with projects("bpel-api", "bpel-compiler", "bpel-dao", "bpel-runtime",
- "bpel-store", "utils", "bpel-epr", "dao-jpa", "agents"),
+ "bpel-store", "utils", "bpel-epr", "dao-hibernate", "agents"),
DERBY, JUnit.dependencies, JAVAX.persistence, OPENJPA, WSDL4J, COMMONS.httpclient,
COMMONS.codec
test.with projects("bpel-obj", "jacob", "bpel-schemas",
"bpel-scripts", "scheduler-simple"),
COMMONS.collections, COMMONS.lang, COMMONS.logging, DERBY, JAVAX.connector,
- JAVAX.stream, JAVAX.transaction, JAXEN, HSQLDB, LOG4J, SAXON, XERCES, XMLBEANS, XALAN, GERONIMO.transaction
+ JAVAX.stream, JAVAX.transaction, JAXEN, HSQLDB, LOG4J, SAXON, XERCES, XMLBEANS, XALAN, GERONIMO.transaction, SPRING, HIBERNATE, SLF4J, DOM4J
package :jar
end
Modified: branches/ODE/ODE-1.x-jpa/axis2/pom.xml
===================================================================
--- branches/ODE/ODE-1.x-jpa/axis2/pom.xml 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/axis2/pom.xml 2010-05-28 05:11:17 UTC (rev 678)
@@ -30,7 +30,6 @@
</parent>
<properties>
- <rampart.version>1.4</rampart.version>
<servlet.version>2.4</servlet.version>
</properties>
Modified: branches/ODE/ODE-1.x-jpa/axis2-war/pom.xml
===================================================================
--- branches/ODE/ODE-1.x-jpa/axis2-war/pom.xml 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/axis2-war/pom.xml 2010-05-28 05:11:17 UTC (rev 678)
@@ -40,7 +40,6 @@
<geronimo-spec-jms.version>1.1-rc4</geronimo-spec-jms.version>
<jetty.version>6.1.3</jetty.version>
<testng.version>5.8</testng.version>
- <rampart.version>1.4</rampart.version>
</properties>
<dependencies>
@@ -110,9 +109,8 @@
<version>${project.version}</version>
</dependency>
<dependency>
- <groupId>org.apache.axis2</groupId>
- <artifactId>axis2-corba</artifactId>
- <version>${axis2.version}</version>
+ <groupId>org.jboss.soa.bpel</groupId>
+ <artifactId>riftsaw-bpel-ql</artifactId>
</dependency>
<dependency>
<groupId>org.apache.axis2</groupId>
@@ -208,6 +206,11 @@
<version>${geronimo-spec-jms.version}</version>
</dependency>
<dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-ejb_2.1_spec</artifactId>
+ <version>1.1</version>
+ </dependency>
+ <dependency>
<groupId>org.apache.geronimo.modules</groupId>
<artifactId>geronimo-kernel</artifactId>
</dependency>
@@ -215,6 +218,7 @@
<groupId>xml-apis</groupId>
<artifactId>xml-apis</artifactId>
</dependency>
+ <!--
<dependency>
<groupId>org.apache.rampart</groupId>
<artifactId>rampart</artifactId>
@@ -239,6 +243,7 @@
<type>mar</type>
<version>${mex.version}</version>
</dependency>
+ -->
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>mex</artifactId>
Modified: branches/ODE/ODE-1.x-jpa/axis2-war/src/main/assembly/bin.xml
===================================================================
--- branches/ODE/ODE-1.x-jpa/axis2-war/src/main/assembly/bin.xml 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/axis2-war/src/main/assembly/bin.xml 2010-05-28 05:11:17 UTC (rev 678)
@@ -86,7 +86,7 @@
<include>org.apache.axis2:axis2-adb</include>
<include>org.apache.axis2:axis2-adb-codegen</include>
<include>org.apache.axis2:axis2-codegen</include>
- <include>org.apache.axis2:axis2-corba</include>
+ <include>org.jboss.soa.bpel:riftsaw-bpel-ql</include>
<include>org.apache.axis2:axis2-fastinfoset</include>
<include>org.apache.axis2:axis2-java2wsdl</include>
<include>org.apache.axis2:axis2-jaxbri</include>
@@ -111,6 +111,7 @@
<include>commons-lang:commons-lang</include>
<include>commons-pool:commons-pool</include>
<include>commons-io:commons-io</include>
+ <include>commons-beanutils:commons-beanutils</include>
<include>commons-httpclient:commons-httpclient</include>
<include>commons-logging:commons-logging</include>
<include>commons-fileupload:commons-fileupload</include>
@@ -167,6 +168,7 @@
<include>xml-apis:xml-apis</include>
<include>javax.mail:mail</include>
<include>axion:axion</include>
+ <include>org.springframework:spring</include>
</includes>
</dependencySet>
Modified: branches/ODE/ODE-1.x-jpa/axis2-war/src/main/webapp/WEB-INF/classes/log4j.properties
===================================================================
--- branches/ODE/ODE-1.x-jpa/axis2-war/src/main/webapp/WEB-INF/classes/log4j.properties 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/axis2-war/src/main/webapp/WEB-INF/classes/log4j.properties 2010-05-28 05:11:17 UTC (rev 678)
@@ -22,13 +22,13 @@
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=INFO
log4j.category.org.apache.ode.axis2.hooks.SessionInHandler=INFO
-log4j.category.org.apache.ode.bpel.engine=DEBUG
+log4j.category.org.apache.ode.bpel.engine=INFO
log4j.category.org.apache.ode.bpel.engine.cron=INFO
-log4j.category.org.apache.ode.daohib.bpel.CorrelatorDaoImpl=DEBUG
+log4j.category.org.apache.ode.daohib.bpel.CorrelatorDaoImpl=INFO
log4j.category.org.apache.ode.bpel.epr=INFO
-log4j.category.org.apache.ode.sql=DEBUG
+log4j.category.org.apache.ode.sql=INFO
# Console appender
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
Added: branches/ODE/ODE-1.x-jpa/axis2-war/src/test/TimeService-soapui-project.xml
===================================================================
--- branches/ODE/ODE-1.x-jpa/axis2-war/src/test/TimeService-soapui-project.xml (rev 0)
+++ branches/ODE/ODE-1.x-jpa/axis2-war/src/test/TimeService-soapui-project.xml 2010-05-28 05:11:17 UTC (rev 678)
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<con:soapui-project name="TimeService" resourceRoot="" soapui-version="3.5-beta1" xmlns:con="http://eviware.com/soapui/config"><con:settings/><con:interface xsi:type="con:WsdlInterface" wsaVersion="NONE" name="TimeServiceSoap" type="wsdl" bindingName="{http://ws.intalio.com/TimeService/}TimeServiceSoap" soapVersion="1_1" anonymous="optional" definition="file:/home/joker/mind/intalio/pxe/axis2-war/src/test/resources/TestCleanSuccess_All/TimeService.wsdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:settings/><con:definitionCache type="TEXT" rootPart="file:/home/joker/mind/intalio/pxe/axis2-war/src/test/resources/TestCleanSuccess_All/TimeService.wsdl"><con:part><con:url>file:/home/joker/mind/intalio/pxe/axis2-war/src/test/resources/TestCleanSuccess_All/TimeService.wsdl</con:url><con:content><![CDATA[<!--~ 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://ws.intalio.com/TimeService/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://ws.intalio.com/TimeService/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+ <wsdl:documentation>A sample Time service</wsdl:documentation>
+ <wsdl:types>
+ <s:schema elementFormDefault="qualified" targetNamespace="http://ws.intalio.com/TimeService/">
+ <s:element name="getUTCTime" type="s:string"/>
+ <s:element name="getUTCTimeResponse">
+ <s:complexType>
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="1" name="getUTCTimeResult" type="s:string"/>
+ </s:sequence>
+ </s:complexType>
+ </s:element>
+ <s:element name="getCityTime">
+ <s:complexType>
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="1" name="city" type="s:string"/>
+ </s:sequence>
+ </s:complexType>
+ </s:element>
+ <s:element name="getCityTimeResponse">
+ <s:complexType>
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="1" name="getCityTimeResult" type="s:string"/>
+ </s:sequence>
+ </s:complexType>
+ </s:element>
+ </s:schema>
+ </wsdl:types>
+ <wsdl:message name="getUTCTimeSoapIn">
+ <wsdl:part name="parameters" element="tns:getUTCTime"/>
+ </wsdl:message>
+ <wsdl:message name="getUTCTimeSoapOut">
+ <wsdl:part name="parameters" element="tns:getUTCTimeResponse"/>
+ </wsdl:message>
+ <wsdl:message name="getCityTimeSoapIn">
+ <wsdl:part name="parameters" element="tns:getCityTime"/>
+ </wsdl:message>
+ <wsdl:message name="getCityTimeSoapOut">
+ <wsdl:part name="parameters" element="tns:getCityTimeResponse"/>
+ </wsdl:message>
+ <wsdl:portType name="TimeServiceSoap">
+ <wsdl:operation name="getUTCTime">
+ <wsdl:input message="tns:getUTCTimeSoapIn"/>
+ <wsdl:output message="tns:getUTCTimeSoapOut"/>
+ </wsdl:operation>
+ <wsdl:operation name="getCityTime">
+ <wsdl:input message="tns:getCityTimeSoapIn"/>
+ <wsdl:output message="tns:getCityTimeSoapOut"/>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="TimeServiceSoap" type="tns:TimeServiceSoap">
+ <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
+ <wsdl:operation name="getUTCTime">
+ <soap:operation soapAction="http://ws.intalio.com/TimeService/getUTCTime" style="document"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="getCityTime">
+ <soap:operation soapAction="http://ws.intalio.com/TimeService/getCityTime" style="document"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="TimeService">
+ <wsdl:documentation>A sample Time service</wsdl:documentation>
+ <wsdl:port name="TimeServiceSoap" binding="tns:TimeServiceSoap">
+ <soap:address location="http://ws.intalio.com/TimeService/"/>
+ </wsdl:port>
+ </wsdl:service>
+</wsdl:definitions>]]></con:content><con:type>http://schemas.xmlsoap.org/wsdl/</con:type></con:part></con:definitionCache><con:endpoints><con:endpoint>http://ws.intalio.com/TimeService/</con:endpoint><con:endpoint>http://joker-laptop:8088/TimeService/</con:endpoint></con:endpoints><con:operation isOneWay="false" action="http://ws.intalio.com/TimeService/getCityTime" name="getCityTime" bindingOperationName="getCityTime" type="Request-Response" inputName="" receivesAttachments="false" sendsAttachments="false" anonymous="optional"><con:settings/><con:call name="Request 1"><con:settings/><con:encoding>UTF-8</con:encoding><con:endpoint>http://ws.intalio.com/TimeService/</con:endpoint><con:request><![CDATA[<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tim="http://ws.intalio.com/TimeService/">
+ <soapenv:Header/>
+ <soapenv:Body>
+ <tim:getCityTime>
+ <!--Optional:-->
+ <tim:city>?</tim:city>
+ </tim:getCityTime>
+ </soapenv:Body>
+</soapenv:Envelope>]]></con:request><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://ws.intalio.com/TimeService/getCityTime"/></con:call></con:operation><con:operation isOneWay="false" action="http://ws.intalio.com/TimeService/getUTCTime" name="getUTCTime" bindingOperationName="getUTCTime" type="Request-Response" inputName="" receivesAttachments="false" sendsAttachments="false" anonymous="optional"><con:settings/><con:call name="Request 1"><con:settings/><con:encoding>UTF-8</con:encoding><con:endpoint>http://ws.intalio.com/TimeService/</con:endpoint><con:request><![CDATA[<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tim="http://ws.intalio.com/TimeService/">
+ <soapenv:Header/>
+ <soapenv:Body>
+ <tim:getUTCTime>?</tim:getUTCTime>
+ </soapenv:Body>
+</soapenv:Envelope>]]></con:request><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://ws.intalio.com/TimeService/getUTCTime"/></con:call></con:operation></con:interface><con:mockService port="8088" path="/TimeService/" host="joker-laptop" name="TimeServiceSoap MockService" bindToHostOnly="false" docroot=""><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.mock.WsdlMockService@require-soap-action">false</con:setting></con:settings><con:mockOperation name="getCityTime" interface="TimeServiceSoap" operation="getCityTime"><con:settings/><con:dispatchStyle>SEQUENCE</con:dispatchStyle><con:defaultResponse>Response 1</con:defaultResponse><con:response name="Response 1" encoding="UTF-8"><con:settings/><con:responseContent><![CDATA[<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tim="http://ws.intalio.com/TimeService/">
+ <soapenv:Header/>
+ <soapenv:Body>
+ <tim:getCityTimeResponse>
+ <!--Optional:-->
+ <tim:getCityTimeResult>?</tim:getCityTimeResult>
+ </tim:getCityTimeResponse>
+ </soapenv:Body>
+</soapenv:Envelope>]]></con:responseContent><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://ws.intalio.com/TimeService/getCityTime"/></con:response><con:dispatchConfig/></con:mockOperation><con:mockOperation name="getUTCTime" interface="TimeServiceSoap" operation="getUTCTime"><con:settings/><con:dispatchStyle>SEQUENCE</con:dispatchStyle><con:defaultResponse>Response 1</con:defaultResponse><con:response name="Response 1" encoding="UTF-8"><con:settings/><con:responseContent><![CDATA[<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tim="http://ws.intalio.com/TimeService/">
+ <soapenv:Header/>
+ <soapenv:Body>
+ <tim:getUTCTimeResponse>
+ <!--Optional:-->
+ <tim:getUTCTimeResult>?</tim:getUTCTimeResult>
+ </tim:getUTCTimeResponse>
+ </soapenv:Body>
+</soapenv:Envelope>]]></con:responseContent><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://ws.intalio.com/TimeService/getUTCTime"/></con:response><con:dispatchConfig/></con:mockOperation><con:properties/></con:mockService><con:properties/><con:wssContainer/></con:soapui-project>
\ No newline at end of file
Added: branches/ODE/ODE-1.x-jpa/axis2-war/src/test/java/org/apache/ode/axis2/SelectorsTest.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/axis2-war/src/test/java/org/apache/ode/axis2/SelectorsTest.java (rev 0)
+++ branches/ODE/ODE-1.x-jpa/axis2-war/src/test/java/org/apache/ode/axis2/SelectorsTest.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -0,0 +1,50 @@
+/*
+ * 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;
+
+import org.testng.annotations.Test;
+import static org.testng.AssertJUnit.assertTrue;
+
+/**
+ * Tests that timeouts set in the *.endpoint files are applied.
+ * The test is designed so a fault must be received.
+ *
+ * Actually, the process invokes a 3-sec long operation (see the process request).
+ * The specified timeouts are lesser than 3-sec, so if properly applied, a fault should be trown.
+ * If not applied, the default 120-sec timeouts will be used. 5sec < 120sec, so the request will succeed.
+ *
+ */
+public class SelectorsTest extends Axis2TestBase implements ODEConfigDirAware {
+ @Test(dataProvider="configs")
+ public void testNoP2P() throws Exception {
+ String bundleName = "TestSelectors";
+ if (server.isDeployed(bundleName)) server.undeployProcess(bundleName);
+ server.deployProcess(bundleName);
+ String response = server.sendRequestFile("http://localhost:8888/ode/processes/Project-Reproduce-Isolation-Problem/R...",
+ bundleName, "testRequest.soap");
+ System.out.println(response);
+ assertTrue(response.contains("_21Response"));
+ if (server.isDeployed(bundleName)) server.undeployProcess(bundleName);
+ }
+
+ public String getODEConfigDir() {
+ return HIB_DERBY_CONF_DIR;
+ }
+}
\ No newline at end of file
Modified: branches/ODE/ODE-1.x-jpa/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/ProcessCronCleanupTest.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/ProcessCronCleanupTest.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/ProcessCronCleanupTest.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -1,3 +1,21 @@
+/*
+ * 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.instancecleanup;
import org.apache.ode.dao.bpel.ProcessDAO;
Modified: branches/ODE/ODE-1.x-jpa/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/SystemCronCleanupTest.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/SystemCronCleanupTest.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/SystemCronCleanupTest.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -1,3 +1,21 @@
+/*
+ * 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.instancecleanup;
import org.apache.commons.logging.LogFactory;
Added: branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool2.bpel
===================================================================
--- branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool2.bpel (rev 0)
+++ branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool2.bpel 2010-05-28 05:11:17 UTC (rev 678)
@@ -0,0 +1,102 @@
+<?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.
+ -->
+<bpel:process xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable" xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop" xmlns:pnlk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ode="http://www.apache.org/ode/type/extension" xmlns:Pool3="http://example.com/ReproduceIsolationProblem/Pool3" xmlns:this="http://example.com/ReproduceIsolationProblem/Pool2" xmlns:Pool="http://example.com/ReproduceIsolationProblem/Pool" xmlns:diag="http://example.com/ReproduceIsolationProblem" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:bpmn="http://www.intalio.com/bpms" xmlns:atomic="http://ode.apache.org/atomicScope" queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0" expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0" bpmn:label="Pool2" name="Pool2" bpmn:id="_bR-rAFOnEd-qUNL1xc5jrA" t!
argetNamespace="http://example.com/ReproduceIsolationProblem/Pool2">
+ <bpel:import namespace="http://example.com/ReproduceIsolationProblem" location="ReproduceIsolationProblem.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
+ <bpel:import namespace="http://example.com/ReproduceIsolationProblem/Pool2" location="ReproduceIsolationProblem-Pool2.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
+ <bpel:import namespace="http://example.com/ReproduceIsolationProblem/Pool3" location="ReproduceIsolationProblem-Pool3.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
+ <bpel:partnerLinks>
+ <bpel:partnerLink name="pool2AndPoolPlkVar" partnerLinkType="diag:Pool2AndPool" myRole="Pool2_for_Pool"/>
+ <bpel:partnerLink name="pool3AndPool2PlkVar" partnerLinkType="diag:Pool3AndPool2" initializePartnerRole="yes" partnerRole="Pool3_for_Pool2"/>
+ </bpel:partnerLinks>
+ <bpel:variables>
+ <bpel:variable name="this_21RequestMsg" messageType="this:_21Request"/>
+ <bpel:variable name="pool3_31RequestMsg" messageType="Pool3:_31Request"/>
+ <bpel:variable name="pool3_32RequestMsg" messageType="Pool3:_32Request"/>
+ <bpel:variable name="pool3_33RequestMsg" messageType="Pool3:_33Request"/>
+ <bpel:variable name="pool3_32ResponseMsg" messageType="Pool3:_32Response"/>
+ <bpel:variable name="pool3_33ResponseMsg" messageType="Pool3:_33Response"/>
+ <bpel:variable name="this_21ResponseMsg" messageType="this:_21Response"/>
+ </bpel:variables>
+ <bpel:sequence>
+ <bpel:receive partnerLink="pool2AndPoolPlkVar" portType="this:ForPool" operation="_21" variable="this_21RequestMsg" createInstance="yes" bpmn:label="21" name="_21" bpmn:id="_bzzlsFOnEd-qUNL1xc5jrA"></bpel:receive>
+ <bpel:assign name="init-variables-Pool2" bpmn:id="_bzzlsFOnEd-qUNL1xc5jrA">
+ <bpel:copy bpmn:label="$pool3_31RequestMsg">
+ <bpel:from>
+ <bpel:literal>
+<Pool3:_31Request></Pool3:_31Request></bpel:literal>
+ </bpel:from>
+ <bpel:to>$pool3_31RequestMsg.body</bpel:to>
+ </bpel:copy>
+ <bpel:copy bpmn:label="$pool3_32RequestMsg">
+ <bpel:from>
+ <bpel:literal>
+<Pool3:_32Request></Pool3:_32Request></bpel:literal>
+ </bpel:from>
+ <bpel:to>$pool3_32RequestMsg.body</bpel:to>
+ </bpel:copy>
+ <bpel:copy bpmn:label="$pool3_33RequestMsg">
+ <bpel:from>
+ <bpel:literal>
+<Pool3:_33Request></Pool3:_33Request></bpel:literal>
+ </bpel:from>
+ <bpel:to>$pool3_33RequestMsg.body</bpel:to>
+ </bpel:copy>
+ <bpel:copy bpmn:label="$this_21ResponseMsg">
+ <bpel:from>
+ <bpel:literal>
+<this:_21Response></this:_21Response></bpel:literal>
+ </bpel:from>
+ <bpel:to>$this_21ResponseMsg.body</bpel:to>
+ </bpel:copy>
+ </bpel:assign>
+ <bpel:assign bpmn:label="22" name="_22" bpmn:id="_lf1mIFOnEd-qUNL1xc5jrA">
+ <bpel:copy>
+ <bpel:from>$ode:pid</bpel:from>
+ <bpel:to>$pool3_31RequestMsg.body</bpel:to>
+ </bpel:copy>
+ </bpel:assign>
+ <bpel:invoke partnerLink="pool3AndPool2PlkVar" portType="Pool3:ForPool2" operation="_31" inputVariable="pool3_31RequestMsg" bpmn:label="22" name="_22-1" bpmn:id="_lf1mIFOnEd-qUNL1xc5jrA"></bpel:invoke>
+ <bpel:flow bpmn:label="Parallel_Gateway" name="Parallel_Gateway" bpmn:id="_iyPXcFOnEd-qUNL1xc5jrA">
+ <bpel:sequence>
+ <bpel:assign bpmn:label="23" name="_23" bpmn:id="_vhobMFOnEd-qUNL1xc5jrA">
+ <bpel:copy>
+ <bpel:from>$ode:pid</bpel:from>
+ <bpel:to>$pool3_32RequestMsg.body</bpel:to>
+ </bpel:copy>
+ </bpel:assign>
+ <bpel:invoke partnerLink="pool3AndPool2PlkVar" portType="Pool3:ForPool2" operation="_32" inputVariable="pool3_32RequestMsg" outputVariable="pool3_32ResponseMsg" bpmn:label="23" name="_23-1" bpmn:id="_vhobMFOnEd-qUNL1xc5jrA"></bpel:invoke>
+ </bpel:sequence>
+ <bpel:sequence>
+ <bpel:wait bpmn:label="wait 10 sec" name="wait_10_sec" bpmn:id="_wlu8gFOnEd-qUNL1xc5jrA">
+ <bpel:for>"PT1S"</bpel:for>
+ </bpel:wait>
+ <bpel:assign bpmn:label="34" name="_34" bpmn:id="_xAHLYFOnEd-qUNL1xc5jrA">
+ <bpel:copy>
+ <bpel:from>$ode:pid</bpel:from>
+ <bpel:to>$pool3_33RequestMsg.body</bpel:to>
+ </bpel:copy>
+ </bpel:assign>
+ <bpel:invoke partnerLink="pool3AndPool2PlkVar" portType="Pool3:ForPool2" operation="_33" inputVariable="pool3_33RequestMsg" outputVariable="pool3_33ResponseMsg" bpmn:label="34" name="_34-1" bpmn:id="_xAHLYFOnEd-qUNL1xc5jrA"></bpel:invoke>
+ </bpel:sequence>
+ </bpel:flow>
+ <bpel:invoke partnerLink="pool3AndPool2PlkVar" portType="Pool3:ForPool2" operation="_33" inputVariable="pool3_33RequestMsg" outputVariable="pool3_33ResponseMsg" bpmn:label="34" name="_34-1" bpmn:id="_xAHLYFOnEd-qUNL1xc5jrA"></bpel:invoke>
+ <bpel:reply partnerLink="pool2AndPoolPlkVar" portType="this:ForPool" operation="_21" variable="this_21ResponseMsg" bpmn:label="Task" name="Task" bpmn:id="_7W620FRaEd-y87rmjcz7YQ"></bpel:reply>
+ </bpel:sequence>
+</bpel:process>
Added: branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool2.wsdl
===================================================================
--- branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool2.wsdl (rev 0)
+++ branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool2.wsdl 2010-05-28 05:11:17 UTC (rev 678)
@@ -0,0 +1,56 @@
+<?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 xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:pnlk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable" xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop" xmlns:this="http://example.com/ReproduceIsolationProblem/Pool2" xmlns:Pool3="http://example.com/ReproduceIsolationProblem/Pool3" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Pool="http://example.com/ReproduceIsolationProblem/Pool" xmlns:diag="http://example.com/ReproduceIsolationProblem" xmlns:xml="http://www.w3.org/XML/1998/namespace" targetNamespace="http://example.com/ReproduceIsolationProblem/Pool2">
+ <wsdl:types>
+ <xs:schema elementFormDefault="qualified" targetNamespace="http://example.com/ReproduceIsolationProblem/Pool2">
+ <xs:element name="_21Request" type="xs:string"/>
+ <xs:element name="_21Response" type="xs:string"/>
+ </xs:schema>
+ </wsdl:types>
+ <wsdl:message name="_21Request">
+ <wsdl:part name="body" element="this:_21Request"/>
+ </wsdl:message>
+ <wsdl:message name="_21Response">
+ <wsdl:part name="body" element="this:_21Response"/>
+ </wsdl:message>
+ <wsdl:portType name="ForPool">
+ <wsdl:operation name="_21">
+ <wsdl:input message="this:_21Request" name="_21"/>
+ <wsdl:output message="this:_21Response" name="_21Response"/>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="CanonicBindingForPool" type="this:ForPool">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+ <wsdl:operation name="_21">
+ <soap:operation style="document" soapAction="http://example.com/ReproduceIsolationProblem/Pool2/ForPool/_21"/>
+ <wsdl:input name="_21">
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output name="_21Response">
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="CanonicServiceForPool">
+ <wsdl:port name="canonicPort" binding="this:CanonicBindingForPool">
+ <soap:address location="http://localhost:8080/ode/processes/Project-Reproduce-Isolation-Problem/R..."/>
+ </wsdl:port>
+ </wsdl:service>
+</wsdl:definitions>
Added: branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool3.bpel
===================================================================
--- branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool3.bpel (rev 0)
+++ branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool3.bpel 2010-05-28 05:11:17 UTC (rev 678)
@@ -0,0 +1,127 @@
+<?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.
+ -->
+<bpel:process xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable" xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop" xmlns:pnlk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ode="http://www.apache.org/ode/type/extension" xmlns:this="http://example.com/ReproduceIsolationProblem/Pool3" xmlns:Pool2="http://example.com/ReproduceIsolationProblem/Pool2" xmlns:diag="http://example.com/ReproduceIsolationProblem" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:bpmn="http://www.intalio.com/bpms" xmlns:atomic="http://ode.apache.org/atomicScope" queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0" expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0" bpmn:label="Pool3" name="Pool3" bpmn:id="_jihk4FOnEd-qUNL1xc5jrA" targetNamespace="http://example.com/ReproduceIsolationProblem/Po!
ol3">
+ <bpel:import namespace="http://example.com/ReproduceIsolationProblem" location="ReproduceIsolationProblem.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
+ <bpel:import namespace="http://example.com/ReproduceIsolationProblem/Pool3" location="ReproduceIsolationProblem-Pool3.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
+ <bpel:partnerLinks>
+ <bpel:partnerLink name="pool3AndPool2PlkVar" partnerLinkType="diag:Pool3AndPool2" myRole="Pool3_for_Pool2"/>
+ </bpel:partnerLinks>
+ <bpel:correlationSets>
+ <bpel:correlationSet name="newCorrelationSet" properties="this:prop"/>
+ </bpel:correlationSets>
+ <bpel:variables>
+ <bpel:variable name="this_31RequestMsg" messageType="this:_31Request"/>
+ </bpel:variables>
+ <bpel:sequence>
+ <bpel:receive partnerLink="pool3AndPool2PlkVar" portType="this:ForPool2" operation="_31" variable="this_31RequestMsg" createInstance="yes" bpmn:label="31" name="_31" bpmn:id="_k1rO0FOnEd-qUNL1xc5jrA">
+ <bpel:correlations>
+ <bpel:correlation set="newCorrelationSet" initiate="join"/>
+ </bpel:correlations>
+ </bpel:receive>
+ <bpel:scope bpmn:label="outer-SubProcess" name="outer-SubProcess" bpmn:id="_-IzjIFOrEd-qUNL1xc5jrA">
+ <bpel:forEach bpmn:label="SubProcess" name="SubProcess" bpmn:id="_-IzjIFOrEd-qUNL1xc5jrA" parallel="no" counterName="emptyCounter">
+ <bpel:startCounterValue>0</bpel:startCounterValue>
+ <bpel:finalCounterValue>2</bpel:finalCounterValue>
+ <completionCondition>
+ <bpel:branches>2</bpel:branches>
+ </completionCondition>
+ <bpel:scope bpmn:label="SubProcess" name="SubProcess-1" bpmn:id="_-IzjIFOrEd-qUNL1xc5jrA">
+ <bpel:variables>
+ <bpel:variable name="this_33RequestMsg" messageType="this:_33Request"/>
+ <bpel:variable name="this_32ResponseMsg" messageType="this:_32Response"/>
+ <bpel:variable name="this_32RequestMsg" messageType="this:_32Request"/>
+ <bpel:variable name="this_33ResponseMsg" messageType="this:_33Response"/>
+ </bpel:variables>
+ <bpel:sequence>
+ <bpel:assign name="init-variables-SubProcess" bpmn:id="_-IzjIFOrEd-qUNL1xc5jrA">
+ <bpel:copy bpmn:label="$this_32ResponseMsg">
+ <bpel:from>
+ <bpel:literal>
+<this:_32Response></this:_32Response></bpel:literal>
+ </bpel:from>
+ <bpel:to>$this_32ResponseMsg.body</bpel:to>
+ </bpel:copy>
+ <bpel:copy bpmn:label="$this_33ResponseMsg">
+ <bpel:from>
+ <bpel:literal>
+<this:_33Response></this:_33Response></bpel:literal>
+ </bpel:from>
+ <bpel:to>$this_33ResponseMsg.body</bpel:to>
+ </bpel:copy>
+ </bpel:assign>
+ <bpel:pick bpmn:label="Exclusive_Event-Based_Gateway" name="Exclusive_Event-Based_Gateway" bpmn:id="_rFdx4FOnEd-qUNL1xc5jrA">
+ <bpel:onMessage partnerLink="pool3AndPool2PlkVar" portType="this:ForPool2" operation="_32" variable="this_32RequestMsg" bpmn:label="32" name="_32" bpmn:id="_tDPGIFOnEd-qUNL1xc5jrA">
+ <bpel:correlations>
+ <bpel:correlation set="newCorrelationSet" initiate="join"/>
+ </bpel:correlations>
+ <bpel:sequence>
+ <bpel:assign name="init-variables-SubProcess" bpmn:id="_-IzjIFOrEd-qUNL1xc5jrA">
+ <bpel:copy bpmn:label="$this_32ResponseMsg">
+ <bpel:from>
+ <bpel:literal>
+<this:_32Response></this:_32Response></bpel:literal>
+ </bpel:from>
+ <bpel:to>$this_32ResponseMsg.body</bpel:to>
+ </bpel:copy>
+ <bpel:copy bpmn:label="$this_33ResponseMsg">
+ <bpel:from>
+ <bpel:literal>
+<this:_33Response></this:_33Response></bpel:literal>
+ </bpel:from>
+ <bpel:to>$this_33ResponseMsg.body</bpel:to>
+ </bpel:copy>
+ </bpel:assign>
+ <bpel:wait bpmn:label="wait 30 seconds" name="wait_30_seconds" bpmn:id="_0iKV0FOnEd-qUNL1xc5jrA">
+ <bpel:for>"PT3S"</bpel:for>
+ </bpel:wait>
+ <bpel:reply partnerLink="pool3AndPool2PlkVar" portType="this:ForPool2" operation="_32" variable="this_32ResponseMsg" bpmn:label="34" name="_34" bpmn:id="_2OMZ0FOnEd-qUNL1xc5jrA"></bpel:reply>
+ </bpel:sequence>
+ </bpel:onMessage>
+ <bpel:onMessage partnerLink="pool3AndPool2PlkVar" portType="this:ForPool2" operation="_33" variable="this_33RequestMsg" bpmn:label="33" name="_33" bpmn:id="_uhaUUFOnEd-qUNL1xc5jrA">
+ <bpel:correlations>
+ <bpel:correlation set="newCorrelationSet" initiate="join"/>
+ </bpel:correlations>
+ <bpel:sequence>
+ <bpel:assign name="init-variables-SubProcess" bpmn:id="_-IzjIFOrEd-qUNL1xc5jrA">
+ <bpel:copy bpmn:label="$this_32ResponseMsg">
+ <bpel:from>
+ <bpel:literal>
+<this:_32Response></this:_32Response></bpel:literal>
+ </bpel:from>
+ <bpel:to>$this_32ResponseMsg.body</bpel:to>
+ </bpel:copy>
+ <bpel:copy bpmn:label="$this_33ResponseMsg">
+ <bpel:from>
+ <bpel:literal>
+<this:_33Response></this:_33Response></bpel:literal>
+ </bpel:from>
+ <bpel:to>$this_33ResponseMsg.body</bpel:to>
+ </bpel:copy>
+ </bpel:assign>
+ <bpel:reply partnerLink="pool3AndPool2PlkVar" portType="this:ForPool2" operation="_33" variable="this_33ResponseMsg" bpmn:label="33 reply" name="_33_reply" bpmn:id="_xW4AYFO5Ed-_Q-SZnn1pGA"></bpel:reply>
+ </bpel:sequence>
+ </bpel:onMessage>
+ </bpel:pick>
+ </bpel:sequence>
+ </bpel:scope>
+ </bpel:forEach>
+ </bpel:scope>
+ </bpel:sequence>
+</bpel:process>
Added: branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool3.wsdl
===================================================================
--- branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool3.wsdl (rev 0)
+++ branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool3.wsdl 2010-05-28 05:11:17 UTC (rev 678)
@@ -0,0 +1,100 @@
+<?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 xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:pnlk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable" xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop" xmlns:this="http://example.com/ReproduceIsolationProblem/Pool3" xmlns:Pool2="http://example.com/ReproduceIsolationProblem/Pool2" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:diag="http://example.com/ReproduceIsolationProblem" xmlns:xml="http://www.w3.org/XML/1998/namespace" targetNamespace="http://example.com/ReproduceIsolationProblem/Pool3">
+ <wsdl:types>
+ <xs:schema elementFormDefault="qualified" targetNamespace="http://example.com/ReproduceIsolationProblem/Pool3">
+ <xs:element name="_31Request" type="xs:string"/>
+ <xs:element name="_32Request" type="xs:string"/>
+ <xs:element name="_32Response" type="xs:string"/>
+ <xs:element name="_33Request" type="xs:string"/>
+ <xs:element name="_33Response" type="xs:string"/>
+ </xs:schema>
+ </wsdl:types>
+ <wsdl:message name="_31Request">
+ <wsdl:part name="body" element="this:_31Request"/>
+ </wsdl:message>
+ <wsdl:message name="_32Request">
+ <wsdl:part name="body" element="this:_32Request"/>
+ </wsdl:message>
+ <wsdl:message name="_32Response">
+ <wsdl:part name="body" element="this:_32Response"/>
+ </wsdl:message>
+ <wsdl:message name="_33Request">
+ <wsdl:part name="body" element="this:_33Request"/>
+ </wsdl:message>
+ <wsdl:message name="_33Response">
+ <wsdl:part name="body" element="this:_33Response"/>
+ </wsdl:message>
+ <wsdl:portType name="ForPool2">
+ <wsdl:operation name="_31">
+ <wsdl:input message="this:_31Request" name="_31"/>
+ </wsdl:operation>
+ <wsdl:operation name="_32">
+ <wsdl:input message="this:_32Request" name="_32"/>
+ <wsdl:output message="this:_32Response" name="_32Response"/>
+ </wsdl:operation>
+ <wsdl:operation name="_33">
+ <wsdl:input message="this:_33Request" name="_33"/>
+ <wsdl:output message="this:_33Response" name="_33Response"/>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="CanonicBindingForPool2" type="this:ForPool2">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+ <wsdl:operation name="_31">
+ <soap:operation style="document" soapAction="http://example.com/ReproduceIsolationProblem/Pool3/ForPool2/_31"/>
+ <wsdl:input name="_31">
+ <soap:body use="literal"/>
+ </wsdl:input>
+ </wsdl:operation>
+ <wsdl:operation name="_32">
+ <soap:operation style="document" soapAction="http://example.com/ReproduceIsolationProblem/Pool3/ForPool2/_32"/>
+ <wsdl:input name="_32">
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output name="_32Response">
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="_33">
+ <soap:operation style="document" soapAction="http://example.com/ReproduceIsolationProblem/Pool3/ForPool2/_33"/>
+ <wsdl:input name="_33">
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output name="_33Response">
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="CanonicServiceForPool2">
+ <wsdl:port name="canonicPort" binding="this:CanonicBindingForPool2">
+ <soap:address location="http://localhost:8080/ode/processes/Project-Reproduce-Isolation-Problem/R..."/>
+ </wsdl:port>
+ </wsdl:service>
+ <vprop:property name="prop" type="xs:string"/>
+ <vprop:propertyAlias propertyName="this:prop" messageType="this:_31Request" part="body">
+ <vprop:query>text()</vprop:query>
+ </vprop:propertyAlias>
+ <vprop:propertyAlias propertyName="this:prop" messageType="this:_33Request" part="body">
+ <vprop:query>text()</vprop:query>
+ </vprop:propertyAlias>
+ <vprop:propertyAlias propertyName="this:prop" messageType="this:_32Request" part="body">
+ <vprop:query>text()</vprop:query>
+ </vprop:propertyAlias>
+</wsdl:definitions>
Added: branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem.svg
===================================================================
--- branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem.svg (rev 0)
+++ branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem.svg 2010-05-28 05:11:17 UTC (rev 678)
@@ -0,0 +1,739 @@
+<?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.
+ -->
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-dasharray="none" shape-rendering="auto" font-family="'Dialog'" width="1549" text-rendering="auto" fill-opacity="1" contentScriptType="text/ecmascript" color-interpolation="auto" color-rendering="auto" preserveAspectRatio="xMidYMid meet" font-size="12" viewBox="0 0 1549 814" fill="black" stroke="black" image-rendering="auto" stroke-miterlimit="10" zoomAndPan="magnify" version="1.0" stroke-linecap="square" stroke-linejoin="miter" contentStyleType="text/css" font-style="normal" height="814" stroke-width="1" stroke-dashoffset="0" font-weight="normal" stroke-opacity="1" xmlns:bpmn="http://www.intalio.com/bpms">
+<!--Generated by the Batik Graphics2D SVG Generator-->
+<defs id="genericDefs"/>
+<g>
+<defs id="defs1">
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath1">
+<path d="M38 38 L1540 38 L1540 240 L38 240 L38 38 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath2">
+<path d="M44 123 L66 123 L66 154 L44 154 L44 123 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3">
+<path d="M125 114 L238 114 L238 177 L125 177 L125 114 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4">
+<path d="M166 135 L193 135 L193 151 L166 151 L166 135 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath5">
+<path d="M64 39 L1539 39 L1539 239 L64 239 L64 39 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath6">
+<path d="M38 272 L1540 272 L1540 543 L38 543 L38 272 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath7">
+<path d="M44 388 L66 388 L66 426 L44 426 L44 388 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath8">
+<path d="M108 319 L221 319 L221 382 L108 382 L108 319 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath9">
+<path d="M154 340 L170 340 L170 356 L154 356 L154 340 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath10">
+<path d="M411 319 L467 319 L467 375 L411 375 L411 319 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath11">
+<path d="M411 319 L463 319 L463 371 L411 371 L411 319 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath12">
+<path d="M259 319 L372 319 L372 382 L259 382 L259 319 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath13">
+<path d="M305 340 L321 340 L321 356 L305 356 L305 340 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath14">
+<path d="M651 302 L764 302 L764 365 L651 365 L651 302 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath15">
+<path d="M697 323 L713 323 L713 339 L697 339 L697 323 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath16">
+<path d="M459 425 L495 425 L495 461 L459 461 L459 425 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath17">
+<path d="M459 425 L491 425 L491 457 L459 457 L459 425 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath18">
+<path d="M446 463 L509 463 L509 479 L446 479 L446 463 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath19">
+<path d="M576 411 L689 411 L689 474 L576 474 L576 411 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath20">
+<path d="M622 432 L638 432 L638 448 L622 448 L622 432 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath21">
+<path d="M902 315 L1015 315 L1015 378 L902 378 L902 315 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath22">
+<path d="M943 336 L970 336 L970 352 L943 352 L943 336 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath23">
+<path d="M64 273 L1539 273 L1539 542 L64 542 L64 273 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath24">
+<path d="M38 557 L1540 557 L1540 805 L38 805 L38 557 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath25">
+<path d="M44 662 L66 662 L66 700 L44 700 L44 662 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath26">
+<path d="M245 610 L358 610 L358 673 L245 673 L245 610 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath27">
+<path d="M291 631 L307 631 L307 647 L291 647 L291 631 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath28">
+<path d="M437 575 L1010 575 L1010 799 L437 799 L437 575 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath29">
+<path d="M586 580 L699 580 L699 643 L586 643 L586 580 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath30">
+<path d="M632 601 L648 601 L648 617 L632 617 L632 601 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath31">
+<path d="M888 580 L1001 580 L1001 643 L888 643 L888 580 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath32">
+<path d="M934 601 L950 601 L950 617 L934 617 L934 601 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath33">
+<path d="M442 643 L498 643 L498 699 L442 699 L442 643 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath34">
+<path d="M442 643 L494 643 L494 695 L442 695 L442 643 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath35">
+<path d="M795 594 L831 594 L831 630 L795 630 L795 594 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath36">
+<path d="M795 594 L827 594 L827 626 L795 626 L795 594 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath37">
+<path d="M768 632 L858 632 L858 648 L768 648 L768 632 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath38">
+<path d="M705 692 L818 692 L818 755 L705 755 L705 692 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath39">
+<path d="M751 713 L767 713 L767 729 L751 729 L751 713 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath40">
+<path d="M859 692 L972 692 L972 755 L859 755 L859 692 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath41">
+<path d="M890 713 L936 713 L936 729 L890 729 L890 713 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath42">
+<path d="M64 558 L1539 558 L1539 804 L64 804 L64 558 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath43">
+<path d="M-1 -1 L1550 -1 L1550 815 L-1 815 L-1 -1 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath44">
+<path d="M895 331 L905 331 L905 340 L895 340 L895 331 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath45">
+<path d="M644 327 L654 327 L654 336 L644 336 L644 327 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath46">
+<path d="M404 341 L414 341 L414 350 L404 350 L404 341 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath47">
+<path d="M252 344 L262 344 L262 353 L252 353 L252 344 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath48">
+<path d="M569 436 L579 436 L579 445 L569 445 L569 436 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath49">
+<path d="M895 350 L905 350 L905 359 L895 359 L895 350 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath50">
+<path d="M452 437 L462 437 L462 446 L452 446 L452 437 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath51">
+<path d="M579 605 L589 605 L589 614 L579 614 L579 605 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath52">
+<path d="M788 605 L798 605 L798 614 L788 614 L788 605 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath53">
+<path d="M430 676 L440 676 L440 685 L430 685 L430 676 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath54">
+<path d="M698 717 L708 717 L708 726 L698 726 L698 717 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath55">
+<path d="M852 717 L862 717 L862 726 L852 726 L852 717 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath56">
+<path d="M881 605 L891 605 L891 614 L881 614 L881 605 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath57">
+<path d="M156 167 L166 167 L166 177 L156 177 L156 167 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath58">
+<path d="M156 313 L167 313 L167 322 L156 322 L156 313 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath59">
+<path d="M308 372 L318 372 L318 382 L308 382 L308 372 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath60">
+<path d="M294 604 L305 604 L305 613 L294 613 L294 604 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath61">
+<path d="M682 355 L692 355 L692 365 L682 365 L682 355 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath62">
+<path d="M635 574 L646 574 L646 583 L635 583 L635 574 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath63">
+<path d="M607 464 L617 464 L617 474 L607 474 L607 464 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath64">
+<path d="M754 686 L765 686 L765 695 L754 695 L754 686 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath65">
+<path d="M937 576 L947 576 L947 586 L937 586 L937 576 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath66">
+<path d="M717 359 L728 359 L728 368 L717 368 L717 359 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath67">
+<path d="M908 688 L918 688 L918 698 L908 698 L908 688 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath68">
+<path d="M642 468 L653 468 L653 477 L642 477 L642 468 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath69">
+<path d="M951 311 L961 311 L961 321 L951 321 L951 311 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath70">
+<path d="M191 171 L202 171 L202 180 L191 180 L191 171 Z"/>
+</clipPath>
+</defs>
+<g font-size="16" fill="rgb(139,139,153)" font-family="'Arial'" stroke-linejoin="round" stroke="rgb(139,139,153)" stroke-miterlimit="0">
+<rect x="39" y="39" clip-path="url(#clipPath1)" width="26" height="200" stroke="none" bpmn:process-id="_ao2OcFOnEd-qUNL1xc5jrA" bpmn:process-name="Pool"/>
+<rect x="65" y="39" clip-path="url(#clipPath1)" fill="rgb(232,232,255)" width="1474" height="200" stroke="none"/>
+<rect x="39" y="39" clip-path="url(#clipPath1)" fill="none" width="1500" height="200" stroke="black" bpmn:process-id="_ao2OcFOnEd-qUNL1xc5jrA" bpmn:process-name="Pool"/>
+<image stroke="black" width="14" xlink:show="embed" xlink:type="simple" fill="black" clip-path="url(#clipPath2)" preserveAspectRatio="none" height="25" x="45" y="124" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAZCAYAAAABmx/yAAABmklEQVR42mPs7p75
nwEKnv9hwAskWRBsFmSJuX0b8GqsKQvArrEs9CMDsQBFI5tiPJgGuf3Oj/8MV1//
YWBiZGDQEGZhUOVkxK0RBo4//cGwe95KBvX/N4A8RoZl/1UYnBMjGGzluPBrPLBm
OUOe908GQZ0kMP/D1X0M0zesYLDNS4KrYcLqga83GQSNUoBuVwVjAcNkhv9fb6Mo
waqRE+jJK58YGX4D2SB85RMTA8fff4T9GGijzLBw4iIGVl1HMP/X5f0M8bZKhDUq
2EUxlIovY3h1ZQaYLxaizMClEUNY439GboanCikMV7m/QaODi0GVkZGBcTQ6yIwO
UAKXJTU6PgFds+HmN4YXTz8xyCvGMPgGMzNwgeOAFRy6ODWu3HGF4e+xuQxO4r8Z
TuznYFjnmskQ46BMOD/eOraCoSXbl4FdwoRB/eFRhvbFKxgYHKqxakQN1Z+vGdgl
gQHCyMfAK+/K8PvTY5wlAJbogPqFkQUaVEQUHSBw8uM/nHxzfibsGqVB6bSzAyff
vK0Ku8a86ig0+61xOhUA6Higf32xHwgAAAAASUVORK5CYII=" xlink:actuate="onLoad"/>
+<rect x="129" y="118" clip-path="url(#clipPath3)" fill="black" width="107" rx="3.5" opacity="0.2745" ry="3.5" height="57" stroke="none"/>
+<rect x="126" y="115" clip-path="url(#clipPath3)" fill="white" width="107" rx="4.5" ry="4.5" height="57" stroke="none"/>
+<rect x="126" y="115" clip-path="url(#clipPath3)" fill="none" width="106" rx="4" ry="4" height="56" stroke="black"/>
+<text x="167" y="151" clip-path="url(#clipPath4)" fill="black" stroke="none" xml:space="preserve">Task</text>
+<line clip-path="url(#clipPath5)" fill="none" x1="65" x2="65" y1="40" y2="237" stroke="rgb(169,169,169)"/>
+<rect x="39" y="39" clip-path="url(#clipPath1)" fill="none" width="1500" height="200" stroke="rgb(169,169,169)" bpmn:process-id="_ao2OcFOnEd-qUNL1xc5jrA" bpmn:process-name="Pool"/>
+<rect x="39" y="273" clip-path="url(#clipPath6)" fill="rgb(232,232,255)" width="1500" height="269" stroke="none" bpmn:process-id="_bR-rAFOnEd-qUNL1xc5jrA" bpmn:process-name="Pool2"/>
+<rect x="39" y="273" clip-path="url(#clipPath6)" fill="none" width="1500" height="269" stroke="black" bpmn:process-id="_bR-rAFOnEd-qUNL1xc5jrA" bpmn:process-name="Pool2"/>
+<image stroke="black" width="14" xlink:show="embed" xlink:type="simple" fill="black" clip-path="url(#clipPath7)" preserveAspectRatio="none" height="32" x="45" y="389" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAgCAYAAAAi7kmXAAACfElEQVR42u2UbUhT
YRTH//e6xcrSOTSSGYWURRBJbWorBjp7h2AtIlhYS9fLtK3g4getMEFWw/qiZvPD
iKVFRPZB2m5RYtgiMCsYFFEj+hBuvQ1Gsjnn1t11W1vubtbnDhy45zz39zzPeXkO
4XZHIohJmNGXfuBbEKhcAhSQSMjdr2Goin47kpaAa2NeHJadgFG6A4ozNN75E3ui
UapI/jUVNFMNeHjuCx7RCrRManDweC/c07HFwAg3SPocEO+7DX5pM/b3PsfJiBEa
ow1TmCspYD5j3vcQYA/hr0BDzz2U2o/AcOdDZtBUvxlnt9dh6PGn2cU8CS73mxDs
UMwBcyiqrS1uiCXbUCcZRdnyQvCEq1gfT7QBe/YuRe3UMxTXUgmQl7zLm5AIKDcz
X0w2g3EvARSqIWhXppyYAqqrW5FJXjk60oOOKxOYr6SAiyotiQ5y+CKgXQGQTPoU
KwWQ5xPcYFysTh86DxlQExlmY2wMb8Vpaze0G4WZwW7qFOjzP1Gy6wZrf37QBWVL
E7R0f/o6JuT7MEpUt5i7y1kVKwcQ+THK3QCJDmKCtLsJBKItyqjdQ2Lx9Ez2GC9q
ZdDsrIdgdxNr+209sGirsoNS5lU8LdPhvV3F2qs7ZRDW9GUHw6QITulN0CJvrBwF
kDMf5P9y/GM5onOt/G/L4QkBrSNe!
vHV6sKnCjHYTH0I2mIWzD5oL1F+yIWRRw7Am
AGtXHpqpQfTptmR/j08seriGLiB37QFUv7Cg4pge0I2nBVOzOulC7jomIeQyFEkp
+N2vOScAyekiFsRmwTxGR1QGJmY4bXVxTnpwPaPXZVWctvrjWHqQHr/6x/lHOa/6
C8vB6emtha8jAAAAAElFTkSuQmCC" xlink:actuate="onLoad"/>
+<rect x="112" y="323" clip-path="url(#clipPath8)" fill="black" width="107" rx="3.5" opacity="0.2745" ry="3.5" height="57" stroke="none"/>
+<rect x="109" y="320" clip-path="url(#clipPath8)" fill="white" width="107" rx="4.5" ry="4.5" height="57" stroke="none" bpmn:process-id="_bR-rAFOnEd-qUNL1xc5jrA" bpmn:activity-id="_bzzlsFOnEd-qUNL1xc5jrA" bpmn:activity-label="21"/>
+<rect x="109" y="320" clip-path="url(#clipPath8)" fill="none" width="106" rx="4" ry="4" height="56" stroke="black" bpmn:process-id="_bR-rAFOnEd-qUNL1xc5jrA" bpmn:activity-id="_bzzlsFOnEd-qUNL1xc5jrA" bpmn:activity-label="21"/>
+<text x="155" y="356" clip-path="url(#clipPath9)" fill="black" stroke="none" xml:space="preserve">21</text>
+<polygon fill="black" clip-path="url(#clipPath10)" opacity="0.2745" points=" 440 322 465 347 440 372 415 347" stroke="none"/>
+<polygon fill="white" stroke-width="2" clip-path="url(#clipPath11)" points=" 437 321 461 345 437 369 413 345" stroke="none"/>
+<polygon fill="none" stroke-width="2" clip-path="url(#clipPath11)" points=" 437 321 461 345 437 369 413 345" stroke="rgb(64,64,64)"/>
+<line clip-path="url(#clipPath11)" fill="none" x1="437" x2="437" y1="336" y2="354" stroke="rgb(64,64,64)" stroke-width="8"/>
+<line clip-path="url(#clipPath11)" fill="none" x1="428" x2="446" y1="345" y2="345" stroke="rgb(64,64,64)" stroke-width="8"/>
+<rect x="263" y="323" clip-path="url(#clipPath12)" fill="black" width="107" rx="3.5" opacity="0.2745" ry="3.5" height="57" stroke="none"/>
+<rect x="260" y="320" clip-path="url(#clipPath12)" fill="white" width="107" rx="4.5" ry="4.5" height="57" stroke="none" bpmn:process-id="_bR-rAFOnEd-qUNL1xc5jrA" bpmn:activity-id="_lf1mIFOnEd-qUNL1xc5jrA" bpmn:activity-label="22"/>
+<rect x="260" y="320" clip-path="url(#clipPath12)" fill="none" width="106" rx="4" ry="4" height="56" stroke="black" bpmn:process-id="_bR-rAFOnEd-qUNL1xc5jrA" bpmn:activity-id="_lf1mIFOnEd-qUNL1xc5jrA" bpmn:activity-label="22"/>
+<text x="306" y="356" clip-path="url(#clipPath13)" fill="black" stroke="none" xml:space="preserve">22</text>
+<rect x="655" y="306" clip-path="url(#clipPath14)" fill="black" width="107" rx="3.5" opacity="0.2745" ry="3.5" height="57" stroke="none"/>
+<rect x="652" y="303" clip-path="url(#clipPath14)" fill="white" width="107" rx="4.5" ry="4.5" height="57" stroke="none" bpmn:process-id="_bR-rAFOnEd-qUNL1xc5jrA" bpmn:activity-id="_vhobMFOnEd-qUNL1xc5jrA" bpmn:activity-label="23"/>
+<rect x="652" y="303" clip-path="url(#clipPath14)" fill="none" width="106" rx="4" ry="4" height="56" stroke="black" bpmn:process-id="_bR-rAFOnEd-qUNL1xc5jrA" bpmn:activity-id="_vhobMFOnEd-qUNL1xc5jrA" bpmn:activity-label="23"/>
+<text x="698" y="339" clip-path="url(#clipPath15)" fill="black" stroke="none" xml:space="preserve">23</text>
+<circle clip-path="url(#clipPath16)" fill="black" r="14.5" cx="476.5" opacity="0.2745" cy="442.5" stroke="none"/>
+<circle clip-path="url(#clipPath17)" fill="white" r="14.5" cx="474.5" cy="440.5" stroke="none"/>
+<circle clip-path="url(#clipPath17)" fill="none" r="11.5" cx="474.5" cy="440.5" stroke="black"/>
+<circle clip-path="url(#clipPath17)" fill="none" r="14.5" cx="474.5" cy="440.5" stroke="black"/>
+<circle clip-path="url(#clipPath17)" fill="none" r="7.5" cx="474.5" cy="440.5" stroke="black"/>
+<line clip-path="url(#clipPath17)" fill="none" x1="480" x2="481" y1="441" y2="441" stroke="black"/>
+<line clip-path="url(#clipPath17)" fill="none" x1="479" x2="480" y1="443" y2="444" stroke="black"/>
+<line clip-path="url(#clipPath17)" fill="none" x1="477" x2="478" y1="445" y2="446" stroke="black"/>
+<line clip-path="url(#clipPath17)" fill="none" x1="475" x2="475" y1="446" y2="447" stroke="black"/>
+<line clip-path="url(#clipPath17)" fill="none" x1="472" x2="471" y1="445" y2="446" stroke="black"/>
+<line clip-path="url(#clipPath17)" fill="none" x1="470" x2="469" y1="443" y2="444" stroke="black"/>
+<line clip-path="url(#clipPath17)" fill="none" x1="469" x2="468" y1="441" y2="441" stroke="black"/>
+<line clip-path="url(#clipPath17)" fill="none" x1="470" x2="469" y1="438" y2="437" stroke="black"/>
+<line clip-path="url(#clipPath17)" fill="none" x1="472" x2="471" y1="436" y2="435" stroke="black"/>
+<line clip-path="url(#clipPath17)" fill="none" x1="475" x2="475" y1="435" y2="434" stroke="black"/>
+<line clip-path="url(#clipPath17)" fill="none" x1="477" x2="478" y1="436" y2="435" stroke="black"/>
+<line clip-path="url(#clipPath17)" fill="none" x1="479" x2="480" y1="438" y2="437" stroke="black"/>
+<line clip-path="url(#clipPath17)" fill="none" x1="475" x2="476" y1="441" y2="435" stroke="black"/>
+<line clip-path="url(#clipPath17)" fill="none" x1="475" x2="479" y1="441" y2="440" stroke="black"/>
+<text x="447" y="479" clip-path="url(#clipPath18)" fill="black" stroke="none" xml:space="preserve">wait 10 sec</text>
+<rect x="580" y="415" clip-path="url(#clipPath19)" fill="black" width="107" rx="3.5" opacity="0.2745" ry="3.5" height="57" stroke="none"/>
+<rect x="577" y="412" clip-path="url(#clipPath19)" fill="white" width="107" rx="4.5" ry="4.5" height="57" stroke="none" bpmn:process-id="_bR-rAFOnEd-qUNL1xc5jrA" bpmn:activity-id="_xAHLYFOnEd-qUNL1xc5jrA" bpmn:activity-label="34"/>
+<rect x="577" y="412" clip-path="url(#clipPath19)" fill="none" width="106" rx="4" ry="4" height="56" stroke="black" bpmn:process-id="_bR-rAFOnEd-qUNL1xc5jrA" bpmn:activity-id="_xAHLYFOnEd-qUNL1xc5jrA" bpmn:activity-label="34"/>
+<text x="623" y="448" clip-path="url(#clipPath20)" fill="black" stroke="none" xml:space="preserve">34</text>
+<rect x="906" y="319" clip-path="url(#clipPath21)" fill="black" width="107" rx="3.5" opacity="0.2745" ry="3.5" height="57" stroke="none"/>
+<rect x="903" y="316" clip-path="url(#clipPath21)" fill="white" width="107" rx="4.5" ry="4.5" height="57" stroke="none" bpmn:process-id="_bR-rAFOnEd-qUNL1xc5jrA" bpmn:activity-id="_7W620FRaEd-y87rmjcz7YQ" bpmn:activity-label=""/>
+<rect x="903" y="316" clip-path="url(#clipPath21)" fill="none" width="106" rx="4" ry="4" height="56" stroke="black" bpmn:process-id="_bR-rAFOnEd-qUNL1xc5jrA" bpmn:activity-id="_7W620FRaEd-y87rmjcz7YQ" bpmn:activity-label=""/>
+<text x="944" y="352" clip-path="url(#clipPath22)" fill="black" stroke="none" xml:space="preserve">Task</text>
+<line clip-path="url(#clipPath23)" fill="none" x1="65" x2="65" y1="274" y2="540" stroke="rgb(169,169,169)"/>
+<rect x="39" y="273" clip-path="url(#clipPath6)" fill="none" width="1500" height="269" stroke="rgb(169,169,169)" bpmn:process-id="_bR-rAFOnEd-qUNL1xc5jrA" bpmn:process-name="Pool2"/>
+<rect x="39" y="558" clip-path="url(#clipPath24)" fill="rgb(232,232,255)" width="1500" height="246" stroke="none" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:process-name="Pool3"/>
+<rect x="39" y="558" clip-path="url(#clipPath24)" fill="none" width="1500" height="246" stroke="black" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:process-name="Pool3"/>
+<image stroke="black" width="14" xlink:show="embed" xlink:type="simple" fill="black" clip-path="url(#clipPath25)" preserveAspectRatio="none" height="32" x="45" y="663" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAgCAYAAAAi7kmXAAACj0lEQVR42u2UX0hT
cRTHv/fabHOhaxEVSgWiiRCsP5u2aqBDSKsHMRKZUWZLWrrJGJFZWQOhQvNhK1Fo
iKXRi4UNnRCm1HqoxGpQkIweKtywlKyluavrt5vK7rjXWc8dONzfOfw+9/c733Pv
oXy+UAgR9p14HHEJ8ecBYHgsCNU6EbaRBBWxb0Uk9MjHwHThMcRyKU6VKdBQYkbG
Nzea1mhh7ahHcbqUH7xUfR6OtHsYGw/ixIEMuOtESD1Yh5EHLSgxm1HsbFncS0eC
P993Isv6GvubniFz5SBSS7sA2SGkHe3G7KfuyK1cMIFh0PeFXCd+I+7bjpCiJAiS
vNMvQiJHiSiwsXwnzuYdw6/ADJJyb7E558BH1OSVorFCzQE5NWZVtcG9qwZiaVjX
PxrmJb+B1k5O3NssDL5l5ICCCDATkdyUT7wAYChkxguAupxaLGXD7np+0H19FMs1
DpiQ5WCfc+GXTIbg8k6DJvJpN4uhSaKEwQVr90yiodSE3FA/K9LpuT2obrdDv122
NGi3VMF18QdS8m+z8ec+GwrPVULvusPfx0X72o+Uorvk7hrWkws7EBp/IvwBLFgS
KbLXR2GarMPe66exKjgbu8YrejXK9pVDXFDJxlM9N+DQZ8cGlRXNeJpuwEhvERun
Naghy22NDc7RcniUnXDJJ+bbsRo!
asqD/t+Mf2xGeEIq/bYefAWoHJvDO48cOVQus
10SQscVIwJ2qUaDxag8Yhw6mLdNotyXijKULrYbdsf/HQYcR3oeXIc04jJyXDqhO
GgHDEC/IVTXghTSTCEKvx1qlBVO+V4ITgBZMUfHzs2AZoyNsHaOzgrFuQxw/uJV4
mzpbMNZ9eMEPuoZuRp1/XPCqvwGOVO9fqXXaLgAAAABJRU5ErkJggg==" xlink:actuate="onLoad"/>
+<rect x="249" y="614" clip-path="url(#clipPath26)" fill="black" width="107" rx="3.5" opacity="0.2745" ry="3.5" height="57" stroke="none"/>
+<rect x="246" y="611" clip-path="url(#clipPath26)" fill="white" width="107" rx="4.5" ry="4.5" height="57" stroke="none" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:activity-id="_k1rO0FOnEd-qUNL1xc5jrA" bpmn:activity-label="31"/>
+<rect x="246" y="611" clip-path="url(#clipPath26)" fill="none" width="106" rx="4" ry="4" height="56" stroke="black" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:activity-id="_k1rO0FOnEd-qUNL1xc5jrA" bpmn:activity-label="31"/>
+<text x="292" y="647" clip-path="url(#clipPath27)" fill="black" stroke="none" xml:space="preserve">31</text>
+<rect x="441" y="579" clip-path="url(#clipPath28)" fill="black" width="567" rx="3.5" opacity="0.2745" ry="3.5" height="208" stroke="none"/>
+<rect x="438" y="576" clip-path="url(#clipPath28)" fill="white" width="567" rx="4" ry="4" height="208" stroke="none" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:activity-id="_-IzjIFOrEd-qUNL1xc5jrA" bpmn:activity-label=""/>
+<rect x="438" y="576" clip-path="url(#clipPath28)" fill="none" width="566" rx="4" ry="4" height="207" stroke="black" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:activity-id="_-IzjIFOrEd-qUNL1xc5jrA" bpmn:activity-label=""/>
+<rect x="590" y="584" clip-path="url(#clipPath29)" fill="black" width="107" rx="3.5" opacity="0.2745" ry="3.5" height="57" stroke="none"/>
+<rect x="587" y="581" clip-path="url(#clipPath29)" fill="white" width="107" rx="4.5" ry="4.5" height="57" stroke="none" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:activity-id="_xdm_xlOnEd-qUNL1xc5jrA" bpmn:activity-label=""/>
+<rect x="587" y="581" clip-path="url(#clipPath29)" fill="none" width="106" rx="4" ry="4" height="56" stroke="black" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:activity-id="_xdm_xlOnEd-qUNL1xc5jrA" bpmn:activity-label=""/>
+<text x="633" y="617" clip-path="url(#clipPath30)" fill="black" stroke="none" xml:space="preserve">32</text>
+<rect x="892" y="584" clip-path="url(#clipPath31)" fill="black" width="107" rx="3.5" opacity="0.2745" ry="3.5" height="57" stroke="none"/>
+<rect x="889" y="581" clip-path="url(#clipPath31)" fill="white" width="107" rx="4.5" ry="4.5" height="57" stroke="none" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:activity-id="_2OMZ0FOnEd-qUNL1xc5jrA" bpmn:activity-label="34"/>
+<rect x="889" y="581" clip-path="url(#clipPath31)" fill="none" width="106" rx="4" ry="4" height="56" stroke="black" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:activity-id="_2OMZ0FOnEd-qUNL1xc5jrA" bpmn:activity-label="34"/>
+<text x="935" y="617" clip-path="url(#clipPath32)" fill="black" stroke="none" xml:space="preserve">34</text>
+<polygon fill="black" clip-path="url(#clipPath33)" opacity="0.2745" points=" 471 646 496 671 471 696 446 671" stroke="none"/>
+<polygon fill="white" stroke-width="2" clip-path="url(#clipPath34)" points=" 468 645 492 669 468 693 444 669" stroke="none"/>
+<polygon fill="none" stroke-width="2" clip-path="url(#clipPath34)" points=" 468 645 492 669 468 693 444 669" stroke="rgb(64,64,64)"/>
+<circle clip-path="url(#clipPath34)" fill="none" r="14.5" cx="467.5" cy="668.5" stroke="black"/>
+<circle clip-path="url(#clipPath34)" fill="none" r="12.5" cx="467.5" cy="668.5" stroke="black"/>
+<polygon fill="none" clip-path="url(#clipPath34)" points=" 459 665 467 661 476 665 474 675 461 675" stroke="black"/>
+<circle clip-path="url(#clipPath35)" fill="black" r="14.5" cx="812.5" opacity="0.2745" cy="611.5" stroke="none"/>
+<circle clip-path="url(#clipPath36)" fill="white" r="14.5" cx="810.5" cy="609.5" stroke="none"/>
+<circle clip-path="url(#clipPath36)" fill="none" r="11.5" cx="810.5" cy="609.5" stroke="black"/>
+<circle clip-path="url(#clipPath36)" fill="none" r="14.5" cx="810.5" cy="609.5" stroke="black"/>
+<circle clip-path="url(#clipPath36)" fill="none" r="7.5" cx="810.5" cy="609.5" stroke="black"/>
+<line clip-path="url(#clipPath36)" fill="none" x1="816" x2="817" y1="610" y2="610" stroke="black"/>
+<line clip-path="url(#clipPath36)" fill="none" x1="815" x2="816" y1="612" y2="613" stroke="black"/>
+<line clip-path="url(#clipPath36)" fill="none" x1="813" x2="814" y1="614" y2="615" stroke="black"/>
+<line clip-path="url(#clipPath36)" fill="none" x1="811" x2="811" y1="615" y2="616" stroke="black"/>
+<line clip-path="url(#clipPath36)" fill="none" x1="808" x2="807" y1="614" y2="615" stroke="black"/>
+<line clip-path="url(#clipPath36)" fill="none" x1="806" x2="805" y1="612" y2="613" stroke="black"/>
+<line clip-path="url(#clipPath36)" fill="none" x1="805" x2="804" y1="610" y2="610" stroke="black"/>
+<line clip-path="url(#clipPath36)" fill="none" x1="806" x2="805" y1="607" y2="606" stroke="black"/>
+<line clip-path="url(#clipPath36)" fill="none" x1="808" x2="807" y1="605" y2="604" stroke="black"/>
+<line clip-path="url(#clipPath36)" fill="none" x1="811" x2="811" y1="604" y2="603" stroke="black"/>
+<line clip-path="url(#clipPath36)" fill="none" x1="813" x2="814" y1="605" y2="604" stroke="black"/>
+<line clip-path="url(#clipPath36)" fill="none" x1="815" x2="816" y1="607" y2="606" stroke="black"/>
+<line clip-path="url(#clipPath36)" fill="none" x1="811" x2="812" y1="610" y2="604" stroke="black"/>
+<line clip-path="url(#clipPath36)" fill="none" x1="811" x2="815" y1="610" y2="609" stroke="black"/>
+<text x="769" y="648" clip-path="url(#clipPath37)" fill="black" stroke="none" xml:space="preserve">wait 30 seconds</text>
+<rect x="709" y="696" clip-path="url(#clipPath38)" fill="black" width="107" rx="3.5" opacity="0.2745" ry="3.5" height="57" stroke="none"/>
+<rect x="706" y="693" clip-path="url(#clipPath38)" fill="white" width="107" rx="4.5" ry="4.5" height="57" stroke="none" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:activity-id="_uhaUUFOnEd-qUNL1xc5jrA" bpmn:activity-label="33"/>
+<rect x="706" y="693" clip-path="url(#clipPath38)" fill="none" width="106" rx="4" ry="4" height="56" stroke="black" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:activity-id="_uhaUUFOnEd-qUNL1xc5jrA" bpmn:activity-label="33"/>
+<text x="752" y="729" clip-path="url(#clipPath39)" fill="black" stroke="none" xml:space="preserve">33</text>
+<rect x="863" y="696" clip-path="url(#clipPath40)" fill="black" width="107" rx="3.5" opacity="0.2745" ry="3.5" height="57" stroke="none"/>
+<rect x="860" y="693" clip-path="url(#clipPath40)" fill="white" width="107" rx="4.5" ry="4.5" height="57" stroke="none" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:activity-id="_xW4AYFO5Ed-_Q-SZnn1pGA" bpmn:activity-label="33 reply"/>
+<rect x="860" y="693" clip-path="url(#clipPath40)" fill="none" width="106" rx="4" ry="4" height="56" stroke="black" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:activity-id="_xW4AYFO5Ed-_Q-SZnn1pGA" bpmn:activity-label="33 reply"/>
+<text x="891" y="729" clip-path="url(#clipPath41)" fill="black" stroke="none" xml:space="preserve">33 reply</text>
+<rect x="723" y="765" clip-path="url(#clipPath28)" fill="none" width="19" height="19" stroke="black"/>
+<line clip-path="url(#clipPath28)" fill="none" x1="725" x2="739" y1="774" y2="774" stroke="black" stroke-width="2"/>
+<path fill="none" stroke-width="2" d="M715.25 782.6603 A9.5 10 0 1 0 705.75 782.6603" clip-path="url(#clipPath28)" stroke="black"/>
+<line clip-path="url(#clipPath28)" fill="none" x1="701" x2="706" y1="782" y2="782" stroke="black" stroke-width="2"/>
+<line clip-path="url(#clipPath28)" fill="none" x1="706" x2="706" y1="782" y2="777" stroke="black" stroke-width="2"/>
+<line clip-path="url(#clipPath42)" fill="none" x1="65" x2="65" y1="559" y2="802" stroke="rgb(169,169,169)"/>
+<rect x="39" y="558" clip-path="url(#clipPath24)" fill="none" width="1500" height="246" stroke="rgb(169,169,169)" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:process-name="Pool3"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="759" x2="829" y1="331" y2="331" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="829" x2="829" y1="331" y2="331" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="829" x2="830" y1="331" y2="331" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="830" x2="830" y1="331" y2="331" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="830" x2="830" y1="331" y2="332" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="830" x2="831" y1="332" y2="333" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="831" x2="831" y1="333" y2="333" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="831" x2="831" y1="333" y2="333" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="831" x2="831" y1="333" y2="334" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="831" x2="831" y1="334" y2="334" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="831" x2="832" y1="334" y2="334" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="832" x2="833" y1="334" y2="335" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="833" x2="903" y1="335" y2="335" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath44)" opacity="0.6667" points=" 896 338 903 335 896 332" stroke="none"/>
+<line clip-path="url(#clipPath44)" fill="none" x1="896" x2="903" y1="338" y2="335" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath44)" fill="none" x1="903" x2="896" y1="335" y2="332" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="462" x2="549" y1="345" y2="345" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="549" x2="551" y1="345" y2="344" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="551" x2="553" y1="344" y2="343" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="553" x2="554" y1="343" y2="342" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="554" x2="555" y1="342" y2="340" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="555" x2="556" y1="340" y2="338" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="556" x2="556" y1="338" y2="338" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="556" x2="556" y1="338" y2="335" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="556" x2="557" y1="335" y2="333" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="557" x2="558" y1="333" y2="332" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="558" x2="560" y1="332" y2="331" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="560" x2="563" y1="331" y2="331" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="563" x2="652" y1="331" y2="331" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath45)" opacity="0.6667" points=" 645 334 652 331 645 328" stroke="none"/>
+<line clip-path="url(#clipPath45)" fill="none" x1="645" x2="652" y1="334" y2="331" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath45)" fill="none" x1="652" x2="645" y1="331" y2="328" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="367" x2="387" y1="348" y2="348" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="387" x2="387" y1="348" y2="347" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="387" x2="388" y1="347" y2="347" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="388" x2="388" y1="347" y2="347" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="388" x2="388" y1="347" y2="346" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="388" x2="389" y1="346" y2="346" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="389" x2="389" y1="346" y2="346" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="389" x2="389" y1="346" y2="346" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="389" x2="389" y1="346" y2="345" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="389" x2="389" y1="345" y2="345" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="389" x2="390" y1="345" y2="345" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="390" x2="390" y1="345" y2="345" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="390" x2="412" y1="345" y2="345" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath46)" opacity="0.6667" points=" 405 348 412 345 405 342" stroke="none"/>
+<line clip-path="url(#clipPath46)" fill="none" x1="405" x2="412" y1="348" y2="345" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath46)" fill="none" x1="412" x2="405" y1="345" y2="342" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="216" x2="260" y1="348" y2="348" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath47)" opacity="0.6667" points=" 253 351 260 348 253 345" stroke="none"/>
+<line clip-path="url(#clipPath47)" fill="none" x1="253" x2="260" y1="351" y2="348" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath47)" fill="none" x1="260" x2="253" y1="348" y2="345" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="490" x2="577" y1="440" y2="440" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath48)" opacity="0.6667" points=" 570 443 577 440 570 437" stroke="none"/>
+<line clip-path="url(#clipPath48)" fill="none" x1="570" x2="577" y1="443" y2="440" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath48)" fill="none" x1="577" x2="570" y1="440" y2="437" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="684" x2="777" y1="440" y2="440" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="777" x2="781" y1="440" y2="439" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="781" x2="786" y1="439" y2="436" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="786" x2="789" y1="436" y2="433" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="789" x2="792" y1="433" y2="428" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="792" x2="793" y1="428" y2="424" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="793" x2="793" y1="424" y2="370" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="793" x2="793" y1="370" y2="365" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="793" x2="796" y1="365" y2="360" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="796" x2="799" y1="360" y2="357" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="799" x2="804" y1="357" y2="354" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="804" x2="809" y1="354" y2="354" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="809" x2="903" y1="354" y2="354" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath49)" opacity="0.6667" points=" 896 357 903 354 896 351" stroke="none"/>
+<line clip-path="url(#clipPath49)" fill="none" x1="896" x2="903" y1="357" y2="354" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath49)" fill="none" x1="903" x2="896" y1="354" y2="351" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="437" x2="437" y1="370" y2="429" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="437" x2="437" y1="429" y2="433" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="437" x2="439" y1="433" y2="436" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="439" x2="441" y1="436" y2="438" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="441" x2="444" y1="438" y2="440" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="444" x2="448" y1="440" y2="441" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="448" x2="460" y1="441" y2="441" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath50)" opacity="0.6667" points=" 453 444 460 441 453 438" stroke="none"/>
+<line clip-path="url(#clipPath50)" fill="none" x1="453" x2="460" y1="444" y2="441" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath50)" fill="none" x1="460" x2="453" y1="441" y2="438" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="468" x2="468" y1="644" y2="625" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="468" x2="468" y1="625" y2="620" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="468" x2="471" y1="620" y2="615" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="471" x2="474" y1="615" y2="612" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="474" x2="479" y1="612" y2="609" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="479" x2="484" y1="609" y2="609" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="484" x2="587" y1="609" y2="609" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath51)" opacity="0.6667" points=" 580 612 587 609 580 606" stroke="none"/>
+<line clip-path="url(#clipPath51)" fill="none" x1="580" x2="587" y1="612" y2="609" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath51)" fill="none" x1="587" x2="580" y1="609" y2="606" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="694" x2="796" y1="609" y2="609" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath52)" opacity="0.6667" points=" 789 612 796 609 789 606" stroke="none"/>
+<line clip-path="url(#clipPath52)" fill="none" x1="789" x2="796" y1="612" y2="609" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath52)" fill="none" x1="796" x2="789" y1="609" y2="606" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="353" x2="379" y1="639" y2="639" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="379" x2="383" y1="639" y2="639" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="383" x2="388" y1="639" y2="642" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="388" x2="391" y1="642" y2="645" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="391" x2="394" y1="645" y2="650" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="394" x2="395" y1="650" y2="655" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="395" x2="395" y1="655" y2="664" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="395" x2="395" y1="664" y2="668" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="395" x2="398" y1="668" y2="673" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="398" x2="401" y1="673" y2="676" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="401" x2="406" y1="676" y2="679" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="406" x2="411" y1="679" y2="680" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="411" x2="438" y1="680" y2="680" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath53)" opacity="0.6667" points=" 431 683 438 680 431 677" stroke="none"/>
+<line clip-path="url(#clipPath53)" fill="none" x1="431" x2="438" y1="683" y2="680" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath53)" fill="none" x1="438" x2="431" y1="680" y2="677" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="468" x2="468" y1="694" y2="707" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="468" x2="468" y1="707" y2="711" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="468" x2="470" y1="711" y2="715" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="470" x2="473" y1="715" y2="718" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="473" x2="477" y1="718" y2="720" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="477" x2="481" y1="720" y2="721" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="481" x2="706" y1="721" y2="721" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath54)" opacity="0.6667" points=" 699 724 706 721 699 718" stroke="none"/>
+<line clip-path="url(#clipPath54)" fill="none" x1="699" x2="706" y1="724" y2="721" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath54)" fill="none" x1="706" x2="699" y1="721" y2="718" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="813" x2="860" y1="721" y2="721" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath55)" opacity="0.6667" points=" 853 724 860 721 853 718" stroke="none"/>
+<line clip-path="url(#clipPath55)" fill="none" x1="853" x2="860" y1="724" y2="721" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath55)" fill="none" x1="860" x2="853" y1="721" y2="718" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="826" x2="889" y1="609" y2="609" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath56)" opacity="0.6667" points=" 882 612 889 609 882 606" stroke="none"/>
+<line clip-path="url(#clipPath56)" fill="none" x1="882" x2="889" y1="612" y2="609" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath56)" fill="none" x1="889" x2="882" y1="609" y2="606" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="161" x2="161" y1="172" y2="320" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<circle clip-path="url(#clipPath57)" fill="white" r="3.5" cx="160.5" cy="171.5" stroke="none"/>
+<circle clip-path="url(#clipPath57)" fill="none" r="3.5" cx="160.5" opacity="0.5882" cy="171.5" stroke="black"/>
+<polygon fill="white" clip-path="url(#clipPath58)" points=" 157 314 161 320 165 314 157 314" stroke="none"/>
+<line clip-path="url(#clipPath58)" fill="none" x1="157" x2="161" y1="314" y2="320" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath58)" fill="none" x1="161" x2="165" y1="320" y2="314" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath58)" fill="none" x1="165" x2="157" y1="314" y2="314" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="216" x2="260" y1="348" y2="348" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath47)" opacity="0.6667" points=" 253 351 260 348 253 345" stroke="none"/>
+<line clip-path="url(#clipPath47)" fill="none" x1="253" x2="260" y1="351" y2="348" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath47)" fill="none" x1="260" x2="253" y1="348" y2="345" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="367" x2="387" y1="348" y2="348" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="387" x2="387" y1="348" y2="347" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="387" x2="388" y1="347" y2="347" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="388" x2="388" y1="347" y2="347" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="388" x2="388" y1="347" y2="346" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="388" x2="389" y1="346" y2="346" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="389" x2="389" y1="346" y2="346" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="389" x2="389" y1="346" y2="346" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="389" x2="389" y1="346" y2="345" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="389" x2="389" y1="345" y2="345" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="389" x2="390" y1="345" y2="345" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="390" x2="390" y1="345" y2="345" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="390" x2="412" y1="345" y2="345" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath46)" opacity="0.6667" points=" 405 348 412 345 405 342" stroke="none"/>
+<line clip-path="url(#clipPath46)" fill="none" x1="405" x2="412" y1="348" y2="345" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath46)" fill="none" x1="412" x2="405" y1="345" y2="342" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="313" x2="313" y1="377" y2="487" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="313" x2="312" y1="487" y2="489" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="312" x2="311" y1="489" y2="491" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="311" x2="310" y1="491" y2="492" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="310" x2="308" y1="492" y2="493" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="308" x2="306" y1="493" y2="494" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="306" x2="306" y1="494" y2="494" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="306" x2="303" y1="494" y2="494" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="303" x2="301" y1="494" y2="495" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="301" x2="300" y1="495" y2="496" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="300" x2="299" y1="496" y2="498" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="299" x2="299" y1="498" y2="501" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="299" x2="299" y1="501" y2="611" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<circle clip-path="url(#clipPath59)" fill="white" r="3.5" cx="312.5" cy="376.5" stroke="none"/>
+<circle clip-path="url(#clipPath59)" fill="none" r="3.5" cx="312.5" opacity="0.5882" cy="376.5" stroke="black"/>
+<polygon fill="white" clip-path="url(#clipPath60)" points=" 295 605 299 611 303 605 295 605" stroke="none"/>
+<line clip-path="url(#clipPath60)" fill="none" x1="295" x2="299" y1="605" y2="611" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath60)" fill="none" x1="299" x2="303" y1="611" y2="605" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath60)" fill="none" x1="303" x2="295" y1="605" y2="605" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="353" x2="379" y1="639" y2="639" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="379" x2="383" y1="639" y2="639" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="383" x2="388" y1="639" y2="642" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="388" x2="391" y1="642" y2="645" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="391" x2="394" y1="645" y2="650" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="394" x2="395" y1="650" y2="655" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="395" x2="395" y1="655" y2="664" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="395" x2="395" y1="664" y2="668" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="395" x2="398" y1="668" y2="673" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="398" x2="401" y1="673" y2="676" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="401" x2="406" y1="676" y2="679" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="406" x2="411" y1="679" y2="680" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="411" x2="438" y1="680" y2="680" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath53)" opacity="0.6667" points=" 431 683 438 680 431 677" stroke="none"/>
+<line clip-path="url(#clipPath53)" fill="none" x1="431" x2="438" y1="683" y2="680" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath53)" fill="none" x1="438" x2="431" y1="680" y2="677" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="468" x2="468" y1="644" y2="625" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="468" x2="468" y1="625" y2="620" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="468" x2="471" y1="620" y2="615" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="471" x2="474" y1="615" y2="612" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="474" x2="479" y1="612" y2="609" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="479" x2="484" y1="609" y2="609" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="484" x2="587" y1="609" y2="609" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath51)" opacity="0.6667" points=" 580 612 587 609 580 606" stroke="none"/>
+<line clip-path="url(#clipPath51)" fill="none" x1="580" x2="587" y1="612" y2="609" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath51)" fill="none" x1="587" x2="580" y1="609" y2="606" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="468" x2="468" y1="694" y2="707" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="468" x2="468" y1="707" y2="711" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="468" x2="470" y1="711" y2="715" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="470" x2="473" y1="715" y2="718" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="473" x2="477" y1="718" y2="720" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="477" x2="481" y1="720" y2="721" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="481" x2="706" y1="721" y2="721" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath54)" opacity="0.6667" points=" 699 724 706 721 699 718" stroke="none"/>
+<line clip-path="url(#clipPath54)" fill="none" x1="699" x2="706" y1="724" y2="721" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath54)" fill="none" x1="706" x2="699" y1="721" y2="718" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="462" x2="549" y1="345" y2="345" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="549" x2="551" y1="345" y2="344" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="551" x2="553" y1="344" y2="343" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="553" x2="554" y1="343" y2="342" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="554" x2="555" y1="342" y2="340" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="555" x2="556" y1="340" y2="338" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="556" x2="556" y1="338" y2="338" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="556" x2="556" y1="338" y2="335" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="556" x2="557" y1="335" y2="333" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="557" x2="558" y1="333" y2="332" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="558" x2="560" y1="332" y2="331" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="560" x2="563" y1="331" y2="331" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="563" x2="652" y1="331" y2="331" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath45)" opacity="0.6667" points=" 645 334 652 331 645 328" stroke="none"/>
+<line clip-path="url(#clipPath45)" fill="none" x1="645" x2="652" y1="334" y2="331" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath45)" fill="none" x1="652" x2="645" y1="331" y2="328" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="437" x2="437" y1="370" y2="429" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="437" x2="437" y1="429" y2="433" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="437" x2="439" y1="433" y2="436" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="439" x2="441" y1="436" y2="438" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="441" x2="444" y1="438" y2="440" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="444" x2="448" y1="440" y2="441" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="448" x2="460" y1="441" y2="441" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath50)" opacity="0.6667" points=" 453 444 460 441 453 438" stroke="none"/>
+<line clip-path="url(#clipPath50)" fill="none" x1="453" x2="460" y1="444" y2="441" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath50)" fill="none" x1="460" x2="453" y1="441" y2="438" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="490" x2="577" y1="440" y2="440" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath48)" opacity="0.6667" points=" 570 443 577 440 570 437" stroke="none"/>
+<line clip-path="url(#clipPath48)" fill="none" x1="570" x2="577" y1="443" y2="440" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath48)" fill="none" x1="577" x2="570" y1="440" y2="437" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="687" x2="687" y1="360" y2="454" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="687" x2="686" y1="454" y2="458" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="686" x2="683" y1="458" y2="463" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="683" x2="680" y1="463" y2="466" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="680" x2="675" y1="466" y2="469" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="675" x2="671" y1="469" y2="470" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="671" x2="656" y1="470" y2="470" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="656" x2="651" y1="470" y2="470" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="651" x2="646" y1="470" y2="473" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="646" x2="643" y1="473" y2="476" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="643" x2="640" y1="476" y2="481" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="640" x2="640" y1="481" y2="486" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="640" x2="640" y1="486" y2="581" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<circle clip-path="url(#clipPath61)" fill="white" r="3.5" cx="686.5" cy="359.5" stroke="none"/>
+<circle clip-path="url(#clipPath61)" fill="none" r="3.5" cx="686.5" opacity="0.5882" cy="359.5" stroke="black"/>
+<polygon fill="white" clip-path="url(#clipPath62)" points=" 636 575 640 581 644 575 636 575" stroke="none"/>
+<line clip-path="url(#clipPath62)" fill="none" x1="636" x2="640" y1="575" y2="581" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath62)" fill="none" x1="640" x2="644" y1="581" y2="575" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath62)" fill="none" x1="644" x2="636" y1="575" y2="575" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="612" x2="612" y1="469" y2="565" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="612" x2="612" y1="565" y2="569" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="612" x2="615" y1="569" y2="574" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="615" x2="618" y1="574" y2="577" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="618" x2="623" y1="577" y2="580" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="623" x2="628" y1="580" y2="581" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="628" x2="743" y1="581" y2="581" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="743" x2="747" y1="581" y2="581" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="747" x2="752" y1="581" y2="584" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="752" x2="755" y1="584" y2="587" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="755" x2="758" y1="587" y2="592" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="758" x2="759" y1="592" y2="597" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="759" x2="759" y1="597" y2="693" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<circle clip-path="url(#clipPath63)" fill="white" r="3.5" cx="611.5" cy="468.5" stroke="none"/>
+<circle clip-path="url(#clipPath63)" fill="none" r="3.5" cx="611.5" opacity="0.5882" cy="468.5" stroke="black"/>
+<polygon fill="white" clip-path="url(#clipPath64)" points=" 755 687 759 693 763 687 755 687" stroke="none"/>
+<line clip-path="url(#clipPath64)" fill="none" x1="755" x2="759" y1="687" y2="693" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath64)" fill="none" x1="759" x2="763" y1="693" y2="687" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath64)" fill="none" x1="763" x2="755" y1="687" y2="687" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="694" x2="796" y1="609" y2="609" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath52)" opacity="0.6667" points=" 789 612 796 609 789 606" stroke="none"/>
+<line clip-path="url(#clipPath52)" fill="none" x1="789" x2="796" y1="612" y2="609" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath52)" fill="none" x1="796" x2="789" y1="609" y2="606" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="826" x2="889" y1="609" y2="609" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath56)" opacity="0.6667" points=" 882 612 889 609 882 606" stroke="none"/>
+<line clip-path="url(#clipPath56)" fill="none" x1="882" x2="889" y1="612" y2="609" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath56)" fill="none" x1="889" x2="882" y1="609" y2="606" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="942" x2="942" y1="581" y2="486" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="942" x2="941" y1="486" y2="481" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="941" x2="938" y1="481" y2="476" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="938" x2="935" y1="476" y2="473" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="935" x2="930" y1="473" y2="470" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="930" x2="926" y1="470" y2="470" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="926" x2="738" y1="470" y2="470" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="738" x2="733" y1="470" y2="469" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="733" x2="728" y1="469" y2="466" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="728" x2="725" y1="466" y2="463" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="725" x2="722" y1="463" y2="458" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="722" x2="722" y1="458" y2="454" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="722" x2="722" y1="454" y2="360" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<circle clip-path="url(#clipPath65)" fill="white" r="3.5" cx="941.5" cy="580.5" stroke="none"/>
+<circle clip-path="url(#clipPath65)" fill="none" r="3.5" cx="941.5" opacity="0.5882" cy="580.5" stroke="black"/>
+<polygon fill="white" clip-path="url(#clipPath66)" points=" 726 366 722 360 718 366 726 366" stroke="none"/>
+<line clip-path="url(#clipPath66)" fill="none" x1="726" x2="722" y1="366" y2="360" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath66)" fill="none" x1="722" x2="718" y1="360" y2="366" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath66)" fill="none" x1="718" x2="726" y1="366" y2="366" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="913" x2="913" y1="693" y2="597" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="913" x2="912" y1="597" y2="592" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="912" x2="909" y1="592" y2="587" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="909" x2="906" y1="587" y2="584" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="906" x2="901" y1="584" y2="581" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="901" x2="897" y1="581" y2="581" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="897" x2="663" y1="581" y2="581" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="663" x2="658" y1="581" y2="580" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="658" x2="653" y1="580" y2="577" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="653" x2="650" y1="577" y2="574" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="650" x2="647" y1="574" y2="569" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="647" x2="647" y1="569" y2="565" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="647" x2="647" y1="565" y2="469" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<circle clip-path="url(#clipPath67)" fill="white" r="3.5" cx="912.5" cy="692.5" stroke="none"/>
+<circle clip-path="url(#clipPath67)" fill="none" r="3.5" cx="912.5" opacity="0.5882" cy="692.5" stroke="black"/>
+<polygon fill="white" clip-path="url(#clipPath68)" points=" 651 475 647 469 643 475 651 475" stroke="none"/>
+<line clip-path="url(#clipPath68)" fill="none" x1="651" x2="647" y1="475" y2="469" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath68)" fill="none" x1="647" x2="643" y1="469" y2="475" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath68)" fill="none" x1="643" x2="651" y1="475" y2="475" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="813" x2="860" y1="721" y2="721" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath55)" opacity="0.6667" points=" 853 724 860 721 853 718" stroke="none"/>
+<line clip-path="url(#clipPath55)" fill="none" x1="853" x2="860" y1="724" y2="721" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath55)" fill="none" x1="860" x2="853" y1="721" y2="718" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="759" x2="829" y1="331" y2="331" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="829" x2="829" y1="331" y2="331" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="829" x2="830" y1="331" y2="331" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="830" x2="830" y1="331" y2="331" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="830" x2="830" y1="331" y2="332" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="830" x2="831" y1="332" y2="333" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="831" x2="831" y1="333" y2="333" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="831" x2="831" y1="333" y2="333" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="831" x2="831" y1="333" y2="334" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="831" x2="831" y1="334" y2="334" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="831" x2="832" y1="334" y2="334" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="832" x2="833" y1="334" y2="335" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="833" x2="903" y1="335" y2="335" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath44)" opacity="0.6667" points=" 896 338 903 335 896 332" stroke="none"/>
+<line clip-path="url(#clipPath44)" fill="none" x1="896" x2="903" y1="338" y2="335" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath44)" fill="none" x1="903" x2="896" y1="335" y2="332" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="956" x2="956" y1="316" y2="260" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="956" x2="955" y1="260" y2="255" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="955" x2="952" y1="255" y2="250" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="952" x2="949" y1="250" y2="247" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="949" x2="944" y1="247" y2="244" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="944" x2="940" y1="244" y2="244" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="940" x2="212" y1="244" y2="244" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="212" x2="207" y1="244" y2="243" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="207" x2="202" y1="243" y2="240" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="202" x2="199" y1="240" y2="237" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="199" x2="196" y1="237" y2="232" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="196" x2="196" y1="232" y2="228" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="196" x2="196" y1="228" y2="172" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<circle clip-path="url(#clipPath69)" fill="white" r="3.5" cx="955.5" cy="315.5" stroke="none"/>
+<circle clip-path="url(#clipPath69)" fill="none" r="3.5" cx="955.5" opacity="0.5882" cy="315.5" stroke="black"/>
+<polygon fill="white" clip-path="url(#clipPath70)" points=" 200 178 196 172 192 178 200 178" stroke="none"/>
+<line clip-path="url(#clipPath70)" fill="none" x1="200" x2="196" y1="178" y2="172" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath70)" fill="none" x1="196" x2="192" y1="172" y2="178" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath70)" fill="none" x1="192" x2="200" y1="178" y2="178" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="684" x2="777" y1="440" y2="440" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="777" x2="781" y1="440" y2="439" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="781" x2="786" y1="439" y2="436" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="786" x2="789" y1="436" y2="433" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="789" x2="792" y1="433" y2="428" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="792" x2="793" y1="428" y2="424" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="793" x2="793" y1="424" y2="370" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="793" x2="793" y1="370" y2="365" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="793" x2="796" y1="365" y2="360" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="796" x2="799" y1="360" y2="357" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="799" x2="804" y1="357" y2="354" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="804" x2="809" y1="354" y2="354" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="809" x2="903" y1="354" y2="354" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath49)" opacity="0.6667" points=" 896 357 903 354 896 351" stroke="none"/>
+<line clip-path="url(#clipPath49)" fill="none" x1="896" x2="903" y1="357" y2="354" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath49)" fill="none" x1="903" x2="896" y1="354" y2="351" opacity="0.6667" stroke="black"/>
+</g>
+</g>
+</svg>
Added: branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem.wsdl
===================================================================
--- branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem.wsdl (rev 0)
+++ branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem.wsdl 2010-05-28 05:11:17 UTC (rev 678)
@@ -0,0 +1,29 @@
+<?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 xmlns:Pool2="http://example.com/ReproduceIsolationProblem/Pool2" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:diag="http://example.com/ReproduceIsolationProblem" xmlns:Pool3="http://example.com/ReproduceIsolationProblem/Pool3" xmlns:Pool="http://example.com/ReproduceIsolationProblem/Pool" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:pnlk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable" xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop" xmlns:bpdm="http://www.intalio/designer/business-process-data-modeling" targetNamespace="http://example.com/ReproduceIsolationProblem">
+ <wsdl:import namespace="http://example.com/ReproduceIsolationProblem/Pool2" location="ReproduceIsolationProblem-Pool2.wsdl"/>
+ <wsdl:import namespace="http://example.com/ReproduceIsolationProblem/Pool3" location="ReproduceIsolationProblem-Pool3.wsdl"/>
+ <pnlk:partnerLinkType name="Pool2AndPool">
+ <pnlk:role name="Pool2_for_Pool" portType="Pool2:ForPool"/>
+ </pnlk:partnerLinkType>
+ <pnlk:partnerLinkType name="Pool3AndPool2">
+ <pnlk:role name="Pool3_for_Pool2" portType="Pool3:ForPool2"/>
+ </pnlk:partnerLinkType>
+</wsdl:definitions>
Added: branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSelectors/deploy.xml
===================================================================
--- branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSelectors/deploy.xml (rev 0)
+++ branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSelectors/deploy.xml 2010-05-28 05:11:17 UTC (rev 678)
@@ -0,0 +1,35 @@
+<?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.
+ -->
+<dd:deploy xmlns:dd="http://www.apache.org/ode/schemas/dd/2007/03"><dd:process xmlns:dd="http://www.apache.org/ode/schemas/dd/2007/03" xmlns:diag="http://example.com/ReproduceIsolationProblem" xmlns:Pool2="http://example.com/ReproduceIsolationProblem/Pool2" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:this="http://example.com/ReproduceIsolationProblem/Pool3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="this:Pool3" fileName="ReproduceIsolationProblem-Pool3.bpel">
+ <dd:property name="PATH">ReproduceIsolationProblem</dd:property>
+ <dd:property name="SVG">ReproduceIsolationProblem.svg</dd:property>
+ <dd:provide partnerLink="pool3AndPool2PlkVar">
+ <dd:service name="this:CanonicServiceForPool2" port="canonicPort"></dd:service>
+ </dd:provide>
+</dd:process><dd:process xmlns:dd="http://www.apache.org/ode/schemas/dd/2007/03" xmlns:diag="http://example.com/ReproduceIsolationProblem" xmlns:Pool3="http://example.com/ReproduceIsolationProblem/Pool3" xmlns:Pool="http://example.com/ReproduceIsolationProblem/Pool" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:this="http://example.com/ReproduceIsolationProblem/Pool2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="this:Pool2" fileName="ReproduceIsolationProblem-Pool2.bpel">
+ <dd:property name="PATH">ReproduceIsolationProblem</dd:property>
+ <dd:property name="SVG">ReproduceIsolationProblem.svg</dd:property>
+ <dd:provide partnerLink="pool2AndPoolPlkVar">
+ <dd:service name="this:CanonicServiceForPool" port="canonicPort"></dd:service>
+ </dd:provide>
+ <dd:invoke partnerLink="pool3AndPool2PlkVar">
+ <dd:service name="Pool3:CanonicServiceForPool2" port="canonicPort"></dd:service>
+ </dd:invoke>
+</dd:process></dd:deploy>
Added: branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSelectors/testRequest.soap
===================================================================
--- branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSelectors/testRequest.soap (rev 0)
+++ branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSelectors/testRequest.soap 2010-05-28 05:11:17 UTC (rev 678)
@@ -0,0 +1,25 @@
+<!--
+ ~ 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.
+ -->
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:pool="http://example.com/ReproduceIsolationProblem/Pool2">
+ <soapenv:Header/>
+ <soapenv:Body>
+ <pool:_21Request>abc1</pool:_21Request>
+ </soapenv:Body>
+</soapenv:Envelope>
+
Modified: branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSoapHeader2/HelloWorld2.wsdl
===================================================================
--- branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSoapHeader2/HelloWorld2.wsdl 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSoapHeader2/HelloWorld2.wsdl 2010-05-28 05:11:17 UTC (rev 678)
@@ -1,4 +1,22 @@
<?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/unit-test.wsdl"
Modified: branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSoapHeader2/deploy.xml
===================================================================
--- branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSoapHeader2/deploy.xml 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSoapHeader2/deploy.xml 2010-05-28 05:11:17 UTC (rev 678)
@@ -1,4 +1,22 @@
<?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.
+ -->
<dd:deploy xmlns:dd="http://www.apache.org/ode/schemas/dd/2007/03"><dd:process xmlns:dd="http://www.apache.org/ode/schemas/dd/2007/03" xmlns:tns="http://ode/bpel/unit-test.wsdl" xmlns:service="http://example.com/hello/service" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:diag="http://example.com/hello" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:client="http://example.com/hello/client" xmlns:this="http://example.com/hello/process" name="this:process" fileName="hello-process.bpel">
<dd:property name="PATH">hello</dd:property>
<dd:property name="SVG">hello.svg</dd:property>
@@ -8,4 +26,4 @@
<dd:invoke partnerLink="serviceAndProcessForHelloPortPlkVar">
<dd:service name="tns:HelloService" port="HelloPort"></dd:service>
</dd:invoke>
-</dd:process></dd:deploy>
\ No newline at end of file
+</dd:process></dd:deploy>
Modified: branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSoapHeader2/hello-process.bpel
===================================================================
--- branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSoapHeader2/hello-process.bpel 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSoapHeader2/hello-process.bpel 2010-05-28 05:11:17 UTC (rev 678)
@@ -1,4 +1,22 @@
<?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.
+ -->
<bpel:process xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable" xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop" xmlns:pnlk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ode="http://www.apache.org/ode/type/extension" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:this="http://example.com/hello/process" xmlns:client="http://example.com/hello/client" xmlns:tns="http://ode/bpel/unit-test.wsdl" xmlns:diag="http://example.com/hello" xmlns:service="http://example.com/hello/service" xmlns:bpmn="http://www.intalio.com/bpms" xmlns:atomic="http://ode.apache.org/atomicScope" queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0" expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0" bpmn:label="process" name="process" bpmn:id="_Ue3NkBenEd6EIOjxNvjNWw" targetNamespace="http://!
example.com/hello/process">
<bpel:import namespace="http://ode/bpel/unit-test.wsdl" location="HelloWorld2.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
<bpel:import namespace="http://example.com/hello" location="hello.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
@@ -78,4 +96,4 @@
</bpel:assign>
<bpel:reply partnerLink="processAndClientPlkVar" portType="this:Forclient" operation="EventStartMessage" variable="thisEventStartMessageResponse" bpmn:label="Message_End_Event" name="Message_End_Event-1" bpmn:id="_cYnYEBenEd6EIOjxNvjNWw"></bpel:reply>
</bpel:sequence>
-</bpel:process>
\ No newline at end of file
+</bpel:process>
Modified: branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSoapHeader2/hello-process.wsdl
===================================================================
--- branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSoapHeader2/hello-process.wsdl 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSoapHeader2/hello-process.wsdl 2010-05-28 05:11:17 UTC (rev 678)
@@ -1,4 +1,22 @@
<?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 xmlns:tns="http://ode/bpel/unit-test.wsdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:hello="http://ode/bpel/unit-test.wsdl" xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:client="http://example.com/hello/client" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:service="http://example.com/hello/service" xmlns:diag="http://example.com/hello" xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable" xmlns:pnlk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:this="http://example.com/hello/process" targetNamespace="http://example.com/hello/process">
<wsdl:types>
<xs:schema targetNamespace="http://ode/bpel/unit-test.wsdl">
@@ -37,4 +55,4 @@
<soap:address location="http://localhost:8080/ode/processes/hello/hello/process/client"/>
</wsdl:port>
</wsdl:service>
-</wsdl:definitions>
\ No newline at end of file
+</wsdl:definitions>
Modified: branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSoapHeader2/hello.wsdl
===================================================================
--- branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSoapHeader2/hello.wsdl 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSoapHeader2/hello.wsdl 2010-05-28 05:11:17 UTC (rev 678)
@@ -1,4 +1,22 @@
<?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 xmlns:process="http://example.com/hello/process" xmlns:tns="http://ode/bpel/unit-test.wsdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:diag="http://example.com/hello" xmlns:client="http://example.com/hello/client" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:pnlk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable" xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop" xmlns:bpdm="http://www.intalio/designer/business-process-data-modeling" targetNamespace="http://example.com/hello">
<wsdl:import namespace="http://ode/bpel/unit-test.wsdl" location="HelloWorld2.wsdl"/>
<wsdl:import namespace="http://example.com/hello/process" location="hello-process.wsdl"/>
@@ -8,4 +26,4 @@
<pnlk:partnerLinkType name="processAndClient">
<pnlk:role name="process_for_client" portType="process:Forclient"/>
</pnlk:partnerLinkType>
-</wsdl:definitions>
\ No newline at end of file
+</wsdl:definitions>
Modified: branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSoapHeader2/hello.xsd
===================================================================
--- branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSoapHeader2/hello.xsd 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/TestSoapHeader2/hello.xsd 2010-05-28 05:11:17 UTC (rev 678)
@@ -1,4 +1,22 @@
<?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.
+ -->
<xsd:schema targetNamespace="http://ode/bpel/unit-test.wsdl"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
attributeFormDefault="qualified" elementFormDefault="qualified">
Modified: branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/test-log4j.properties
===================================================================
--- branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/test-log4j.properties 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/axis2-war/src/test/resources/test-log4j.properties 2010-05-28 05:11:17 UTC (rev 678)
@@ -1,36 +1,40 @@
+#
+# 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, CONSOLE
+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 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
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=%d{MM-dd@HH:mm:ss} %-5p (%13F:%L) %3x - %m%n
-log4j.category.org.apache.ode.bpel.runtime=DEBUG
-
-# 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.category.httpclient=INFO
+log4j.category.httpclient.Wire=INFO
+log4j.category.org.apache.ode=INFO
+#log4j.category.hibernate=DEBUG
+#log4j.category.org.hibernate=DEBUG
Added: branches/ODE/ODE-1.x-jpa/axis2-war/src/test/webapp/WEB-INF/conf/ode-axis2.properties
===================================================================
--- branches/ODE/ODE-1.x-jpa/axis2-war/src/test/webapp/WEB-INF/conf/ode-axis2.properties (rev 0)
+++ branches/ODE/ODE-1.x-jpa/axis2-war/src/test/webapp/WEB-INF/conf/ode-axis2.properties 2010-05-28 05:11:17 UTC (rev 678)
@@ -0,0 +1,23 @@
+#
+# 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.
+#
+
+ode-axis2.dao.factory=org.apache.ode.axis2.instancecleanup.HibDaoConnectionFactoryImpl
+ode-axis2.db.emb.name=hibdb
+ode-axis2.db.mode=EMBEDDED
+ode-axis2.cluster.localRoute.targets=http://doesntexist:8080/ode/processes/
+ode-axis2.cluster.localRoute.base=http://localhost:8888/ode/processes/
+ode-axis2.event.listeners=org.apache.ode.bpel.common.evt.DebugBpelEventListener
Modified: branches/ODE/ODE-1.x-jpa/bpel-api/src/main/java/org/apache/ode/bpel/common/CorrelationKey.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-api/src/main/java/org/apache/ode/bpel/common/CorrelationKey.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-api/src/main/java/org/apache/ode/bpel/common/CorrelationKey.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -131,6 +131,10 @@
* @return <code>true</code> if the given object
*/
public boolean equals(Object o) {
+ if (!(o instanceof CorrelationKey)) {
+ return false;
+ }
+
CorrelationKey okey = (CorrelationKey) o;
if (okey == null || !okey._csetName.equals(_csetName) || okey._keyValues.length != _keyValues.length)
Modified: branches/ODE/ODE-1.x-jpa/bpel-api/src/main/java/org/apache/ode/bpel/common/CorrelationKeySet.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-api/src/main/java/org/apache/ode/bpel/common/CorrelationKeySet.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-api/src/main/java/org/apache/ode/bpel/common/CorrelationKeySet.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -79,7 +79,7 @@
*/
public CorrelationKeySet add(CorrelationKey ck) {
for( CorrelationKey key : correlationKeys ) {
- if( key.getCorrelationSetName() == ck.getCorrelationSetName() ) {
+ if( key.getCorrelationSetName().equals(ck.getCorrelationSetName()) ) {
correlationKeys.remove(ck);
break;
}
Modified: branches/ODE/ODE-1.x-jpa/bpel-api/src/main/java/org/apache/ode/bpel/evt/ScopeCompletionEvent.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-api/src/main/java/org/apache/ode/bpel/evt/ScopeCompletionEvent.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-api/src/main/java/org/apache/ode/bpel/evt/ScopeCompletionEvent.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -26,32 +26,6 @@
public class ScopeCompletionEvent extends ScopeEvent {
private static final long serialVersionUID = 1L;
- private boolean _success;
- private QName _fault;
-
- public ScopeCompletionEvent(boolean success, QName fault) {
- _success = success;
- _fault = fault;
+ public ScopeCompletionEvent() {
}
-
- /**
- * @param fault The fault to set.
- */
- public void setFault(QName fault) {
- _fault = fault;
- }
-
- /**
- * @return Returns the fault.
- */
- public QName getFault() {
- return _fault;
- }
-
- public boolean isSuccess() {
- return _success;
- }
- public void setSuccess(boolean success) {
- _success = success;
- }
}
Modified: branches/ODE/ODE-1.x-jpa/bpel-api/src/main/java/org/apache/ode/bpel/evt/VariableModificationEvent.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-api/src/main/java/org/apache/ode/bpel/evt/VariableModificationEvent.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-api/src/main/java/org/apache/ode/bpel/evt/VariableModificationEvent.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -24,7 +24,7 @@
public class VariableModificationEvent extends VariableEvent {
private static final long serialVersionUID = 1L;
- private Node newValue;
+ private transient Node newValue;
public VariableModificationEvent() {
super();
Modified: branches/ODE/ODE-1.x-jpa/bpel-api/src/main/java/org/apache/ode/bpel/iapi/ClusterAware.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-api/src/main/java/org/apache/ode/bpel/iapi/ClusterAware.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-api/src/main/java/org/apache/ode/bpel/iapi/ClusterAware.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -1,3 +1,21 @@
+/*
+ * 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.bpel.iapi;
/**
Modified: branches/ODE/ODE-1.x-jpa/bpel-api/src/main/java/org/apache/ode/bpel/iapi/Endpoint.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-api/src/main/java/org/apache/ode/bpel/iapi/Endpoint.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-api/src/main/java/org/apache/ode/bpel/iapi/Endpoint.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -47,6 +47,9 @@
*/
@Override
public boolean equals(Object other) {
+ if (!(other instanceof Endpoint)) {
+ return false;
+ }
Endpoint o = (Endpoint) other;
return o.serviceName.equals(serviceName) && o.portName.equals(portName);
}
Modified: branches/ODE/ODE-1.x-jpa/bpel-api/src/main/java/org/apache/ode/bpel/iapi/ProcessConf.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-api/src/main/java/org/apache/ode/bpel/iapi/ProcessConf.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-api/src/main/java/org/apache/ode/bpel/iapi/ProcessConf.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -33,6 +33,7 @@
import org.apache.ode.bpel.evt.BpelEvent;
import org.apache.ode.bpel.o.OFailureHandling;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
import org.apache.ode.utils.CronExpression;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
@@ -216,7 +217,7 @@
public class CronJob {
private CronExpression _cronExpression;
- private final List<Map<String,Object>> runnableDetailList = new ArrayList<Map<String,Object>>();
+ private final List<JobDetails> runnableDetailList = new ArrayList<JobDetails>();
public void setCronExpression(CronExpression _cronExpression) {
this._cronExpression = _cronExpression;
@@ -226,7 +227,7 @@
return _cronExpression;
}
- public List<Map<String,Object>> getRunnableDetailList() {
+ public List<JobDetails> getRunnableDetailList() {
return runnableDetailList;
}
@@ -242,7 +243,7 @@
}
}
- public class CleanupInfo {
+ public class CleanupInfo implements java.io.Serializable {
private List<String> _filters = new ArrayList<String>();
private final Set<CLEANUP_CATEGORY> _categories = EnumSet.noneOf(CLEANUP_CATEGORY.class);
Modified: branches/ODE/ODE-1.x-jpa/bpel-api/src/main/java/org/apache/ode/bpel/iapi/Scheduler.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-api/src/main/java/org/apache/ode/bpel/iapi/Scheduler.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-api/src/main/java/org/apache/ode/bpel/iapi/Scheduler.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -26,6 +26,10 @@
import java.util.concurrent.Callable;
import java.util.concurrent.Future;
+import javax.xml.namespace.QName;
+
+import org.apache.ode.bpel.common.CorrelationKeySet;
+
/**
* The BPEL scheduler.
*/
@@ -42,7 +46,7 @@
* @param when when the job should run (<code>null</code> means now)
* @return unique job identifier
*/
- String schedulePersistedJob(Map<String,Object>jobDetail,Date when)
+ String schedulePersistedJob(JobDetails jobDetail,Date when)
throws ContextException ;
@@ -66,13 +70,13 @@
* @param when does the job should be executed?
* @return unique (as far as the scheduler is concerned) job identifier
*/
- String scheduleVolatileJob(boolean transacted, Map<String,Object> jobDetail, Date when) throws ContextException;
+ String scheduleVolatileJob(boolean transacted, JobDetails jobDetail, Date when) throws ContextException;
/**
* Schedule a volatile job for right now
* @see #scheduleVolatileJob(boolean, java.util.Map, java.util.Date)
*/
- String scheduleVolatileJob(boolean transacted, Map<String,Object> jobDetail) throws ContextException;
+ String scheduleVolatileJob(boolean transacted, JobDetails jobDetail) throws ContextException;
/**
* Make a good effort to cancel the job. If its already running no big
@@ -166,6 +170,105 @@
void onScheduledJob(JobInfo jobInfo) throws JobProcessorException;
}
+ public enum JobType {
+ TIMER,
+ RESUME,
+ INVOKE_INTERNAL,
+ INVOKE_RESPONSE,
+ MATCHER,
+ INVOKE_CHECK
+ }
+
+ public static class JobDetails {
+ public Long instanceId;
+ public String mexId;
+ public String processId;
+ public String type;
+ public String channel;
+ public String correlatorId;
+ public String correlationKeySet;
+ public Integer retryCount;
+ public Boolean inMem;
+ public Map<String, Object> detailsExt = new HashMap<String, Object>();
+
+ public Boolean getInMem() {
+ return inMem == null ? false : inMem;
+ }
+ public void setInMem(Boolean inMem) {
+ this.inMem = inMem;
+ }
+ public String getMexId() {
+ return mexId;
+ }
+ public void setMexId(String mexId) {
+ this.mexId = mexId;
+ }
+ public QName getProcessId() {
+ return processId == null ? null : QName.valueOf(processId);
+ }
+ public void setProcessId(QName processId) {
+ this.processId = "" + processId;
+ }
+ public JobType getType() {
+ return JobType.valueOf(type);
+ }
+ public void setType(JobType type) {
+ this.type = type.toString();
+ }
+ public String getChannel() {
+ return channel;
+ }
+ public void setChannel(String channel) {
+ this.channel = channel;
+ }
+ public String getCorrelatorId() {
+ return correlatorId;
+ }
+ public void setCorrelatorId(String correlatorId) {
+ this.correlatorId = correlatorId;
+ }
+ public CorrelationKeySet getCorrelationKeySet() {
+ return new CorrelationKeySet(correlationKeySet);
+ }
+ public void setCorrelationKeySet(CorrelationKeySet correlationKeySet) {
+ this.correlationKeySet = correlationKeySet == null ? null : correlationKeySet.toCanonicalString();
+ }
+ public Integer getRetryCount() {
+ return retryCount == null ? 0 : retryCount;
+ }
+ public void setRetryCount(Integer retryCount) {
+ this.retryCount = retryCount;
+ }
+ public Long getInstanceId() {
+ return instanceId;
+ }
+ public void setInstanceId(Long instanceId) {
+ this.instanceId = instanceId;
+ }
+ public Map<String, Object> getDetailsExt() {
+ return detailsExt;
+ }
+ public void setDetailsExt(Map<String, Object> detailsExt) {
+ this.detailsExt = detailsExt;
+ }
+
+ @Override
+ public String toString() {
+ return "JobDetails("
+ + " instanceId: " + instanceId
+ + " mexId: " + mexId
+ + " processId: " + processId
+ + " type: " + type
+ + " channel: " + channel
+ + " correlatorId: " + correlatorId
+ + " correlationKeySet: " + correlationKeySet
+ + " retryCount: " + retryCount
+ + " inMem: " + inMem
+ + " detailsExt: " + detailsExt
+ + ")";
+ }
+ }
+
/**
* Wrapper containing information about a scheduled job.
* @author mszefler
@@ -174,17 +277,16 @@
private static final long serialVersionUID = 1L;
public final String jobName;
public final int retryCount;
- public final Map<String,Object> jobDetail;
+ public final JobDetails jobDetail;
- public JobInfo(String jobName, Map<String,Object>jobDetail, int retryCount) {
+ public JobInfo(String jobName, JobDetails jobDetail, int retryCount) {
this.jobName = jobName;
this.jobDetail = jobDetail;
this.retryCount = retryCount;
}
public String toString() {
- // Wrap in hashmap in case the underlying object has no toString method.
- return jobName + "["+retryCount +"]: " + new HashMap<Object, Object>(jobDetail);
+ return jobName + "["+retryCount +"]: " + jobDetail;
}
}
@@ -193,7 +295,7 @@
* processing.
* @author mszefler
*/
- public class JobProcessorException extends Exception {
+ public class JobProcessorException extends RuntimeException {
private static final long serialVersionUID = 1L;
public final boolean retry;
@@ -208,7 +310,7 @@
}
public interface MapSerializableRunnable extends Runnable, Serializable {
- void storeToDetailsMap(Map<String, Object> details);
- void restoreFromDetailsMap(Map<String, Object> details);
+ void storeToDetails(JobDetails details);
+ void restoreFromDetails(JobDetails details);
}
}
\ No newline at end of file
Modified: branches/ODE/ODE-1.x-jpa/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/BpelCompiler.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/BpelCompiler.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/BpelCompiler.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -302,7 +302,7 @@
}
// A "real" variable couldn't be found, checking if we're dealing with a
// process custom property
- if (_customProcessProperties != null && _customProcessProperties.get(varName) != null) {
+ if (_customProcessProperties != null && _customProcessProperties.get(QName.valueOf(varName)) != null) {
}
throw new CompilationException(__cmsgs.errUndeclaredVariable(varName));
@@ -1074,7 +1074,7 @@
oplink.myRoleName = myRole.getName();
QName portType = myRole.getPortType();
if (portType == null)
- throw new CompilationException(__cmsgs.errMissingMyRolePortType(portType, plink.getMyRole(), plinkType.getName()));
+ throw new CompilationException(__cmsgs.errMissingMyRolePortType(myRole.getPortType(), plink.getMyRole(), plinkType.getName()));
oplink.myRolePortType = resolvePortType(portType);
}
@@ -1089,7 +1089,7 @@
oplink.partnerRoleName = partnerRole.getName();
QName portType = partnerRole.getPortType();
if (portType == null)
- throw new CompilationException(__cmsgs.errMissingPartnerRolePortType(portType, plink.getPartnerRole(), plinkType.getName()));
+ throw new CompilationException(__cmsgs.errMissingPartnerRolePortType(partnerRole.getPortType(), plink.getPartnerRole(), plinkType.getName()));
oplink.partnerRolePortType = resolvePortType(portType);
}
Modified: branches/ODE/ODE-1.x-jpa/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/bom/InvokeActivity.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/bom/InvokeActivity.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/bom/InvokeActivity.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -86,7 +86,7 @@
* @author mszefler
*
*/
- class BastardScope extends Scope {
+ static class BastardScope extends Scope {
public BastardScope(Element el) {
super(el);
Modified: branches/ODE/ODE-1.x-jpa/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/bom/Scope.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/bom/Scope.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/bom/Scope.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -160,7 +160,7 @@
return Boolean.TRUE;
if ("no".equals(value))
return Boolean.FALSE;
- return null;
+ return Boolean.FALSE;
}
/**
Modified: branches/ODE/ODE-1.x-jpa/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/JaxpFunctionResolver.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/JaxpFunctionResolver.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/JaxpFunctionResolver.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -167,7 +167,7 @@
/**
* Compile time checking for the non standard ode:splitToElements function.
*/
- public class SplitToElements implements XPathFunction {
+ public static class SplitToElements implements XPathFunction {
public Object evaluate(List params) throws XPathFunctionException {
if (params.size() < 3 || params.size() > 4) {
throw new CompilationException(
@@ -205,7 +205,7 @@
}
}
- public class InsertInto implements XPathFunction {
+ public static class InsertInto implements XPathFunction {
public Object evaluate(List args) throws XPathFunctionException {
if (args.size() != 3) {
throw new CompilationException(__msgs.errInvalidNumberOfArguments(Constants.NON_STDRD_FUNCTION_INSERT_AFTER));
@@ -214,7 +214,7 @@
}
}
- public class InsertAfter implements XPathFunction {
+ public static class InsertAfter implements XPathFunction {
public Object evaluate(List args) throws XPathFunctionException {
if (args.size() < 2 || args.size() > 3) {
throw new CompilationException(__msgs.errInvalidNumberOfArguments(Constants.NON_STDRD_FUNCTION_INSERT_AFTER));
@@ -223,7 +223,7 @@
}
}
- public class InsertBefore implements XPathFunction {
+ public static class InsertBefore implements XPathFunction {
public Object evaluate(List args) throws XPathFunctionException {
if (args.size() < 2 || args.size() > 3) {
throw new CompilationException(__msgs.errInvalidNumberOfArguments(Constants.NON_STDRD_FUNCTION_INSERT_BEFORE));
@@ -232,7 +232,7 @@
}
}
- public class InsertAsFirstInto implements XPathFunction {
+ public static class InsertAsFirstInto implements XPathFunction {
public Object evaluate(List args) throws XPathFunctionException {
if (args.size() != 2) {
throw new CompilationException(__msgs.errInvalidNumberOfArguments(Constants.NON_STDRD_FUNCTION_INSERT_AS_FIRST_INTO));
@@ -241,7 +241,7 @@
}
}
- public class InsertAsLastInto implements XPathFunction {
+ public static class InsertAsLastInto implements XPathFunction {
public Object evaluate(List args) throws XPathFunctionException {
if (args.size() != 2) {
throw new CompilationException(__msgs.errInvalidNumberOfArguments(Constants.NON_STDRD_FUNCTION_INSERT_AS_LAST_INTO));
@@ -250,7 +250,7 @@
}
}
- public class Delete implements XPathFunction {
+ public static class Delete implements XPathFunction {
public Object evaluate(List args) throws XPathFunctionException {
if (args.size() < 1 || args.size() > 2) {
throw new CompilationException(__msgs.errInvalidNumberOfArguments(Constants.NON_STDRD_FUNCTION_DELETE));
@@ -259,7 +259,7 @@
}
}
- public class Rename implements XPathFunction {
+ public static class Rename implements XPathFunction {
public Object evaluate(List args) throws XPathFunctionException {
if (args.size() < 2) {
throw new CompilationException(__msgs.errInvalidNumberOfArguments(Constants.NON_STDRD_FUNCTION_RENAME));
@@ -268,7 +268,7 @@
}
}
- public class ProcessProperty implements XPathFunction {
+ public static class ProcessProperty implements XPathFunction {
public Object evaluate(List args) throws XPathFunctionException {
if (args.size() != 1) {
throw new CompilationException(__msgs.errInvalidNumberOfArguments(Constants.NON_STDRD_FUNCTION_PROCESS_PROPERTY));
@@ -277,7 +277,7 @@
}
}
- public class DayTimeDuration implements XPathFunction {
+ public static class DayTimeDuration implements XPathFunction {
public Object evaluate(List args) throws XPathFunctionException {
if (args.size() != 1) {
throw new CompilationException(__msgs.errInvalidNumberOfArguments(Constants.NON_STDRD_FUNCTION_DAY_TIME_DURATION));
@@ -286,7 +286,7 @@
}
}
- public class YearMonthDuration implements XPathFunction {
+ public static class YearMonthDuration implements XPathFunction {
public Object evaluate(List args) throws XPathFunctionException {
if (args.size() != 1) {
throw new CompilationException(__msgs.errInvalidNumberOfArguments(Constants.NON_STDRD_FUNCTION_YEAR_MONTH_DURATION));
Modified: branches/ODE/ODE-1.x-jpa/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/OdeXPathFunctionLibrary.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/OdeXPathFunctionLibrary.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/OdeXPathFunctionLibrary.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -37,7 +37,7 @@
public class OdeXPathFunctionLibrary extends net.sf.saxon.xpath.XPathFunctionLibrary {
private static final long serialVersionUID = -8885396864277163797L;
- private JaxpFunctionResolver _funcResolver;
+ private transient JaxpFunctionResolver _funcResolver;
public OdeXPathFunctionLibrary(JaxpFunctionResolver funcResolver) {
_funcResolver = funcResolver;
Modified: branches/ODE/ODE-1.x-jpa/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/SaxonContext.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/SaxonContext.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/SaxonContext.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -35,8 +35,10 @@
*/
public class SaxonContext extends JAXPXPathStaticContext {
- private JaxpVariableResolver _varResolver;
- private JaxpFunctionResolver _funcResolver;
+
+ private static final long serialVersionUID = 2460900369574468960L;
+ private transient JaxpVariableResolver _varResolver;
+ private transient JaxpFunctionResolver _funcResolver;
public SaxonContext(Configuration config, JaxpVariableResolver varResolver,
JaxpFunctionResolver funcResolver) {
Modified: branches/ODE/ODE-1.x-jpa/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/XPath20ExpressionCompilerImpl.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/XPath20ExpressionCompilerImpl.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/XPath20ExpressionCompilerImpl.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -20,9 +20,12 @@
package org.apache.ode.bpel.elang.xpath20.compiler;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import javax.xml.namespace.QName;
import javax.xml.transform.TransformerFactory;
@@ -251,60 +254,19 @@
* @return list of function expressions that may not have been resolved properly
*/
private List<String> extractFunctionExprs(String xpathStr) {
- ArrayList<String> functionExprs = new ArrayList<String>();
+ ArrayList<String> functionExprs = new ArrayList<String>();
+ // Match the prefix : function name ( all contents except the ) and the closing )'s that may occur
+ final String FUNCTION_REGEX = "\\w+:\\w+\\([.[^\\)]]*\\)*";
int firstFunction = xpathStr.indexOf("("),
lastFunction = xpathStr.lastIndexOf("(");
- StringBuffer functionExpr = new StringBuffer();
- if ((firstFunction > 0 && // the xpath contains a function
- firstFunction < lastFunction)) { // the xpath references multiple variables
- // most likely, the variable reference has not been resolved, so make that happen
- boolean quoted = false, doubleQuoted = false, function = false, arguments = false;
- Name11Checker nameChecker = Name11Checker.getInstance();
- for (int index = firstFunction; index < xpathStr.length(); index++) {
- if (!function) {
- int colonIndex = xpathStr.indexOf(':', index);
- if (colonIndex == -1) {
- break;
- }
- while (colonIndex >= 0 && nameChecker.isNCNameChar(xpathStr.charAt(--colonIndex)));
- if (xpathStr.charAt(colonIndex) == '$') {
- index = xpathStr.indexOf(':', index) + 1;
- continue;
- }
- function = true;
- arguments = false;
- functionExpr.setLength(0);
- index = colonIndex;
- continue;
- }
- char ch = xpathStr.charAt(index);
- if (function) {
- functionExpr.append(ch);
- // in the name is qualified, don't check if its a qname when we're at the ":" character
- if (ch == ':') {
- continue;
- } else if (ch == '(') {
- if (nameChecker.isQName(functionExpr.substring(0, functionExpr.length() - 1))) {
- arguments = true;
- } else {
- function = false;
- continue;
- }
- } else if (ch == ')') {
- if (arguments) {
- function = false;
- functionExprs.add(functionExpr.toString());
- functionExpr.setLength(0);
- }
- } else {
- if (!arguments) {
- if (!nameChecker.isQName(functionExpr.substring(0, functionExpr.length()))) {
- function = false;
- }
- }
- }
- }
- }
+ if ((firstFunction > 0 && firstFunction < lastFunction)) {
+ Pattern regex = Pattern.compile(FUNCTION_REGEX);
+ Matcher matcher = regex.matcher(xpathStr);
+
+ while (matcher.find()) {
+ String function = matcher.group();
+ functionExprs.add(function);
+ }
}
return functionExprs;
}
Modified: branches/ODE/ODE-1.x-jpa/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xquery10/compiler/XQuery10BpelFunctions.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xquery10/compiler/XQuery10BpelFunctions.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xquery10/compiler/XQuery10BpelFunctions.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -17,165 +17,168 @@
* under the License.
*/
-package org.apache.ode.bpel.elang.xquery10.compiler;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.xml.namespace.QName;
-import javax.xml.xpath.XPathFunction;
-import javax.xml.xpath.XPathFunctionException;
-
-import net.sf.saxon.dom.NodeWrapper;
-import net.sf.saxon.expr.XPathContext;
-import net.sf.saxon.om.Item;
-
-import org.apache.ode.bpel.elang.xpath20.compiler.Constants;
-import org.apache.ode.bpel.elang.xpath20.compiler.JaxpFunctionResolver;
-import org.apache.ode.utils.Namespaces;
-import org.w3c.dom.Node;
-
-
-/**
- * XQuery-Friendly definition of BPEL functions, which
- * delegates calls to the JAXP-based function resolver
- */
-public class XQuery10BpelFunctions {
- public static final String USER_DATA_KEY_FUNCTION_RESOLVER = "function-resolver";
- private static final QName WSBPEL_GET_VARIABLE_PROPERTY = new QName(Namespaces.WSBPEL2_0_FINAL_EXEC,
- Constants.EXT_FUNCTION_GETVARIABLEPROPERTY);
- private static final QName WSBPEL_GET_VARIABLE_DATA = new QName(Namespaces.WSBPEL2_0_FINAL_EXEC,
- Constants.EXT_FUNCTION_GETVARIABLEDATA);
- private static final QName WSBPEL_GET_LINK_STATUS = new QName(Namespaces.WSBPEL2_0_FINAL_EXEC,
- Constants.EXT_FUNCTION_GETLINKSTATUS);
- private static final QName WSBPEL_DO_XSL_TRANSFORM = new QName(Namespaces.WSBPEL2_0_FINAL_EXEC,
- Constants.EXT_FUNCTION_DOXSLTRANSFORM);
-
- /**
- * WS-BPEL getVariableProperty function
- *
- * @param context context
- * @param variableName variableName
- * @param propertyName propertyName
- *
- * @return type
- *
- * @throws XPathFunctionException XPathFunctionException
- */
- public static Object getVariableProperty(XPathContext context,
- String variableName, String propertyName) throws XPathFunctionException {
- ArrayList<String> arguments = new ArrayList<String>();
- arguments.add(variableName);
- arguments.add(propertyName);
-
- return evaluate(resolveFunction(context, WSBPEL_GET_VARIABLE_PROPERTY),
- arguments);
- }
-
- /**
- * WS-BPEL getVariableData function
- *
- * @param context context
- * @param variableName variableName
- * @param partName partName
- * @param xpath xpath
- *
- * @return type
- *
- * @throws XPathFunctionException XPathFunctionException
- */
- public static Object getVariableData(XPathContext context,
- String variableName, String partName, String xpath)
- throws XPathFunctionException {
- ArrayList<String> arguments = new ArrayList<String>();
- arguments.add(variableName);
- arguments.add(partName);
- arguments.add(xpath);
-
- return evaluate(resolveFunction(context, WSBPEL_GET_VARIABLE_DATA),
- arguments);
- }
-
- /**
- * WS-BPEL doXslTransform function
- *
- * @param context context
- * @param xslUri xslUri
- * @param sources sources
- *
- * @return type
- *
- * @throws XPathFunctionException XPathFunctionException
- */
- public static Object doXslTransform(XPathContext context, String xslUri,
- Object sources) throws XPathFunctionException {
- ArrayList<Object> arguments = new ArrayList<Object>();
- arguments.add(xslUri);
- arguments.add(sources);
-
- return evaluate(resolveFunction(context, WSBPEL_DO_XSL_TRANSFORM),
- arguments);
- }
-
- /**
- * WS-BPEL getLinkStatus function
- *
- * @param context context
- * @param linkName linkName
- *
- * @return type
- *
- * @throws XPathFunctionException XPathFunctionException
- */
- public static Object getLinkStatus(XPathContext context, String linkName)
- throws XPathFunctionException {
- ArrayList<String> arguments = new ArrayList<String>();
- arguments.add(linkName);
-
- return evaluate(resolveFunction(context, WSBPEL_GET_LINK_STATUS),
- arguments);
- }
-
- /**
- * Locates the JAXP equivalent function
- *
- * @param context context
- * @param name name
- *
- * @return type
- */
- private static XPathFunction resolveFunction(XPathContext context,
- QName name) {
- JaxpFunctionResolver funcResolver = null;
- Item item = context.getCurrentIterator().current();
-
- if (item instanceof NodeWrapper) {
- Node node = (Node) ((NodeWrapper) item).getUnderlyingNode();
-
- if (node != null) {
- funcResolver = (JaxpFunctionResolver) node.getUserData(USER_DATA_KEY_FUNCTION_RESOLVER);
- }
- }
-
- return funcResolver.resolveFunction(name, 0);
- }
-
- /**
- * Evaluates function against arguments passed by XQuery
- *
- * @param function function
- * @param arguments arguments
- *
- * @return type
- *
- * @throws XPathFunctionException XPathFunctionException
- */
- private static Object evaluate(XPathFunction function, List arguments)
- throws XPathFunctionException {
- if (function == null) {
- throw new XPathFunctionException("Unable to locate function in library");
- }
-
- return function.evaluate(arguments);
- }
-}
+package org.apache.ode.bpel.elang.xquery10.compiler;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+import javax.xml.xpath.XPathFunction;
+import javax.xml.xpath.XPathFunctionException;
+
+import net.sf.saxon.dom.NodeWrapper;
+import net.sf.saxon.expr.XPathContext;
+import net.sf.saxon.om.Item;
+
+import org.apache.ode.bpel.elang.xpath20.compiler.Constants;
+import org.apache.ode.bpel.elang.xpath20.compiler.JaxpFunctionResolver;
+import org.apache.ode.utils.Namespaces;
+import org.w3c.dom.Node;
+
+
+/**
+ * XQuery-Friendly definition of BPEL functions, which
+ * delegates calls to the JAXP-based function resolver
+ */
+public class XQuery10BpelFunctions {
+ public static final String USER_DATA_KEY_FUNCTION_RESOLVER = "function-resolver";
+ private static final QName WSBPEL_GET_VARIABLE_PROPERTY = new QName(Namespaces.WSBPEL2_0_FINAL_EXEC,
+ Constants.EXT_FUNCTION_GETVARIABLEPROPERTY);
+ private static final QName WSBPEL_GET_VARIABLE_DATA = new QName(Namespaces.WSBPEL2_0_FINAL_EXEC,
+ Constants.EXT_FUNCTION_GETVARIABLEDATA);
+ private static final QName WSBPEL_GET_LINK_STATUS = new QName(Namespaces.WSBPEL2_0_FINAL_EXEC,
+ Constants.EXT_FUNCTION_GETLINKSTATUS);
+ private static final QName WSBPEL_DO_XSL_TRANSFORM = new QName(Namespaces.WSBPEL2_0_FINAL_EXEC,
+ Constants.EXT_FUNCTION_DOXSLTRANSFORM);
+
+ /**
+ * WS-BPEL getVariableProperty function
+ *
+ * @param context context
+ * @param variableName variableName
+ * @param propertyName propertyName
+ *
+ * @return type
+ *
+ * @throws XPathFunctionException XPathFunctionException
+ */
+ public static Object getVariableProperty(XPathContext context,
+ String variableName, String propertyName) throws XPathFunctionException {
+ ArrayList<String> arguments = new ArrayList<String>();
+ arguments.add(variableName);
+ arguments.add(propertyName);
+
+ return evaluate(resolveFunction(context, WSBPEL_GET_VARIABLE_PROPERTY),
+ arguments);
+ }
+
+ /**
+ * WS-BPEL getVariableData function
+ *
+ * @param context context
+ * @param variableName variableName
+ * @param partName partName
+ * @param xpath xpath
+ *
+ * @return type
+ *
+ * @throws XPathFunctionException XPathFunctionException
+ */
+ public static Object getVariableData(XPathContext context,
+ String variableName, String partName, String xpath)
+ throws XPathFunctionException {
+ ArrayList<String> arguments = new ArrayList<String>();
+ arguments.add(variableName);
+ arguments.add(partName);
+ arguments.add(xpath);
+
+ return evaluate(resolveFunction(context, WSBPEL_GET_VARIABLE_DATA),
+ arguments);
+ }
+
+ /**
+ * WS-BPEL doXslTransform function
+ *
+ * @param context context
+ * @param xslUri xslUri
+ * @param sources sources
+ *
+ * @return type
+ *
+ * @throws XPathFunctionException XPathFunctionException
+ */
+ public static Object doXslTransform(XPathContext context, String xslUri,
+ Object sources) throws XPathFunctionException {
+ ArrayList<Object> arguments = new ArrayList<Object>();
+ arguments.add(xslUri);
+ arguments.add(sources);
+
+ return evaluate(resolveFunction(context, WSBPEL_DO_XSL_TRANSFORM),
+ arguments);
+ }
+
+ /**
+ * WS-BPEL getLinkStatus function
+ *
+ * @param context context
+ * @param linkName linkName
+ *
+ * @return type
+ *
+ * @throws XPathFunctionException XPathFunctionException
+ */
+ public static Object getLinkStatus(XPathContext context, String linkName)
+ throws XPathFunctionException {
+ ArrayList<String> arguments = new ArrayList<String>();
+ arguments.add(linkName);
+
+ return evaluate(resolveFunction(context, WSBPEL_GET_LINK_STATUS),
+ arguments);
+ }
+
+ /**
+ * Locates the JAXP equivalent function
+ *
+ * @param context context
+ * @param name name
+ *
+ * @return type
+ */
+ private static XPathFunction resolveFunction(XPathContext context,
+ QName name) {
+ Item item = context.getCurrentIterator().current();
+ XPathFunction function = null;
+
+ if (item instanceof NodeWrapper) {
+ Node node = (Node) ((NodeWrapper) item).getUnderlyingNode();
+ JaxpFunctionResolver funcResolver = null;
+ if (node != null) {
+ funcResolver = (JaxpFunctionResolver) node.getUserData(USER_DATA_KEY_FUNCTION_RESOLVER);
+ }
+ if (funcResolver != null) {
+ function = funcResolver.resolveFunction(name, 0);
+ }
+ }
+
+ return function;
+ }
+
+ /**
+ * Evaluates function against arguments passed by XQuery
+ *
+ * @param function function
+ * @param arguments arguments
+ *
+ * @return type
+ *
+ * @throws XPathFunctionException XPathFunctionException
+ */
+ private static Object evaluate(XPathFunction function, List arguments)
+ throws XPathFunctionException {
+ if (function == null) {
+ throw new XPathFunctionException("Unable to locate function in library");
+ }
+
+ return function.evaluate(arguments);
+ }
+}
Modified: branches/ODE/ODE-1.x-jpa/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xquery10/compiler/XQuery10ExpressionCompilerImpl.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xquery10/compiler/XQuery10ExpressionCompilerImpl.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xquery10/compiler/XQuery10ExpressionCompilerImpl.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -365,7 +365,7 @@
return typeQName;
}
- private class XQueryDeclarations {
+ private static class XQueryDeclarations {
StringBuffer declarations = new StringBuffer();
public XQueryDeclarations() {}
Added: branches/ODE/ODE-1.x-jpa/bpel-compiler/src/test/java/org/apache/ode/bpel/elang/xpath20/compiler/XPath20ExpressionCompilerImplTest.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-compiler/src/test/java/org/apache/ode/bpel/elang/xpath20/compiler/XPath20ExpressionCompilerImplTest.java (rev 0)
+++ branches/ODE/ODE-1.x-jpa/bpel-compiler/src/test/java/org/apache/ode/bpel/elang/xpath20/compiler/XPath20ExpressionCompilerImplTest.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -0,0 +1,86 @@
+/*
+ * 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.bpel.elang.xpath20.compiler;
+
+import java.lang.reflect.Method;
+import java.util.List;
+
+import org.junit.*;
+
+
+public class XPath20ExpressionCompilerImplTest {
+
+ private static final String TEST_NAMESPACE = "http://www.example.com/";
+ private static final String EXTRACT_FUNCTION_EXPRS = "extractFunctionExprs";
+
+ @Test
+ public void testresolvedFunctionsExpr() throws Exception {
+ XPath20ExpressionCompilerImpl xp20Exp = new XPath20ExpressionCompilerImpl(TEST_NAMESPACE);
+ final Method[] methods =
+ xp20Exp.getClass().getDeclaredMethods();
+ for (int i = 0; i < methods.length; ++i) {
+ if (methods[i].getName().equals(EXTRACT_FUNCTION_EXPRS)) {
+ final Object params[] = { "count(count(1))" };
+ methods[i].setAccessible(true);
+ Object ret = methods[i].invoke(xp20Exp, params);
+ List<?> values = (List<?>) ret;
+ Assert.assertEquals(0, values.size());
+ }
+ }
+ }
+
+ @Test
+ public void testTimeStampInFunction() throws Exception {
+ XPath20ExpressionCompilerImpl xp20Exp = new XPath20ExpressionCompilerImpl(TEST_NAMESPACE);
+ final Method[] methods =
+ xp20Exp.getClass().getDeclaredMethods();
+ for (int i = 0; i < methods.length; ++i) {
+ if (methods[i].getName().equals(EXTRACT_FUNCTION_EXPRS)) {
+ final Object params[] = { "concat(xs:concat(\"P\", \"08:30:00.000+08:00\"))" };
+ methods[i].setAccessible(true);
+ Object ret = methods[i].invoke(xp20Exp, params);
+ List<?> values = (List<?>) ret;
+ Assert.assertEquals(1, values.size());
+ }
+ }
+
+ }
+
+ @Test
+ public void testresolvedFunctionsTimeStamp() throws Exception {
+ XPath20ExpressionCompilerImpl xp20Exp = new XPath20ExpressionCompilerImpl(TEST_NAMESPACE);
+ final Method[] methods =
+ xp20Exp.getClass().getDeclaredMethods();
+ for (int i = 0; i < methods.length; ++i) {
+ if (methods[i].getName().equals(EXTRACT_FUNCTION_EXPRS)) {
+ final Object params[] = { "concat(current-date() + xs:dayTimeDuration(concat(\"P\", $DAYS_TO_NEXT_REMINDER, \"D\")), \"T\", \"08:30:00.000+08:00\")" };
+ methods[i].setAccessible(true);
+ Object ret = methods[i].invoke(xp20Exp, params);
+ List<?> values = (List<?>) ret;
+ Assert.assertEquals(1, values.size());
+ Assert.assertEquals("Unexpected Function value", "xs:dayTimeDuration(concat(\"P\", $DAYS_TO_NEXT_REMINDER, \"D\"))", (String)values.get(0));
+ }
+ }
+ }
+
+
+
+
+}
Modified: branches/ODE/ODE-1.x-jpa/bpel-compiler/src/test/java/org/apache/ode/bpel/elang/xquery10/compiler/XQuery10ExpressionCompilerImplTest.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-compiler/src/test/java/org/apache/ode/bpel/elang/xquery10/compiler/XQuery10ExpressionCompilerImplTest.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-compiler/src/test/java/org/apache/ode/bpel/elang/xquery10/compiler/XQuery10ExpressionCompilerImplTest.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -1,3 +1,21 @@
+/*
+ * 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.bpel.elang.xquery10.compiler;
import java.util.Arrays;
Modified: branches/ODE/ODE-1.x-jpa/bpel-compiler/src/test/resources/log4j.properties
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-compiler/src/test/resources/log4j.properties 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-compiler/src/test/resources/log4j.properties 2010-05-28 05:11:17 UTC (rev 678)
@@ -32,5 +32,5 @@
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{MM-dd@HH:mm:ss} %-5p (%13F:%L) %3x - %m%n
-log4j.category.org.apache.ode=INFO
+log4j.category.org.apache.ode=DEBUG
Modified: branches/ODE/ODE-1.x-jpa/bpel-dao/src/main/java/org/apache/ode/dao/bpel/DeferredProcessInstanceCleanable.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-dao/src/main/java/org/apache/ode/dao/bpel/DeferredProcessInstanceCleanable.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-dao/src/main/java/org/apache/ode/dao/bpel/DeferredProcessInstanceCleanable.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -1,3 +1,22 @@
+/*
+ * 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.dao.bpel;
import java.io.Serializable;
Modified: branches/ODE/ODE-1.x-jpa/bpel-dao/src/main/java/org/apache/ode/dao/bpel/FilteredInstanceDeletable.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-dao/src/main/java/org/apache/ode/dao/bpel/FilteredInstanceDeletable.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-dao/src/main/java/org/apache/ode/dao/bpel/FilteredInstanceDeletable.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -1,3 +1,21 @@
+/*
+ * 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.dao.bpel;
import java.util.Set;
Modified: branches/ODE/ODE-1.x-jpa/bpel-dao/src/main/java/org/apache/ode/dao/bpel/ScopeStateEnum.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-dao/src/main/java/org/apache/ode/dao/bpel/ScopeStateEnum.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-dao/src/main/java/org/apache/ode/dao/bpel/ScopeStateEnum.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -18,39 +18,6 @@
*/
package org.apache.ode.dao.bpel;
-public class ScopeStateEnum {
- /** DOCUMENTME */
- public static final ScopeStateEnum ACTIVE = new ScopeStateEnum("ACTIVE");
-
- /** DOCUMENTME */
- public static final ScopeStateEnum FAULTED = new ScopeStateEnum("FAULTED");
-
- /** DOCUMENTME */
- public static final ScopeStateEnum FAULTHANDLER = new ScopeStateEnum("FAULTHANDLER");
-
- /** DOCUMENTME */
- public static final ScopeStateEnum COMPLETED = new ScopeStateEnum("COMPLETED");
-
- /** DOCUMENTME */
- public static final ScopeStateEnum COMPENSATING = new ScopeStateEnum("COMPENSATING");
-
- /** DOCUMENTME */
- public static final ScopeStateEnum COMPENSATED = new ScopeStateEnum("COMPENSATED");
- private final String myName; // for debug only
-
- public ScopeStateEnum(String name) {
- myName = name;
- }
-
- public boolean equals(Object o) {
- return ((ScopeStateEnum)o).myName.equals(myName);
- }
-
- public int hashCode() {
- return myName.hashCode();
- }
-
- public String toString() {
- return myName;
- }
+public enum ScopeStateEnum {
+ NEW, ACTIVE, FAULT, COMPLETED
}
Modified: branches/ODE/ODE-1.x-jpa/bpel-epr/src/main/java/org/apache/ode/il/MockScheduler.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-epr/src/main/java/org/apache/ode/il/MockScheduler.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-epr/src/main/java/org/apache/ode/il/MockScheduler.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -69,7 +69,7 @@
}
};
- public String schedulePersistedJob(final Map<String, Object> detail, final Date date) throws ContextException {
+ public String schedulePersistedJob(final JobDetails detail, final Date date) throws ContextException {
if (date != null) {
return scheduleVolatileJob(true, detail, date);
} else {
@@ -77,11 +77,11 @@
}
}
- public String scheduleVolatileJob(boolean transacted, Map<String, Object> jobDetail) throws ContextException {
+ public String scheduleVolatileJob(boolean transacted, JobDetails jobDetail) throws ContextException {
return scheduleVolatileJob(transacted, jobDetail, null);
}
- public String scheduleVolatileJob(final boolean transacted, final Map<String, Object> detail, final Date date) throws ContextException {
+ public String scheduleVolatileJob(final boolean transacted, final JobDetails detail, final Date date) throws ContextException {
if (date != null) {
registerSynchronizer(new Synchronizer() {
public void afterCompletion(boolean success) {
@@ -113,7 +113,7 @@
}
}
- private void exec(boolean transacted, final Map<String, Object> detail) {
+ private void exec(boolean transacted, final JobDetails detail) {
try {
if (transacted) {
@@ -148,7 +148,7 @@
});
return null;
} else {
- return scheduleVolatileJob(true, new HashMap<String, Object>());
+ return scheduleVolatileJob(true, new JobDetails());
}
}
Modified: branches/ODE/ODE-1.x-jpa/bpel-obj/src/main/java/org/apache/ode/bpel/o/OMessageVarType.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-obj/src/main/java/org/apache/ode/bpel/o/OMessageVarType.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-obj/src/main/java/org/apache/ode/bpel/o/OMessageVarType.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -68,6 +68,14 @@
return el;
}
+ public String toString() {
+ StringBuffer buf = new StringBuffer(super.toString());
+ buf.append('(');
+ buf.append(this.messageType.toString());
+ buf.append(')');
+ return buf.toString();
+ }
+
public static class Part extends OBase {
private static final long serialVersionUID = -2356665271228433779L;
Modified: branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelEngineImpl.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelEngineImpl.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelEngineImpl.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -49,7 +49,9 @@
import org.apache.ode.bpel.iapi.MessageExchange.MessageExchangePattern;
import org.apache.ode.bpel.iapi.MessageExchange.Status;
import org.apache.ode.bpel.iapi.MyRoleMessageExchange.CorrelationStatus;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
import org.apache.ode.bpel.iapi.Scheduler.JobInfo;
+import org.apache.ode.bpel.iapi.Scheduler.JobType;
import org.apache.ode.bpel.intercept.InterceptorInvoker;
import org.apache.ode.bpel.intercept.MessageExchangeInterceptor;
import org.apache.ode.bpel.intercept.ProcessCountThrottler;
@@ -378,31 +380,36 @@
if (process == null) return null;
return process.getOProcess();
}
-
- public void onScheduledJob(Scheduler.JobInfo jobInfo) throws Scheduler.JobProcessorException {
- final WorkEvent we = new WorkEvent(jobInfo.jobDetail);
-
- if( __log.isTraceEnabled() ) __log.trace("[JOB] onScheduledJob " + jobInfo + "" + we.getIID());
-
+
+ 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.getIID(), 1, TimeUnit.MICROSECONDS);
+ _instanceLockManager.lock(iid, 1, TimeUnit.MICROSECONDS);
_contexts.scheduler.registerSynchronizer(new Scheduler.Synchronizer() {
public void afterCompletion(boolean success) {
- _instanceLockManager.unlock(we.getIID());
+ _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.getIID() + " 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
@@ -413,11 +420,11 @@
process = _activeProcesses.get(we.getProcessId());
} else {
ProcessInstanceDAO instance;
- if (we.isInMem()) instance = _contexts.inMemDao.getConnection().getInstance(we.getIID());
- else instance = _contexts.dao.getConnection().getInstance(we.getIID());
+ if (we.getInMem()) instance = _contexts.inMemDao.getConnection().getInstance(we.getInstanceId());
+ else instance = _contexts.dao.getConnection().getInstance(we.getInstanceId());
if (instance == null) {
- __log.debug(__msgs.msgScheduledJobReferencesUnknownInstance(we.getIID()));
+ __log.debug(__msgs.msgScheduledJobReferencesUnknownInstance(we.getInstanceId()));
// nothing we can do, this instance is not in the database, it will always fail, not
// exactly an error since can occur in normal course of events.
return;
@@ -435,13 +442,13 @@
ClassLoader cl = Thread.currentThread().getContextClassLoader();
try {
Thread.currentThread().setContextClassLoader(process._classLoader);
- if (we.getType().equals(WorkEvent.Type.INVOKE_CHECK)) {
- if (__log.isDebugEnabled()) __log.debug("handleWorkEvent: InvokeCheck event for mexid " + we.getMexId());
+ if (we.getType().equals(JobType.INVOKE_CHECK)) {
+ if (__log.isDebugEnabled()) __log.debug("handleJobDetails: InvokeCheck event for mexid " + we.getMexId());
sendPartnerRoleFailure(we, MessageExchange.FailureType.COMMUNICATION_ERROR);
return;
- } else if (we.getType().equals(WorkEvent.Type.INVOKE_INTERNAL)) {
- if (__log.isDebugEnabled()) __log.debug("handleWorkEvent: InvokeInternal event for mexid " + we.getMexId());
+ } else if (we.getType().equals(JobType.INVOKE_INTERNAL)) {
+ if (__log.isDebugEnabled()) __log.debug("handleJobDetails: InvokeInternal event for mexid " + we.getMexId());
setMessageExchangeProcess(we.getMexId(), process.getProcessDAO());
MyRoleMessageExchangeImpl mex = (MyRoleMessageExchangeImpl) getMessageExchange(we.getMexId());
@@ -458,33 +465,35 @@
}
}
}
- process.handleWorkEvent(jobInfo.jobDetail);
+ process.handleJobDetails(jobInfo.jobDetail);
debuggingDelay();
} finally {
Thread.currentThread().setContextClassLoader(cl);
}
+ } catch (Scheduler.JobProcessorException e) {
+ throw e;
} catch (BpelEngineException bee) {
- __log.error(__msgs.msgScheduledJobFailed(we.getDetail()), bee);
+ __log.error(__msgs.msgScheduledJobFailed(we), bee);
throw new Scheduler.JobProcessorException(bee, checkRetry(we));
} catch (ContextException ce) {
- __log.error(__msgs.msgScheduledJobFailed(we.getDetail()), ce);
+ __log.error(__msgs.msgScheduledJobFailed(we), ce);
throw new Scheduler.JobProcessorException(ce, checkRetry(we));
} catch (InvalidProcessException ipe) {
- __log.error(__msgs.msgScheduledJobFailed(we.getDetail()), ipe);
+ __log.error(__msgs.msgScheduledJobFailed(we), ipe);
sendMyRoleFault(process, we, ipe.getCauseCode());
} catch (RuntimeException rte) {
- __log.error(__msgs.msgScheduledJobFailed(we.getDetail()), rte);
+ __log.error(__msgs.msgScheduledJobFailed(we), rte);
throw new Scheduler.JobProcessorException(rte, checkRetry(we));
} catch (Throwable t) {
- __log.error(__msgs.msgScheduledJobFailed(we.getDetail()), t);
+ __log.error(__msgs.msgScheduledJobFailed(we), t);
throw new Scheduler.JobProcessorException(t, checkRetry(we));
}
}
- private boolean checkRetry(WorkEvent we) {
+ private boolean checkRetry(JobDetails we) {
// Only retry if the job is NOT in memory. Not that this does not guaranty that a retry will be scheduled.
// Actually events are not retried if not persisted and the scheduler might choose to discard the event if it has been retried too many times.
- return !we.isInMem();
+ return !we.getInMem();
}
/**
@@ -692,7 +701,7 @@
return false;
}
- public void sendMyRoleFault(BpelProcess process, WorkEvent we, int causeCode) {
+ public void sendMyRoleFault(BpelProcess process, JobDetails we, int causeCode) {
MessageExchange mex = (MessageExchange) getMessageExchange(we.getMexId());
if (!(mex instanceof MyRoleMessageExchange)) {
return;
@@ -725,7 +734,7 @@
&& activeProcess.getConf().getType().equals(process.getConf().getType())) {
we.setProcessId(activeProcess._pid);
((MyRoleMessageExchangeImpl) mex)._process = activeProcess;
- process.handleWorkEvent(we.getDetail());
+ process.handleJobDetails(we);
return;
}
}
@@ -741,7 +750,7 @@
}
}
- private void sendPartnerRoleFailure(WorkEvent we, FailureType failureType) {
+ private void sendPartnerRoleFailure(JobDetails we, FailureType failureType) {
MessageExchange mex = (MessageExchange) getMessageExchange(we.getMexId());
if (mex instanceof PartnerRoleMessageExchange) {
if (mex.getStatus() == MessageExchange.Status.ASYNC || mex.getStatus() == MessageExchange.Status.REQUEST) {
Modified: branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -51,6 +51,8 @@
import org.apache.ode.bpel.iapi.ProcessConf;
import org.apache.ode.bpel.iapi.Scheduler;
import org.apache.ode.bpel.iapi.ProcessConf.CLEANUP_CATEGORY;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
+import org.apache.ode.bpel.iapi.Scheduler.JobType;
import org.apache.ode.bpel.intercept.InstanceCountThrottler;
import org.apache.ode.bpel.intercept.InterceptorInvoker;
import org.apache.ode.bpel.intercept.MessageExchangeInterceptor;
@@ -286,6 +288,7 @@
return true;
} else if (routing.messageRoute != null) {
// Found a route, hitting it
+ _engine.acquireInstanceLock(routing.messageRoute.getTargetInstance().getInstanceId());
target.invokeInstance(mex, routing);
return true;
}
@@ -406,20 +409,20 @@
}
/**
- * @see org.apache.ode.bpel.engine.BpelProcess#handleWorkEvent(java.util.Map<java.lang.String,java.lang.Object>)
+ * @see org.apache.ode.bpel.engine.BpelProcess#handleJobDetails(java.util.Map<java.lang.String,java.lang.Object>)
*/
- public void handleWorkEvent(Map<String, Object> jobData) {
+ public void handleJobDetails(JobDetails jobData) {
try {
_hydrationLatch.latch(1);
markused();
if (__log.isDebugEnabled()) {
- __log.debug(ObjectPrinter.stringifyMethodEnter("handleWorkEvent", new Object[] { "jobData", jobData }));
+ __log.debug(ObjectPrinter.stringifyMethodEnter("handleJobDetails", new Object[] { "jobData", jobData }));
}
- WorkEvent we = new WorkEvent(jobData);
+ JobDetails we = jobData;
// Process level events
- if (we.getType().equals(WorkEvent.Type.INVOKE_INTERNAL)) {
+ if (we.getType().equals(JobType.INVOKE_INTERNAL)) {
if (__log.isDebugEnabled()) {
__log.debug("InvokeInternal event for mexid " + we.getMexId());
}
@@ -427,10 +430,10 @@
invokeProcess(mex);
} else {
// Instance level events
- ProcessInstanceDAO procInstance = getProcessDAO().getInstance(we.getIID());
+ ProcessInstanceDAO procInstance = getProcessDAO().getInstance(we.getInstanceId());
if (procInstance == null) {
if (__log.isDebugEnabled()) {
- __log.debug("handleWorkEvent: no ProcessInstance found with iid " + we.getIID() + "; ignoring.");
+ __log.debug("handleJobDetails: no ProcessInstance found with iid " + we.getInstanceId() + "; ignoring.");
}
return;
}
@@ -439,26 +442,26 @@
switch (we.getType()) {
case TIMER:
if (__log.isDebugEnabled()) {
- __log.debug("handleWorkEvent: TimerWork event for process instance " + processInstance);
+ __log.debug("handleJobDetails: TimerWork event for process instance " + processInstance);
}
processInstance.timerEvent(we.getChannel());
break;
case RESUME:
if (__log.isDebugEnabled()) {
- __log.debug("handleWorkEvent: ResumeWork event for iid " + we.getIID());
+ __log.debug("handleJobDetails: ResumeWork event for iid " + we.getInstanceId());
}
processInstance.execute();
break;
case INVOKE_RESPONSE:
if (__log.isDebugEnabled()) {
- __log.debug("InvokeResponse event for iid " + we.getIID());
+ __log.debug("InvokeResponse event for iid " + we.getInstanceId());
}
processInstance.invocationResponse(we.getMexId(), we.getChannel());
processInstance.execute();
break;
case MATCHER:
if (__log.isDebugEnabled()) {
- __log.debug("Matcher event for iid " + we.getIID());
+ __log.debug("Matcher event for iid " + we.getInstanceId());
}
if( procInstance.getState() == ProcessState.STATE_COMPLETED_OK
|| procInstance.getState() == ProcessState.STATE_COMPLETED_WITH_FAULT ) {
Modified: branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -25,9 +25,7 @@
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
-import java.util.HashSet;
import java.util.List;
-import java.util.Set;
import javax.wsdl.Fault;
import javax.wsdl.Operation;
@@ -47,7 +45,10 @@
import org.apache.ode.bpel.evt.ProcessInstanceStateChangeEvent;
import org.apache.ode.bpel.evt.ProcessMessageExchangeEvent;
import org.apache.ode.bpel.evt.ProcessTerminationEvent;
+import org.apache.ode.bpel.evt.ScopeCompletionEvent;
import org.apache.ode.bpel.evt.ScopeEvent;
+import org.apache.ode.bpel.evt.ScopeFaultEvent;
+import org.apache.ode.bpel.evt.ScopeStartEvent;
import org.apache.ode.bpel.iapi.BpelEngineException;
import org.apache.ode.bpel.iapi.ContextException;
import org.apache.ode.bpel.iapi.Endpoint;
@@ -62,9 +63,9 @@
import org.apache.ode.bpel.iapi.MessageExchange.Status;
import org.apache.ode.bpel.iapi.ProcessConf.CLEANUP_CATEGORY;
import org.apache.ode.bpel.iapi.ProcessConf.PartnerRoleConfig;
-import org.apache.ode.bpel.intercept.InterceptorInvoker;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
+import org.apache.ode.bpel.iapi.Scheduler.JobType;
import org.apache.ode.bpel.memdao.ProcessInstanceDaoImpl;
-import org.apache.ode.bpel.o.OFailureHandling;
import org.apache.ode.bpel.o.OMessageVarType;
import org.apache.ode.bpel.o.OPartnerLink;
import org.apache.ode.bpel.o.OProcess;
@@ -83,15 +84,6 @@
import org.apache.ode.bpel.runtime.channels.InvokeResponseChannel;
import org.apache.ode.bpel.runtime.channels.PickResponseChannel;
import org.apache.ode.bpel.runtime.channels.TimerResponseChannel;
-import org.apache.ode.jacob.JacobRunnable;
-import org.apache.ode.jacob.vpu.ExecutionQueueImpl;
-import org.apache.ode.jacob.vpu.JacobVPU;
-import org.apache.ode.utils.DOMUtils;
-import org.apache.ode.utils.GUID;
-import org.apache.ode.utils.Namespaces;
-import org.apache.ode.utils.ObjectPrinter;
-import org.apache.ode.bpel.evar.ExternalVariableModuleException;
-import org.apache.ode.bpel.evar.ExternalVariableModule.Value;
import org.apache.ode.dao.bpel.CorrelationSetDAO;
import org.apache.ode.dao.bpel.CorrelatorDAO;
import org.apache.ode.dao.bpel.MessageDAO;
@@ -101,11 +93,19 @@
import org.apache.ode.dao.bpel.ProcessDAO;
import org.apache.ode.dao.bpel.ProcessInstanceDAO;
import org.apache.ode.dao.bpel.ScopeDAO;
+import org.apache.ode.dao.bpel.ScopeStateEnum;
import org.apache.ode.dao.bpel.XmlDataDAO;
+import org.apache.ode.jacob.JacobRunnable;
+import org.apache.ode.jacob.vpu.ExecutionQueueImpl;
+import org.apache.ode.jacob.vpu.JacobVPU;
+import org.apache.ode.utils.DOMUtils;
+import org.apache.ode.utils.GUID;
+import org.apache.ode.utils.Namespaces;
+import org.apache.ode.utils.ObjectPrinter;
+import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
-import org.w3c.dom.Document;
public class BpelRuntimeContextImpl implements BpelRuntimeContext {
@@ -698,29 +698,29 @@
}
public void registerTimer(TimerResponseChannel timerChannel, Date timeToFire) {
- WorkEvent we = new WorkEvent();
- we.setIID(_dao.getInstanceId());
+ JobDetails we = new JobDetails();
+ we.setInstanceId(_dao.getInstanceId());
we.setChannel(timerChannel.export());
- we.setType(WorkEvent.Type.TIMER);
+ we.setType(JobType.TIMER);
we.setInMem(_bpelProcess.isInMemory());
if(_bpelProcess.isInMemory()){
- _bpelProcess._engine._contexts.scheduler.scheduleVolatileJob(true, we.getDetail(), timeToFire);
+ _bpelProcess._engine._contexts.scheduler.scheduleVolatileJob(true, we, timeToFire);
}else{
- _bpelProcess._engine._contexts.scheduler.schedulePersistedJob(we.getDetail(), timeToFire);
+ _bpelProcess._engine._contexts.scheduler.schedulePersistedJob(we, timeToFire);
}
}
private void scheduleCorrelatorMatcher(String correlatorId, CorrelationKeySet keySet) {
- WorkEvent we = new WorkEvent();
- we.setIID(_dao.getInstanceId());
- we.setType(WorkEvent.Type.MATCHER);
+ JobDetails we = new JobDetails();
+ we.setInstanceId(_dao.getInstanceId());
+ we.setType(JobType.MATCHER);
we.setCorrelatorId(correlatorId);
we.setCorrelationKeySet(keySet);
we.setInMem(_bpelProcess.isInMemory());
if(_bpelProcess.isInMemory()){
- _bpelProcess._engine._contexts.scheduler.scheduleVolatileJob(true, we.getDetail());
+ _bpelProcess._engine._contexts.scheduler.scheduleVolatileJob(true, we);
}else{
- _bpelProcess._engine._contexts.scheduler.schedulePersistedJob(we.getDetail(), null);
+ _bpelProcess._engine._contexts.scheduler.schedulePersistedJob(we, null);
}
}
@@ -911,16 +911,16 @@
boolean isTwoWay = mex.getMessageExchangePattern() ==
org.apache.ode.bpel.iapi.MessageExchange.MessageExchangePattern.REQUEST_RESPONSE;
if (!_bpelProcess.isInMemory() && isTwoWay) {
- WorkEvent event = new WorkEvent();
+ JobDetails event = new JobDetails();
event.setMexId(mex.getMessageExchangeId());
event.setProcessId(_bpelProcess.getPID());
event.setInMem(false);
- event.setType(WorkEvent.Type.INVOKE_CHECK);
+ event.setType(JobType.INVOKE_CHECK);
// use a greater timeout to make sure the check job does not get executed while the service invocation is still waiting for a response
long timeout = getBpelProcess().getTimeout(partnerLink, p2p);
if (__log.isDebugEnabled()) __log.debug("Creating invocation check event in "+timeout+"ms for mexid " + mex.getMessageExchangeId());
Date future = new Date(System.currentTimeMillis() + timeout);
- String jobId = _bpelProcess._engine._contexts.scheduler.schedulePersistedJob(event.getDetail(), future);
+ String jobId = _bpelProcess._engine._contexts.scheduler.schedulePersistedJob(event, future);
mex.setProperty("invokeCheckJobId", jobId);
}
}
@@ -977,14 +977,14 @@
if (__log.isDebugEnabled())
__log.debug("MaxTime exceeded for instance # " + _iid);
try {
- WorkEvent we = new WorkEvent();
- we.setIID(_iid);
- we.setType(WorkEvent.Type.RESUME);
+ JobDetails we = new JobDetails();
+ we.setInstanceId(_iid);
+ we.setType(JobType.RESUME);
we.setInMem(_bpelProcess.isInMemory());
if (_bpelProcess.isInMemory())
- _bpelProcess._engine._contexts.scheduler.scheduleVolatileJob(true, we.getDetail());
+ _bpelProcess._engine._contexts.scheduler.scheduleVolatileJob(true, we);
else
- _bpelProcess._engine._contexts.scheduler.schedulePersistedJob(we.getDetail(), new Date());
+ _bpelProcess._engine._contexts.scheduler.schedulePersistedJob(we, new Date());
} catch (ContextException e) {
__log.error("Failed to schedule resume task.", e);
throw new BpelEngineException(e);
@@ -1119,6 +1119,11 @@
sendEvent(evt);
}
+ private void saveScopeState(Long scopeId, ScopeStateEnum scopeState) {
+ ScopeDAO scope = _dao.getScope(scopeId);
+ scope.setState(scopeState);
+ }
+
/**
* @see BpelRuntimeContext#sendEvent(org.apache.ode.bpel.evt.ProcessInstanceEvent)
*/
@@ -1132,7 +1137,17 @@
// filter scopes
List<String> scopeNames = null;
if (event instanceof ScopeEvent) {
- scopeNames = ((ScopeEvent) event).getParentScopesNames();
+ ScopeEvent sevent = (ScopeEvent) event;
+
+ scopeNames = sevent.getParentScopesNames();
+
+ if (sevent instanceof ScopeStartEvent) {
+ saveScopeState(sevent.getScopeId(), ScopeStateEnum.ACTIVE);
+ } else if (sevent instanceof ScopeCompletionEvent) {
+ saveScopeState(sevent.getScopeId(), ScopeStateEnum.COMPLETED);
+ } else if (sevent instanceof ScopeFaultEvent) {
+ saveScopeState(sevent.getScopeId(), ScopeStateEnum.FAULT);
+ }
}
// saving
@@ -1458,31 +1473,29 @@
MessageExchangeDAO mexdao = correlator.dequeueMessage(ckeySet);
if (mexdao != null) {
__log.debug("MatcherEvent handling: found matching message in DB (i.e. message arrived before <receive>)");
-
- if( MessageExchangePattern.REQUEST_RESPONSE.toString().equals(mexdao.getPattern())) {
- __log.warn("A message arrived before a receive is ready for a request/response pattern. This may be processed to success. However, you should consider revising your process since this may cause performance degradataion");
- }
-
- Set<String> groupIds = new HashSet<String>();
+ if( MessageExchangePattern.REQUEST_RESPONSE.toString().equals(mexdao.getPattern())) {
+ __log.warn("A message arrived before a receive is ready for a request/response pattern. This may be processed to success. However, you should consider revising your process since a TCP port and a container thread will be held for a longer time and the process will not scale under heavy load.");
+ }
+
for (MessageRouteDAO mroute : mroutes) {
// We have a match, so we can get rid of the routing entries.
- groupIds.add(mroute.getGroupId());
-
- // Found message matching one of our selectors.
- if (BpelProcess.__log.isDebugEnabled()) {
- BpelProcess.__log.debug("SELECT: " + mroute.getGroupId() + ": matched to MESSAGE " + mexdao
- + " on CKEYSET " + ckeySet);
- }
-
- MyRoleMessageExchangeImpl mex = new MyRoleMessageExchangeImpl(_bpelProcess, _bpelProcess._engine, mexdao);
-
- inputMsgMatch(mroute.getGroupId(), mroute.getIndex(), mex);
- execute();
+ correlator.removeRoutes(mroute.getGroupId(), _dao);
}
- for (String groupId : groupIds) {
- correlator.removeRoutes(groupId, _dao);
+
+ // Selecting first route to proceed, other matching entries are ignored
+ MessageRouteDAO mroute = mroutes.get(0);
+
+ // Found message matching one of our selectors.
+ if (BpelProcess.__log.isDebugEnabled()) {
+ BpelProcess.__log.debug("SELECT: " + mroute.getGroupId() + ": matched to MESSAGE " + mexdao
+ + " on CKEYSET " + ckeySet);
}
+ MyRoleMessageExchangeImpl mex = new MyRoleMessageExchangeImpl(_bpelProcess, _bpelProcess._engine, mexdao);
+
+ inputMsgMatch(mroute.getGroupId(), mroute.getIndex(), mex);
+ execute();
+
// Do not release yet if the process is suspended, the mex will be used again
if (_dao.getState() != ProcessState.STATE_SUSPENDED)
mexdao.releasePremieMessages();
Modified: branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -619,7 +619,7 @@
}
if( statusOfPriorTry == JOB_STATUS.COMPLETED ) {
resultsByJobId.remove(jobInfo.jobName);
- jobInfo.jobDetail.put("runnable_status", JOB_STATUS.COMPLETED);
+ jobInfo.jobDetail.getDetailsExt().put("runnable_status", JOB_STATUS.COMPLETED);
return;
}
if( statusOfPriorTry == JOB_STATUS.PENDING || statusOfPriorTry == JOB_STATUS.FAILED ) {
@@ -633,8 +633,8 @@
_polledRunnableExec.submit(new Runnable() {
public void run() {
try {
- MapSerializableRunnable runnable = (MapSerializableRunnable)jobInfo.jobDetail.get("runnable");
- runnable.restoreFromDetailsMap(jobInfo.jobDetail);
+ MapSerializableRunnable runnable = (MapSerializableRunnable)jobInfo.jobDetail.getDetailsExt().get("runnable");
+ runnable.restoreFromDetails(jobInfo.jobDetail);
if( runnable instanceof ContextsAware ) {
((ContextsAware)runnable).setContexts(_contexts);
}
@@ -653,7 +653,7 @@
});
}
- jobInfo.jobDetail.put("runnable_status", JOB_STATUS.IN_PROGRESS);
+ jobInfo.jobDetail.getDetailsExt().put("runnable_status", JOB_STATUS.IN_PROGRESS);
if( exceptionThrownOnPriorTry != null ) {
throw new Scheduler.JobProcessorException(exceptionThrownOnPriorTry, true);
}
Modified: branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/DebuggerSupport.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/DebuggerSupport.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/DebuggerSupport.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -21,6 +21,8 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.ode.bpel.iapi.DebuggerContext;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
+import org.apache.ode.bpel.iapi.Scheduler.JobType;
import org.apache.ode.bpel.bdi.breaks.Breakpoint;
import org.apache.ode.bpel.common.ProcessState;
import org.apache.ode.bpel.evt.ActivityExecStartEvent;
@@ -173,10 +175,10 @@
__log.debug("step(" + iid + ") adding step indicator to table.");
_step.add(iid);
- WorkEvent we = new WorkEvent();
- we.setIID(iid);
- we.setType(WorkEvent.Type.RESUME);
- _process._engine._contexts.scheduler.schedulePersistedJob(we.getDetail(), null);
+ JobDetails we = new JobDetails();
+ we.setInstanceId(iid);
+ we.setType(JobType.RESUME);
+ _process._engine._contexts.scheduler.schedulePersistedJob(we, null);
return true;
}
@@ -297,10 +299,10 @@
_process.saveEvent(evt, instance);
onEvent(evt);
- WorkEvent we = new WorkEvent();
- we.setType(WorkEvent.Type.RESUME);
- we.setIID(iid);
- _process._engine._contexts.scheduler.schedulePersistedJob(we.getDetail(), null);
+ JobDetails we = new JobDetails();
+ we.setType(JobType.RESUME);
+ we.setInstanceId(iid);
+ _process._engine._contexts.scheduler.schedulePersistedJob(we, null);
return true;
Modified: branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/Messages.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/Messages.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/Messages.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -18,6 +18,7 @@
*/
package org.apache.ode.bpel.engine;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
import org.apache.ode.utils.msg.MessageBundle;
import javax.xml.namespace.QName;
@@ -186,7 +187,7 @@
return format("Error registering expression language \"" + expressionLanguageUri + "\" with properties " + properties);
}
- public String msgScheduledJobFailed(Map<String, Object> jobDetail) {
+ public String msgScheduledJobFailed(JobDetails jobDetail) {
return format("Scheduled job failed; jobDetail={0}", jobDetail);
}
Modified: branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeImpl.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeImpl.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeImpl.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -40,6 +40,8 @@
import org.apache.ode.bpel.iapi.ProcessConf;
import org.apache.ode.bpel.iapi.Scheduler;
import org.apache.ode.bpel.iapi.ProcessConf.CLEANUP_CATEGORY;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
+import org.apache.ode.bpel.iapi.Scheduler.JobType;
import org.apache.ode.bpel.intercept.AbortMessageExchangeException;
import org.apache.ode.bpel.intercept.FaultMessageExchangeException;
import org.apache.ode.bpel.intercept.InterceptorInvoker;
@@ -137,8 +139,8 @@
return null;
} else {
// Schedule a new job for invocation
- WorkEvent we = new WorkEvent();
- we.setType(WorkEvent.Type.INVOKE_INTERNAL);
+ JobDetails we = new JobDetails();
+ we.setType(JobType.INVOKE_INTERNAL);
we.setInMem(target.isInMemory());
we.setProcessId(target.getPID());
we.setMexId(getDAO().getMessageExchangeId());
@@ -152,11 +154,11 @@
Replayer replayer = Replayer.replayer.get();
if (replayer == null) {
if (target.isInMemory())
- _engine._contexts.scheduler.scheduleVolatileJob(true, we.getDetail());
+ _engine._contexts.scheduler.scheduleVolatileJob(true, we);
else
- _engine._contexts.scheduler.schedulePersistedJob(we.getDetail(), null);
+ _engine._contexts.scheduler.schedulePersistedJob(we, null);
} else {
- replayer.scheduler.schedulePersistedJob(we.getDetail(), null);
+ replayer.scheduler.schedulePersistedJob(we, null);
}
return new ResponseFuture(getClientId());
}
Modified: branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerLinkMyRoleImpl.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerLinkMyRoleImpl.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerLinkMyRoleImpl.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -211,14 +211,15 @@
public void invokeInstance(MyRoleMessageExchangeImpl mex, RoutingInfo routing) {
Operation operation = getMyRoleOperation(mex.getOperationName());
if (__log.isDebugEnabled()) {
- __log.debug("INPUTMSG: " + routing.correlator.getCorrelatorId() + ": ROUTING to instance "
+ __log.debug("INPUTMSG: " + routing.correlator.getCorrelatorId() + ": ROUTING to existing instance "
+ routing.messageRoute.getTargetInstance().getInstanceId());
}
ProcessInstanceDAO instanceDao = routing.messageRoute.getTargetInstance();
+ BpelProcess process2 = _process._engine._activeProcesses.get(instanceDao.getProcess().getProcessId());
// Reload process instance for DAO.
- BpelRuntimeContextImpl instance = _process.createRuntimeContext(instanceDao, null, null);
+ BpelRuntimeContextImpl instance = process2.createRuntimeContext(instanceDao, null, null);
instance.inputMsgMatch(routing.messageRoute.getGroupId(), routing.messageRoute.getIndex(), mex);
// Kill the route so some new message does not get routed to
@@ -226,16 +227,16 @@
routing.correlator.removeRoutes(routing.messageRoute.getGroupId(), instanceDao);
// send process instance event
- CorrelationMatchEvent evt = new CorrelationMatchEvent(new QName(_process.getOProcess().targetNamespace,
- _process.getOProcess().getName()), _process.getProcessDAO().getProcessId(),
+ CorrelationMatchEvent evt = new CorrelationMatchEvent(new QName(process2.getOProcess().targetNamespace,
+ process2.getOProcess().getName()), process2.getProcessDAO().getProcessId(),
instanceDao.getInstanceId(), routing.matchedKeySet);
evt.setPortType(mex.getPortType().getQName());
evt.setOperation(operation.getName());
evt.setMexId(mex.getMessageExchangeId());
- _process._debugger.onEvent(evt);
+ process2._debugger.onEvent(evt);
// store event
- _process.saveEvent(evt, instanceDao);
+ process2.saveEvent(evt, instanceDao);
mex.setCorrelationStatus(MyRoleMessageExchange.CorrelationStatus.MATCHED);
mex.getDAO().setInstance(routing.messageRoute.getTargetInstance());
Modified: branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerRoleMessageExchangeImpl.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerRoleMessageExchangeImpl.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerRoleMessageExchangeImpl.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -21,17 +21,17 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.ode.bpel.engine.WorkEvent.Type;
import org.apache.ode.bpel.engine.replayer.Replayer;
import org.apache.ode.bpel.iapi.BpelEngineException;
import org.apache.ode.bpel.iapi.EndpointReference;
import org.apache.ode.bpel.iapi.Message;
import org.apache.ode.bpel.iapi.PartnerRoleChannel;
import org.apache.ode.bpel.iapi.PartnerRoleMessageExchange;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
+import org.apache.ode.bpel.iapi.Scheduler.JobType;
import org.apache.ode.dao.bpel.MessageExchangeDAO;
import org.apache.ode.utils.DOMUtils;
import org.w3c.dom.Element;
-
import javax.wsdl.Operation;
import javax.wsdl.PortType;
import javax.xml.namespace.QName;
@@ -132,20 +132,20 @@
if (LOG.isDebugEnabled()) {
LOG.debug("create work event for mex=" + getMessageExchangeId());
}
- WorkEvent we = new WorkEvent();
- we.setIID(getDAO().getInstance().getInstanceId());
- we.setType(Type.INVOKE_RESPONSE);
+ JobDetails we = new JobDetails();
+ we.setInstanceId(getDAO().getInstance().getInstanceId());
+ we.setType(JobType.INVOKE_RESPONSE);
we.setInMem(_engine._activeProcesses.get(getDAO().getProcess().getProcessId()).isInMemory());
we.setChannel(getDAO().getChannel());
we.setMexId(getDAO().getMessageExchangeId());
Replayer replayer = Replayer.replayer.get();
if (replayer == null) {
- if (we.isInMem())
- _engine._contexts.scheduler.scheduleVolatileJob(true, we.getDetail());
+ if (we.getInMem())
+ _engine._contexts.scheduler.scheduleVolatileJob(true, we);
else
- _engine._contexts.scheduler.schedulePersistedJob(we.getDetail(), null);
+ _engine._contexts.scheduler.schedulePersistedJob(we, null);
} else {
- replayer.scheduler.schedulePersistedJob(we.getDetail(), null);
+ replayer.scheduler.schedulePersistedJob(we, null);
}
}
Modified: branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -65,6 +65,7 @@
import org.apache.ode.bpel.evt.ScopeEvent;
import org.apache.ode.bpel.evt.ScopeFaultEvent;
import org.apache.ode.bpel.evt.VariableEvent;
+import org.apache.ode.bpel.evt.VariableModificationEvent;
import org.apache.ode.bpel.evtproc.ActivityStateDocumentBuilder;
import org.apache.ode.bpel.iapi.BpelEngineException;
import org.apache.ode.bpel.iapi.BpelServer;
@@ -141,6 +142,7 @@
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
+import org.apache.ode.utils.DOMUtils;
/**
* Implementation of the Process and InstanceManagement APIs.
@@ -1164,8 +1166,7 @@
info.setMexId(((ProcessMessageExchangeEvent) event).getMessageExchangeId());
}
if (event instanceof ScopeCompletionEvent) {
- info.setSuccess(((ScopeCompletionEvent) event).isSuccess());
- info.setFault(((ScopeCompletionEvent) event).getFault());
+ info.setSuccess(true);
}
if (event instanceof ScopeEvent) {
info.setScopeId(((ScopeEvent) event).getScopeId());
@@ -1183,6 +1184,9 @@
if (event instanceof VariableEvent) {
info.setVariableName(((VariableEvent) event).getVarName());
}
+ if(event instanceof VariableModificationEvent) {
+ info.setNewValue(DOMUtils.domToString(((VariableModificationEvent) event).getNewValue()));
+ }
}
/**
Modified: branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessCleanUpRunnable.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessCleanUpRunnable.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessCleanUpRunnable.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -1,3 +1,21 @@
+/*
+ * 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.bpel.engine;
import java.io.Serializable;
@@ -3,9 +21,11 @@
import java.util.Map;
import java.util.concurrent.Callable;
+import javax.xml.namespace.QName;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.ode.bpel.engine.BpelServerImpl.ContextsAware;
import org.apache.ode.bpel.iapi.Scheduler.MapSerializableRunnable;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
import org.apache.ode.dao.bpel.DeferredProcessInstanceCleanable;
import org.apache.ode.dao.bpel.ProcessDAO;
@@ -28,12 +48,12 @@
_pid = pid;
}
- public void storeToDetailsMap(Map<String, Object> details) {
- details.put("pid", _pid);
+ public void storeToDetails(JobDetails details) {
+ details.getDetailsExt().put("pid", _pid);
}
- public void restoreFromDetailsMap(Map<String, Object> details) {
- _pid = (Serializable)details.get("pid");
+ public void restoreFromDetails(JobDetails details) {
+ _pid = (Serializable) details.getDetailsExt().get("pid");
}
public void setContexts(Contexts contexts) {
@@ -65,4 +85,4 @@
}
if(__log.isInfoEnabled()) __log.info("Deleted runtime data for old process: " + _pid + ".");
}
-}
\ No newline at end of file
+}
Modified: branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessStatusConverter.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessStatusConverter.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessStatusConverter.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -61,11 +61,8 @@
}
__scopeStateMap.put(ScopeStateEnum.ACTIVE, TScopeStatus.ACTIVE);
- __scopeStateMap.put(ScopeStateEnum.COMPENSATED,TScopeStatus.COMPENSATED);
- __scopeStateMap.put(ScopeStateEnum.COMPENSATING,TScopeStatus.COMPENSATING);
__scopeStateMap.put(ScopeStateEnum.COMPLETED,TScopeStatus.COMPLETED);
- __scopeStateMap.put(ScopeStateEnum.FAULTED,TScopeStatus.FAULTED);
- __scopeStateMap.put(ScopeStateEnum.FAULTHANDLER,TScopeStatus.FAULTED);
+ __scopeStateMap.put(ScopeStateEnum.FAULT,TScopeStatus.FAULTED);
}
Modified: branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/CronScheduler.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/CronScheduler.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/CronScheduler.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -1,3 +1,21 @@
+/*
+ * 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.bpel.engine.cron;
import java.util.ArrayList;
@@ -20,6 +38,7 @@
import org.apache.ode.bpel.iapi.ClusterAware;
import org.apache.ode.bpel.iapi.ProcessConf;
import org.apache.ode.bpel.iapi.ProcessConf.CronJob;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
import org.apache.ode.bpel.iapi.Scheduler.MapSerializableRunnable;
import org.apache.ode.utils.CronExpression;
@@ -112,11 +131,11 @@
Runnable runnable = new Runnable() {
public void run() {
if( __log.isDebugEnabled() ) __log.debug("Running cron cleanup with details list size: " + job.getRunnableDetailList().size());
- for( Map<String, Object> details : job.getRunnableDetailList() ) {
+ for( JobDetails details : job.getRunnableDetailList() ) {
try {
// for each clean up for the scheduled time
RuntimeDataCleanupRunnable cleanup = new RuntimeDataCleanupRunnable();
- cleanup.restoreFromDetailsMap(details);
+ cleanup.restoreFromDetails(details);
cleanup.setContexts(_contexts);
cleanup.run();
if( __log.isDebugEnabled() ) __log.debug("Finished running runtime data cleanup from a PROCESS CRON job: " + cleanup);
@@ -168,17 +187,17 @@
// for each different scheduled time
Runnable runnable = new Runnable() {
public void run() {
- for( Map<String, Object> details : job.getRunnableDetailList() ) {
+ for( JobDetails details : job.getRunnableDetailList() ) {
try {
// for now, we have only runtime data cleanup cron job defined
// for each clean up for the scheduled time
RuntimeDataCleanupRunnable cleanup = new RuntimeDataCleanupRunnable();
synchronized( _terminationListenersByPid ) {
if( !_terminationListenersByPid.isEmpty() ) {
- details.put("pidsToExclude", _terminationListenersByPid.keySet());
+ details.getDetailsExt().put("pidsToExclude", _terminationListenersByPid.keySet());
}
}
- cleanup.restoreFromDetailsMap(details);
+ cleanup.restoreFromDetails(details);
cleanup.setContexts(_contexts);
cleanup.run();
if( __log.isDebugEnabled() ) __log.debug("Finished running runtime data cleanup from a SYSTEM CRON job:" + cleanup);
@@ -197,7 +216,7 @@
}
public TerminationListener schedule(final CronExpression cronExpression,
- final Runnable runnable, final Map<String, Object> runnableDetails,
+ final Runnable runnable, final JobDetails runnableDetails,
TerminationListener terminationListener) {
if( _shuttingDown ) {
__log.info("CRON Scheduler is being shut down. This new scheduling request is ignored.");
@@ -250,12 +269,12 @@
private volatile boolean terminated = false;
private Date nextScheduleTime;
private Runnable runnable;
- private Map<String, Object> runnableDetails;
+ private JobDetails runnableDetails;
private CronExpression cronExpression;
private TerminationListener terminationListener;
public CronScheduledJob(Date nextScheduleTime,
- Runnable runnable, Map<String, Object> runnableDetails,
+ Runnable runnable, JobDetails runnableDetails,
CronExpression cronExpression, TerminationListener terminationListener) {
this.nextScheduleTime = nextScheduleTime;
this.runnable = runnable;
@@ -277,7 +296,7 @@
nextScheduleTime.getTime() < System.currentTimeMillis() + TOLERABLE_SCHEDULE_DELAY) {
if( runnableDetails != null &&
runnable instanceof MapSerializableRunnable ) {
- ((MapSerializableRunnable)runnable).restoreFromDetailsMap(runnableDetails);
+ ((MapSerializableRunnable)runnable).restoreFromDetails(runnableDetails);
}
if (runnable instanceof ContextsAware) {
((ContextsAware) runnable).setContexts(_contexts);
@@ -306,4 +325,4 @@
return terminationListener;
}
}
-}
\ No newline at end of file
+}
Modified: branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/RuntimeDataCleanupRunnable.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/RuntimeDataCleanupRunnable.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/RuntimeDataCleanupRunnable.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -1,5 +1,24 @@
+/*
+ * 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.bpel.engine.cron;
+import java.io.Serializable;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.Callable;
@@ -13,6 +32,7 @@
import org.apache.ode.bpel.engine.BpelServerImpl.ContextsAware;
import org.apache.ode.bpel.iapi.ProcessConf.CLEANUP_CATEGORY;
import org.apache.ode.bpel.iapi.ProcessConf.CleanupInfo;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
import org.apache.ode.bpel.iapi.Scheduler.MapSerializableRunnable;
import org.apache.ode.dao.bpel.BpelDAOConnection;
import org.apache.ode.dao.bpel.FilteredInstanceDeletable;
@@ -33,14 +53,14 @@
}
@SuppressWarnings("unchecked")
- public void restoreFromDetailsMap(Map<String, Object> details) {
- _cleanupInfo = (CleanupInfo)details.get("cleanupInfo");
- _transactionSize = (Integer)details.get("transactionSize");
- _pid = (QName)details.get("pid");
- _pidsToExclude = (Set<QName>)details.get("pidsToExclude");
+ public void restoreFromDetails(JobDetails details) {
+ _cleanupInfo = (CleanupInfo)details.getDetailsExt().get("cleanupInfo");
+ _transactionSize = (Integer)details.getDetailsExt().get("transactionSize");
+ _pid = (QName) details.getDetailsExt().get("pid");
+ _pidsToExclude = (Set<QName>)details.getDetailsExt().get("pidsToExclude");
}
- public void storeToDetailsMap(Map<String, Object> details) {
+ public void storeToDetails(JobDetails details) {
// we don't serialize
}
Modified: branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/SystemSchedulesConfig.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/SystemSchedulesConfig.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/SystemSchedulesConfig.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -1,3 +1,21 @@
+/*
+ * 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.bpel.engine.cron;
import java.io.File;
@@ -15,6 +33,7 @@
import org.apache.ode.bpel.iapi.ContextException;
import org.apache.ode.bpel.iapi.ProcessConf.CleanupInfo;
import org.apache.ode.bpel.iapi.ProcessConf.CronJob;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
import org.apache.ode.store.ProcessCleanupConfImpl;
import org.apache.ode.utils.CronExpression;
import org.apache.xmlbeans.XmlOptions;
@@ -64,9 +83,10 @@
cleanupInfo.setFilters(aCleanup.getFilterList());
ProcessCleanupConfImpl.processACleanup(cleanupInfo.getCategories(), aCleanup.getCategoryList());
- Map<String, Object> runnableDetails = new HashMap<String, Object>();
- runnableDetails.put("cleanupInfo", cleanupInfo);
- runnableDetails.put("transactionSize", 10);
+ JobDetails runnableDetails = new JobDetails();
+
+ runnableDetails.getDetailsExt().put("cleanupInfo", cleanupInfo);
+ runnableDetails.getDetailsExt().put("transactionSize", 10);
job.getRunnableDetailList().add(runnableDetails);
__log.info("SYSTEM CRON configuration added a runtime data cleanup: " + runnableDetails);
}
@@ -100,4 +120,4 @@
return sd;
}
-}
\ No newline at end of file
+}
Modified: branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/Replayer.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/Replayer.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/Replayer.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -36,13 +36,14 @@
import org.apache.ode.bpel.engine.BpelProcess;
import org.apache.ode.bpel.engine.MyRoleMessageExchangeImpl;
import org.apache.ode.bpel.engine.PartnerLinkMyRoleImpl;
-import org.apache.ode.bpel.engine.WorkEvent;
import org.apache.ode.bpel.engine.PartnerLinkMyRoleImpl.RoutingInfo;
import org.apache.ode.bpel.evt.CorrelationMatchEvent;
import org.apache.ode.bpel.iapi.BpelEngine;
import org.apache.ode.bpel.iapi.MyRoleMessageExchange;
import org.apache.ode.bpel.iapi.MessageExchange.Status;
import org.apache.ode.bpel.iapi.ProcessConf.CLEANUP_CATEGORY;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
+import org.apache.ode.bpel.iapi.Scheduler.JobType;
import org.apache.ode.bpel.pmapi.CommunicationType;
import org.apache.ode.bpel.pmapi.ExchangeType;
import org.apache.ode.bpel.pmapi.FaultType;
@@ -222,10 +223,10 @@
return null;
}
- public void handleWorkEvent(Map<String, Object> jobDetail, final Date when) {
- WorkEvent we = new WorkEvent(jobDetail);
- __log.debug("handleWorkEvent " + jobDetail + " " + when);
- if (we.getType() == WorkEvent.Type.INVOKE_INTERNAL) {
+ public void handleJobDetails(JobDetails jobDetail, final Date when) {
+ JobDetails we = jobDetail;
+ __log.debug("handleJobDetails " + jobDetail + " " + when);
+ if (we.getType() == JobType.INVOKE_INTERNAL) {
final BpelProcess p = engine._activeProcesses.get(we.getProcessId());
final ProcessDAO processDAO = p.getProcessDAO();
final MyRoleMessageExchangeImpl mex = (MyRoleMessageExchangeImpl) engine.getMessageExchange(we.getMexId());
@@ -270,9 +271,9 @@
return false;
}
});
- } else if (we.getType() == WorkEvent.Type.INVOKE_RESPONSE) {
+ } else if (we.getType() == JobType.INVOKE_RESPONSE) {
__log.debug("reply for live communication");
- ReplayerContext ctx = findReplayedInstance(we.getIID());
+ ReplayerContext ctx = findReplayedInstance(we.getInstanceId());
assert ctx != null;
ctx.runtimeContext.invocationResponse(we.getMexId(), we.getChannel());
ctx.runtimeContext.execute();
Modified: branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/ReplayerScheduler.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/ReplayerScheduler.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/ReplayerScheduler.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -129,12 +129,12 @@
return null;
}
- public String schedulePersistedJob(final Map<String, Object> jobDetail, final Date when1) throws ContextException {
+ public String schedulePersistedJob(final JobDetails jobDetail, final Date when1) throws ContextException {
final Date when = when1 == null ? currentTaskElement.get().when : when1;
__log.debug("schedulePersistedJob " + jobDetail + " " + when, new Exception());
scheduleReplayerJob(new Callable<Void>() {
public Void call() throws Exception {
- replayer.handleWorkEvent(jobDetail, when);
+ replayer.handleJobDetails(jobDetail, when);
return null;
}
}, when, null);
@@ -145,13 +145,13 @@
public void setPolledRunnableProcesser(JobProcessor polledRunnableProcessor) {
}
- public String scheduleVolatileJob(boolean transacted, Map<String, Object> jobDetail, Date when) throws ContextException {
+ public String scheduleVolatileJob(boolean transacted, JobDetails jobDetail, Date when) throws ContextException {
// TODO Auto-generated method stub
__log.debug("scheduleVolatileJob");
return null;
}
- public String scheduleVolatileJob(boolean transacted, Map<String, Object> jobDetail) throws ContextException {
+ public String scheduleVolatileJob(boolean transacted, JobDetails jobDetail) throws ContextException {
// TODO Auto-generated method stub
__log.debug("scheduleVolatileJob");
return null;
Modified: branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/extvar/jdbc/DbExternalVariable.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/extvar/jdbc/DbExternalVariable.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/extvar/jdbc/DbExternalVariable.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -142,7 +142,8 @@
sb.append(c.colname);
}
- sb.append(" from " + table);
+ sb.append(" from ");
+ sb.append(schema + "." + table);
if (_keycolumns.size() > 0) {
sb.append(" where ");
first = true;
@@ -166,7 +167,7 @@
private void createUpdate() {
_updcolumns.clear();
StringBuilder sb = new StringBuilder("update ");
- sb.append(table);
+ sb.append(schema + "." + table);
sb.append(" set ");
boolean first = true;
for (Column c : _columns) {
@@ -213,7 +214,7 @@
private void createInsert() {
_inscolumns.clear();
StringBuilder sb = new StringBuilder("insert into ");
- sb.append(table);
+ sb.append(schema + "." + table);
sb.append(" ( ");
boolean first = true;
for (Column c : _columns) {
Modified: branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/ProcessDaoImpl.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/ProcessDaoImpl.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/ProcessDaoImpl.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -242,7 +242,9 @@
Long id = (Long) oldInstances[i];
Long age = _instancesAge.get(id);
if (age != null && now-age > _conn._mexTtl) {
- __log.warn("Discarding in-memory instance "+id+" because it exceeded its time-to-live: "+_instances.get(id));
+ if (_instances.get(id) != null) {
+ __log.warn("Discarding in-memory instance "+id+" because it exceeded its time-to-live: "+_instances.get(id));
+ }
_instances.remove(id);
_instancesAge.remove(id);
}
Modified: branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -432,7 +432,8 @@
rvalue = ((Document)rvalue).getDocumentElement();
}
- if (headerAssign && lvaluePtr.getParentNode().getNodeName().equals("message") && rvalue.getNodeType()==Node.ELEMENT_NODE) {
+ Node parentNode = lvaluePtr.getParentNode();
+ if (headerAssign && parentNode != null && "message".equals(parentNode.getNodeName()) && rvalue.getNodeType()==Node.ELEMENT_NODE ) {
lvalue = copyInto((Element)lvalue, (Element) lvaluePtr, (Element) rvalue);
} else if (rvalue.getNodeType() == Node.ELEMENT_NODE && lvaluePtr.getNodeType() == Node.ELEMENT_NODE) {
lvalue = replaceElement((Element)lvalue, (Element) lvaluePtr, (Element) rvalue,
Modified: branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/SCOPE.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/SCOPE.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/SCOPE.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -30,6 +30,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.ode.bpel.evt.ScopeCompletionEvent;
import org.apache.ode.bpel.evt.ScopeFaultEvent;
import org.apache.ode.bpel.evt.ScopeStartEvent;
import org.apache.ode.bpel.evt.VariableModificationEvent;
@@ -352,6 +353,8 @@
});
}
} else /* completed ok */ {
+ sendEvent(new ScopeCompletionEvent());
+
if (_oscope.compensationHandler != null) {
CompensationHandler compensationHandler = new CompensationHandler(
_scopeFrame,
Modified: branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/WAIT.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/WAIT.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/WAIT.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -57,7 +57,8 @@
} catch (EvaluationException ee) {
String msg = "Unexpected error evaluating wait condition.";
__log.error(msg, ee);
- throw new InvalidProcessException(msg,ee);
+ _self.parent.completed(createFault(_self.o.getOwner().constants.qnSubLanguageExecutionFault, _self.o), CompensationHandler.emptySet());
+ return;
}
Modified: branches/ODE/ODE-1.x-jpa/bpel-runtime/src/test/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeImplTest.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-runtime/src/test/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeImplTest.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-runtime/src/test/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeImplTest.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -1,3 +1,21 @@
+/*
+ * 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.bpel.engine;
import java.util.Map;
Modified: branches/ODE/ODE-1.x-jpa/bpel-runtime/src/test/java/org/apache/ode/bpel/engine/cron/CronSchedulerTest.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-runtime/src/test/java/org/apache/ode/bpel/engine/cron/CronSchedulerTest.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-runtime/src/test/java/org/apache/ode/bpel/engine/cron/CronSchedulerTest.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -1,3 +1,21 @@
+/*
+ * 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.bpel.engine.cron;
import java.util.HashMap;
@@ -21,6 +39,7 @@
import org.apache.ode.utils.CronExpression;
import org.jmock.Mock;
import org.jmock.MockObjectTestCase;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
public class CronSchedulerTest extends MockObjectTestCase {
@@ -71,14 +90,14 @@
CronExpression cronExpr = new CronExpression("* * * * * ?");
RuntimeDataCleanupRunnable runnable = new RuntimeDataCleanupRunnable();
- Map<String, Object> details = new HashMap<String, Object>();
- details.put("pid", new QName("test"));
- details.put("transactionSize", 10);
+ JobDetails details = new JobDetails();
+ details.setProcessId(new QName("test"));
+ details.getDetailsExt().put("transactionSize", 10);
CleanupInfo cleanupInfo = new CleanupInfo();
cleanupInfo.getFilters().add("a=b");
cleanupInfo.getCategories().add(CLEANUP_CATEGORY.CORRELATIONS);
- details.put("cleanupInfo", cleanupInfo);
- runnable.restoreFromDetailsMap(details);
+ details.getDetailsExt().put("cleanupInfo", cleanupInfo);
+ runnable.restoreFromDetails(details);
runnable.setContexts(contexts);
NotifyingTerminationListener listener = new NotifyingTerminationListener();
@@ -89,4 +108,4 @@
}
}
}
-}
\ No newline at end of file
+}
Modified: branches/ODE/ODE-1.x-jpa/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -284,10 +284,10 @@
_scheduler.setJobProcessor(server);
}
- public String schedulePersistedJob(Map<String,Object>jobDetail,Date when) throws ContextException {
+ public String schedulePersistedJob(JobDetails jobDetail,Date when) throws ContextException {
String jobId = _scheduler.schedulePersistedJob(jobDetail, when);
// Invocation checks get scheduled much later, we don't want (or need) to wait for them
- if (!"INVOKE_CHECK".equals(jobDetail.get("type")))
+ if (jobDetail.getType() != JobType.INVOKE_CHECK)
_nextSchedule = when == null ? System.currentTimeMillis() : when.getTime();
return jobId;
}
@@ -297,11 +297,11 @@
return new GUID().toString();
}
- public String scheduleVolatileJob(boolean transacted, Map<String,Object> jobDetail) throws ContextException {
+ public String scheduleVolatileJob(boolean transacted, JobDetails jobDetail) throws ContextException {
return scheduleVolatileJob(transacted, jobDetail, null);
}
- public String scheduleVolatileJob(boolean transacted, Map<String, Object> jobDetail, Date when) throws ContextException {
+ public String scheduleVolatileJob(boolean transacted, JobDetails jobDetail, Date when) throws ContextException {
String jobId = _scheduler.scheduleVolatileJob(transacted, jobDetail, when);
_nextSchedule = System.currentTimeMillis();
return jobId;
Modified: branches/ODE/ODE-1.x-jpa/bpel-runtime/src/test/resources/recovery/failure-to-fault2.bpel
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-runtime/src/test/resources/recovery/failure-to-fault2.bpel 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-runtime/src/test/resources/recovery/failure-to-fault2.bpel 2010-05-28 05:11:17 UTC (rev 678)
@@ -49,30 +49,19 @@
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>
</invoke>
<invoke name="response"
partnerLink="instantiatingPartnerLink"
portType="tns:ResponsePortType"
operation="respond"
inputVariable="response">
- <targets>
- <target linkName="successfulInvoke"/>
- </targets>
</invoke>
- </flow>
</sequence>
</process>
Modified: branches/ODE/ODE-1.x-jpa/bpel-schemas/src/main/xsd/pmapi.xsd
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-schemas/src/main/xsd/pmapi.xsd 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-schemas/src/main/xsd/pmapi.xsd 2010-05-28 05:11:17 UTC (rev 678)
@@ -781,6 +781,7 @@
<element name="activity-failure-reason" type="xs:string" minOccurs="0" maxOccurs="1"/>
<element name="activity-recovery-action" type="xs:string" minOccurs="0" maxOccurs="1"/>
<element name="variable-name" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ <element name="new-value" type="xs:string" minOccurs="0" maxOccurs="1"/>
<element name="port-type" type="xs:QName" minOccurs="0" maxOccurs="1"/>
<element name="operation" type="xs:string" minOccurs="0" maxOccurs="1"/>
<element name="correlation-set" type="xs:string" minOccurs="0" maxOccurs="1"/>
Modified: branches/ODE/ODE-1.x-jpa/bpel-scripts/src/main/resources/2.0/good/circularReference/CircularReference.bpel
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-scripts/src/main/resources/2.0/good/circularReference/CircularReference.bpel 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-scripts/src/main/resources/2.0/good/circularReference/CircularReference.bpel 2010-05-28 05:11:17 UTC (rev 678)
@@ -1,4 +1,22 @@
<?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.
+ -->
<bpel:process xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop"
xmlns:pnlk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
@@ -26,4 +44,4 @@
operation="EventStartMessage" variable="start"
createInstance="yes" name="start" partnerLink="pnlk" />
</bpel:sequence>
-</bpel:process>
\ No newline at end of file
+</bpel:process>
Modified: branches/ODE/ODE-1.x-jpa/bpel-scripts/src/main/resources/2.0/good/circularReference/CircularReference1.wsdl
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-scripts/src/main/resources/2.0/good/circularReference/CircularReference1.wsdl 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-scripts/src/main/resources/2.0/good/circularReference/CircularReference1.wsdl 2010-05-28 05:11:17 UTC (rev 678)
@@ -1,4 +1,22 @@
<?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 xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop"
@@ -47,4 +65,4 @@
<soap:address location="http://example.com/hello"/>
</wsdl:port>
</wsdl:service>
-</wsdl:definitions>
\ No newline at end of file
+</wsdl:definitions>
Modified: branches/ODE/ODE-1.x-jpa/bpel-scripts/src/main/resources/2.0/good/circularReference/CircularReference2.wsdl
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-scripts/src/main/resources/2.0/good/circularReference/CircularReference2.wsdl 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-scripts/src/main/resources/2.0/good/circularReference/CircularReference2.wsdl 2010-05-28 05:11:17 UTC (rev 678)
@@ -1,4 +1,22 @@
<?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 xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop"
@@ -44,4 +62,4 @@
<soap:address location="http://example.com/hello"/>
</wsdl:port>
</wsdl:service>
-</wsdl:definitions>
\ No newline at end of file
+</wsdl:definitions>
Modified: branches/ODE/ODE-1.x-jpa/bpel-store/src/main/java/org/apache/ode/store/DeploymentUnitDir.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-store/src/main/java/org/apache/ode/store/DeploymentUnitDir.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-store/src/main/java/org/apache/ode/store/DeploymentUnitDir.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -29,6 +29,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Properties;
import java.util.Set;
import javax.wsdl.Definition;
@@ -54,6 +55,17 @@
import org.apache.ode.utils.InternPool.InternableBlock;
import org.apache.ode.utils.fs.FileUtils;
import org.apache.xmlbeans.XmlOptions;
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.BeanFactory;
+import org.springframework.beans.factory.NoSuchBeanDefinitionException;
+import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationEvent;
+import org.springframework.context.MessageSourceResolvable;
+import org.springframework.context.NoSuchMessageException;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+import org.springframework.context.support.FileSystemXmlApplicationContext;
+import org.springframework.core.io.Resource;
import org.w3c.dom.Node;
/**
@@ -70,6 +82,7 @@
private String _name;
private File _duDirectory;
private File _descriptorFile;
+ private Properties _properties = new Properties();
private HashMap<QName, CBPInfo> _processes = new HashMap<QName, CBPInfo>();
private HashMap<QName, TDeployment.Process> _processInfo = new HashMap<QName, TDeployment.Process>();
@@ -118,6 +131,17 @@
if (!_descriptorFile.exists())
throw new IllegalArgumentException("Directory " + dir + " does not contain a deploy.xml file!");
+
+ try {
+ ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
+ _properties = (java.util.Properties) ctx.getBean("properties");
+ if (__log.isDebugEnabled()) {
+ __log.debug("Loaded spring properties from file beans.xml:" + _properties + " for " + _name);
+ }
+ } catch (Exception e) {
+ __log.info("Can't initialize beans.xml application context " + e + " for " + _name);
+ }
+
}
@@ -366,7 +390,7 @@
continue;
if (bpelFile.getName().equals(process.getFileName())) {
- Map<QName, Node> props = ProcessStoreImpl.calcInitialProperties(process);
+ Map<QName, Node> props = ProcessStoreImpl.calcInitialProperties(_properties, process);
Map<String, Object> result = new HashMap<String, Object>();
result.put(BpelC.PROCESS_CUSTOM_PROPERTIES, props);
return result;
@@ -412,4 +436,7 @@
_version = version;
}
+ public Properties getProperties() {
+ return _properties;
+ }
}
Modified: branches/ODE/ODE-1.x-jpa/bpel-store/src/main/java/org/apache/ode/store/ProcessConfImpl.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-store/src/main/java/org/apache/ode/store/ProcessConfImpl.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-store/src/main/java/org/apache/ode/store/ProcessConfImpl.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -19,14 +19,23 @@
package org.apache.ode.store;
import java.io.File;
+import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
-import java.io.FileFilter;
import java.net.URI;
import java.text.ParseException;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
import javax.wsdl.Definition;
import javax.xml.namespace.QName;
@@ -46,18 +55,18 @@
import org.apache.ode.bpel.evt.BpelEvent;
import org.apache.ode.bpel.iapi.ContextException;
import org.apache.ode.bpel.iapi.Endpoint;
+import org.apache.ode.bpel.iapi.EndpointReference;
+import org.apache.ode.bpel.iapi.EndpointReferenceContext;
import org.apache.ode.bpel.iapi.ProcessConf;
import org.apache.ode.bpel.iapi.ProcessState;
-import org.apache.ode.bpel.iapi.EndpointReferenceContext;
-import org.apache.ode.bpel.iapi.EndpointReference;
-import org.apache.ode.bpel.iapi.ProcessConf.PartnerRoleConfig;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
import org.apache.ode.bpel.o.OFailureHandling;
import org.apache.ode.store.DeploymentUnitDir.CBPInfo;
+import org.apache.ode.utils.CollectionUtils;
import org.apache.ode.utils.CronExpression;
import org.apache.ode.utils.DOMUtils;
import org.apache.ode.utils.HierarchicalProperties;
import org.apache.ode.utils.WatchDog;
-import org.apache.ode.utils.CollectionUtils;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
@@ -545,10 +554,10 @@
cleanupInfo.setFilters(aCleanup.getFilterList());
ProcessCleanupConfImpl.processACleanup(cleanupInfo.getCategories(), aCleanup.getCategoryList());
- Map<String, Object> runnableDetails = new HashMap<String, Object>();
- runnableDetails.put("cleanupInfo", cleanupInfo);
- runnableDetails.put("pid", _pid);
- runnableDetails.put("transactionSize", 10);
+ JobDetails runnableDetails = new JobDetails();
+ runnableDetails.getDetailsExt().put("cleanupInfo", cleanupInfo);
+ runnableDetails.getDetailsExt().put("pid", _pid);
+ runnableDetails.getDetailsExt().put("transactionSize", 10);
job.getRunnableDetailList().add(runnableDetails);
}
jobs.add(job);
Modified: branches/ODE/ODE-1.x-jpa/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -30,6 +30,7 @@
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Properties;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@@ -233,7 +234,7 @@
}
ProcessConfImpl pconf = new ProcessConfImpl(pid, processDD.getName(), version, du, processDD, deployDate,
- calcInitialProperties(processDD), calcInitialState(processDD), _eprContext, _configDir, generateProcessEventsAll);
+ calcInitialProperties(du.getProperties(), processDD), calcInitialState(processDD), _eprContext, _configDir, generateProcessEventsAll);
processes.add(pconf);
}
@@ -672,8 +673,18 @@
* @param dd
* @return
*/
- public static Map<QName, Node> calcInitialProperties(TDeployment.Process dd) {
+ public static Map<QName, Node> calcInitialProperties(Properties properties, TDeployment.Process dd) {
HashMap<QName, Node> ret = new HashMap<QName, Node>();
+
+ for (Object key1 : properties.keySet()) {
+ String key = (String) key1;
+ Document doc = DOMUtils.newDocument();
+ doc.appendChild(doc.createElementNS(null, "temporary-simple-type-wrapper"));
+ doc.getDocumentElement().appendChild(doc.createTextNode(properties.getProperty(key)));
+
+ ret.put(new QName(key), doc.getDocumentElement());
+ }
+
if (dd.getPropertyList().size() > 0) {
for (TDeployment.Process.Property property : dd.getPropertyList()) {
Element elmtContent = DOMUtils.getElementContent(property.getDomNode());
@@ -739,7 +750,7 @@
continue;
}
- Map<QName, Node> props = calcInitialProperties(pinfo);
+ Map<QName, Node> props = calcInitialProperties(dud.getProperties(), pinfo);
// TODO: update the props based on the values in the DB.
ProcessConfImpl pconf = new ProcessConfImpl(p.getPID(), p.getType(), p.getVersion(), dud, pinfo, dudao
Modified: branches/ODE/ODE-1.x-jpa/bpel-test/src/test/resources/bpel/2.0/TestWait1/Wait1-2.0.bpel
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-test/src/test/resources/bpel/2.0/TestWait1/Wait1-2.0.bpel 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-test/src/test/resources/bpel/2.0/TestWait1/Wait1-2.0.bpel 2010-05-28 05:11:17 UTC (rev 678)
@@ -53,6 +53,17 @@
<for>'PT5S'</for>
</wait>
+ <scope>
+ <faultHandlers>
+ <catchAll>
+ <empty/>
+ </catchAll>
+ </faultHandlers>
+ <wait>
+ <for expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0">xsd:double('')</for>
+ </wait>
+ </scope>
+
<reply name="endReply"
operation="testOperation"
partnerLink="testPartnerLink"
Modified: branches/ODE/ODE-1.x-jpa/bpel-test/src/test/resources/bpel/2.0/TestXQueryExpression/HelloXQueryWorld.xsl
===================================================================
--- branches/ODE/ODE-1.x-jpa/bpel-test/src/test/resources/bpel/2.0/TestXQueryExpression/HelloXQueryWorld.xsl 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/bpel-test/src/test/resources/bpel/2.0/TestXQueryExpression/HelloXQueryWorld.xsl 2010-05-28 05:11:17 UTC (rev 678)
@@ -1,3 +1,21 @@
+<!--
+ ~ 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.
+ -->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.example.org/ProcessData"
xmlns:tns="http://www.example.org/ProcessData"
@@ -10,4 +28,4 @@
</root>
</xsl:template>
-</xsl:stylesheet>
\ No newline at end of file
+</xsl:stylesheet>
Modified: branches/ODE/ODE-1.x-jpa/dao-hibernate/pom.xml
===================================================================
--- branches/ODE/ODE-1.x-jpa/dao-hibernate/pom.xml 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/dao-hibernate/pom.xml 2010-05-28 05:11:17 UTC (rev 678)
@@ -97,6 +97,7 @@
<!--doclet does not support not-found="ignore" -->
<groupId>org.codehaus.groovy.maven</groupId>
<artifactId>gmaven-plugin</artifactId>
+ <version>1.0</version>
<executions>
<execution>
<phase>process-sources</phase>
Modified: branches/ODE/ODE-1.x-jpa/dao-hibernate/src/main/java/org/apache/ode/dao/hib/bpel/CriteriaBuilder.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/dao-hibernate/src/main/java/org/apache/ode/dao/hib/bpel/CriteriaBuilder.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/dao-hibernate/src/main/java/org/apache/ode/dao/hib/bpel/CriteriaBuilder.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -69,7 +69,7 @@
List<String> iids = filter.getIidFilter();
for (int m = 0; m < iids.size(); m++) {
filters.append(" pi.id = :iid").append(m);
- parameters.put("iid" + m, iids.get(m));
+ parameters.put("iid" + m, Long.parseLong(iids.get(m)));
if (m < iids.size() - 1) filters.append(" or");
}
clauses.add(" (" + filters + ")");
@@ -86,7 +86,7 @@
cmp = " = ";
}
for (int m = 0; m < pids.size(); m++) {
- filters.append(" pi.process.id ").append(cmp).append(" :pid").append(m);
+ filters.append(" pi.process.processId ").append(cmp).append(" :pid").append(m);
parameters.put("pid" + m, pids.get(m));
if (m < pids.size() - 1) filters.append(" or");
}
Modified: branches/ODE/ODE-1.x-jpa/dao-hibernate/src/main/java/org/apache/ode/dao/hib/bpel/ProcessInstanceDaoImpl.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/dao-hibernate/src/main/java/org/apache/ode/dao/hib/bpel/ProcessInstanceDaoImpl.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/dao-hibernate/src/main/java/org/apache/ode/dao/hib/bpel/ProcessInstanceDaoImpl.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -220,7 +220,7 @@
: null);
scope.setName(name);
scope.setScopeModelId(scopeModelId);
- scope.setState(ScopeStateEnum.ACTIVE.toString());
+ scope.setState(ScopeStateEnum.NEW.toString());
scope.setInstance(_instance);
scope.setCreated(new Date());
// _instance.addScope(scope);
Modified: branches/ODE/ODE-1.x-jpa/dao-hibernate/src/main/java/org/apache/ode/dao/hib/bpel/ScopeDaoImpl.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/dao-hibernate/src/main/java/org/apache/ode/dao/hib/bpel/ScopeDaoImpl.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/dao-hibernate/src/main/java/org/apache/ode/dao/hib/bpel/ScopeDaoImpl.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -121,7 +121,7 @@
* @see org.apache.ode.dao.bpel.ScopeDAO#getState()
*/
public ScopeStateEnum getState() {
- return new ScopeStateEnum(_scope.getState());
+ return ScopeStateEnum.valueOf(_scope.getState());
}
/**
* @see org.apache.ode.dao.bpel.ScopeDAO#getName()
Modified: branches/ODE/ODE-1.x-jpa/dao-hibernate/src/main/java/org/apache/ode/dao/hib/bpel/XmlDataDaoImpl.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/dao-hibernate/src/main/java/org/apache/ode/dao/hib/bpel/XmlDataDaoImpl.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/dao-hibernate/src/main/java/org/apache/ode/dao/hib/bpel/XmlDataDaoImpl.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -58,7 +58,7 @@
*/
public boolean isNull() {
entering("XmlDataDaoImpl.isNull");
- return (_data.getData() == null || _data.getData().length == 0);
+ return (_data.getSimpleValue() == null && (_data.getData() == null || _data.getData().length == 0));
}
/**
@@ -84,14 +84,26 @@
public void set(Node val) {
entering("XmlDataDaoImpl.set");
_node = val;
- _data.setSimpleType(!(val instanceof Element));
-
- if(_data.isSimpleType()) {
- _data.setData(_node.getNodeValue().getBytes());
+ if (val != null && val.getNamespaceURI() == null && "temporary-simple-type-wrapper".equals(val.getLocalName())) {
+ _data.setSimpleType(true);
+ String value = _node.getTextContent();
+ if (value.length() <= 255) {
+ _data.setSimpleValue(value);
+ _data.setData(null);
+ } else {
+ _data.setData(value.getBytes());
+ _data.setSimpleValue(null);
+ }
+ } else if (val instanceof Element) {
+ _data.setSimpleType(false);
+ _data.setData(DOMUtils.domToString(_node).getBytes());
+ _data.setSimpleValue(null);
} else {
- _data.setData(DOMUtils.domToString(_node).getBytes());
+ _data.setSimpleType(true);
+ _data.setSimpleValue(_node.getNodeValue());
+ _data.setData(null);
}
-
+
getSession().saveOrUpdate(_data);
leaving("XmlDataDaoImpl.set");
}
@@ -143,20 +155,28 @@
}
private Node prepare(){
- if(_data.getData() == null || _data.getData().length == 0)
- return null;
- String data = new String(_data.getData());
- if(_data.isSimpleType()){
+ if(_data.isSimpleType()) {
+ String data;
+ if (_data.getSimpleValue() != null) {
+ data = _data.getSimpleValue();
+ } else {
+ if(_data.getData() == null || _data.getData().length == 0)
+ return null;
+ data = new String(_data.getData());
+ }
Document d = DOMUtils.newDocument();
// we create a dummy wrapper element
// prevents some apps from complaining
// when text node is not actual child of document
- Element e = d.createElement("text-node-wrapper");
+ Element e = d.createElement("temporary-simple-type-wrapper");
Text tnode = d.createTextNode(data);
d.appendChild(e);
e.appendChild(tnode);
return tnode;
- }else{
+ } else {
+ if(_data.getData() == null || _data.getData().length == 0)
+ return null;
+ String data = new String(_data.getData());
try{
return DOMUtils.stringToDOM(data);
}catch(Exception e){
Modified: branches/ODE/ODE-1.x-jpa/dao-hibernate/src/main/java/org/apache/ode/dao/hib/bpel/hobj/HXmlData.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/dao-hibernate/src/main/java/org/apache/ode/dao/hib/bpel/hobj/HXmlData.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/dao-hibernate/src/main/java/org/apache/ode/dao/hib/bpel/hobj/HXmlData.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -33,6 +33,7 @@
private byte[] _data;
private Collection<HVariableProperty> _properties = new HashSet<HVariableProperty>();
private String _name;
+ private String _simpleValue;
private HScope _scope;
private HProcessInstance _instance;
@@ -53,7 +54,7 @@
public void setData(byte[] data) {
_data = data;
}
-
+
/**
* @hibernate.property
* column="NAME"
@@ -70,6 +71,21 @@
}
/**
+ * @hibernate.property
+ * column="SIMPLE_VALUE"
+ * type="string"
+ * length="255"
+ * not-null="false"
+ */
+ public String getSimpleValue() {
+ return _simpleValue;
+ }
+
+ public void setSimpleValue(String simpleValue) {
+ _simpleValue = simpleValue;
+ }
+
+ /**
* @hibernate.bag
* lazy="true"
* inverse="true"
Modified: branches/ODE/ODE-1.x-jpa/dao-hibernate-db/build.xml
===================================================================
--- branches/ODE/ODE-1.x-jpa/dao-hibernate-db/build.xml 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/dao-hibernate-db/build.xml 2010-05-28 05:11:17 UTC (rev 678)
@@ -93,6 +93,7 @@
</fileset>
</schemaexport>
<concat destfile="${db.scripts.dir}/scripts/(a){db}-hib.sql">
+ <fileset file="${sql.dir}/common.sql"/>
<fileset file="${sql.dir}/simplesched-(a){db}.sql"/>
<fileset file="${db.scripts.dir}/partial.(a){db}.sql"/>
</concat>
Modified: branches/ODE/ODE-1.x-jpa/dao-hibernate-db/src/main/sql/simplesched-derby.sql
===================================================================
--- branches/ODE/ODE-1.x-jpa/dao-hibernate-db/src/main/sql/simplesched-derby.sql 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/dao-hibernate-db/src/main/sql/simplesched-derby.sql 2010-05-28 05:11:17 UTC (rev 678)
@@ -10,7 +10,18 @@
nodeid char(64),
scheduled int NOT NULL DEFAULT 0,
transacted int NOT NULL DEFAULT 0,
- details blob(4096),
+
+ instanceId BIGINT,
+ mexId varchar(255),
+ processId varchar(255),
+ type varchar(255),
+ channel varchar(255),
+ correlatorId varchar(255),
+ correlationKeySet varchar(255),
+ retryCount int,
+ inMem int,
+ detailsExt blob(4096),
+
PRIMARY KEY(jobid));
CREATE INDEX IDX_ODE_JOB_TS ON ode_job(ts);
Modified: branches/ODE/ODE-1.x-jpa/dao-hibernate-db/src/main/sql/simplesched-firebird.sql
===================================================================
--- branches/ODE/ODE-1.x-jpa/dao-hibernate-db/src/main/sql/simplesched-firebird.sql 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/dao-hibernate-db/src/main/sql/simplesched-firebird.sql 2010-05-28 05:11:17 UTC (rev 678)
@@ -10,7 +10,18 @@
nodeid char(64),
scheduled int NOT NULL DEFAULT 0,
transacted int NOT NULL DEFAULT 0,
- details blob(4096),
+
+ instanceId BIGINT,
+ mexId varchar(255),
+ processId varchar(255),
+ type varchar(255),
+ channel varchar(255),
+ correlatorId varchar(255),
+ correlationKeySet varchar(255),
+ retryCount int,
+ inMem int,
+ detailsExt blob(4096),
+
PRIMARY KEY(jobid));
CREATE INDEX IDX_ODE_JOB_TS ON ode_job(ts);
Modified: branches/ODE/ODE-1.x-jpa/dao-hibernate-db/src/main/sql/simplesched-hsql.sql
===================================================================
--- branches/ODE/ODE-1.x-jpa/dao-hibernate-db/src/main/sql/simplesched-hsql.sql 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/dao-hibernate-db/src/main/sql/simplesched-hsql.sql 2010-05-28 05:11:17 UTC (rev 678)
@@ -10,7 +10,18 @@
nodeid char(64),
scheduled int NOT NULL DEFAULT 0,
transacted int NOT NULL DEFAULT 0,
- details blob(4096),
+
+ instanceId BIGINT,
+ mexId varchar(255),
+ processId varchar(255),
+ type varchar(255),
+ channel varchar(255),
+ correlatorId varchar(255),
+ correlationKeySet varchar(255),
+ retryCount int,
+ inMem int,
+ detailsExt binary(4096),
+
PRIMARY KEY(jobid));
CREATE INDEX IDX_ODE_JOB_TS ON ode_job(ts);
Modified: branches/ODE/ODE-1.x-jpa/dao-hibernate-db/src/main/sql/simplesched-mysql.sql
===================================================================
--- branches/ODE/ODE-1.x-jpa/dao-hibernate-db/src/main/sql/simplesched-mysql.sql 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/dao-hibernate-db/src/main/sql/simplesched-mysql.sql 2010-05-28 05:11:17 UTC (rev 678)
@@ -11,7 +11,18 @@
nodeid char(64) NULL,
scheduled int NOT NULL DEFAULT 0,
transacted int NOT NULL DEFAULT 0,
- details blob(4096) NULL,
+
+ instanceId BIGINT,
+ mexId varchar(255),
+ processId varchar(255),
+ type varchar(255),
+ channel varchar(255),
+ correlatorId varchar(255),
+ correlationKeySet varchar(255),
+ retryCount int,
+ inMem int,
+ detailsExt blob(4096),
+
PRIMARY KEY(jobid),
INDEX IDX_ODE_JOB_TS(ts),
INDEX IDX_ODE_JOB_NODEID(nodeid)
Modified: branches/ODE/ODE-1.x-jpa/dao-hibernate-db/src/main/sql/simplesched-oracle.sql
===================================================================
--- branches/ODE/ODE-1.x-jpa/dao-hibernate-db/src/main/sql/simplesched-oracle.sql 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/dao-hibernate-db/src/main/sql/simplesched-oracle.sql 2010-05-28 05:11:17 UTC (rev 678)
@@ -4,13 +4,26 @@
--
--
+DROP TABLE ode_job;
+
CREATE TABLE ode_job (
- jobid CHAR(64) NOT NULL DEFAULT '',
- ts BIGINT NOT NULL DEFAULT 0,
- nodeid char(64),
- scheduled int NOT NULL DEFAULT 0,
- transacted int NOT NULL DEFAULT 0,
- details blob(4096),
+ jobid VARCHAR(64) NOT NULL,
+ ts number(37) NOT NULL,
+ nodeid varchar(64),
+ scheduled int NOT NULL,
+ transacted int NOT NULL,
+
+ instanceId number(37),
+ mexId varchar(255),
+ processId varchar(255),
+ type varchar(255),
+ channel varchar(255),
+ correlatorId varchar(255),
+ correlationKeySet varchar(255),
+ retryCount int,
+ inMem int,
+ detailsExt blob,
+
PRIMARY KEY(jobid));
CREATE INDEX IDX_ODE_JOB_TS ON ode_job(ts);
Modified: branches/ODE/ODE-1.x-jpa/dao-hibernate-db/src/main/sql/simplesched-postgres.sql
===================================================================
--- branches/ODE/ODE-1.x-jpa/dao-hibernate-db/src/main/sql/simplesched-postgres.sql 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/dao-hibernate-db/src/main/sql/simplesched-postgres.sql 2010-05-28 05:11:17 UTC (rev 678)
@@ -10,7 +10,18 @@
nodeid char(64),
scheduled int NOT NULL DEFAULT 0,
transacted int NOT NULL DEFAULT 0,
- details blob(4096),
+
+ instanceId BIGINT,
+ mexId varchar(255),
+ processId varchar(255),
+ type varchar(255),
+ channel varchar(255),
+ correlatorId varchar(255),
+ correlationKeySet varchar(255),
+ retryCount int,
+ inMem int,
+ detailsExt blob(4096),
+
PRIMARY KEY(jobid));
CREATE INDEX IDX_ODE_JOB_TS ON ode_job(ts);
Modified: branches/ODE/ODE-1.x-jpa/dao-hibernate-db/src/main/sql/simplesched-sqlserver.sql
===================================================================
--- branches/ODE/ODE-1.x-jpa/dao-hibernate-db/src/main/sql/simplesched-sqlserver.sql 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/dao-hibernate-db/src/main/sql/simplesched-sqlserver.sql 2010-05-28 05:11:17 UTC (rev 678)
@@ -10,7 +10,18 @@
nodeid char(64),
scheduled int NOT NULL DEFAULT 0,
transacted int NOT NULL DEFAULT 0,
- details blob(4096),
+
+ instanceId BIGINT,
+ mexId varchar(255),
+ processId varchar(255),
+ type varchar(255),
+ channel varchar(255),
+ correlatorId varchar(255),
+ correlationKeySet varchar(255),
+ retryCount int,
+ inMem int,
+ detailsExt blob(4096),
+
PRIMARY KEY(jobid));
CREATE INDEX IDX_ODE_JOB_TS ON ode_job(ts);
Modified: branches/ODE/ODE-1.x-jpa/dao-jpa/src/main/java/org/apache/ode/dao/jpa/bpel/ScopeDAOImpl.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/dao-jpa/src/main/java/org/apache/ode/dao/jpa/bpel/ScopeDAOImpl.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/dao-jpa/src/main/java/org/apache/ode/dao/jpa/bpel/ScopeDAOImpl.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -164,7 +164,7 @@
}
public ScopeStateEnum getState() {
- return new ScopeStateEnum(_scopeState);
+ return ScopeStateEnum.valueOf(_scopeState);
}
public XmlDataDAO getVariable(String varName) {
Modified: branches/ODE/ODE-1.x-jpa/dao-jpa-ojpa-derby/build.xml
===================================================================
--- branches/ODE/ODE-1.x-jpa/dao-jpa-ojpa-derby/build.xml 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/dao-jpa-ojpa-derby/build.xml 2010-05-28 05:11:17 UTC (rev 678)
@@ -74,6 +74,7 @@
</classpath>
</mappingtool>
<concat destfile="${db.scripts.dir}/(a){db}.sql">
+ <fileset file="${scripts.dir}/common.sql"/>
<fileset file="${scripts.dir}/license-header.sql"/>
<fileset file="${scripts.dir}/simplesched-(a){db}.sql"/>
<fileset file="${db.scripts.dir}/partial.(a){db}.sql"/>
Modified: branches/ODE/ODE-1.x-jpa/dao-jpa-ojpa-derby/src/main/scripts/simplesched-derby.sql
===================================================================
--- branches/ODE/ODE-1.x-jpa/dao-jpa-ojpa-derby/src/main/scripts/simplesched-derby.sql 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/dao-jpa-ojpa-derby/src/main/scripts/simplesched-derby.sql 2010-05-28 05:11:17 UTC (rev 678)
@@ -10,7 +10,18 @@
nodeid char(64),
scheduled int NOT NULL DEFAULT 0,
transacted int NOT NULL DEFAULT 0,
- details blob(4096),
+
+ instanceId BIGINT,
+ mexId varchar(255),
+ processId varchar(255),
+ type varchar(255),
+ channel varchar(255),
+ correlatorId varchar(255),
+ correlationKeySet varchar(255),
+ retryCount int,
+ inMem int,
+ detailsExt blob(4096),
+
PRIMARY KEY(jobid));
CREATE INDEX IDX_ODE_JOB_TS ON ode_job(ts);
Modified: branches/ODE/ODE-1.x-jpa/dao-jpa-ojpa-derby/src/main/scripts/simplesched-mysql.sql
===================================================================
--- branches/ODE/ODE-1.x-jpa/dao-jpa-ojpa-derby/src/main/scripts/simplesched-mysql.sql 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/dao-jpa-ojpa-derby/src/main/scripts/simplesched-mysql.sql 2010-05-28 05:11:17 UTC (rev 678)
@@ -11,7 +11,18 @@
nodeid char(64) NULL,
scheduled int NOT NULL DEFAULT 0,
transacted int NOT NULL DEFAULT 0,
- details blob(4096) NULL,
+
+ instanceId BIGINT,
+ mexId varchar(255),
+ processId varchar(255),
+ type varchar(255),
+ channel varchar(255),
+ correlatorId varchar(255),
+ correlationKeySet varchar(255),
+ retryCount int,
+ inMem int,
+ detailsExt blob(4096),
+
PRIMARY KEY(jobid),
INDEX IDX_ODE_JOB_TS(ts),
INDEX IDX_ODE_JOB_NODEID(nodeid)
Modified: branches/ODE/ODE-1.x-jpa/dao-jpa-ojpa-derby/src/main/scripts/simplesched-oracle.sql
===================================================================
--- branches/ODE/ODE-1.x-jpa/dao-jpa-ojpa-derby/src/main/scripts/simplesched-oracle.sql 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/dao-jpa-ojpa-derby/src/main/scripts/simplesched-oracle.sql 2010-05-28 05:11:17 UTC (rev 678)
@@ -1,5 +1,31 @@
-CREATE TABLE ODE_JOB (jobid varchar2(64 char) DEFAULT '' NOT NULL, ts number(19,0) DEFAULT 0 NOT NULL, nodeid varchar2(64 char) NULL, scheduled number(12,0) DEFAULT 0 NOT NULL, transacted number(12,0) DEFAULT 0 NOT NULL, details BLOB, PRIMARY KEY(jobid));
+-- Apache ODE - SimpleScheduler Database Schema
+--
+-- Apache Derby scripts by Maciej Szefler.
+--
+--
+DROP TABLE ode_job;
+
+CREATE TABLE ode_job (
+ jobid VARCHAR(64) NOT NULL,
+ ts number(37) NOT NULL,
+ nodeid varchar(64),
+ scheduled int NOT NULL,
+ transacted int NOT NULL,
+
+ instanceId number(37),
+ mexId varchar(255),
+ processId varchar(255),
+ type varchar(255),
+ channel varchar(255),
+ correlatorId varchar(255),
+ correlationKeySet varchar(255),
+ retryCount int,
+ inMem int,
+ detailsExt blob,
+
+ PRIMARY KEY(jobid));
+
CREATE INDEX IDX_ODE_JOB_TS ON ode_job(ts);
CREATE INDEX IDX_ODE_JOB_NODEID ON ode_job(nodeid);
Modified: branches/ODE/ODE-1.x-jpa/dependencies.rb
===================================================================
--- branches/ODE/ODE-1.x-jpa/dependencies.rb 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/dependencies.rb 2010-05-28 05:11:17 UTC (rev 678)
@@ -87,7 +87,7 @@
OPENJPA = ["org.apache.openjpa:openjpa:jar:1.2.1",
"net.sourceforge.serp:serp:jar:1.13.1"]
-SAXON = group("saxon", "saxon-xpath", "saxon-dom", "saxon-xqj", :under=>"net.sf.saxon", :version=>"9.x")
+SAXON = group("saxon", "saxon-xpath", "saxon-dom", "saxon-xqj", :under=>"net.sf.saxon", :version=>"9.1.0.8")
SERVICEMIX = [
group("servicemix-core",
:under=>"org.apache.servicemix", :version=>"3.3"),
Modified: branches/ODE/ODE-1.x-jpa/jbi/src/main/assembly/bin.xml
===================================================================
--- branches/ODE/ODE-1.x-jpa/jbi/src/main/assembly/bin.xml 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/jbi/src/main/assembly/bin.xml 2010-05-28 05:11:17 UTC (rev 678)
@@ -91,6 +91,7 @@
<include>commons-dbcp:commons-dbcp</include>
<include>commons-lang:commons-lang</include>
<include>commons-pool:commons-pool</include>
+ <include>commons-beanutils:commons-beanutils</include>
<include>commons-primitives:commons-primitives</include>
<include>org.apache.derby:derby</include>
<include>org.apache.geronimo.specs:geronimo-ejb_2.1_spec</include>
@@ -113,9 +114,13 @@
<include>tranql:tranql-connector</include>
<include>xalan:xalan</include>
<include>org.apache.xmlbeans:xmlbeans</include>
- <include>com.thoughtworks.xstream:xstream</include>
<include>axion:axion</include>
<include>xerces:xercesImpl</include>
+ <include>org.objectweb.howl:howl</include>
+ <include>com.thoughtworks.xstream:xstream</include>
+ <include>xalan:serializer</include>
+ <include>xml-apis:xml-apis</include>
+ <include>org.apache.geronimo.specs:geronimo-jpa_3.0_spec</include>
</includes>
</dependencySet>
Modified: branches/ODE/ODE-1.x-jpa/jbi/src/test/java/org/apache/ode/jbi/JbiTestBase.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/jbi/src/test/java/org/apache/ode/jbi/JbiTestBase.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/jbi/src/test/java/org/apache/ode/jbi/JbiTestBase.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -107,13 +107,15 @@
protected void enableProcess(String resource, boolean enable) throws Exception {
resource = "target/test/resources/" + resource;
String process = resource.substring(resource.lastIndexOf('/') + 1);
+ String dir = new File(resource).getAbsolutePath();
+ log.debug("enableProcess " + resource + " " + enable + " path: " + dir);
if (enable) {
- odeComponent.getServiceUnitManager().deploy(process, resource);
- odeComponent.getServiceUnitManager().init(process, resource);
+ odeComponent.getServiceUnitManager().deploy(process, dir);
+ odeComponent.getServiceUnitManager().init(process, dir);
odeComponent.getServiceUnitManager().start(process);
} else {
odeComponent.getServiceUnitManager().stop(process);
- odeComponent.getServiceUnitManager().undeploy(process, resource);
+ odeComponent.getServiceUnitManager().undeploy(process, dir);
}
}
@@ -128,86 +130,89 @@
if (!manualDeploy)
enableProcess(getTestName(), true);
- int i = 0;
- boolean loop;
- do {
- String prefix = i == 0 ? "" : "" + i;
- loop = i == 0;
-
- {
- String deploy = testProperties.getProperty(prefix + "deploy");
- if (deploy != null) {
- loop = true;
- enableProcess(getTestName() + "/" + deploy, true);
+ try {
+ int i = 0;
+ boolean loop;
+ do {
+ String prefix = i == 0 ? "" : "" + i;
+ loop = i == 0;
+
+ {
+ String deploy = testProperties.getProperty(prefix + "deploy");
+ if (deploy != null) {
+ loop = true;
+ enableProcess(getTestName() + "/" + deploy, true);
+ }
}
- }
- {
- String undeploy = testProperties.getProperty(prefix + "undeploy");
- if (undeploy != null) {
- loop = true;
- enableProcess(getTestName() + "/" + undeploy, false);
+ {
+ String undeploy = testProperties.getProperty(prefix + "undeploy");
+ if (undeploy != null) {
+ loop = true;
+ enableProcess(getTestName() + "/" + undeploy, false);
+ }
}
- }
-
- String request = testProperties.getProperty(prefix + "request");
- if (request != null && request.startsWith("@")) {
- request = inputStreamToString(getClass().getResourceAsStream("/" + getTestName() + "/" + request.substring(1)));
- }
- String expectedResponse = testProperties.getProperty(prefix + "response");
- {
- String delay = testProperties.getProperty(prefix + "delay");
- if (delay != null) {
- loop = true;
- long d = Long.parseLong(delay);
- log.debug("Sleeping " + d + " ms");
- Thread.sleep(d);
+
+ String request = testProperties.getProperty(prefix + "request");
+ if (request != null && request.startsWith("@")) {
+ request = inputStreamToString(getClass().getResourceAsStream("/" + getTestName() + "/" + request.substring(1)));
}
- }
- {
- String httpUrl = testProperties.getProperty(prefix + "http.url");
- if (httpUrl != null && request != null) {
- loop = true;
- log.debug(getTestName() + " sending http request to " + httpUrl + " request: " + request);
- URLConnection connection = new URL(httpUrl).openConnection();
- connection.setDoOutput(true);
- connection.setDoInput(true);
- //Send request
- OutputStream os = connection.getOutputStream();
- PrintWriter wt = new PrintWriter(os);
- wt.print(request);
- wt.flush();
- wt.close();
- // Read the response.
- String result = inputStreamToString(connection.getInputStream());
-
- log.debug(getTestName() + " have result: " + result);
- matchResponse(expectedResponse, result, true);
- }
- }
- {
- if (testProperties.getProperty(prefix + "nmr.service") != null && request != null) {
- loop = true;
- InOut io = smxClient.createInOutExchange();
- io.setService(QName.valueOf(testProperties.getProperty(prefix + "nmr.service")));
- io.setOperation(QName.valueOf(testProperties.getProperty(prefix + "nmr.operation")));
- io.getInMessage().setContent(new StreamSource(new ByteArrayInputStream(request.getBytes())));
- smxClient.sendSync(io,20000);
- if (io.getStatus() == ExchangeStatus.ACTIVE) {
- assertNotNull(io.getOutMessage());
- String result = new SourceTransformer().contentToString(io.getOutMessage());
- matchResponse(expectedResponse, result, true);
- smxClient.done(io);
- } else {
- matchResponse(expectedResponse, "", false);
+ String expectedResponse = testProperties.getProperty(prefix + "response");
+ {
+ String delay = testProperties.getProperty(prefix + "delay");
+ if (delay != null) {
+ loop = true;
+ long d = Long.parseLong(delay);
+ log.debug("Sleeping " + d + " ms");
+ Thread.sleep(d);
}
- }
- }
-
- i++;
- } while (loop);
-
- if (!manualDeploy)
- enableProcess(getTestName(), false);
+ }
+ {
+ String httpUrl = testProperties.getProperty(prefix + "http.url");
+ if (httpUrl != null && request != null) {
+ loop = true;
+ log.debug(getTestName() + " sending http request to " + httpUrl + " request: " + request);
+ URLConnection connection = new URL(httpUrl).openConnection();
+ connection.setDoOutput(true);
+ connection.setDoInput(true);
+ //Send request
+ OutputStream os = connection.getOutputStream();
+ PrintWriter wt = new PrintWriter(os);
+ wt.print(request);
+ wt.flush();
+ wt.close();
+ // Read the response.
+ String result = inputStreamToString(connection.getInputStream());
+
+ log.debug(getTestName() + " have result: " + result);
+ matchResponse(expectedResponse, result, true);
+ }
+ }
+ {
+ if (testProperties.getProperty(prefix + "nmr.service") != null && request != null) {
+ loop = true;
+ InOut io = smxClient.createInOutExchange();
+ io.setService(QName.valueOf(testProperties.getProperty(prefix + "nmr.service")));
+ io.setOperation(QName.valueOf(testProperties.getProperty(prefix + "nmr.operation")));
+ io.getInMessage().setContent(new StreamSource(new ByteArrayInputStream(request.getBytes())));
+ smxClient.sendSync(io,20000);
+ if (io.getStatus() == ExchangeStatus.ACTIVE) {
+ assertNotNull(io.getOutMessage());
+ String result = new SourceTransformer().contentToString(io.getOutMessage());
+ matchResponse(expectedResponse, result, true);
+ smxClient.done(io);
+ } else {
+ matchResponse(expectedResponse, "", false);
+ }
+ }
+ }
+
+ i++;
+ } while (loop);
+
+ } finally {
+ if (!manualDeploy)
+ enableProcess(getTestName(), false);
+ }
}
protected void matchResponse(String expectedResponse, String result, boolean succeeded) {
Modified: branches/ODE/ODE-1.x-jpa/jbi/src/test/java/org/apache/ode/jbi/RetireJbiTest.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/jbi/src/test/java/org/apache/ode/jbi/RetireJbiTest.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/jbi/src/test/java/org/apache/ode/jbi/RetireJbiTest.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -1,3 +1,21 @@
+/*
+ * 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.jbi;
public class RetireJbiTest extends JbiTestBase {
Added: branches/ODE/ODE-1.x-jpa/jbi/src/test/java/org/apache/ode/jbi/SpringPropertiesJbiTest.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/jbi/src/test/java/org/apache/ode/jbi/SpringPropertiesJbiTest.java (rev 0)
+++ branches/ODE/ODE-1.x-jpa/jbi/src/test/java/org/apache/ode/jbi/SpringPropertiesJbiTest.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -0,0 +1,23 @@
+/*
+ * 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.jbi;
+
+public class SpringPropertiesJbiTest extends JbiTestBase {
+ public void test() throws Exception {
+ go();
+ }
+}
Modified: branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/ReplayerJbiTest/initiateRequest.xml
===================================================================
--- branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/ReplayerJbiTest/initiateRequest.xml 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/ReplayerJbiTest/initiateRequest.xml 2010-05-28 05:11:17 UTC (rev 678)
@@ -1,4 +1,22 @@
<?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.
+ -->
<initiate>
<payload>abc7</payload>
<payload2>abc8</payload2>
Modified: branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/ReplayerJbiTest/replayRequest.xml
===================================================================
--- branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/ReplayerJbiTest/replayRequest.xml 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/ReplayerJbiTest/replayRequest.xml 2010-05-28 05:11:17 UTC (rev 678)
@@ -1,4 +1,22 @@
<?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.
+ -->
<pmap:replay xmlns:ns="http://www.apache.org/ode/pmapi/types/2006/08/02/" xmlns:pmap="http://www.apache.org/ode/pmapi">
<replay>
<!--
Modified: branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/ReplayerJbiTest/replayXQueryRequest.xml
===================================================================
--- branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/ReplayerJbiTest/replayXQueryRequest.xml 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/ReplayerJbiTest/replayXQueryRequest.xml 2010-05-28 05:11:17 UTC (rev 678)
@@ -1,4 +1,22 @@
<?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.
+ -->
<pmap:replay xmlns:ns="http://www.apache.org/ode/pmapi/types/2006/08/02/" xmlns:pmap="http://www.apache.org/ode/pmapi">
<replay>
<!--
Added: branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/SpringPropertiesJbiTest/OnEventCorrelation.bpel
===================================================================
--- branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/SpringPropertiesJbiTest/OnEventCorrelation.bpel (rev 0)
+++ branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/SpringPropertiesJbiTest/OnEventCorrelation.bpel 2010-05-28 05:11:17 UTC (rev 678)
@@ -0,0 +1,54 @@
+<?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.
+ -->
+<bpws:process xmlns:bpws="http://docs.oasis-open.org/wsbpel/2.0/process/executable" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://sample.bpel.org/bpel/sampleArtifacts" xmlns:tns="http://sample.bpel.org/bpel/sample" exitOnStandardFault="yes" name="OnEventCorrelation" suppressJoinFailure="yes" targetNamespace="http://sample.bpel.org/bpel/sample" expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"
+ xmlns:ode="http://www.apache.org/ode/type/extension"
+ >
+ <bpws:import importType="http://schemas.xmlsoap.org/wsdl/" location="OnEventCorrelation.wsdl" namespace="http://sample.bpel.org/bpel/sample"/>
+ <bpws:import importType="http://schemas.xmlsoap.org/wsdl/" location="OnEventCorrelationArtifacts.wsdl" namespace="http://sample.bpel.org/bpel/sampleArtifacts"/>
+ <bpws:partnerLinks>
+ <bpws:partnerLink myRole="OnEventCorrelationProvider" name="client" partnerLinkType="tns:OnEventCorrelation"/>
+ </bpws:partnerLinks>
+ <bpws:variables>
+ <bpws:variable messageType="tns:OnEventCorrelationMessage" name="input"/>
+ <bpws:variable messageType="tns:OnEventCorrelationMessage" name="output"/>
+ <bpws:variable type="xsd:int" name="i"/>
+ </bpws:variables>
+ <bpws:correlationSets>
+ <bpws:correlationSet name="CorrelationSet" properties="ns:input"/>
+ </bpws:correlationSets>
+ <bpws:sequence name="main">
+ <bpws:scope name="Initialize">
+ <bpws:sequence>
+ <bpws:receive createInstance="yes" operation="initiate" partnerLink="client" portType="tns:OnEventCorrelation" variable="input">
+ <bpws:correlations>
+ <bpws:correlation initiate="yes" set="CorrelationSet"/>
+ </bpws:correlations>
+ </bpws:receive>
+ <bpws:assign>
+ <bpws:copy>
+ <bpws:from>ode:process-property('weirdProp')</bpws:from>
+ <bpws:to>$output.payload</bpws:to>
+ </bpws:copy>
+ </bpws:assign>
+ <bpws:reply operation="initiate" partnerLink="client" variable="output"/>
+ </bpws:sequence>
+ </bpws:scope>
+ </bpws:sequence>
+</bpws:process>
Added: branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/SpringPropertiesJbiTest/OnEventCorrelation.wsdl
===================================================================
--- branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/SpringPropertiesJbiTest/OnEventCorrelation.wsdl (rev 0)
+++ branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/SpringPropertiesJbiTest/OnEventCorrelation.wsdl 2010-05-28 05:11:17 UTC (rev 678)
@@ -0,0 +1,66 @@
+<?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.
+ -->
+<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:tns="http://sample.bpel.org/bpel/sample" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" name="OnEventCorrelation" targetNamespace="http://sample.bpel.org/bpel/sample"
+xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+>
+ <message name="OnEventCorrelationMessage">
+ <part type="xsd:string" name="payload"/>
+ <part type="xsd:string" name="payload2"/>
+ </message>
+ <portType name="OnEventCorrelation">
+ <operation name="initiate">
+ <input message="tns:OnEventCorrelationMessage"/>
+ <output message="tns:OnEventCorrelationMessage"/>
+ </operation>
+ <operation name="complete">
+ <input message="tns:OnEventCorrelationMessage"/>
+ <output message="tns:OnEventCorrelationMessage"/>
+ </operation>
+ </portType>
+ <binding name="OnEventCorrelationBinding" type="tns:OnEventCorrelation">
+ <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
+ <operation name="initiate">
+ <wsdlsoap:operation soapAction="initiate"/>
+ <input>
+ <wsdlsoap:body use="literal"/>
+ </input>
+ <output>
+ <wsdlsoap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="complete">
+ <wsdlsoap:operation soapAction="complete"/>
+ <input>
+ <wsdlsoap:body use="literal"/>
+ </input>
+ <output>
+ <wsdlsoap:body use="literal"/>
+ </output>
+ </operation>
+ </binding>
+ <service name="OnEventCorrelation">
+ <port binding="tns:OnEventCorrelationBinding" name="OnEventCorrelation">
+ <wsdlsoap:address location="http://localhost:8835/ode/processes/OnEventCorrelation/"/>
+ </port>
+ </service>
+ <plnk:partnerLinkType name="OnEventCorrelation">
+ <plnk:role name="OnEventCorrelationProvider" portType="tns:OnEventCorrelation"/>
+ </plnk:partnerLinkType>
+</definitions>
Added: branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/SpringPropertiesJbiTest/OnEventCorrelationArtifacts.wsdl
===================================================================
--- branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/SpringPropertiesJbiTest/OnEventCorrelationArtifacts.wsdl (rev 0)
+++ branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/SpringPropertiesJbiTest/OnEventCorrelationArtifacts.wsdl 2010-05-28 05:11:17 UTC (rev 678)
@@ -0,0 +1,35 @@
+<?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.
+ -->
+<definitions
+ xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype"
+ xmlns:tns="http://sample.bpel.org/bpel/sampleArtifacts"
+ xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:bpel="http://sample.bpel.org/bpel/sample"
+ name="OnEventCorrelationArtifacts"
+ targetNamespace="http://sample.bpel.org/bpel/sampleArtifacts"
+ xmlns="http://schemas.xmlsoap.org/wsdl/"
+ >
+<vprop:property name="input" type="xs:string"/>
+<vprop:propertyAlias messageType="bpel:OnEventCorrelationMessage" part="payload" propertyName="tns:input">
+<!--vprop:query><![CDATA[bpel:input]]></vprop:query-->
+</vprop:propertyAlias>
+<import location="OnEventCorrelation.wsdl" namespace="http://sample.bpel.org/bpel/sample"/>
+</definitions>
Added: branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/SpringPropertiesJbiTest/beans.xml
===================================================================
--- branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/SpringPropertiesJbiTest/beans.xml (rev 0)
+++ branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/SpringPropertiesJbiTest/beans.xml 2010-05-28 05:11:17 UTC (rev 678)
@@ -0,0 +1,38 @@
+<?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.
+ -->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:util="http://www.springframework.org/schema/util"
+xmlns:ctx="http://www.springframework.org/schema/context"
+
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
+ http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
+ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
+ http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.5.xsd
+ ">
+
+ <!--
+ <util:properties id="properties" location="/myProcess.properties"/>
+ -->
+ <util:properties id="properties">
+ <prop key="weirdProp">myWeirdPropValue2</prop>
+ </util:properties>
+
+</beans>
Added: branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/SpringPropertiesJbiTest/deploy.xml
===================================================================
--- branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/SpringPropertiesJbiTest/deploy.xml (rev 0)
+++ branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/SpringPropertiesJbiTest/deploy.xml 2010-05-28 05:11:17 UTC (rev 678)
@@ -0,0 +1,31 @@
+<?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.
+ -->
+<dd:deploy xmlns:dd="http://www.apache.org/ode/schemas/dd/2007/03"
+ xmlns:bpel="http://sample.bpel.org/bpel/sample"
+ >
+
+ <dd:process
+ name="bpel:OnEventCorrelation" fileName="OnEventCorrelation.bpel">
+ <!--dd:process-events generate="none"/-->
+ <dd:provide partnerLink="client">
+ <dd:service name="bpel:OnEventCorrelation3" port="OnEventCorrelation" />
+ </dd:provide>
+ </dd:process>
+</dd:deploy>
Added: branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/SpringPropertiesJbiTest/smx.xml
===================================================================
--- branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/SpringPropertiesJbiTest/smx.xml (rev 0)
+++ branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/SpringPropertiesJbiTest/smx.xml 2010-05-28 05:11:17 UTC (rev 678)
@@ -0,0 +1,60 @@
+<?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.
+
+-->
+<beans xmlns:sm="http://servicemix.apache.org/config/1.0"
+ xmlns:http="http://servicemix.apache.org/http/1.0"
+ xmlns:eip="http://servicemix.apache.org/eip/1.0"
+ xmlns:util="http://www.springframework.org/schema/util"
+ xmlns:jencks="http://jencks.org/2.0"
+ xmlns:mws="http://ode/bpel/unit-test.wsdl"
+ xmlns:bpel="http://sample.bpel.org/bpel/sample"
+ >
+
+ <util:map id="jndiEntries">
+ <entry key="java:comp/env/jdbc/ode" value-ref="odeDS"/>
+ </util:map>
+
+ <sm:container
+ id="jbi"
+ embedded="true"
+ rootDir="target/test/smx"
+ transactionManager="#transactionManager"
+ depends-on="jndi"
+ >
+ <sm:activationSpecs>
+ <sm:activationSpec id="ms-eip">
+ <sm:component>
+ <eip:component>
+ <eip:endpoints>
+ <eip:content-based-router service="bpel:OnEventCorrelation2Fwd" endpoint="OnEventCorrelation2" forwardOperation="true">
+ <eip:rules>
+ <eip:routing-rule>
+ <eip:target>
+ <eip:exchange-target service="bpel:OnEventCorrelation2"/>
+ </eip:target>
+ </eip:routing-rule>
+ </eip:rules>
+ </eip:content-based-router>
+ </eip:endpoints>
+ </eip:component>
+ </sm:component>
+ </sm:activationSpec>
+ </sm:activationSpecs>
+ </sm:container>
+</beans>
Added: branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/SpringPropertiesJbiTest/test.properties
===================================================================
--- branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/SpringPropertiesJbiTest/test.properties (rev 0)
+++ branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/SpringPropertiesJbiTest/test.properties 2010-05-28 05:11:17 UTC (rev 678)
@@ -0,0 +1,21 @@
+#
+# 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.
+#
+
+1nmr.service={http://sample.bpel.org/bpel/sample}OnEventCorrelation3
+1nmr.operation=initiate
+1request=<message><payload>9000</payload><payload2>t2</payload2></message>
+1response=.*myWeirdPropValue2.*
Modified: branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/log4j.properties
===================================================================
--- branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/log4j.properties 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/log4j.properties 2010-05-28 05:11:17 UTC (rev 678)
@@ -33,20 +33,20 @@
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{MM-dd@HH:mm:ss} %-5p (%13F:%L) %3x - %m%n
-log4j.category.org.apache.servicemix.jbi.nmr.flow.seda=DEBUG
+log4j.category.org.apache.servicemix.jbi.nmr.flow.seda=INFO
#log4j.category.org.apache.ode.jbi.msgmap=TRACE
#log4j.category.org.apache.ode.jbi.EndpointReferenceContextImpl=DEBUG
#log4j.category.org.apache.ode.bpel=DEBUG
#log4j.category.org.apache.ode.dao.jpa.CorrelatorDAOImpl=TRACE
#log4j.category.org.apache.ode.dao.jpa.MessageDAOImpl=TRACE
-log4j.category.httpclient=DEBUG
-log4j.category.httpclient.Wire=DEBUG
-log4j.category.org.apache.ode.jbi.JbiTestBase=DEBUG
+log4j.category.httpclient=INFO
+log4j.category.httpclient.Wire=INFO
+log4j.category.org.apache.ode.jbi.JbiTestBase=INFO
#log4j.category.org.apache.ode.bpel.runtime.SCOPE=DEBUG
#log4j.category.org.apache.ode.bpel.runtime.EH_EVENT=DEBUG
#log4j.category.org.apache.ode.bpel.runtime.EH_ALARM=DEBUG
#log4j.category.org.apache.ode.daohib.bpel.CorrelatorDaoImpl=DEBUG
#log4j.category.org.apache.ode.bpel.elang=DEBUG
#log4j.category.org.apache.ode.bpel.compiler=DEBUG
-log4j.category.org.apache.ode.bpel.iapi.BpelEventListener=DEBUG
-log4j.category.org.apache.ode.bpel.engine=DEBUG
+log4j.category.org.apache.ode.bpel.iapi.BpelEventListener=INFO
+log4j.category.org.apache.ode.bpel.engine=INFO
Modified: branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/test.wsdl
===================================================================
--- branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/test.wsdl 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/jbi/src/test/resources/test.wsdl 2010-05-28 05:11:17 UTC (rev 678)
@@ -1,4 +1,22 @@
<?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 xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.example.org/test/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="test" targetNamespace="http://www.example.org/test/">
<wsdl:types>
<xsd:schema targetNamespace="http://www.example.org/test/">
Modified: branches/ODE/ODE-1.x-jpa/jbi-bundle/src/main/resources/META-INF/spring/ode-jbi.xml
===================================================================
--- branches/ODE/ODE-1.x-jpa/jbi-bundle/src/main/resources/META-INF/spring/ode-jbi.xml 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/jbi-bundle/src/main/resources/META-INF/spring/ode-jbi.xml 2010-05-28 05:11:17 UTC (rev 678)
@@ -61,6 +61,7 @@
<prop key="ode-jbi.db.ext.dataSource">java:comp/env/jdbc/ode</prop>
<prop key="ode-jbi.messageMapper">org.apache.ode.jbi.msgmap.ServiceMixMapper,org.apache.ode.jbi.msgmap.JbiWsdl11WrapperMapper</prop>
<prop key="ode-jbi.jca.port">0</prop>
+ <prop key="javax.persistence.provider">org.apache.openjpa.persistence.PersistenceProviderImpl</prop>
</osgix:cm-properties>
</beans>
Modified: branches/ODE/ODE-1.x-jpa/pom.xml
===================================================================
--- branches/ODE/ODE-1.x-jpa/pom.xml 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/pom.xml 2010-05-28 05:11:17 UTC (rev 678)
@@ -41,11 +41,12 @@
<annogen.version>0.1.0</annogen.version>
<antlr.version>2.7.7</antlr.version>
<axiom.version>1.2.7</axiom.version>
- <axis2.version>1.4.1</axis2.version>
+ <axis2.version>1.3</axis2.version>
+ <rampart.version>1.3</rampart.version>
<commons.codec.version>1.3</commons.codec.version>
<backport.concurrent.version>3.1</backport.concurrent.version>
<commons.fileupload.version>1.2</commons.fileupload.version>
- <commons.collections.version>3.1</commons.collections.version>
+ <commons.collections.version>3.2.1</commons.collections.version>
<commons.httpclient.version>3.1</commons.httpclient.version>
<commons.io.version>1.4</commons.io.version>
<commons.lang.version>2.4</commons.lang.version>
@@ -188,7 +189,7 @@
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>xmlbeans-maven-plugin</artifactId>
- <version>2.2.0</version>
+ <version>${xmlbeans.version}</version>
</plugin>
<plugin>
@@ -788,7 +789,7 @@
</dependency>
<dependency>
- <groupId>xstream</groupId>
+ <groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>${xstream.version}</version>
</dependency>
Modified: branches/ODE/ODE-1.x-jpa/repositories.rb
===================================================================
--- branches/ODE/ODE-1.x-jpa/repositories.rb 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/repositories.rb 2010-05-28 05:11:17 UTC (rev 678)
@@ -18,5 +18,6 @@
repositories.remote << "http://repo1.maven.org/maven2"
repositories.remote << "http://people.apache.org/repo/m2-snapshot-repository"
repositories.remote << "http://download.java.net/maven/2"
+repositories.remote << "http://svn.apache.org/repos/asf/servicemix/m2-repo"
repositories.remote << "http://www.aqute.biz/repo"
-repositories.release_to[:url] ||= "sftp://guest@localhost/home/guest"
\ No newline at end of file
+repositories.release_to[:url] ||= "sftp://guest@localhost/home/guest"
Modified: branches/ODE/ODE-1.x-jpa/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/DatabaseDelegate.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/DatabaseDelegate.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/DatabaseDelegate.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -38,7 +38,7 @@
boolean insertJob(Job job, String nodeId, boolean loaded) throws DatabaseException ;
/**
- * Update the job in the database (only updates timestamp and details)
+ * Update the job in the database (only updates timestamp and retryCount)
*
* @param job the job
* @throws DatabaseException in case of error
Modified: branches/ODE/ODE-1.x-jpa/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/JdbcDelegate.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/JdbcDelegate.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/JdbcDelegate.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -27,12 +27,20 @@
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
+import java.sql.Types;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.math.BigDecimal;
import javax.sql.DataSource;
+import javax.xml.namespace.QName;
+import org.apache.ode.bpel.iapi.Scheduler;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
+import org.apache.ode.utils.DbIsolation;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.ode.utils.DbIsolation;
@@ -52,7 +60,7 @@
private static final String UPDATE_REASSIGN = "update ODE_JOB set nodeid = ?, scheduled = 0 where nodeid = ?";
- private static final String UPDATE_JOB = "update ODE_JOB set ts = ?, details = ? where jobid = ?";
+ private static final String UPDATE_JOB = "update ODE_JOB set ts = ?, retryCount = ? where jobid = ?";
private static final String UPGRADE_JOB_DEFAULT = "update ODE_JOB set nodeid = ? where nodeid is null "
+ "and mod(ts,?) = ? and ts < ?";
@@ -70,13 +78,61 @@
+ "and -1 <> ? and -1 <> ? and ts < ?";
private static final String SAVE_JOB = "insert into ODE_JOB "
- + " (jobid, nodeid, ts, scheduled, transacted, details) values(?, ?, ?, ?, ?, ?)";
+ + " (jobid, nodeid, ts, scheduled, transacted, "
+ + "instanceId,"
+ + "mexId,"
+ + "processId,"
+ + "type,"
+ + "channel,"
+ + "correlatorId,"
+ + "correlationKeySet,"
+ + "retryCount,"
+ + "inMem,"
+ + "detailsExt"
+ + ") values(?, ?, ?, ?, ?,"
+ + "?,"
+ + "?,"
+ + "?,"
+ + "?,"
+ + "?,"
+ + "?,"
+ + "?,"
+ + "?,"
+ + "?,"
+ + "?"
+ + ")";
private static final String GET_NODEIDS = "select distinct nodeid from ODE_JOB";
- private static final String SCHEDULE_IMMEDIATE = "select jobid, ts, transacted, scheduled, details from ODE_JOB "
+ private static final String SCHEDULE_IMMEDIATE = "select jobid, ts, transacted, scheduled, "
+ + "instanceId,"
+ + "mexId,"
+ + "processId,"
+ + "type,"
+ + "channel,"
+ + "correlatorId,"
+ + "correlationKeySet,"
+ + "retryCount,"
+ + "inMem,"
+ + "detailsExt"
+ + " from ODE_JOB "
+ "where nodeid = ? and ts < ? order by ts";
+// public Long instanceId;
+// public String mexId;
+// public String processId;
+// public String type;
+// public String channel;
+// public String correlatorId;
+// public String correlationKeySet;
+// public Integer retryCount;
+// public Boolean inMem;
+// public Map<String, Object> detailsExt = new HashMap<String, Object>();
+
+ private static final String UPDATE_SCHEDULED = "update ODE_JOB set scheduled = 1 where jobid in (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
+
+ private static final int UPDATE_SCHEDULED_SLOTS = 10;
+
private DataSource _ds;
private Dialect _dialect;
@@ -137,21 +193,39 @@
Connection con = null;
PreparedStatement ps = null;
try {
+ int i = 1;
con = getConnection();
ps = con.prepareStatement(SAVE_JOB);
- ps.setString(1, job.jobId);
- ps.setString(2, nodeId);
- ps.setLong(3, job.schedDate);
- ps.setInt(4, asInteger(loaded));
- ps.setInt(5, asInteger(job.transacted));
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- try {
- StreamUtils.write(bos, (Serializable) job.detail);
- } catch (Exception ex) {
- __log.error("Error serializing job detail: " + job.detail);
- throw new DatabaseException(ex);
+ ps.setString(i++, job.jobId);
+ ps.setString(i++, nodeId);
+ ps.setLong(i++, job.schedDate);
+ ps.setInt(i++, asInteger(loaded));
+ ps.setInt(i++, asInteger(job.transacted));
+
+ JobDetails details = job.detail;
+ ps.setObject(i++, details.instanceId, Types.BIGINT);
+ ps.setObject(i++, details.mexId, Types.VARCHAR);
+ ps.setObject(i++, details.processId, Types.VARCHAR);
+ ps.setObject(i++, details.type, Types.VARCHAR);
+ ps.setObject(i++, details.channel, Types.VARCHAR);
+ ps.setObject(i++, details.correlatorId, Types.VARCHAR);
+ ps.setObject(i++, details.correlationKeySet, Types.VARCHAR);
+ ps.setObject(i++, details.retryCount, Types.INTEGER);
+ ps.setObject(i++, details.inMem, Types.INTEGER);
+
+ if (details.detailsExt == null || details.detailsExt.size() == 0) {
+ ps.setObject(i++, null, Types.BLOB);
+ } else {
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ try {
+ StreamUtils.write(bos, (Serializable) details.detailsExt);
+ } catch (Exception ex) {
+ __log.error("Error serializing job detail: " + job.detail);
+ throw new DatabaseException(ex);
+ }
+ ps.setBytes(i++, bos.toByteArray());
}
- ps.setBytes(6, bos.toByteArray());
+
return ps.executeUpdate() == 1;
} catch (SQLException se) {
throw new DatabaseException(se);
@@ -163,7 +237,7 @@
public boolean updateJob(Job job) throws DatabaseException {
if (__log.isDebugEnabled())
- __log.debug("updateJob " + job.jobId + " details=" + job);
+ __log.debug("updateJob " + job.jobId + " retryCount=" + job.detail.getRetryCount());
Connection con = null;
PreparedStatement ps = null;
@@ -171,14 +245,7 @@
con = getConnection();
ps = con.prepareStatement(UPDATE_JOB);
ps.setLong(1, job.schedDate);
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- try {
- StreamUtils.write(bos, (Serializable) job.detail);
- } catch (Exception ex) {
- __log.error("Error serializing job detail: " + job.detail);
- throw new DatabaseException(ex);
- }
- ps.setBytes(2, bos.toByteArray());
+ ps.setInt(2, job.detail.getRetryCount());
ps.setString(3, job.jobId);
return ps.executeUpdate() == 1;
} catch (SQLException se) {
@@ -189,6 +256,21 @@
}
}
+ private Long asLong(Object o) {
+ if (o == null) return null;
+ else if (o instanceof BigDecimal) return ((BigDecimal) o).longValue();
+ else if (o instanceof Long) return (Long) o;
+ else if (o instanceof Integer) return ((Integer) o).longValue();
+ else throw new IllegalStateException("Can't convert to long " + o.getClass());
+ }
+
+ private Integer asInteger(Object o) {
+ if (o == null) return null;
+ else if (o instanceof BigDecimal) return ((BigDecimal) o).intValue();
+ else if (o instanceof Integer) return (Integer) o;
+ else throw new IllegalStateException("Can't convert to integer " + o.getClass());
+ }
+
@SuppressWarnings("unchecked")
public List<Job> dequeueImmediate(String nodeId, long maxtime, int maxjobs) throws DatabaseException {
ArrayList<Job> ret = new ArrayList<Job>(maxjobs);
@@ -200,17 +282,65 @@
ps.setString(1, nodeId);
ps.setLong(2, maxtime);
ps.setMaxRows(maxjobs);
+
ResultSet rs = ps.executeQuery();
while (rs.next()) {
- Map<String, Object> details;
- try {
- ObjectInputStream is = new ObjectInputStream(rs.getBinaryStream(5));
- details = (Map<String, Object>) is.readObject();
- is.close();
- } catch (Exception e) {
- throw new DatabaseException("Error deserializing job details", e);
+ Scheduler.JobDetails details = new Scheduler.JobDetails();
+ details.instanceId = asLong(rs.getObject("instanceId"));
+ details.mexId = (String) rs.getObject("mexId");
+ details.processId = (String) rs.getObject("processId");
+ details.type = (String) rs.getObject("type");
+ details.channel = (String) rs.getObject("channel");
+ details.correlatorId = (String) rs.getObject("correlatorId");
+ details.correlationKeySet = (String) rs.getObject("correlationKeySet");
+ details.retryCount = asInteger(rs.getObject("retryCount"));
+ details.inMem = asBoolean(rs.getInt("inMem"));
+ if (rs.getObject("detailsExt") != null) {
+ try {
+ ObjectInputStream is = new ObjectInputStream(rs.getBinaryStream("detailsExt"));
+ details.detailsExt = (Map<String, Object>) is.readObject();
+ is.close();
+ } catch (Exception e) {
+ throw new DatabaseException("Error deserializing job detailsExt", e);
+ }
}
- Job job = new Job(rs.getLong(2), rs.getString(1), asBoolean(rs.getInt(3)), details);
+
+ {
+ //For compatibility reasons, we check whether there are entries inside
+ //jobDetailsExt blob, which correspond to extracted entries. If so, we
+ //use them.
+
+ Map<String, Object> detailsExt = details.getDetailsExt();
+ if (detailsExt.get("type") != null) {
+ details.type = (String) detailsExt.get("type");
+ }
+ if (detailsExt.get("iid") != null) {
+ details.instanceId = (Long) detailsExt.get("iid");
+ }
+ if (detailsExt.get("pid") != null) {
+ details.processId = (String) detailsExt.get("pid");
+ }
+ if (detailsExt.get("inmem") != null) {
+ details.inMem = (Boolean) detailsExt.get("inmem");
+ }
+ if (detailsExt.get("ckey") != null) {
+ details.correlationKeySet = (String) detailsExt.get("ckey");
+ }
+ if (detailsExt.get("channel") != null) {
+ details.channel = (String) detailsExt.get("channel");
+ }
+ if (detailsExt.get("mexid") != null) {
+ details.mexId = (String) detailsExt.get("mexid");
+ }
+ if (detailsExt.get("correlatorId") != null) {
+ details.correlatorId = (String) detailsExt.get("correlatorId");
+ }
+ if (detailsExt.get("retryCount") != null) {
+ details.retryCount = Integer.parseInt((String) detailsExt.get("retryCount"));
+ }
+ }
+
+ Job job = new Job(rs.getLong("ts"), rs.getString("jobid"), asBoolean(rs.getInt("transacted")), details);
ret.add(job);
}
rs.close();
Modified: branches/ODE/ODE-1.x-jpa/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/Job.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/Job.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/Job.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -22,6 +22,7 @@
import java.util.Map;
import java.text.SimpleDateFormat;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
import org.apache.ode.utils.GUID;
/**
@@ -34,14 +35,14 @@
String jobId;
boolean transacted;
- Map<String,Object> detail;
+ JobDetails detail;
boolean persisted = true;
- public Job(long when, boolean transacted, Map<String, Object> jobDetail) {
+ public Job(long when, boolean transacted, JobDetails jobDetail) {
this(when, new GUID().toString(),transacted,jobDetail);
}
-
- public Job(long when, String jobId, boolean transacted,Map<String, Object> jobDetail) {
+
+ public Job(long when, String jobId, boolean transacted, JobDetails jobDetail) {
super(when);
this.jobId = jobId;
this.detail = jobDetail;
Modified: branches/ODE/ODE-1.x-jpa/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SimpleScheduler.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SimpleScheduler.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SimpleScheduler.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -33,12 +33,15 @@
import javax.transaction.SystemException;
import javax.transaction.Transaction;
import javax.transaction.TransactionManager;
+import javax.xml.namespace.QName;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.ode.bpel.common.CorrelationKey;
import org.apache.ode.bpel.iapi.ContextException;
import org.apache.ode.bpel.iapi.Scheduler;
import org.apache.log4j.helpers.AbsoluteTimeDateFormat;
+import org.apache.ode.bpel.iapi.Scheduler.JobType;
/**
* A reliable and relatively simple scheduler that uses a database to persist information about
@@ -340,7 +343,7 @@
}
}
- public String schedulePersistedJob(final Map<String, Object> jobDetail, Date when) throws ContextException {
+ public String schedulePersistedJob(final JobDetails jobDetail, Date when) throws ContextException {
long ctime = System.currentTimeMillis();
if (when == null)
when = new Date(ctime);
@@ -356,10 +359,10 @@
if (when == null)
when = new Date(ctime);
- Map<String, Object> jobDetails = new HashMap<String, Object>();
- jobDetails.put("runnable", runnable);
- runnable.storeToDetailsMap(jobDetails);
-
+ JobDetails jobDetails = new JobDetails();
+ jobDetails.getDetailsExt().put("runnable", runnable);
+ runnable.storeToDetails(jobDetails);
+
if (__log.isDebugEnabled())
__log.debug("scheduling " + jobDetails + " for " + when);
@@ -396,11 +399,11 @@
return job.jobId;
}
- public String scheduleVolatileJob(boolean transacted, Map<String, Object> jobDetail) throws ContextException {
+ public String scheduleVolatileJob(boolean transacted, JobDetails jobDetail) throws ContextException {
return scheduleVolatileJob(transacted, jobDetail, null);
}
- public String scheduleVolatileJob(boolean transacted, Map<String, Object> jobDetail, Date when) throws ContextException {
+ public String scheduleVolatileJob(boolean transacted, JobDetails jobDetail, Date when) throws ContextException {
long ctime = System.currentTimeMillis();
if (when == null)
when = new Date(ctime);
@@ -502,7 +505,7 @@
public Void call() throws Exception {
try {
final Scheduler.JobInfo jobInfo = new Scheduler.JobInfo(job.jobId, job.detail,
- (Integer) (job.detail.get("retry") != null ? job.detail.get("retry") : 0));
+ job.detail.getRetryCount());
if (job.transacted) {
final boolean[] needRetry = new boolean[]{true};
try {
@@ -514,7 +517,7 @@
try {
processor.onScheduledJob(jobInfo);
// If the job is a "runnable" job, schedule the next job occurence
- if (job.detail.get("runnable") != null && !"COMPLETED".equals(String.valueOf(jobInfo.jobDetail.get("runnable_status")))) {
+ if (job.detail.getDetailsExt().get("runnable") != null && !"COMPLETED".equals(String.valueOf(jobInfo.jobDetail.getDetailsExt().get("runnable_status")))) {
// the runnable is still in progress, schedule checker to 10 mins later
if (_pollIntervalForPolledRunnable < 0) {
if (__log.isWarnEnabled())
@@ -547,9 +550,9 @@
execTransaction(new Callable<Void>() {
public Void call() throws Exception {
if (needRetry[0]) {
- int retry = job.detail.get("retry") != null ? (((Integer) job.detail.get("retry")) + 1) : 0;
+ int retry = job.detail.getRetryCount() + 1;
if (retry <= 10) {
- job.detail.put("retry", retry);
+ job.detail.setRetryCount(retry);
long delay = (long)(Math.pow(5, retry));
job.schedDate = System.currentTimeMillis() + delay*1000;
_db.updateJob(job);
@@ -643,7 +646,7 @@
public void runTask(final Task task) {
if (task instanceof Job) {
Job job = (Job)task;
- if( job.detail.get("runnable") != null ) {
+ if( job.detail.getDetailsExt().get("runnable") != null ) {
runPolledRunnable(job);
} else {
runJob(job);
@@ -811,9 +814,17 @@
} finally {
__log.debug("node recovery complete");
}
-
}
+// private long doRetry(Job job) throws DatabaseException {
+// int retry = job.detail.getRetryCount() + 1;
+// job.detail.setRetryCount(retry);
+// long delay = (long)(Math.pow(5, retry - 1));
+// Job jobRetry = new Job(System.currentTimeMillis() + delay*1000, true, job.detail);
+// _db.insertJob(jobRetry, _nodeId, false);
+// return delay;
+// }
+
private abstract class SchedulerTask extends Task implements Runnable {
SchedulerTask(long schedDate) {
super(schedDate);
Modified: branches/ODE/ODE-1.x-jpa/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/DelegateSupport.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/DelegateSupport.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/DelegateSupport.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -19,6 +19,7 @@
package org.apache.ode.scheduler.simple;
+import java.io.InputStream;
import java.sql.Connection;
import javax.sql.DataSource;
@@ -64,9 +65,18 @@
public void setup() throws Exception {
Connection c = _ds.getConnection();
try {
+ StringBuffer sql = new StringBuffer();
+
+ {
+ InputStream in = getClass().getResourceAsStream("/simplesched-hsql.sql");
+ int v;
+ while ((v = in.read()) != -1) {
+ sql.append((char) v);
+ }
+ }
+
//c.createStatement().executeUpdate("CREATE ALIAS MOD FOR \"org.apache.ode.scheduler.simple.DelegateSupport.mod\";");
- String sql = "CREATE TABLE \"ODE_JOB\" (\"JOBID\" CHAR(64) NOT NULL, \"TS\" NUMERIC NOT NULL, \"NODEID\" char(64) NULL, \"SCHEDULED\" int NOT NULL, \"TRANSACTED\" int NOT NULL, \"DETAILS\" BINARY(4096) NULL, PRIMARY KEY(\"JOBID\"));";
- c.createStatement().executeUpdate(sql);
+ c.createStatement().executeUpdate(sql.toString());
} finally {
c.close();
}
Modified: branches/ODE/ODE-1.x-jpa/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/GeronimoDelegateSupport.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/GeronimoDelegateSupport.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/GeronimoDelegateSupport.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -1,3 +1,21 @@
+/*
+ * 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.scheduler.simple;
import javax.sql.DataSource;
Modified: branches/ODE/ODE-1.x-jpa/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/JdbcDelegateTest.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/JdbcDelegateTest.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/JdbcDelegateTest.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -22,6 +22,10 @@
import java.util.HashMap;
import java.util.List;
+import javax.xml.namespace.QName;
+
+import org.apache.ode.bpel.iapi.Scheduler;
+import org.apache.ode.bpel.iapi.Scheduler.JobType;
import org.apache.ode.scheduler.simple.DatabaseDelegate;
import org.apache.ode.scheduler.simple.Job;
@@ -52,19 +56,19 @@
assertEquals(0, nids.size());
// try for one nodeid
- _del.insertJob(new Job(0L,true,new HashMap<String, Object>()), "abc", true);
+ _del.insertJob(new Job(0L,true,new Scheduler.JobDetails()), "abc", true);
nids = _del.getNodeIds();
assertEquals(1, nids.size());
assertTrue(nids.contains("abc"));
// check that dups are ignored.
- _del.insertJob(new Job(0L,true,new HashMap<String, Object>()), "abc", true);
+ _del.insertJob(new Job(0L,true,new Scheduler.JobDetails()), "abc", true);
nids = _del.getNodeIds();
assertEquals(1, nids.size());
assertTrue(nids.contains("abc"));
// add another nodeid,
- _del.insertJob(new Job(0L,true,new HashMap<String, Object>()), "123", true);
+ _del.insertJob(new Job(0L,true,new Scheduler.JobDetails()), "123", true);
nids = _del.getNodeIds();
assertEquals(2, nids.size());
assertTrue(nids.contains("abc"));
@@ -72,8 +76,8 @@
}
public void testReassign() throws Exception {
- _del.insertJob(new Job(100L,"j1",true,new HashMap<String, Object>()), "n1", false);
- _del.insertJob(new Job(200L,"j2",true,new HashMap<String, Object>()), "n2", false);
+ _del.insertJob(new Job(100L,"j1",true,new Scheduler.JobDetails()), "n1", false);
+ _del.insertJob(new Job(200L,"j2",true,new Scheduler.JobDetails()), "n2", false);
assertEquals(1,_del.updateReassign("n1","n2"));
List<Job> jobs = _del.dequeueImmediate("n2", 400L, 1000);
@@ -81,8 +85,8 @@
}
public void testScheduleImmediateTimeFilter() throws Exception {
- _del.insertJob(new Job(100L,"j1",true,new HashMap<String, Object>()), "n1", false);
- _del.insertJob(new Job(200L,"j2",true,new HashMap<String, Object>()), "n1", false);
+ _del.insertJob(new Job(100L,"j1",true,new Scheduler.JobDetails()), "n1", false);
+ _del.insertJob(new Job(200L,"j2",true,new Scheduler.JobDetails()), "n1", false);
List<Job> jobs = _del.dequeueImmediate("n1", 150L, 1000);
@@ -97,8 +101,8 @@
}
public void testScheduleImmediateMaxRows() throws Exception {
- _del.insertJob(new Job(100L,"j1",true,new HashMap<String, Object>()), "n1", false);
- _del.insertJob(new Job(200L,"j2",true,new HashMap<String, Object>()), "n1", false);
+ _del.insertJob(new Job(100L,"j1",true,new Scheduler.JobDetails()), "n1", false);
+ _del.insertJob(new Job(200L,"j2",true,new Scheduler.JobDetails()), "n1", false);
List<Job> jobs = _del.dequeueImmediate("n1", 201L, 1);
assertNotNull(jobs);
@@ -107,8 +111,8 @@
}
public void testScheduleImmediateNodeFilter() throws Exception {
- _del.insertJob(new Job(100L,"j1",true,new HashMap<String, Object>()), "n1", false);
- _del.insertJob(new Job(200L,"j2",true,new HashMap<String, Object>()), "n2", false);
+ _del.insertJob(new Job(100L,"j1",true,new Scheduler.JobDetails()), "n1", false);
+ _del.insertJob(new Job(200L,"j2",true,new Scheduler.JobDetails()), "n2", false);
List<Job> jobs = _del.dequeueImmediate("n2", 300L, 1000);
assertNotNull(jobs);
@@ -117,8 +121,8 @@
}
public void testDeleteJob() throws Exception {
- _del.insertJob(new Job(100L,"j1",true,new HashMap<String, Object>()), "n1", false);
- _del.insertJob(new Job(200L,"j2",true,new HashMap<String, Object>()), "n2", false);
+ _del.insertJob(new Job(100L,"j1",true,new Scheduler.JobDetails()), "n1", false);
+ _del.insertJob(new Job(200L,"j2",true,new Scheduler.JobDetails()), "n2", false);
// try deleting, wrong jobid -- del should fail
assertFalse(_del.deleteJob("j1x", "n1"));
@@ -135,7 +139,7 @@
public void testUpgrade() throws Exception {
for (int i = 0; i < 200; ++i)
- _del.insertJob(new Job(i ,"j" +i,true,new HashMap<String, Object>()), null, false);
+ _del.insertJob(new Job(i ,"j" +i,true,new Scheduler.JobDetails()), null, false);
int n1 = _del.updateAssignToNode("n1", 0, 3, 100);
int n2 = _del.updateAssignToNode("n2", 1, 3, 100);
@@ -149,4 +153,30 @@
assertEquals(n3,_del.dequeueImmediate("n3", 10000L, 1000).size());
}
+ public void testMigration() throws Exception {
+ Scheduler.JobDetails j1 = new Scheduler.JobDetails();
+ j1.getDetailsExt().put("type", "MATCHER");
+ j1.getDetailsExt().put("iid", 1234L);
+ j1.getDetailsExt().put("pid", new QName("http://test1", "test2").toString());
+ j1.getDetailsExt().put("inmem", true);
+ j1.getDetailsExt().put("ckey", "@2[some~001~002]");
+ j1.getDetailsExt().put("channel", "123");
+ j1.getDetailsExt().put("mexid", "mexid123");
+ j1.getDetailsExt().put("correlatorId", "cid123");
+ j1.getDetailsExt().put("retryCount", "15");
+
+ _del.insertJob(new Job(0 ,"migration",true,j1), null, false);
+ _del.updateAssignToNode("m", 0, 3, 100);
+ Scheduler.JobDetails j2 = _del.dequeueImmediate("m", 10000L, 1000).get(0).detail;
+
+ assertEquals(j2.getType(), JobType.MATCHER);
+ assertEquals(j2.getInstanceId(), (Object) 1234L);
+ assertEquals(j2.getProcessId(), new QName("http://test1", "test2"));
+ assertEquals(j2.getInMem(), (Object) true);
+ assertEquals(j2.getCorrelationKeySet().toCanonicalString(), (Object) "@2[some~001~002]");
+ assertEquals(j2.getChannel(), (Object) "123");
+ assertEquals(j2.getMexId(), (Object) "mexid123");
+ assertEquals(j2.getCorrelatorId(), (Object) "cid123");
+ assertEquals(j2.getRetryCount(), (Object) 15);
+ }
}
Modified: branches/ODE/ODE-1.x-jpa/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/RetriesTest.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/RetriesTest.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/RetriesTest.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -20,6 +20,8 @@
package org.apache.ode.scheduler.simple;
import org.apache.ode.bpel.iapi.Scheduler;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.apache.geronimo.transaction.manager.GeronimoTransactionManager;
import javax.transaction.TransactionManager;
@@ -32,6 +34,8 @@
* @author Matthieu Riou <mriou(a)apache.org>
*/
public class RetriesTest extends TestCase implements Scheduler.JobProcessor {
+ private static final Log __log = LogFactory.getLog(RetriesTest.class);
+
DelegateSupport _ds;
SimpleScheduler _scheduler;
ArrayList<Scheduler.JobInfo> _jobs;
@@ -66,7 +70,7 @@
}
Thread.sleep(10000);
- assertEquals(8, _tried);
+ assertEquals(6, _tried);
}
public void testExecTransaction() throws Exception {
@@ -95,10 +99,10 @@
throw new Scheduler.JobProcessorException(jobInfo.retryCount < 1);
}
- Map<String, Object> newDetail(String x) {
- HashMap<String, Object> det = new HashMap<String, Object>();
- det.put("foo", x);
- return det;
+ Scheduler.JobDetails newDetail(String x) {
+ Scheduler.JobDetails jd = new Scheduler.JobDetails();
+ jd.getDetailsExt().put("foo", x);
+ return jd;
}
private SimpleScheduler newScheduler(String nodeId) {
Modified: branches/ODE/ODE-1.x-jpa/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/SimpleSchedulerTest.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/SimpleSchedulerTest.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/SimpleSchedulerTest.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -29,6 +29,8 @@
import junit.framework.TestCase;
+import org.apache.geronimo.transaction.manager.GeronimoTransactionManager;
+import org.apache.ode.bpel.iapi.Scheduler;
import org.apache.ode.bpel.iapi.Scheduler.JobInfo;
import org.apache.ode.bpel.iapi.Scheduler.JobProcessor;
import org.apache.ode.bpel.iapi.Scheduler.JobProcessorException;
@@ -238,10 +240,10 @@
}
- Map<String, Object> newDetail(String x) {
- HashMap<String, Object> det = new HashMap<String, Object>();
- det.put("foo", x);
- return det;
+ Scheduler.JobDetails newDetail(String x) {
+ Scheduler.JobDetails jd = new Scheduler.JobDetails();
+ jd.getDetailsExt().put("foo", x);
+ return jd;
}
private SimpleScheduler newScheduler(String nodeId) {
Added: branches/ODE/ODE-1.x-jpa/scheduler-simple/src/test/resources/log4j.properties
===================================================================
--- branches/ODE/ODE-1.x-jpa/scheduler-simple/src/test/resources/log4j.properties (rev 0)
+++ branches/ODE/ODE-1.x-jpa/scheduler-simple/src/test/resources/log4j.properties 2010-05-28 05:11:17 UTC (rev 678)
@@ -0,0 +1,28 @@
+#
+# 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.
+#
+
+# Set root logger level to WARN and its only appender to CONSOLE
+log4j.rootLogger=WARN, CONSOLE
+
+# log4j properties to work with commandline tools.
+log4j.category.org.apache.ode.scheduler.simple.RetriesTest=DEBUG
+log4j.category.org.apache.ode.bpel.engine=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
Added: branches/ODE/ODE-1.x-jpa/scheduler-simple/src/test/resources/simplesched-hsql.sql
===================================================================
--- branches/ODE/ODE-1.x-jpa/scheduler-simple/src/test/resources/simplesched-hsql.sql (rev 0)
+++ branches/ODE/ODE-1.x-jpa/scheduler-simple/src/test/resources/simplesched-hsql.sql 2010-05-28 05:11:17 UTC (rev 678)
@@ -0,0 +1,20 @@
+CREATE TABLE ode_job (
+ jobid CHAR(64) NOT NULL,
+ ts BIGINT NOT NULL,
+ nodeid char(64),
+ scheduled int NOT NULL,
+ transacted int NOT NULL,
+
+ instanceId BIGINT,
+ mexId varchar(255),
+ processId varchar(255),
+ type varchar(255),
+ channel varchar(255),
+ correlatorId varchar(255),
+ correlationKeySet varchar(255),
+ retryCount int,
+ inMem int,
+ detailsExt binary(4096),
+
+ PRIMARY KEY(jobid));
+
Added: branches/ODE/ODE-1.x-jpa/schema-updates/update01.sql
===================================================================
--- branches/ODE/ODE-1.x-jpa/schema-updates/update01.sql (rev 0)
+++ branches/ODE/ODE-1.x-jpa/schema-updates/update01.sql 2010-05-28 05:11:17 UTC (rev 678)
@@ -0,0 +1,7 @@
+alter table BPEL_XML_DATA add DATA blob;
+
+update BPEL_XML_DATA bxd set DATA=(select BIN_DATA from LARGE_DATA where id = bxd.ldata_id);
+delete from LARGE_DATA ld where ld.id in (select ldata_id from BPEL_XML_DATA);
+alter table BPEL_XML_DATA drop column ldata_id;
+
+alter table BPEL_XML_DATA add SIMPLE_VALUE varchar2(255);
Added: branches/ODE/ODE-1.x-jpa/schema-updates/update02.sql
===================================================================
--- branches/ODE/ODE-1.x-jpa/schema-updates/update02.sql (rev 0)
+++ branches/ODE/ODE-1.x-jpa/schema-updates/update02.sql 2010-05-28 05:11:17 UTC (rev 678)
@@ -0,0 +1,14 @@
+create table ODE_JOB_BAK as select * from ODE_JOB;
+alter table ODE_JOB add instanceId number(37);
+alter table ODE_JOB add mexId varchar(255);
+alter table ODE_JOB add processId varchar(255);
+alter table ODE_JOB add type varchar(255);
+alter table ODE_JOB add channel varchar(255);
+alter table ODE_JOB add correlatorId varchar(255);
+alter table ODE_JOB add correlationKeySet varchar(255);
+alter table ODE_JOB add retryCount int;
+alter table ODE_JOB add inMem int;
+alter table ODE_JOB add priority int;
+alter table ODE_JOB add detailsExt blob;
+update ODE_JOB oj set detailsExt = (select details from ODE_JOB where jobid = oj.jobid);
+alter table ODE_JOB drop column details;
Modified: branches/ODE/ODE-1.x-jpa/tools/src/main/java/org/apache/ode/tools/sendsoap/cline/HttpSoapSender.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/tools/src/main/java/org/apache/ode/tools/sendsoap/cline/HttpSoapSender.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/tools/src/main/java/org/apache/ode/tools/sendsoap/cline/HttpSoapSender.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -19,6 +19,8 @@
package org.apache.ode.tools.sendsoap.cline;
import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.HttpConnectionManager;
+import org.apache.commons.httpclient.SimpleHttpConnectionManager;
import org.apache.commons.httpclient.UsernamePasswordCredentials;
import org.apache.commons.httpclient.auth.AuthScope;
import org.apache.commons.httpclient.methods.PostMethod;
@@ -105,7 +107,10 @@
m.appendReplacement(sb, now + "-" + c++);
}
m.appendTail(sb);
- HttpClient httpClient = new HttpClient();
+ SimpleHttpConnectionManager mgr = new SimpleHttpConnectionManager();
+ mgr.getParams().setConnectionTimeout(60000);
+ mgr.getParams().setSoTimeout(60000);
+ HttpClient httpClient = new HttpClient(mgr);
PostMethod httpPostMethod = new PostMethod(u.toExternalForm());
if (proxyServer != null && proxyServer.length() > 0) {
httpClient.getState().setCredentials(new AuthScope(proxyServer, proxyPort),
Modified: branches/ODE/ODE-1.x-jpa/utils/pom.xml
===================================================================
--- branches/ODE/ODE-1.x-jpa/utils/pom.xml 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/utils/pom.xml 2010-05-28 05:11:17 UTC (rev 678)
@@ -65,7 +65,7 @@
<artifactId>log4j</artifactId>
</dependency>
<dependency>
- <groupId>xstream</groupId>
+ <groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
</dependency>
<dependency>
@@ -90,17 +90,9 @@
</dependency>
<dependency>
<groupId>org.apache.axis2</groupId>
- <artifactId>axis2-jibx</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.axis2</groupId>
<artifactId>axis2-saaj</artifactId>
</dependency>
<dependency>
- <groupId>org.apache.axis2</groupId>
- <artifactId>axis2-xmlbeans</artifactId>
- </dependency>
- <dependency>
<groupId>net.sf.saxon</groupId>
<artifactId>saxon</artifactId>
</dependency>
Modified: branches/ODE/ODE-1.x-jpa/utils/src/main/java/org/apache/ode/utils/CronExpression.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/utils/src/main/java/org/apache/ode/utils/CronExpression.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/utils/src/main/java/org/apache/ode/utils/CronExpression.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -1,3 +1,22 @@
+/*
++ * 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.utils;
import java.io.Serializable;
Modified: branches/ODE/ODE-1.x-jpa/utils/src/main/java/org/apache/ode/utils/RelativeDateParser.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/utils/src/main/java/org/apache/ode/utils/RelativeDateParser.java 2010-05-28 04:59:49 UTC (rev 677)
+++ branches/ODE/ODE-1.x-jpa/utils/src/main/java/org/apache/ode/utils/RelativeDateParser.java 2010-05-28 05:11:17 UTC (rev 678)
@@ -1,3 +1,21 @@
+/*
+ * 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.utils;
import java.text.ParseException;
15 years, 4 months
riftsaw SVN: r677 - in branches/ODE/ODE-1.x-fixes: axis2 and 64 other directories.
by riftsaw-commits@lists.jboss.org
Author: jeff.yuchang
Date: 2010-05-28 00:59:49 -0400 (Fri, 28 May 2010)
New Revision: 677
Added:
branches/ODE/ODE-1.x-fixes/axis2-war/src/test/TimeService-soapui-project.xml
branches/ODE/ODE-1.x-fixes/axis2-war/src/test/java/org/apache/ode/axis2/SelectorsTest.java
branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSelectors/
branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool2.bpel
branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool2.wsdl
branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool3.bpel
branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool3.wsdl
branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem.svg
branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem.wsdl
branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSelectors/deploy.xml
branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSelectors/testRequest.soap
branches/ODE/ODE-1.x-fixes/axis2-war/src/test/webapp/WEB-INF/conf/ode-axis2.properties
branches/ODE/ODE-1.x-fixes/bpel-compiler/src/test/java/org/apache/ode/bpel/elang/xpath20/compiler/
branches/ODE/ODE-1.x-fixes/bpel-compiler/src/test/java/org/apache/ode/bpel/elang/xpath20/compiler/XPath20ExpressionCompilerImplTest.java
branches/ODE/ODE-1.x-fixes/jbi/src/test/java/org/apache/ode/jbi/SpringPropertiesJbiTest.java
branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/SpringPropertiesJbiTest/
branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/SpringPropertiesJbiTest/OnEventCorrelation.bpel
branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/SpringPropertiesJbiTest/OnEventCorrelation.wsdl
branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/SpringPropertiesJbiTest/OnEventCorrelationArtifacts.wsdl
branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/SpringPropertiesJbiTest/beans.xml
branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/SpringPropertiesJbiTest/deploy.xml
branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/SpringPropertiesJbiTest/smx.xml
branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/SpringPropertiesJbiTest/test.properties
branches/ODE/ODE-1.x-fixes/scheduler-simple/src/test/resources/log4j.properties
branches/ODE/ODE-1.x-fixes/scheduler-simple/src/test/resources/simplesched-hsql.sql
branches/ODE/ODE-1.x-fixes/schema-updates/
branches/ODE/ODE-1.x-fixes/schema-updates/update01.sql
branches/ODE/ODE-1.x-fixes/schema-updates/update02.sql
Modified:
branches/ODE/ODE-1.x-fixes/KEYS
branches/ODE/ODE-1.x-fixes/Rakefile
branches/ODE/ODE-1.x-fixes/axis2-war/pom.xml
branches/ODE/ODE-1.x-fixes/axis2-war/src/main/assembly/bin.xml
branches/ODE/ODE-1.x-fixes/axis2-war/src/main/webapp/WEB-INF/classes/log4j.properties
branches/ODE/ODE-1.x-fixes/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/ProcessCronCleanupTest.java
branches/ODE/ODE-1.x-fixes/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/SystemCronCleanupTest.java
branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSoapHeader2/HelloWorld2.wsdl
branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSoapHeader2/deploy.xml
branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSoapHeader2/hello-process.bpel
branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSoapHeader2/hello-process.wsdl
branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSoapHeader2/hello.wsdl
branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSoapHeader2/hello.xsd
branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/test-log4j.properties
branches/ODE/ODE-1.x-fixes/axis2/pom.xml
branches/ODE/ODE-1.x-fixes/bpel-api/src/main/java/org/apache/ode/bpel/common/CorrelationKey.java
branches/ODE/ODE-1.x-fixes/bpel-api/src/main/java/org/apache/ode/bpel/common/CorrelationKeySet.java
branches/ODE/ODE-1.x-fixes/bpel-api/src/main/java/org/apache/ode/bpel/evt/ScopeCompletionEvent.java
branches/ODE/ODE-1.x-fixes/bpel-api/src/main/java/org/apache/ode/bpel/evt/VariableModificationEvent.java
branches/ODE/ODE-1.x-fixes/bpel-api/src/main/java/org/apache/ode/bpel/iapi/ClusterAware.java
branches/ODE/ODE-1.x-fixes/bpel-api/src/main/java/org/apache/ode/bpel/iapi/Endpoint.java
branches/ODE/ODE-1.x-fixes/bpel-api/src/main/java/org/apache/ode/bpel/iapi/ProcessConf.java
branches/ODE/ODE-1.x-fixes/bpel-api/src/main/java/org/apache/ode/bpel/iapi/Scheduler.java
branches/ODE/ODE-1.x-fixes/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/BpelCompiler.java
branches/ODE/ODE-1.x-fixes/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/bom/InvokeActivity.java
branches/ODE/ODE-1.x-fixes/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/bom/Scope.java
branches/ODE/ODE-1.x-fixes/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/JaxpFunctionResolver.java
branches/ODE/ODE-1.x-fixes/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/OdeXPathFunctionLibrary.java
branches/ODE/ODE-1.x-fixes/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/SaxonContext.java
branches/ODE/ODE-1.x-fixes/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/XPath20ExpressionCompilerImpl.java
branches/ODE/ODE-1.x-fixes/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xquery10/compiler/XQuery10BpelFunctions.java
branches/ODE/ODE-1.x-fixes/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xquery10/compiler/XQuery10ExpressionCompilerImpl.java
branches/ODE/ODE-1.x-fixes/bpel-compiler/src/test/java/org/apache/ode/bpel/elang/xquery10/compiler/XQuery10ExpressionCompilerImplTest.java
branches/ODE/ODE-1.x-fixes/bpel-compiler/src/test/resources/log4j.properties
branches/ODE/ODE-1.x-fixes/bpel-dao/src/main/java/org/apache/ode/bpel/dao/DeferredProcessInstanceCleanable.java
branches/ODE/ODE-1.x-fixes/bpel-dao/src/main/java/org/apache/ode/bpel/dao/FilteredInstanceDeletable.java
branches/ODE/ODE-1.x-fixes/bpel-dao/src/main/java/org/apache/ode/bpel/dao/ScopeStateEnum.java
branches/ODE/ODE-1.x-fixes/bpel-epr/src/main/java/org/apache/ode/il/MockScheduler.java
branches/ODE/ODE-1.x-fixes/bpel-obj/src/main/java/org/apache/ode/bpel/o/OMessageVarType.java
branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelEngineImpl.java
branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java
branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java
branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java
branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/DebuggerSupport.java
branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/Messages.java
branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeImpl.java
branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerLinkMyRoleImpl.java
branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerRoleMessageExchangeImpl.java
branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java
branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessCleanUpRunnable.java
branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessStatusConverter.java
branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/CronScheduler.java
branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/RuntimeDataCleanupRunnable.java
branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/SystemSchedulesConfig.java
branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/Replayer.java
branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/ReplayerScheduler.java
branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/extvar/jdbc/DbExternalVariable.java
branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/ProcessDaoImpl.java
branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java
branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/SCOPE.java
branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/WAIT.java
branches/ODE/ODE-1.x-fixes/bpel-runtime/src/test/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeImplTest.java
branches/ODE/ODE-1.x-fixes/bpel-runtime/src/test/java/org/apache/ode/bpel/engine/cron/CronSchedulerTest.java
branches/ODE/ODE-1.x-fixes/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java
branches/ODE/ODE-1.x-fixes/bpel-runtime/src/test/resources/recovery/failure-to-fault2.bpel
branches/ODE/ODE-1.x-fixes/bpel-schemas/src/main/xsd/pmapi.xsd
branches/ODE/ODE-1.x-fixes/bpel-scripts/src/main/resources/2.0/good/circularReference/CircularReference.bpel
branches/ODE/ODE-1.x-fixes/bpel-scripts/src/main/resources/2.0/good/circularReference/CircularReference1.wsdl
branches/ODE/ODE-1.x-fixes/bpel-scripts/src/main/resources/2.0/good/circularReference/CircularReference2.wsdl
branches/ODE/ODE-1.x-fixes/bpel-store/pom.xml
branches/ODE/ODE-1.x-fixes/bpel-store/src/main/java/org/apache/ode/store/DeploymentUnitDir.java
branches/ODE/ODE-1.x-fixes/bpel-store/src/main/java/org/apache/ode/store/ProcessConfImpl.java
branches/ODE/ODE-1.x-fixes/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java
branches/ODE/ODE-1.x-fixes/bpel-store/src/main/java/org/apache/ode/store/jpa/DbConfStoreConnectionFactory.java
branches/ODE/ODE-1.x-fixes/bpel-test/src/main/java/org/apache/ode/test/BPELTestAbstract.java
branches/ODE/ODE-1.x-fixes/bpel-test/src/test/resources/bpel/2.0/TestWait1/Wait1-2.0.bpel
branches/ODE/ODE-1.x-fixes/bpel-test/src/test/resources/bpel/2.0/TestXQueryExpression/HelloXQueryWorld.xsl
branches/ODE/ODE-1.x-fixes/dao-hibernate-db/build.xml
branches/ODE/ODE-1.x-fixes/dao-hibernate-db/src/main/sql/simplesched-derby.sql
branches/ODE/ODE-1.x-fixes/dao-hibernate-db/src/main/sql/simplesched-firebird.sql
branches/ODE/ODE-1.x-fixes/dao-hibernate-db/src/main/sql/simplesched-hsql.sql
branches/ODE/ODE-1.x-fixes/dao-hibernate-db/src/main/sql/simplesched-mysql.sql
branches/ODE/ODE-1.x-fixes/dao-hibernate-db/src/main/sql/simplesched-oracle.sql
branches/ODE/ODE-1.x-fixes/dao-hibernate-db/src/main/sql/simplesched-postgres.sql
branches/ODE/ODE-1.x-fixes/dao-hibernate-db/src/main/sql/simplesched-sqlserver.sql
branches/ODE/ODE-1.x-fixes/dao-hibernate/pom.xml
branches/ODE/ODE-1.x-fixes/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/CriteriaBuilder.java
branches/ODE/ODE-1.x-fixes/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ProcessInstanceDaoImpl.java
branches/ODE/ODE-1.x-fixes/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ScopeDaoImpl.java
branches/ODE/ODE-1.x-fixes/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/XmlDataDaoImpl.java
branches/ODE/ODE-1.x-fixes/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HXmlData.java
branches/ODE/ODE-1.x-fixes/dao-jpa-ojpa-derby/build.xml
branches/ODE/ODE-1.x-fixes/dao-jpa-ojpa-derby/src/main/scripts/simplesched-derby.sql
branches/ODE/ODE-1.x-fixes/dao-jpa-ojpa-derby/src/main/scripts/simplesched-mysql.sql
branches/ODE/ODE-1.x-fixes/dao-jpa-ojpa-derby/src/main/scripts/simplesched-oracle.sql
branches/ODE/ODE-1.x-fixes/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ScopeDAOImpl.java
branches/ODE/ODE-1.x-fixes/dependencies.rb
branches/ODE/ODE-1.x-fixes/jbi-bundle/src/main/resources/META-INF/spring/ode-jbi.xml
branches/ODE/ODE-1.x-fixes/jbi/pom.xml
branches/ODE/ODE-1.x-fixes/jbi/src/main/assembly/bin.xml
branches/ODE/ODE-1.x-fixes/jbi/src/test/java/org/apache/ode/jbi/JbiTestBase.java
branches/ODE/ODE-1.x-fixes/jbi/src/test/java/org/apache/ode/jbi/RetireJbiTest.java
branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/ReplayerJbiTest/initiateRequest.xml
branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/ReplayerJbiTest/replayRequest.xml
branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/ReplayerJbiTest/replayXQueryRequest.xml
branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/log4j.properties
branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/test.wsdl
branches/ODE/ODE-1.x-fixes/pom.xml
branches/ODE/ODE-1.x-fixes/repositories.rb
branches/ODE/ODE-1.x-fixes/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/DatabaseDelegate.java
branches/ODE/ODE-1.x-fixes/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/JdbcDelegate.java
branches/ODE/ODE-1.x-fixes/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/Job.java
branches/ODE/ODE-1.x-fixes/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SimpleScheduler.java
branches/ODE/ODE-1.x-fixes/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/DelegateSupport.java
branches/ODE/ODE-1.x-fixes/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/GeronimoDelegateSupport.java
branches/ODE/ODE-1.x-fixes/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/JdbcDelegateTest.java
branches/ODE/ODE-1.x-fixes/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/RetriesTest.java
branches/ODE/ODE-1.x-fixes/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/SimpleSchedulerTest.java
branches/ODE/ODE-1.x-fixes/tools/src/main/java/org/apache/ode/tools/sendsoap/cline/HttpSoapSender.java
branches/ODE/ODE-1.x-fixes/utils/pom.xml
branches/ODE/ODE-1.x-fixes/utils/src/main/java/org/apache/ode/utils/CronExpression.java
branches/ODE/ODE-1.x-fixes/utils/src/main/java/org/apache/ode/utils/RelativeDateParser.java
Log:
* upgrade to ode 1.3.4 branch.
Modified: branches/ODE/ODE-1.x-fixes/KEYS
===================================================================
--- branches/ODE/ODE-1.x-fixes/KEYS 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/KEYS 2010-05-28 04:59:49 UTC (rev 677)
@@ -153,3 +153,63 @@
AKCCyI4u+Rwi1Lk7rd9V1bUsQyyEFw==
=u9zQ
-----END PGP PUBLIC KEY BLOCK-----
+pub 4096R/3C966102 2010-05-26
+uid Tammo van Lessen (CODE SIGNING KEY) <vanto(a)apache.org>
+sig 3 3C966102 2010-05-26 Tammo van Lessen (CODE SIGNING KEY) <vanto(a)apache.org>
+sig 3 E42E0E4D 2010-05-26 Tammo van Lessen <tvanlessen(a)taval.de>
+sub 4096R/8400A608 2010-05-26
+sig 3C966102 2010-05-26 Tammo van Lessen (CODE SIGNING KEY) <vanto(a)apache.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.4.10 (MingW32)
+
+mQINBEv9r8oBEAC/OjGwUYyKgpQotSgt5DbEsEAk3agbH5bn2nVe7SwXuB1MHwcb
+kcSSRZcez9hM2NybrMpnYqJI4Q/pRzxSUSwGLFeSMwiUr2DpuN61tjDiA2UxM4x5
+CRPaGFt6PqeB1QJf+g1GPPfwPU/Eqn1Y4lLfvoTTjT6Hl+j0rGkNsY+3wDI7v870
+G7MX4bI+9doQRHbuxMa6AtEHv4vvFGnsPthJlydJoAuCA9kchSqKNXJxI+alczHK
+UgFXEyIBWflO6NW6LlsfA2KFqTcu1+MgwUAC3q8f9JeFUwQ5muh2sQrtBOlqrTSB
+wvx2VoSMFPkfIKFiLdx7eaKzE19BhNCn4W2IF/PpMCF3VCsf7dPOtJGB3z7DZbxc
+H+7G6RE3DOEofw3VefYDttl4JAlhElIEkC9UVOfedioQOTs8jvmiwSxS612CmO0H
+Bo+yxwjn0n0EGUFToKcTQu8lUO9evHGDwfsFm+ehj88F0s8ZhklY5JXEQcDTmya9
+JuoNcYEM/BGzgd3RvmA/XBwpBEr2qeDTJmWBtg1z0/L06LW3WqNXNNsLwk3AYpBu
+QPdJJ7WLm3mcgDYQPLQ7esGuUbbuoyTivtw7vRplmwW/Pz6jMOOVrnfHgLACYh29
+cFMOjCYWzpdAozCy8uMa3qR/elGtPCv2j1JYHTDvaBbF5/C/pttaiA8xEwARAQAB
+tDZUYW1tbyB2YW4gTGVzc2VuIChDT0RFIFNJR05JTkcgS0VZKSA8dmFudG9AYXBh
+Y2hlLm9yZz6JAjcEEwECACECGyMCHgECF4AFAkv+TPAFCwkIBwMFFQoJCAsFFgID
+AQAACgkQ2B8u2jyWYQIZtg/+PR+/NuROoArnsW9vE8nMcfRNS/gO3VIBD1BC1Jjf
+OyeHU7stmlrtGI2aIJ+WpTx3umlcaXHfzw2ijbsnvbAX6pkPqPdSidioumztg8QG
+tWCYeufEna/XIJQgiqsp2OPVr4vREEze5ZEsi7siv1r7yPlgBMV7Vujfb2RUQ2JW
+1ttnlPMdDjbbHKIim2/J7jOauP/a+6LB+HvvtEkXWj2BooOZMeUGe/4E0FxU9yaY
+SIJyw9xtxedqj2/ESwIp8P6ClownO3xcGtRhwd0OOgnExrerF1ch5MDn9eBx1QB1
+pZQUhBmj00avYz7iUA7qnXfNF0Hu/KxcashxWUhLyvb6/iAsLUOiLPOJj8Yp3z1J
+1SrFLa9AxjCIaJetYtBIj5suh0kxtN4W+6a76+xfcDuBJCvjzOZTM21J00uJQ7Me
+JvzWfy3kQcQMmIEsBC3duE052NcF5+R/OBktgbULRS+pSLqXFxCh1ENBcnZPlclI
+yDoce76WJdZvxOKvsO2/hnET6hO53IZjDluJiBrtoakaPvSDVoWZLZNa7eBfxK1B
+QzOANrXNPMvcboNsXZk5hPLwAJ3sB+qG6kVE0O6SmUG/88y4lmuHWUQGMvYehoV5
+R4eIqg2IHL41S2r/jjC9Gp6U2/67YynB6UkqaocP83Ci8Fw9zwbd16MkWbT/n7Fg
+rryIRgQTEQIABgUCS/2wjAAKCRDzgigi5C4OTSzrAJ9cGfs5+vrjtCkGOQh35MkC
+q7JGDACdEN8fA9Z4cl9xwDxmcdKztap42ea5Ag0ES/2vygEQAOCkQU40N45EzNH3
+SQ0Ze6WnNw0K4q11AMrKrkpQzGMEacxAg6V6CaL7rvCWcl9qZ/brKgMSBGU4sck2
+pzXF6rC45MOlzm8rz1THaq+P9KU4/7GiMM+1ntu4NPX9LKBANNDDtPhIdig11qJl
+N+U+nLULlv+wd1At93NssLdltOLyHRFujBbw2ZRLcJct8zkdmpmZbko1ZMKuT7VA
++59c049iZoVp8dZQaule98l6LGQjVd2qMC28SA4Cqwjp4mR+0bXb5gxFNlL3zQol
+qYoVRzoFH6vZvvksJa8REIghRb0JasHirFscI0/eiV4DvAlaM6KKI8HTTqd76CTo
+jNsYTYWap6h330jODwiXEGZJERuAJdY48PZOCeJavow8RxhzNIfRLCBUgpLNxn4f
+HQy92B7ym65GVo37GA45lXa8y1ov3g9eHhSsv+kLaKH+Hl22lvWMnFpPcxfkxBgD
+X61d8FV7ZRlpRErcGFCd+wUbfq41VEZpKRZ6fRWTQ0ooTXTQOaJv4t7amyqwED8o
+0puxZNZ5ATjTuaI6oMPVAMfhSdohqAOGiabSo4NCHfISWgg+8HmtrsD6vZlmZw2C
+W8TC0kgU6N8D7RlLyLCZg+Vbnl4qMCuTwn7iyO8dSUHWba+IecDJTh9NmBfln2fT
+y71W0tA0kuvory4G8TM8V+tFHxGLABEBAAGJAh8EGAECAAkFAkv9r8oCGwwACgkQ
+2B8u2jyWYQIJqRAAsnaiZAlI7MMoKP1MjMk7qWlkb0dFLO26/pdsaiLm+tmYt/Nm
+r+1+ROOpgZpedRVM9+ZIclwrKag7vZ6c13O5v4XssvO0rE9mnQdhW9Ts3EKO7/BN
+0gSFKPrA8JlRBRvTExCFZHLcNNmS7fyaZsiuPFPamggKThKEn6CJnUYABDopiKul
+rb089vPVzQMpYtwazaqjKh/33mSQ98BUwtb8t2gUEwCUTxmxNvgMf4GwqQp3ooVY
+Hp57v2x2lmpvooaWsm9UGO87N6ubmiJBP309Yp7XgdElXsUWeZGwPozqtKUg+jYn
+PIhshjQD+GVrWmoQ0HXzTSEPkFbmWnu2oJGTlu+AjnNKwXQQ5OB80gDDjcdQmEOI
+wPPfKkcvvg4IlGN/hTFE7OVvy3FQhD6Cy0E05wKyFX9ESpoG9uAeJ6u52LJbXcS2
+6mb9YZY8boGLWj6QabG/LDQVMlYOjM2zzYN015uOKmULvKVt3t8/016qberdMl/e
+C+kf3ivwBekplcprHBQbVK0t4JizVRFWkiPFElKh04HgP8jf3HVl/tgohf1vSVTV
+amb+vHQUM5Gzd5586gXBNs8qFBS4VvTdmCfniaDvo9ZfXJGjuLuBNhRQbP+1rNfU
+Us7l63zTphxRaa8+oRYRX+QMCBMc5v0GeHIVhvz6DwGlv3okFIRbJvx+goc=
+=DCAF
+-----END PGP PUBLIC KEY BLOCK-----
Modified: branches/ODE/ODE-1.x-fixes/Rakefile
===================================================================
--- branches/ODE/ODE-1.x-fixes/Rakefile 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/Rakefile 2010-05-28 04:59:49 UTC (rev 677)
@@ -26,7 +26,7 @@
require File.join(File.dirname(__FILE__), 'dependencies.rb')
# Keep this structure to allow the build system to update version numbers.
-VERSION_NUMBER = "1.3.4-SNAPSHOT"
+VERSION_NUMBER = "1.3.4"
BUNDLE_VERSIONS = {
"ode.version" => VERSION_NUMBER,
@@ -76,7 +76,7 @@
COMMONS.lang, COMMONS.logging, COMMONS.pool, DERBY, DERBY_TOOLS, JAXEN, JAVAX.activation, JAVAX.ejb, JAVAX.javamail,
JAVAX.connector, JAVAX.jms, JAVAX.persistence, JAVAX.transaction, JAVAX.stream, JIBX,
GERONIMO.connector, GERONIMO.kernel, GERONIMO.transaction, LOG4J, OPENJPA, SAXON, TRANQL,
- WOODSTOX, WSDL4J, WS_COMMONS, XALAN, XERCES, XMLBEANS,
+ WOODSTOX, WSDL4J, WS_COMMONS, XALAN, XERCES, XMLBEANS, SPRING,
AXIS2_MODULES.libs
package(:war).with(:libs=>libs).path("WEB-INF").tap do |web_inf|
@@ -103,8 +103,8 @@
end
end
- test.using :testng, :properties=>{ "log4j.debug" => true, "log4j.configuration"=>"test-log4j.properties", "test.ports" => ENV['TEST_PORTS'] }
- test.with projects("tools"), libs, AXIS2_TEST, AXIOM, JAVAX.servlet, Buildr::Jetty::REQUIRES, HIBERNATE, DOM4J
+ test.using :testng, :properties=>{ "log4j.debug" => true, "log4j.configuration"=>"test-log4j.properties", "test.ports" => ENV['TEST_PORTS'] }, :java_args=>['-Xmx1024M', '-XX:MaxPermSize=1024m']
+ test.with projects("tools"), libs, AXIS2_TEST, AXIOM, JAVAX.servlet, Buildr::Jetty::REQUIRES, HIBERNATE, DOM4J, SLF4J, LOG4J
webapp_dir = "#{test.compile.target}/webapp"
test.setup task(:prepare_webapp) do |task|
cp_r _("src/main/webapp"), test.compile.target.to_s
@@ -198,8 +198,10 @@
compile.from apt
compile.with projects("bpel-api", "bpel-compiler", "bpel-dao", "bpel-epr", "bpel-obj", "bpel-schemas",
"bpel-store", "jacob", "jacob-ap", "utils", "agents"),
- COMMONS.logging, COMMONS.collections, COMMONS.httpclient, JAXEN, JAVAX.persistence, JAVAX.stream, SAXON, WSDL4J, XMLBEANS
+ COMMONS.logging, COMMONS.collections, COMMONS.httpclient, JAXEN, JAVAX.persistence, JAVAX.stream, SAXON, WSDL4J, XMLBEANS,
+ SPRING
+
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,
@@ -234,7 +236,7 @@
define "bpel-store" do
compile.with projects("bpel-api", "bpel-compiler", "bpel-dao", "bpel-obj", "bpel-schemas", "bpel-epr",
"dao-hibernate", "dao-jpa", "utils"),
- COMMONS.logging, JAVAX.persistence, JAVAX.stream, JAVAX.transaction, HIBERNATE, HSQLDB, XMLBEANS, XERCES, WSDL4J, OPENJPA
+ COMMONS.logging, JAVAX.persistence, JAVAX.stream, JAVAX.transaction, HIBERNATE, HSQLDB, XMLBEANS, XERCES, WSDL4J, OPENJPA, SPRING
compile { open_jpa_enhance }
resources hibernate_doclet(:package=>"org.apache.ode.store.hib", :excludedtags=>"@version,@author,@todo")
@@ -246,14 +248,14 @@
desc "ODE BPEL Tests"
define "bpel-test" do
compile.with projects("bpel-api", "bpel-compiler", "bpel-dao", "bpel-runtime",
- "bpel-store", "utils", "bpel-epr", "dao-jpa", "agents"),
+ "bpel-store", "utils", "bpel-epr", "dao-hibernate", "agents"),
DERBY, JUnit.dependencies, JAVAX.persistence, OPENJPA, WSDL4J, COMMONS.httpclient,
COMMONS.codec
test.with projects("bpel-obj", "jacob", "bpel-schemas",
"bpel-scripts", "scheduler-simple"),
COMMONS.collections, COMMONS.lang, COMMONS.logging, DERBY, JAVAX.connector,
- JAVAX.stream, JAVAX.transaction, JAXEN, HSQLDB, LOG4J, SAXON, XERCES, XMLBEANS, XALAN, GERONIMO.transaction
+ JAVAX.stream, JAVAX.transaction, JAXEN, HSQLDB, LOG4J, SAXON, XERCES, XMLBEANS, XALAN, GERONIMO.transaction, SPRING, HIBERNATE, SLF4J, DOM4J
package :jar
end
Modified: branches/ODE/ODE-1.x-fixes/axis2/pom.xml
===================================================================
--- branches/ODE/ODE-1.x-fixes/axis2/pom.xml 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/axis2/pom.xml 2010-05-28 04:59:49 UTC (rev 677)
@@ -30,7 +30,6 @@
</parent>
<properties>
- <rampart.version>1.4</rampart.version>
<servlet.version>2.4</servlet.version>
</properties>
Modified: branches/ODE/ODE-1.x-fixes/axis2-war/pom.xml
===================================================================
--- branches/ODE/ODE-1.x-fixes/axis2-war/pom.xml 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/axis2-war/pom.xml 2010-05-28 04:59:49 UTC (rev 677)
@@ -32,9 +32,7 @@
</parent>
<properties>
- <rampart.version>1.4</rampart.version>
<mex.version>1.41</mex.version>
- <axis2.version>1.4.1</axis2.version>
<jibx.version>1.1.5</jibx.version>
<tranql.version>1.1</tranql.version>
<opensaml.version>1.1</opensaml.version>
@@ -94,9 +92,8 @@
<artifactId>riftsaw-axis2</artifactId>
</dependency>
<dependency>
- <groupId>org.apache.axis2</groupId>
- <artifactId>axis2-corba</artifactId>
- <version>${axis2.version}</version>
+ <groupId>org.jboss.soa.bpel</groupId>
+ <artifactId>riftsaw-bpel-ql</artifactId>
</dependency>
<dependency>
<groupId>org.apache.axis2</groupId>
@@ -176,6 +173,11 @@
<version>${geronimo-spec-jms.version}</version>
</dependency>
<dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-ejb_2.1_spec</artifactId>
+ <version>1.1</version>
+ </dependency>
+ <dependency>
<groupId>org.apache.geronimo.modules</groupId>
<artifactId>geronimo-kernel</artifactId>
</dependency>
@@ -183,6 +185,7 @@
<groupId>xml-apis</groupId>
<artifactId>xml-apis</artifactId>
</dependency>
+ <!--
<dependency>
<groupId>org.apache.rampart</groupId>
<artifactId>rampart</artifactId>
@@ -207,6 +210,7 @@
<type>mar</type>
<version>${mex.version}</version>
</dependency>
+ -->
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>mex</artifactId>
Modified: branches/ODE/ODE-1.x-fixes/axis2-war/src/main/assembly/bin.xml
===================================================================
--- branches/ODE/ODE-1.x-fixes/axis2-war/src/main/assembly/bin.xml 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/axis2-war/src/main/assembly/bin.xml 2010-05-28 04:59:49 UTC (rev 677)
@@ -86,7 +86,7 @@
<include>org.apache.axis2:axis2-adb</include>
<include>org.apache.axis2:axis2-adb-codegen</include>
<include>org.apache.axis2:axis2-codegen</include>
- <include>org.apache.axis2:axis2-corba</include>
+ <include>org.jboss.soa.bpel:riftsaw-bpel-ql</include>
<include>org.apache.axis2:axis2-fastinfoset</include>
<include>org.apache.axis2:axis2-java2wsdl</include>
<include>org.apache.axis2:axis2-jaxbri</include>
@@ -111,6 +111,7 @@
<include>commons-lang:commons-lang</include>
<include>commons-pool:commons-pool</include>
<include>commons-io:commons-io</include>
+ <include>commons-beanutils:commons-beanutils</include>
<include>commons-httpclient:commons-httpclient</include>
<include>commons-logging:commons-logging</include>
<include>commons-fileupload:commons-fileupload</include>
@@ -167,6 +168,7 @@
<include>xml-apis:xml-apis</include>
<include>javax.mail:mail</include>
<include>axion:axion</include>
+ <include>org.springframework:spring</include>
</includes>
</dependencySet>
Modified: branches/ODE/ODE-1.x-fixes/axis2-war/src/main/webapp/WEB-INF/classes/log4j.properties
===================================================================
--- branches/ODE/ODE-1.x-fixes/axis2-war/src/main/webapp/WEB-INF/classes/log4j.properties 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/axis2-war/src/main/webapp/WEB-INF/classes/log4j.properties 2010-05-28 04:59:49 UTC (rev 677)
@@ -22,13 +22,13 @@
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=INFO
log4j.category.org.apache.ode.axis2.hooks.SessionInHandler=INFO
-log4j.category.org.apache.ode.bpel.engine=DEBUG
+log4j.category.org.apache.ode.bpel.engine=INFO
log4j.category.org.apache.ode.bpel.engine.cron=INFO
-log4j.category.org.apache.ode.daohib.bpel.CorrelatorDaoImpl=DEBUG
+log4j.category.org.apache.ode.daohib.bpel.CorrelatorDaoImpl=INFO
log4j.category.org.apache.ode.bpel.epr=INFO
-log4j.category.org.apache.ode.sql=DEBUG
+log4j.category.org.apache.ode.sql=INFO
# Console appender
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
Added: branches/ODE/ODE-1.x-fixes/axis2-war/src/test/TimeService-soapui-project.xml
===================================================================
--- branches/ODE/ODE-1.x-fixes/axis2-war/src/test/TimeService-soapui-project.xml (rev 0)
+++ branches/ODE/ODE-1.x-fixes/axis2-war/src/test/TimeService-soapui-project.xml 2010-05-28 04:59:49 UTC (rev 677)
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<con:soapui-project name="TimeService" resourceRoot="" soapui-version="3.5-beta1" xmlns:con="http://eviware.com/soapui/config"><con:settings/><con:interface xsi:type="con:WsdlInterface" wsaVersion="NONE" name="TimeServiceSoap" type="wsdl" bindingName="{http://ws.intalio.com/TimeService/}TimeServiceSoap" soapVersion="1_1" anonymous="optional" definition="file:/home/joker/mind/intalio/pxe/axis2-war/src/test/resources/TestCleanSuccess_All/TimeService.wsdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:settings/><con:definitionCache type="TEXT" rootPart="file:/home/joker/mind/intalio/pxe/axis2-war/src/test/resources/TestCleanSuccess_All/TimeService.wsdl"><con:part><con:url>file:/home/joker/mind/intalio/pxe/axis2-war/src/test/resources/TestCleanSuccess_All/TimeService.wsdl</con:url><con:content><![CDATA[<!--~ 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://ws.intalio.com/TimeService/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://ws.intalio.com/TimeService/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+ <wsdl:documentation>A sample Time service</wsdl:documentation>
+ <wsdl:types>
+ <s:schema elementFormDefault="qualified" targetNamespace="http://ws.intalio.com/TimeService/">
+ <s:element name="getUTCTime" type="s:string"/>
+ <s:element name="getUTCTimeResponse">
+ <s:complexType>
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="1" name="getUTCTimeResult" type="s:string"/>
+ </s:sequence>
+ </s:complexType>
+ </s:element>
+ <s:element name="getCityTime">
+ <s:complexType>
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="1" name="city" type="s:string"/>
+ </s:sequence>
+ </s:complexType>
+ </s:element>
+ <s:element name="getCityTimeResponse">
+ <s:complexType>
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="1" name="getCityTimeResult" type="s:string"/>
+ </s:sequence>
+ </s:complexType>
+ </s:element>
+ </s:schema>
+ </wsdl:types>
+ <wsdl:message name="getUTCTimeSoapIn">
+ <wsdl:part name="parameters" element="tns:getUTCTime"/>
+ </wsdl:message>
+ <wsdl:message name="getUTCTimeSoapOut">
+ <wsdl:part name="parameters" element="tns:getUTCTimeResponse"/>
+ </wsdl:message>
+ <wsdl:message name="getCityTimeSoapIn">
+ <wsdl:part name="parameters" element="tns:getCityTime"/>
+ </wsdl:message>
+ <wsdl:message name="getCityTimeSoapOut">
+ <wsdl:part name="parameters" element="tns:getCityTimeResponse"/>
+ </wsdl:message>
+ <wsdl:portType name="TimeServiceSoap">
+ <wsdl:operation name="getUTCTime">
+ <wsdl:input message="tns:getUTCTimeSoapIn"/>
+ <wsdl:output message="tns:getUTCTimeSoapOut"/>
+ </wsdl:operation>
+ <wsdl:operation name="getCityTime">
+ <wsdl:input message="tns:getCityTimeSoapIn"/>
+ <wsdl:output message="tns:getCityTimeSoapOut"/>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="TimeServiceSoap" type="tns:TimeServiceSoap">
+ <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
+ <wsdl:operation name="getUTCTime">
+ <soap:operation soapAction="http://ws.intalio.com/TimeService/getUTCTime" style="document"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="getCityTime">
+ <soap:operation soapAction="http://ws.intalio.com/TimeService/getCityTime" style="document"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="TimeService">
+ <wsdl:documentation>A sample Time service</wsdl:documentation>
+ <wsdl:port name="TimeServiceSoap" binding="tns:TimeServiceSoap">
+ <soap:address location="http://ws.intalio.com/TimeService/"/>
+ </wsdl:port>
+ </wsdl:service>
+</wsdl:definitions>]]></con:content><con:type>http://schemas.xmlsoap.org/wsdl/</con:type></con:part></con:definitionCache><con:endpoints><con:endpoint>http://ws.intalio.com/TimeService/</con:endpoint><con:endpoint>http://joker-laptop:8088/TimeService/</con:endpoint></con:endpoints><con:operation isOneWay="false" action="http://ws.intalio.com/TimeService/getCityTime" name="getCityTime" bindingOperationName="getCityTime" type="Request-Response" inputName="" receivesAttachments="false" sendsAttachments="false" anonymous="optional"><con:settings/><con:call name="Request 1"><con:settings/><con:encoding>UTF-8</con:encoding><con:endpoint>http://ws.intalio.com/TimeService/</con:endpoint><con:request><![CDATA[<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tim="http://ws.intalio.com/TimeService/">
+ <soapenv:Header/>
+ <soapenv:Body>
+ <tim:getCityTime>
+ <!--Optional:-->
+ <tim:city>?</tim:city>
+ </tim:getCityTime>
+ </soapenv:Body>
+</soapenv:Envelope>]]></con:request><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://ws.intalio.com/TimeService/getCityTime"/></con:call></con:operation><con:operation isOneWay="false" action="http://ws.intalio.com/TimeService/getUTCTime" name="getUTCTime" bindingOperationName="getUTCTime" type="Request-Response" inputName="" receivesAttachments="false" sendsAttachments="false" anonymous="optional"><con:settings/><con:call name="Request 1"><con:settings/><con:encoding>UTF-8</con:encoding><con:endpoint>http://ws.intalio.com/TimeService/</con:endpoint><con:request><![CDATA[<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tim="http://ws.intalio.com/TimeService/">
+ <soapenv:Header/>
+ <soapenv:Body>
+ <tim:getUTCTime>?</tim:getUTCTime>
+ </soapenv:Body>
+</soapenv:Envelope>]]></con:request><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://ws.intalio.com/TimeService/getUTCTime"/></con:call></con:operation></con:interface><con:mockService port="8088" path="/TimeService/" host="joker-laptop" name="TimeServiceSoap MockService" bindToHostOnly="false" docroot=""><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.mock.WsdlMockService@require-soap-action">false</con:setting></con:settings><con:mockOperation name="getCityTime" interface="TimeServiceSoap" operation="getCityTime"><con:settings/><con:dispatchStyle>SEQUENCE</con:dispatchStyle><con:defaultResponse>Response 1</con:defaultResponse><con:response name="Response 1" encoding="UTF-8"><con:settings/><con:responseContent><![CDATA[<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tim="http://ws.intalio.com/TimeService/">
+ <soapenv:Header/>
+ <soapenv:Body>
+ <tim:getCityTimeResponse>
+ <!--Optional:-->
+ <tim:getCityTimeResult>?</tim:getCityTimeResult>
+ </tim:getCityTimeResponse>
+ </soapenv:Body>
+</soapenv:Envelope>]]></con:responseContent><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://ws.intalio.com/TimeService/getCityTime"/></con:response><con:dispatchConfig/></con:mockOperation><con:mockOperation name="getUTCTime" interface="TimeServiceSoap" operation="getUTCTime"><con:settings/><con:dispatchStyle>SEQUENCE</con:dispatchStyle><con:defaultResponse>Response 1</con:defaultResponse><con:response name="Response 1" encoding="UTF-8"><con:settings/><con:responseContent><![CDATA[<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tim="http://ws.intalio.com/TimeService/">
+ <soapenv:Header/>
+ <soapenv:Body>
+ <tim:getUTCTimeResponse>
+ <!--Optional:-->
+ <tim:getUTCTimeResult>?</tim:getUTCTimeResult>
+ </tim:getUTCTimeResponse>
+ </soapenv:Body>
+</soapenv:Envelope>]]></con:responseContent><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://ws.intalio.com/TimeService/getUTCTime"/></con:response><con:dispatchConfig/></con:mockOperation><con:properties/></con:mockService><con:properties/><con:wssContainer/></con:soapui-project>
\ No newline at end of file
Added: branches/ODE/ODE-1.x-fixes/axis2-war/src/test/java/org/apache/ode/axis2/SelectorsTest.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/axis2-war/src/test/java/org/apache/ode/axis2/SelectorsTest.java (rev 0)
+++ branches/ODE/ODE-1.x-fixes/axis2-war/src/test/java/org/apache/ode/axis2/SelectorsTest.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -0,0 +1,50 @@
+/*
+ * 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;
+
+import org.testng.annotations.Test;
+import static org.testng.AssertJUnit.assertTrue;
+
+/**
+ * Tests that timeouts set in the *.endpoint files are applied.
+ * The test is designed so a fault must be received.
+ *
+ * Actually, the process invokes a 3-sec long operation (see the process request).
+ * The specified timeouts are lesser than 3-sec, so if properly applied, a fault should be trown.
+ * If not applied, the default 120-sec timeouts will be used. 5sec < 120sec, so the request will succeed.
+ *
+ */
+public class SelectorsTest extends Axis2TestBase implements ODEConfigDirAware {
+ @Test(dataProvider="configs")
+ public void testNoP2P() throws Exception {
+ String bundleName = "TestSelectors";
+ if (server.isDeployed(bundleName)) server.undeployProcess(bundleName);
+ server.deployProcess(bundleName);
+ String response = server.sendRequestFile("http://localhost:8888/ode/processes/Project-Reproduce-Isolation-Problem/R...",
+ bundleName, "testRequest.soap");
+ System.out.println(response);
+ assertTrue(response.contains("_21Response"));
+ if (server.isDeployed(bundleName)) server.undeployProcess(bundleName);
+ }
+
+ public String getODEConfigDir() {
+ return HIB_DERBY_CONF_DIR;
+ }
+}
\ No newline at end of file
Modified: branches/ODE/ODE-1.x-fixes/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/ProcessCronCleanupTest.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/ProcessCronCleanupTest.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/ProcessCronCleanupTest.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -1,3 +1,21 @@
+/*
+ * 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.instancecleanup;
import org.apache.ode.bpel.dao.ProcessDAO;
Modified: branches/ODE/ODE-1.x-fixes/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/SystemCronCleanupTest.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/SystemCronCleanupTest.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/SystemCronCleanupTest.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -1,3 +1,21 @@
+/*
+ * 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.instancecleanup;
import org.apache.commons.logging.LogFactory;
Added: branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool2.bpel
===================================================================
--- branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool2.bpel (rev 0)
+++ branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool2.bpel 2010-05-28 04:59:49 UTC (rev 677)
@@ -0,0 +1,102 @@
+<?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.
+ -->
+<bpel:process xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable" xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop" xmlns:pnlk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ode="http://www.apache.org/ode/type/extension" xmlns:Pool3="http://example.com/ReproduceIsolationProblem/Pool3" xmlns:this="http://example.com/ReproduceIsolationProblem/Pool2" xmlns:Pool="http://example.com/ReproduceIsolationProblem/Pool" xmlns:diag="http://example.com/ReproduceIsolationProblem" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:bpmn="http://www.intalio.com/bpms" xmlns:atomic="http://ode.apache.org/atomicScope" queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0" expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0" bpmn:label="Pool2" name="Pool2" bpmn:id="_bR-rAFOnEd-qUNL1xc5jrA" t!
argetNamespace="http://example.com/ReproduceIsolationProblem/Pool2">
+ <bpel:import namespace="http://example.com/ReproduceIsolationProblem" location="ReproduceIsolationProblem.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
+ <bpel:import namespace="http://example.com/ReproduceIsolationProblem/Pool2" location="ReproduceIsolationProblem-Pool2.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
+ <bpel:import namespace="http://example.com/ReproduceIsolationProblem/Pool3" location="ReproduceIsolationProblem-Pool3.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
+ <bpel:partnerLinks>
+ <bpel:partnerLink name="pool2AndPoolPlkVar" partnerLinkType="diag:Pool2AndPool" myRole="Pool2_for_Pool"/>
+ <bpel:partnerLink name="pool3AndPool2PlkVar" partnerLinkType="diag:Pool3AndPool2" initializePartnerRole="yes" partnerRole="Pool3_for_Pool2"/>
+ </bpel:partnerLinks>
+ <bpel:variables>
+ <bpel:variable name="this_21RequestMsg" messageType="this:_21Request"/>
+ <bpel:variable name="pool3_31RequestMsg" messageType="Pool3:_31Request"/>
+ <bpel:variable name="pool3_32RequestMsg" messageType="Pool3:_32Request"/>
+ <bpel:variable name="pool3_33RequestMsg" messageType="Pool3:_33Request"/>
+ <bpel:variable name="pool3_32ResponseMsg" messageType="Pool3:_32Response"/>
+ <bpel:variable name="pool3_33ResponseMsg" messageType="Pool3:_33Response"/>
+ <bpel:variable name="this_21ResponseMsg" messageType="this:_21Response"/>
+ </bpel:variables>
+ <bpel:sequence>
+ <bpel:receive partnerLink="pool2AndPoolPlkVar" portType="this:ForPool" operation="_21" variable="this_21RequestMsg" createInstance="yes" bpmn:label="21" name="_21" bpmn:id="_bzzlsFOnEd-qUNL1xc5jrA"></bpel:receive>
+ <bpel:assign name="init-variables-Pool2" bpmn:id="_bzzlsFOnEd-qUNL1xc5jrA">
+ <bpel:copy bpmn:label="$pool3_31RequestMsg">
+ <bpel:from>
+ <bpel:literal>
+<Pool3:_31Request></Pool3:_31Request></bpel:literal>
+ </bpel:from>
+ <bpel:to>$pool3_31RequestMsg.body</bpel:to>
+ </bpel:copy>
+ <bpel:copy bpmn:label="$pool3_32RequestMsg">
+ <bpel:from>
+ <bpel:literal>
+<Pool3:_32Request></Pool3:_32Request></bpel:literal>
+ </bpel:from>
+ <bpel:to>$pool3_32RequestMsg.body</bpel:to>
+ </bpel:copy>
+ <bpel:copy bpmn:label="$pool3_33RequestMsg">
+ <bpel:from>
+ <bpel:literal>
+<Pool3:_33Request></Pool3:_33Request></bpel:literal>
+ </bpel:from>
+ <bpel:to>$pool3_33RequestMsg.body</bpel:to>
+ </bpel:copy>
+ <bpel:copy bpmn:label="$this_21ResponseMsg">
+ <bpel:from>
+ <bpel:literal>
+<this:_21Response></this:_21Response></bpel:literal>
+ </bpel:from>
+ <bpel:to>$this_21ResponseMsg.body</bpel:to>
+ </bpel:copy>
+ </bpel:assign>
+ <bpel:assign bpmn:label="22" name="_22" bpmn:id="_lf1mIFOnEd-qUNL1xc5jrA">
+ <bpel:copy>
+ <bpel:from>$ode:pid</bpel:from>
+ <bpel:to>$pool3_31RequestMsg.body</bpel:to>
+ </bpel:copy>
+ </bpel:assign>
+ <bpel:invoke partnerLink="pool3AndPool2PlkVar" portType="Pool3:ForPool2" operation="_31" inputVariable="pool3_31RequestMsg" bpmn:label="22" name="_22-1" bpmn:id="_lf1mIFOnEd-qUNL1xc5jrA"></bpel:invoke>
+ <bpel:flow bpmn:label="Parallel_Gateway" name="Parallel_Gateway" bpmn:id="_iyPXcFOnEd-qUNL1xc5jrA">
+ <bpel:sequence>
+ <bpel:assign bpmn:label="23" name="_23" bpmn:id="_vhobMFOnEd-qUNL1xc5jrA">
+ <bpel:copy>
+ <bpel:from>$ode:pid</bpel:from>
+ <bpel:to>$pool3_32RequestMsg.body</bpel:to>
+ </bpel:copy>
+ </bpel:assign>
+ <bpel:invoke partnerLink="pool3AndPool2PlkVar" portType="Pool3:ForPool2" operation="_32" inputVariable="pool3_32RequestMsg" outputVariable="pool3_32ResponseMsg" bpmn:label="23" name="_23-1" bpmn:id="_vhobMFOnEd-qUNL1xc5jrA"></bpel:invoke>
+ </bpel:sequence>
+ <bpel:sequence>
+ <bpel:wait bpmn:label="wait 10 sec" name="wait_10_sec" bpmn:id="_wlu8gFOnEd-qUNL1xc5jrA">
+ <bpel:for>"PT1S"</bpel:for>
+ </bpel:wait>
+ <bpel:assign bpmn:label="34" name="_34" bpmn:id="_xAHLYFOnEd-qUNL1xc5jrA">
+ <bpel:copy>
+ <bpel:from>$ode:pid</bpel:from>
+ <bpel:to>$pool3_33RequestMsg.body</bpel:to>
+ </bpel:copy>
+ </bpel:assign>
+ <bpel:invoke partnerLink="pool3AndPool2PlkVar" portType="Pool3:ForPool2" operation="_33" inputVariable="pool3_33RequestMsg" outputVariable="pool3_33ResponseMsg" bpmn:label="34" name="_34-1" bpmn:id="_xAHLYFOnEd-qUNL1xc5jrA"></bpel:invoke>
+ </bpel:sequence>
+ </bpel:flow>
+ <bpel:invoke partnerLink="pool3AndPool2PlkVar" portType="Pool3:ForPool2" operation="_33" inputVariable="pool3_33RequestMsg" outputVariable="pool3_33ResponseMsg" bpmn:label="34" name="_34-1" bpmn:id="_xAHLYFOnEd-qUNL1xc5jrA"></bpel:invoke>
+ <bpel:reply partnerLink="pool2AndPoolPlkVar" portType="this:ForPool" operation="_21" variable="this_21ResponseMsg" bpmn:label="Task" name="Task" bpmn:id="_7W620FRaEd-y87rmjcz7YQ"></bpel:reply>
+ </bpel:sequence>
+</bpel:process>
Added: branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool2.wsdl
===================================================================
--- branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool2.wsdl (rev 0)
+++ branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool2.wsdl 2010-05-28 04:59:49 UTC (rev 677)
@@ -0,0 +1,56 @@
+<?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 xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:pnlk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable" xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop" xmlns:this="http://example.com/ReproduceIsolationProblem/Pool2" xmlns:Pool3="http://example.com/ReproduceIsolationProblem/Pool3" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Pool="http://example.com/ReproduceIsolationProblem/Pool" xmlns:diag="http://example.com/ReproduceIsolationProblem" xmlns:xml="http://www.w3.org/XML/1998/namespace" targetNamespace="http://example.com/ReproduceIsolationProblem/Pool2">
+ <wsdl:types>
+ <xs:schema elementFormDefault="qualified" targetNamespace="http://example.com/ReproduceIsolationProblem/Pool2">
+ <xs:element name="_21Request" type="xs:string"/>
+ <xs:element name="_21Response" type="xs:string"/>
+ </xs:schema>
+ </wsdl:types>
+ <wsdl:message name="_21Request">
+ <wsdl:part name="body" element="this:_21Request"/>
+ </wsdl:message>
+ <wsdl:message name="_21Response">
+ <wsdl:part name="body" element="this:_21Response"/>
+ </wsdl:message>
+ <wsdl:portType name="ForPool">
+ <wsdl:operation name="_21">
+ <wsdl:input message="this:_21Request" name="_21"/>
+ <wsdl:output message="this:_21Response" name="_21Response"/>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="CanonicBindingForPool" type="this:ForPool">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+ <wsdl:operation name="_21">
+ <soap:operation style="document" soapAction="http://example.com/ReproduceIsolationProblem/Pool2/ForPool/_21"/>
+ <wsdl:input name="_21">
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output name="_21Response">
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="CanonicServiceForPool">
+ <wsdl:port name="canonicPort" binding="this:CanonicBindingForPool">
+ <soap:address location="http://localhost:8080/ode/processes/Project-Reproduce-Isolation-Problem/R..."/>
+ </wsdl:port>
+ </wsdl:service>
+</wsdl:definitions>
Added: branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool3.bpel
===================================================================
--- branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool3.bpel (rev 0)
+++ branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool3.bpel 2010-05-28 04:59:49 UTC (rev 677)
@@ -0,0 +1,127 @@
+<?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.
+ -->
+<bpel:process xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable" xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop" xmlns:pnlk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ode="http://www.apache.org/ode/type/extension" xmlns:this="http://example.com/ReproduceIsolationProblem/Pool3" xmlns:Pool2="http://example.com/ReproduceIsolationProblem/Pool2" xmlns:diag="http://example.com/ReproduceIsolationProblem" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:bpmn="http://www.intalio.com/bpms" xmlns:atomic="http://ode.apache.org/atomicScope" queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0" expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0" bpmn:label="Pool3" name="Pool3" bpmn:id="_jihk4FOnEd-qUNL1xc5jrA" targetNamespace="http://example.com/ReproduceIsolationProblem/Po!
ol3">
+ <bpel:import namespace="http://example.com/ReproduceIsolationProblem" location="ReproduceIsolationProblem.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
+ <bpel:import namespace="http://example.com/ReproduceIsolationProblem/Pool3" location="ReproduceIsolationProblem-Pool3.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
+ <bpel:partnerLinks>
+ <bpel:partnerLink name="pool3AndPool2PlkVar" partnerLinkType="diag:Pool3AndPool2" myRole="Pool3_for_Pool2"/>
+ </bpel:partnerLinks>
+ <bpel:correlationSets>
+ <bpel:correlationSet name="newCorrelationSet" properties="this:prop"/>
+ </bpel:correlationSets>
+ <bpel:variables>
+ <bpel:variable name="this_31RequestMsg" messageType="this:_31Request"/>
+ </bpel:variables>
+ <bpel:sequence>
+ <bpel:receive partnerLink="pool3AndPool2PlkVar" portType="this:ForPool2" operation="_31" variable="this_31RequestMsg" createInstance="yes" bpmn:label="31" name="_31" bpmn:id="_k1rO0FOnEd-qUNL1xc5jrA">
+ <bpel:correlations>
+ <bpel:correlation set="newCorrelationSet" initiate="join"/>
+ </bpel:correlations>
+ </bpel:receive>
+ <bpel:scope bpmn:label="outer-SubProcess" name="outer-SubProcess" bpmn:id="_-IzjIFOrEd-qUNL1xc5jrA">
+ <bpel:forEach bpmn:label="SubProcess" name="SubProcess" bpmn:id="_-IzjIFOrEd-qUNL1xc5jrA" parallel="no" counterName="emptyCounter">
+ <bpel:startCounterValue>0</bpel:startCounterValue>
+ <bpel:finalCounterValue>2</bpel:finalCounterValue>
+ <completionCondition>
+ <bpel:branches>2</bpel:branches>
+ </completionCondition>
+ <bpel:scope bpmn:label="SubProcess" name="SubProcess-1" bpmn:id="_-IzjIFOrEd-qUNL1xc5jrA">
+ <bpel:variables>
+ <bpel:variable name="this_33RequestMsg" messageType="this:_33Request"/>
+ <bpel:variable name="this_32ResponseMsg" messageType="this:_32Response"/>
+ <bpel:variable name="this_32RequestMsg" messageType="this:_32Request"/>
+ <bpel:variable name="this_33ResponseMsg" messageType="this:_33Response"/>
+ </bpel:variables>
+ <bpel:sequence>
+ <bpel:assign name="init-variables-SubProcess" bpmn:id="_-IzjIFOrEd-qUNL1xc5jrA">
+ <bpel:copy bpmn:label="$this_32ResponseMsg">
+ <bpel:from>
+ <bpel:literal>
+<this:_32Response></this:_32Response></bpel:literal>
+ </bpel:from>
+ <bpel:to>$this_32ResponseMsg.body</bpel:to>
+ </bpel:copy>
+ <bpel:copy bpmn:label="$this_33ResponseMsg">
+ <bpel:from>
+ <bpel:literal>
+<this:_33Response></this:_33Response></bpel:literal>
+ </bpel:from>
+ <bpel:to>$this_33ResponseMsg.body</bpel:to>
+ </bpel:copy>
+ </bpel:assign>
+ <bpel:pick bpmn:label="Exclusive_Event-Based_Gateway" name="Exclusive_Event-Based_Gateway" bpmn:id="_rFdx4FOnEd-qUNL1xc5jrA">
+ <bpel:onMessage partnerLink="pool3AndPool2PlkVar" portType="this:ForPool2" operation="_32" variable="this_32RequestMsg" bpmn:label="32" name="_32" bpmn:id="_tDPGIFOnEd-qUNL1xc5jrA">
+ <bpel:correlations>
+ <bpel:correlation set="newCorrelationSet" initiate="join"/>
+ </bpel:correlations>
+ <bpel:sequence>
+ <bpel:assign name="init-variables-SubProcess" bpmn:id="_-IzjIFOrEd-qUNL1xc5jrA">
+ <bpel:copy bpmn:label="$this_32ResponseMsg">
+ <bpel:from>
+ <bpel:literal>
+<this:_32Response></this:_32Response></bpel:literal>
+ </bpel:from>
+ <bpel:to>$this_32ResponseMsg.body</bpel:to>
+ </bpel:copy>
+ <bpel:copy bpmn:label="$this_33ResponseMsg">
+ <bpel:from>
+ <bpel:literal>
+<this:_33Response></this:_33Response></bpel:literal>
+ </bpel:from>
+ <bpel:to>$this_33ResponseMsg.body</bpel:to>
+ </bpel:copy>
+ </bpel:assign>
+ <bpel:wait bpmn:label="wait 30 seconds" name="wait_30_seconds" bpmn:id="_0iKV0FOnEd-qUNL1xc5jrA">
+ <bpel:for>"PT3S"</bpel:for>
+ </bpel:wait>
+ <bpel:reply partnerLink="pool3AndPool2PlkVar" portType="this:ForPool2" operation="_32" variable="this_32ResponseMsg" bpmn:label="34" name="_34" bpmn:id="_2OMZ0FOnEd-qUNL1xc5jrA"></bpel:reply>
+ </bpel:sequence>
+ </bpel:onMessage>
+ <bpel:onMessage partnerLink="pool3AndPool2PlkVar" portType="this:ForPool2" operation="_33" variable="this_33RequestMsg" bpmn:label="33" name="_33" bpmn:id="_uhaUUFOnEd-qUNL1xc5jrA">
+ <bpel:correlations>
+ <bpel:correlation set="newCorrelationSet" initiate="join"/>
+ </bpel:correlations>
+ <bpel:sequence>
+ <bpel:assign name="init-variables-SubProcess" bpmn:id="_-IzjIFOrEd-qUNL1xc5jrA">
+ <bpel:copy bpmn:label="$this_32ResponseMsg">
+ <bpel:from>
+ <bpel:literal>
+<this:_32Response></this:_32Response></bpel:literal>
+ </bpel:from>
+ <bpel:to>$this_32ResponseMsg.body</bpel:to>
+ </bpel:copy>
+ <bpel:copy bpmn:label="$this_33ResponseMsg">
+ <bpel:from>
+ <bpel:literal>
+<this:_33Response></this:_33Response></bpel:literal>
+ </bpel:from>
+ <bpel:to>$this_33ResponseMsg.body</bpel:to>
+ </bpel:copy>
+ </bpel:assign>
+ <bpel:reply partnerLink="pool3AndPool2PlkVar" portType="this:ForPool2" operation="_33" variable="this_33ResponseMsg" bpmn:label="33 reply" name="_33_reply" bpmn:id="_xW4AYFO5Ed-_Q-SZnn1pGA"></bpel:reply>
+ </bpel:sequence>
+ </bpel:onMessage>
+ </bpel:pick>
+ </bpel:sequence>
+ </bpel:scope>
+ </bpel:forEach>
+ </bpel:scope>
+ </bpel:sequence>
+</bpel:process>
Added: branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool3.wsdl
===================================================================
--- branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool3.wsdl (rev 0)
+++ branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool3.wsdl 2010-05-28 04:59:49 UTC (rev 677)
@@ -0,0 +1,100 @@
+<?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 xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:pnlk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable" xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop" xmlns:this="http://example.com/ReproduceIsolationProblem/Pool3" xmlns:Pool2="http://example.com/ReproduceIsolationProblem/Pool2" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:diag="http://example.com/ReproduceIsolationProblem" xmlns:xml="http://www.w3.org/XML/1998/namespace" targetNamespace="http://example.com/ReproduceIsolationProblem/Pool3">
+ <wsdl:types>
+ <xs:schema elementFormDefault="qualified" targetNamespace="http://example.com/ReproduceIsolationProblem/Pool3">
+ <xs:element name="_31Request" type="xs:string"/>
+ <xs:element name="_32Request" type="xs:string"/>
+ <xs:element name="_32Response" type="xs:string"/>
+ <xs:element name="_33Request" type="xs:string"/>
+ <xs:element name="_33Response" type="xs:string"/>
+ </xs:schema>
+ </wsdl:types>
+ <wsdl:message name="_31Request">
+ <wsdl:part name="body" element="this:_31Request"/>
+ </wsdl:message>
+ <wsdl:message name="_32Request">
+ <wsdl:part name="body" element="this:_32Request"/>
+ </wsdl:message>
+ <wsdl:message name="_32Response">
+ <wsdl:part name="body" element="this:_32Response"/>
+ </wsdl:message>
+ <wsdl:message name="_33Request">
+ <wsdl:part name="body" element="this:_33Request"/>
+ </wsdl:message>
+ <wsdl:message name="_33Response">
+ <wsdl:part name="body" element="this:_33Response"/>
+ </wsdl:message>
+ <wsdl:portType name="ForPool2">
+ <wsdl:operation name="_31">
+ <wsdl:input message="this:_31Request" name="_31"/>
+ </wsdl:operation>
+ <wsdl:operation name="_32">
+ <wsdl:input message="this:_32Request" name="_32"/>
+ <wsdl:output message="this:_32Response" name="_32Response"/>
+ </wsdl:operation>
+ <wsdl:operation name="_33">
+ <wsdl:input message="this:_33Request" name="_33"/>
+ <wsdl:output message="this:_33Response" name="_33Response"/>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="CanonicBindingForPool2" type="this:ForPool2">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+ <wsdl:operation name="_31">
+ <soap:operation style="document" soapAction="http://example.com/ReproduceIsolationProblem/Pool3/ForPool2/_31"/>
+ <wsdl:input name="_31">
+ <soap:body use="literal"/>
+ </wsdl:input>
+ </wsdl:operation>
+ <wsdl:operation name="_32">
+ <soap:operation style="document" soapAction="http://example.com/ReproduceIsolationProblem/Pool3/ForPool2/_32"/>
+ <wsdl:input name="_32">
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output name="_32Response">
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="_33">
+ <soap:operation style="document" soapAction="http://example.com/ReproduceIsolationProblem/Pool3/ForPool2/_33"/>
+ <wsdl:input name="_33">
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output name="_33Response">
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="CanonicServiceForPool2">
+ <wsdl:port name="canonicPort" binding="this:CanonicBindingForPool2">
+ <soap:address location="http://localhost:8080/ode/processes/Project-Reproduce-Isolation-Problem/R..."/>
+ </wsdl:port>
+ </wsdl:service>
+ <vprop:property name="prop" type="xs:string"/>
+ <vprop:propertyAlias propertyName="this:prop" messageType="this:_31Request" part="body">
+ <vprop:query>text()</vprop:query>
+ </vprop:propertyAlias>
+ <vprop:propertyAlias propertyName="this:prop" messageType="this:_33Request" part="body">
+ <vprop:query>text()</vprop:query>
+ </vprop:propertyAlias>
+ <vprop:propertyAlias propertyName="this:prop" messageType="this:_32Request" part="body">
+ <vprop:query>text()</vprop:query>
+ </vprop:propertyAlias>
+</wsdl:definitions>
Added: branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem.svg
===================================================================
--- branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem.svg (rev 0)
+++ branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem.svg 2010-05-28 04:59:49 UTC (rev 677)
@@ -0,0 +1,739 @@
+<?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.
+ -->
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-dasharray="none" shape-rendering="auto" font-family="'Dialog'" width="1549" text-rendering="auto" fill-opacity="1" contentScriptType="text/ecmascript" color-interpolation="auto" color-rendering="auto" preserveAspectRatio="xMidYMid meet" font-size="12" viewBox="0 0 1549 814" fill="black" stroke="black" image-rendering="auto" stroke-miterlimit="10" zoomAndPan="magnify" version="1.0" stroke-linecap="square" stroke-linejoin="miter" contentStyleType="text/css" font-style="normal" height="814" stroke-width="1" stroke-dashoffset="0" font-weight="normal" stroke-opacity="1" xmlns:bpmn="http://www.intalio.com/bpms">
+<!--Generated by the Batik Graphics2D SVG Generator-->
+<defs id="genericDefs"/>
+<g>
+<defs id="defs1">
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath1">
+<path d="M38 38 L1540 38 L1540 240 L38 240 L38 38 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath2">
+<path d="M44 123 L66 123 L66 154 L44 154 L44 123 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3">
+<path d="M125 114 L238 114 L238 177 L125 177 L125 114 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4">
+<path d="M166 135 L193 135 L193 151 L166 151 L166 135 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath5">
+<path d="M64 39 L1539 39 L1539 239 L64 239 L64 39 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath6">
+<path d="M38 272 L1540 272 L1540 543 L38 543 L38 272 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath7">
+<path d="M44 388 L66 388 L66 426 L44 426 L44 388 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath8">
+<path d="M108 319 L221 319 L221 382 L108 382 L108 319 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath9">
+<path d="M154 340 L170 340 L170 356 L154 356 L154 340 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath10">
+<path d="M411 319 L467 319 L467 375 L411 375 L411 319 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath11">
+<path d="M411 319 L463 319 L463 371 L411 371 L411 319 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath12">
+<path d="M259 319 L372 319 L372 382 L259 382 L259 319 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath13">
+<path d="M305 340 L321 340 L321 356 L305 356 L305 340 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath14">
+<path d="M651 302 L764 302 L764 365 L651 365 L651 302 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath15">
+<path d="M697 323 L713 323 L713 339 L697 339 L697 323 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath16">
+<path d="M459 425 L495 425 L495 461 L459 461 L459 425 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath17">
+<path d="M459 425 L491 425 L491 457 L459 457 L459 425 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath18">
+<path d="M446 463 L509 463 L509 479 L446 479 L446 463 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath19">
+<path d="M576 411 L689 411 L689 474 L576 474 L576 411 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath20">
+<path d="M622 432 L638 432 L638 448 L622 448 L622 432 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath21">
+<path d="M902 315 L1015 315 L1015 378 L902 378 L902 315 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath22">
+<path d="M943 336 L970 336 L970 352 L943 352 L943 336 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath23">
+<path d="M64 273 L1539 273 L1539 542 L64 542 L64 273 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath24">
+<path d="M38 557 L1540 557 L1540 805 L38 805 L38 557 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath25">
+<path d="M44 662 L66 662 L66 700 L44 700 L44 662 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath26">
+<path d="M245 610 L358 610 L358 673 L245 673 L245 610 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath27">
+<path d="M291 631 L307 631 L307 647 L291 647 L291 631 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath28">
+<path d="M437 575 L1010 575 L1010 799 L437 799 L437 575 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath29">
+<path d="M586 580 L699 580 L699 643 L586 643 L586 580 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath30">
+<path d="M632 601 L648 601 L648 617 L632 617 L632 601 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath31">
+<path d="M888 580 L1001 580 L1001 643 L888 643 L888 580 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath32">
+<path d="M934 601 L950 601 L950 617 L934 617 L934 601 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath33">
+<path d="M442 643 L498 643 L498 699 L442 699 L442 643 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath34">
+<path d="M442 643 L494 643 L494 695 L442 695 L442 643 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath35">
+<path d="M795 594 L831 594 L831 630 L795 630 L795 594 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath36">
+<path d="M795 594 L827 594 L827 626 L795 626 L795 594 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath37">
+<path d="M768 632 L858 632 L858 648 L768 648 L768 632 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath38">
+<path d="M705 692 L818 692 L818 755 L705 755 L705 692 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath39">
+<path d="M751 713 L767 713 L767 729 L751 729 L751 713 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath40">
+<path d="M859 692 L972 692 L972 755 L859 755 L859 692 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath41">
+<path d="M890 713 L936 713 L936 729 L890 729 L890 713 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath42">
+<path d="M64 558 L1539 558 L1539 804 L64 804 L64 558 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath43">
+<path d="M-1 -1 L1550 -1 L1550 815 L-1 815 L-1 -1 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath44">
+<path d="M895 331 L905 331 L905 340 L895 340 L895 331 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath45">
+<path d="M644 327 L654 327 L654 336 L644 336 L644 327 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath46">
+<path d="M404 341 L414 341 L414 350 L404 350 L404 341 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath47">
+<path d="M252 344 L262 344 L262 353 L252 353 L252 344 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath48">
+<path d="M569 436 L579 436 L579 445 L569 445 L569 436 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath49">
+<path d="M895 350 L905 350 L905 359 L895 359 L895 350 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath50">
+<path d="M452 437 L462 437 L462 446 L452 446 L452 437 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath51">
+<path d="M579 605 L589 605 L589 614 L579 614 L579 605 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath52">
+<path d="M788 605 L798 605 L798 614 L788 614 L788 605 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath53">
+<path d="M430 676 L440 676 L440 685 L430 685 L430 676 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath54">
+<path d="M698 717 L708 717 L708 726 L698 726 L698 717 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath55">
+<path d="M852 717 L862 717 L862 726 L852 726 L852 717 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath56">
+<path d="M881 605 L891 605 L891 614 L881 614 L881 605 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath57">
+<path d="M156 167 L166 167 L166 177 L156 177 L156 167 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath58">
+<path d="M156 313 L167 313 L167 322 L156 322 L156 313 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath59">
+<path d="M308 372 L318 372 L318 382 L308 382 L308 372 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath60">
+<path d="M294 604 L305 604 L305 613 L294 613 L294 604 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath61">
+<path d="M682 355 L692 355 L692 365 L682 365 L682 355 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath62">
+<path d="M635 574 L646 574 L646 583 L635 583 L635 574 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath63">
+<path d="M607 464 L617 464 L617 474 L607 474 L607 464 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath64">
+<path d="M754 686 L765 686 L765 695 L754 695 L754 686 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath65">
+<path d="M937 576 L947 576 L947 586 L937 586 L937 576 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath66">
+<path d="M717 359 L728 359 L728 368 L717 368 L717 359 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath67">
+<path d="M908 688 L918 688 L918 698 L908 698 L908 688 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath68">
+<path d="M642 468 L653 468 L653 477 L642 477 L642 468 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath69">
+<path d="M951 311 L961 311 L961 321 L951 321 L951 311 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath70">
+<path d="M191 171 L202 171 L202 180 L191 180 L191 171 Z"/>
+</clipPath>
+</defs>
+<g font-size="16" fill="rgb(139,139,153)" font-family="'Arial'" stroke-linejoin="round" stroke="rgb(139,139,153)" stroke-miterlimit="0">
+<rect x="39" y="39" clip-path="url(#clipPath1)" width="26" height="200" stroke="none" bpmn:process-id="_ao2OcFOnEd-qUNL1xc5jrA" bpmn:process-name="Pool"/>
+<rect x="65" y="39" clip-path="url(#clipPath1)" fill="rgb(232,232,255)" width="1474" height="200" stroke="none"/>
+<rect x="39" y="39" clip-path="url(#clipPath1)" fill="none" width="1500" height="200" stroke="black" bpmn:process-id="_ao2OcFOnEd-qUNL1xc5jrA" bpmn:process-name="Pool"/>
+<image stroke="black" width="14" xlink:show="embed" xlink:type="simple" fill="black" clip-path="url(#clipPath2)" preserveAspectRatio="none" height="25" x="45" y="124" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAZCAYAAAABmx/yAAABmklEQVR42mPs7p75
nwEKnv9hwAskWRBsFmSJuX0b8GqsKQvArrEs9CMDsQBFI5tiPJgGuf3Oj/8MV1//
YWBiZGDQEGZhUOVkxK0RBo4//cGwe95KBvX/N4A8RoZl/1UYnBMjGGzluPBrPLBm
OUOe908GQZ0kMP/D1X0M0zesYLDNS4KrYcLqga83GQSNUoBuVwVjAcNkhv9fb6Mo
waqRE+jJK58YGX4D2SB85RMTA8fff4T9GGijzLBw4iIGVl1HMP/X5f0M8bZKhDUq
2EUxlIovY3h1ZQaYLxaizMClEUNY439GboanCikMV7m/QaODi0GVkZGBcTQ6yIwO
UAKXJTU6PgFds+HmN4YXTz8xyCvGMPgGMzNwgeOAFRy6ODWu3HGF4e+xuQxO4r8Z
TuznYFjnmskQ46BMOD/eOraCoSXbl4FdwoRB/eFRhvbFKxgYHKqxakQN1Z+vGdgl
gQHCyMfAK+/K8PvTY5wlAJbogPqFkQUaVEQUHSBw8uM/nHxzfibsGqVB6bSzAyff
vK0Ku8a86ig0+61xOhUA6Higf32xHwgAAAAASUVORK5CYII=" xlink:actuate="onLoad"/>
+<rect x="129" y="118" clip-path="url(#clipPath3)" fill="black" width="107" rx="3.5" opacity="0.2745" ry="3.5" height="57" stroke="none"/>
+<rect x="126" y="115" clip-path="url(#clipPath3)" fill="white" width="107" rx="4.5" ry="4.5" height="57" stroke="none"/>
+<rect x="126" y="115" clip-path="url(#clipPath3)" fill="none" width="106" rx="4" ry="4" height="56" stroke="black"/>
+<text x="167" y="151" clip-path="url(#clipPath4)" fill="black" stroke="none" xml:space="preserve">Task</text>
+<line clip-path="url(#clipPath5)" fill="none" x1="65" x2="65" y1="40" y2="237" stroke="rgb(169,169,169)"/>
+<rect x="39" y="39" clip-path="url(#clipPath1)" fill="none" width="1500" height="200" stroke="rgb(169,169,169)" bpmn:process-id="_ao2OcFOnEd-qUNL1xc5jrA" bpmn:process-name="Pool"/>
+<rect x="39" y="273" clip-path="url(#clipPath6)" fill="rgb(232,232,255)" width="1500" height="269" stroke="none" bpmn:process-id="_bR-rAFOnEd-qUNL1xc5jrA" bpmn:process-name="Pool2"/>
+<rect x="39" y="273" clip-path="url(#clipPath6)" fill="none" width="1500" height="269" stroke="black" bpmn:process-id="_bR-rAFOnEd-qUNL1xc5jrA" bpmn:process-name="Pool2"/>
+<image stroke="black" width="14" xlink:show="embed" xlink:type="simple" fill="black" clip-path="url(#clipPath7)" preserveAspectRatio="none" height="32" x="45" y="389" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAgCAYAAAAi7kmXAAACfElEQVR42u2UbUhT
YRTH//e6xcrSOTSSGYWURRBJbWorBjp7h2AtIlhYS9fLtK3g4getMEFWw/qiZvPD
iKVFRPZB2m5RYtgiMCsYFFEj+hBuvQ1Gsjnn1t11W1vubtbnDhy45zz39zzPeXkO
4XZHIohJmNGXfuBbEKhcAhSQSMjdr2Goin47kpaAa2NeHJadgFG6A4ozNN75E3ui
UapI/jUVNFMNeHjuCx7RCrRManDweC/c07HFwAg3SPocEO+7DX5pM/b3PsfJiBEa
ow1TmCspYD5j3vcQYA/hr0BDzz2U2o/AcOdDZtBUvxlnt9dh6PGn2cU8CS73mxDs
UMwBcyiqrS1uiCXbUCcZRdnyQvCEq1gfT7QBe/YuRe3UMxTXUgmQl7zLm5AIKDcz
X0w2g3EvARSqIWhXppyYAqqrW5FJXjk60oOOKxOYr6SAiyotiQ5y+CKgXQGQTPoU
KwWQ5xPcYFysTh86DxlQExlmY2wMb8Vpaze0G4WZwW7qFOjzP1Gy6wZrf37QBWVL
E7R0f/o6JuT7MEpUt5i7y1kVKwcQ+THK3QCJDmKCtLsJBKItyqjdQ2Lx9Ez2GC9q
ZdDsrIdgdxNr+209sGirsoNS5lU8LdPhvV3F2qs7ZRDW9GUHw6QITulN0CJvrBwF
kDMf5P9y/GM5onOt/G/L4QkBrSNe!
vHV6sKnCjHYTH0I2mIWzD5oL1F+yIWRRw7Am
AGtXHpqpQfTptmR/j08seriGLiB37QFUv7Cg4pge0I2nBVOzOulC7jomIeQyFEkp
+N2vOScAyekiFsRmwTxGR1QGJmY4bXVxTnpwPaPXZVWctvrjWHqQHr/6x/lHOa/6
C8vB6emtha8jAAAAAElFTkSuQmCC" xlink:actuate="onLoad"/>
+<rect x="112" y="323" clip-path="url(#clipPath8)" fill="black" width="107" rx="3.5" opacity="0.2745" ry="3.5" height="57" stroke="none"/>
+<rect x="109" y="320" clip-path="url(#clipPath8)" fill="white" width="107" rx="4.5" ry="4.5" height="57" stroke="none" bpmn:process-id="_bR-rAFOnEd-qUNL1xc5jrA" bpmn:activity-id="_bzzlsFOnEd-qUNL1xc5jrA" bpmn:activity-label="21"/>
+<rect x="109" y="320" clip-path="url(#clipPath8)" fill="none" width="106" rx="4" ry="4" height="56" stroke="black" bpmn:process-id="_bR-rAFOnEd-qUNL1xc5jrA" bpmn:activity-id="_bzzlsFOnEd-qUNL1xc5jrA" bpmn:activity-label="21"/>
+<text x="155" y="356" clip-path="url(#clipPath9)" fill="black" stroke="none" xml:space="preserve">21</text>
+<polygon fill="black" clip-path="url(#clipPath10)" opacity="0.2745" points=" 440 322 465 347 440 372 415 347" stroke="none"/>
+<polygon fill="white" stroke-width="2" clip-path="url(#clipPath11)" points=" 437 321 461 345 437 369 413 345" stroke="none"/>
+<polygon fill="none" stroke-width="2" clip-path="url(#clipPath11)" points=" 437 321 461 345 437 369 413 345" stroke="rgb(64,64,64)"/>
+<line clip-path="url(#clipPath11)" fill="none" x1="437" x2="437" y1="336" y2="354" stroke="rgb(64,64,64)" stroke-width="8"/>
+<line clip-path="url(#clipPath11)" fill="none" x1="428" x2="446" y1="345" y2="345" stroke="rgb(64,64,64)" stroke-width="8"/>
+<rect x="263" y="323" clip-path="url(#clipPath12)" fill="black" width="107" rx="3.5" opacity="0.2745" ry="3.5" height="57" stroke="none"/>
+<rect x="260" y="320" clip-path="url(#clipPath12)" fill="white" width="107" rx="4.5" ry="4.5" height="57" stroke="none" bpmn:process-id="_bR-rAFOnEd-qUNL1xc5jrA" bpmn:activity-id="_lf1mIFOnEd-qUNL1xc5jrA" bpmn:activity-label="22"/>
+<rect x="260" y="320" clip-path="url(#clipPath12)" fill="none" width="106" rx="4" ry="4" height="56" stroke="black" bpmn:process-id="_bR-rAFOnEd-qUNL1xc5jrA" bpmn:activity-id="_lf1mIFOnEd-qUNL1xc5jrA" bpmn:activity-label="22"/>
+<text x="306" y="356" clip-path="url(#clipPath13)" fill="black" stroke="none" xml:space="preserve">22</text>
+<rect x="655" y="306" clip-path="url(#clipPath14)" fill="black" width="107" rx="3.5" opacity="0.2745" ry="3.5" height="57" stroke="none"/>
+<rect x="652" y="303" clip-path="url(#clipPath14)" fill="white" width="107" rx="4.5" ry="4.5" height="57" stroke="none" bpmn:process-id="_bR-rAFOnEd-qUNL1xc5jrA" bpmn:activity-id="_vhobMFOnEd-qUNL1xc5jrA" bpmn:activity-label="23"/>
+<rect x="652" y="303" clip-path="url(#clipPath14)" fill="none" width="106" rx="4" ry="4" height="56" stroke="black" bpmn:process-id="_bR-rAFOnEd-qUNL1xc5jrA" bpmn:activity-id="_vhobMFOnEd-qUNL1xc5jrA" bpmn:activity-label="23"/>
+<text x="698" y="339" clip-path="url(#clipPath15)" fill="black" stroke="none" xml:space="preserve">23</text>
+<circle clip-path="url(#clipPath16)" fill="black" r="14.5" cx="476.5" opacity="0.2745" cy="442.5" stroke="none"/>
+<circle clip-path="url(#clipPath17)" fill="white" r="14.5" cx="474.5" cy="440.5" stroke="none"/>
+<circle clip-path="url(#clipPath17)" fill="none" r="11.5" cx="474.5" cy="440.5" stroke="black"/>
+<circle clip-path="url(#clipPath17)" fill="none" r="14.5" cx="474.5" cy="440.5" stroke="black"/>
+<circle clip-path="url(#clipPath17)" fill="none" r="7.5" cx="474.5" cy="440.5" stroke="black"/>
+<line clip-path="url(#clipPath17)" fill="none" x1="480" x2="481" y1="441" y2="441" stroke="black"/>
+<line clip-path="url(#clipPath17)" fill="none" x1="479" x2="480" y1="443" y2="444" stroke="black"/>
+<line clip-path="url(#clipPath17)" fill="none" x1="477" x2="478" y1="445" y2="446" stroke="black"/>
+<line clip-path="url(#clipPath17)" fill="none" x1="475" x2="475" y1="446" y2="447" stroke="black"/>
+<line clip-path="url(#clipPath17)" fill="none" x1="472" x2="471" y1="445" y2="446" stroke="black"/>
+<line clip-path="url(#clipPath17)" fill="none" x1="470" x2="469" y1="443" y2="444" stroke="black"/>
+<line clip-path="url(#clipPath17)" fill="none" x1="469" x2="468" y1="441" y2="441" stroke="black"/>
+<line clip-path="url(#clipPath17)" fill="none" x1="470" x2="469" y1="438" y2="437" stroke="black"/>
+<line clip-path="url(#clipPath17)" fill="none" x1="472" x2="471" y1="436" y2="435" stroke="black"/>
+<line clip-path="url(#clipPath17)" fill="none" x1="475" x2="475" y1="435" y2="434" stroke="black"/>
+<line clip-path="url(#clipPath17)" fill="none" x1="477" x2="478" y1="436" y2="435" stroke="black"/>
+<line clip-path="url(#clipPath17)" fill="none" x1="479" x2="480" y1="438" y2="437" stroke="black"/>
+<line clip-path="url(#clipPath17)" fill="none" x1="475" x2="476" y1="441" y2="435" stroke="black"/>
+<line clip-path="url(#clipPath17)" fill="none" x1="475" x2="479" y1="441" y2="440" stroke="black"/>
+<text x="447" y="479" clip-path="url(#clipPath18)" fill="black" stroke="none" xml:space="preserve">wait 10 sec</text>
+<rect x="580" y="415" clip-path="url(#clipPath19)" fill="black" width="107" rx="3.5" opacity="0.2745" ry="3.5" height="57" stroke="none"/>
+<rect x="577" y="412" clip-path="url(#clipPath19)" fill="white" width="107" rx="4.5" ry="4.5" height="57" stroke="none" bpmn:process-id="_bR-rAFOnEd-qUNL1xc5jrA" bpmn:activity-id="_xAHLYFOnEd-qUNL1xc5jrA" bpmn:activity-label="34"/>
+<rect x="577" y="412" clip-path="url(#clipPath19)" fill="none" width="106" rx="4" ry="4" height="56" stroke="black" bpmn:process-id="_bR-rAFOnEd-qUNL1xc5jrA" bpmn:activity-id="_xAHLYFOnEd-qUNL1xc5jrA" bpmn:activity-label="34"/>
+<text x="623" y="448" clip-path="url(#clipPath20)" fill="black" stroke="none" xml:space="preserve">34</text>
+<rect x="906" y="319" clip-path="url(#clipPath21)" fill="black" width="107" rx="3.5" opacity="0.2745" ry="3.5" height="57" stroke="none"/>
+<rect x="903" y="316" clip-path="url(#clipPath21)" fill="white" width="107" rx="4.5" ry="4.5" height="57" stroke="none" bpmn:process-id="_bR-rAFOnEd-qUNL1xc5jrA" bpmn:activity-id="_7W620FRaEd-y87rmjcz7YQ" bpmn:activity-label=""/>
+<rect x="903" y="316" clip-path="url(#clipPath21)" fill="none" width="106" rx="4" ry="4" height="56" stroke="black" bpmn:process-id="_bR-rAFOnEd-qUNL1xc5jrA" bpmn:activity-id="_7W620FRaEd-y87rmjcz7YQ" bpmn:activity-label=""/>
+<text x="944" y="352" clip-path="url(#clipPath22)" fill="black" stroke="none" xml:space="preserve">Task</text>
+<line clip-path="url(#clipPath23)" fill="none" x1="65" x2="65" y1="274" y2="540" stroke="rgb(169,169,169)"/>
+<rect x="39" y="273" clip-path="url(#clipPath6)" fill="none" width="1500" height="269" stroke="rgb(169,169,169)" bpmn:process-id="_bR-rAFOnEd-qUNL1xc5jrA" bpmn:process-name="Pool2"/>
+<rect x="39" y="558" clip-path="url(#clipPath24)" fill="rgb(232,232,255)" width="1500" height="246" stroke="none" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:process-name="Pool3"/>
+<rect x="39" y="558" clip-path="url(#clipPath24)" fill="none" width="1500" height="246" stroke="black" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:process-name="Pool3"/>
+<image stroke="black" width="14" xlink:show="embed" xlink:type="simple" fill="black" clip-path="url(#clipPath25)" preserveAspectRatio="none" height="32" x="45" y="663" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAgCAYAAAAi7kmXAAACj0lEQVR42u2UX0hT
cRTHv/fabHOhaxEVSgWiiRCsP5u2aqBDSKsHMRKZUWZLWrrJGJFZWQOhQvNhK1Fo
iKXRi4UNnRCm1HqoxGpQkIweKtywlKyluavrt5vK7rjXWc8dONzfOfw+9/c733Pv
oXy+UAgR9p14HHEJ8ecBYHgsCNU6EbaRBBWxb0Uk9MjHwHThMcRyKU6VKdBQYkbG
Nzea1mhh7ahHcbqUH7xUfR6OtHsYGw/ixIEMuOtESD1Yh5EHLSgxm1HsbFncS0eC
P993Isv6GvubniFz5SBSS7sA2SGkHe3G7KfuyK1cMIFh0PeFXCd+I+7bjpCiJAiS
vNMvQiJHiSiwsXwnzuYdw6/ADJJyb7E558BH1OSVorFCzQE5NWZVtcG9qwZiaVjX
PxrmJb+B1k5O3NssDL5l5ICCCDATkdyUT7wAYChkxguAupxaLGXD7np+0H19FMs1
DpiQ5WCfc+GXTIbg8k6DJvJpN4uhSaKEwQVr90yiodSE3FA/K9LpuT2obrdDv122
NGi3VMF18QdS8m+z8ec+GwrPVULvusPfx0X72o+Uorvk7hrWkws7EBp/IvwBLFgS
KbLXR2GarMPe66exKjgbu8YrejXK9pVDXFDJxlM9N+DQZ8cGlRXNeJpuwEhvERun
Naghy22NDc7RcniUnXDJJ+bbsRo!
asqD/t+Mf2xGeEIq/bYefAWoHJvDO48cOVQus
10SQscVIwJ2qUaDxag8Yhw6mLdNotyXijKULrYbdsf/HQYcR3oeXIc04jJyXDqhO
GgHDEC/IVTXghTSTCEKvx1qlBVO+V4ITgBZMUfHzs2AZoyNsHaOzgrFuQxw/uJV4
mzpbMNZ9eMEPuoZuRp1/XPCqvwGOVO9fqXXaLgAAAABJRU5ErkJggg==" xlink:actuate="onLoad"/>
+<rect x="249" y="614" clip-path="url(#clipPath26)" fill="black" width="107" rx="3.5" opacity="0.2745" ry="3.5" height="57" stroke="none"/>
+<rect x="246" y="611" clip-path="url(#clipPath26)" fill="white" width="107" rx="4.5" ry="4.5" height="57" stroke="none" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:activity-id="_k1rO0FOnEd-qUNL1xc5jrA" bpmn:activity-label="31"/>
+<rect x="246" y="611" clip-path="url(#clipPath26)" fill="none" width="106" rx="4" ry="4" height="56" stroke="black" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:activity-id="_k1rO0FOnEd-qUNL1xc5jrA" bpmn:activity-label="31"/>
+<text x="292" y="647" clip-path="url(#clipPath27)" fill="black" stroke="none" xml:space="preserve">31</text>
+<rect x="441" y="579" clip-path="url(#clipPath28)" fill="black" width="567" rx="3.5" opacity="0.2745" ry="3.5" height="208" stroke="none"/>
+<rect x="438" y="576" clip-path="url(#clipPath28)" fill="white" width="567" rx="4" ry="4" height="208" stroke="none" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:activity-id="_-IzjIFOrEd-qUNL1xc5jrA" bpmn:activity-label=""/>
+<rect x="438" y="576" clip-path="url(#clipPath28)" fill="none" width="566" rx="4" ry="4" height="207" stroke="black" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:activity-id="_-IzjIFOrEd-qUNL1xc5jrA" bpmn:activity-label=""/>
+<rect x="590" y="584" clip-path="url(#clipPath29)" fill="black" width="107" rx="3.5" opacity="0.2745" ry="3.5" height="57" stroke="none"/>
+<rect x="587" y="581" clip-path="url(#clipPath29)" fill="white" width="107" rx="4.5" ry="4.5" height="57" stroke="none" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:activity-id="_xdm_xlOnEd-qUNL1xc5jrA" bpmn:activity-label=""/>
+<rect x="587" y="581" clip-path="url(#clipPath29)" fill="none" width="106" rx="4" ry="4" height="56" stroke="black" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:activity-id="_xdm_xlOnEd-qUNL1xc5jrA" bpmn:activity-label=""/>
+<text x="633" y="617" clip-path="url(#clipPath30)" fill="black" stroke="none" xml:space="preserve">32</text>
+<rect x="892" y="584" clip-path="url(#clipPath31)" fill="black" width="107" rx="3.5" opacity="0.2745" ry="3.5" height="57" stroke="none"/>
+<rect x="889" y="581" clip-path="url(#clipPath31)" fill="white" width="107" rx="4.5" ry="4.5" height="57" stroke="none" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:activity-id="_2OMZ0FOnEd-qUNL1xc5jrA" bpmn:activity-label="34"/>
+<rect x="889" y="581" clip-path="url(#clipPath31)" fill="none" width="106" rx="4" ry="4" height="56" stroke="black" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:activity-id="_2OMZ0FOnEd-qUNL1xc5jrA" bpmn:activity-label="34"/>
+<text x="935" y="617" clip-path="url(#clipPath32)" fill="black" stroke="none" xml:space="preserve">34</text>
+<polygon fill="black" clip-path="url(#clipPath33)" opacity="0.2745" points=" 471 646 496 671 471 696 446 671" stroke="none"/>
+<polygon fill="white" stroke-width="2" clip-path="url(#clipPath34)" points=" 468 645 492 669 468 693 444 669" stroke="none"/>
+<polygon fill="none" stroke-width="2" clip-path="url(#clipPath34)" points=" 468 645 492 669 468 693 444 669" stroke="rgb(64,64,64)"/>
+<circle clip-path="url(#clipPath34)" fill="none" r="14.5" cx="467.5" cy="668.5" stroke="black"/>
+<circle clip-path="url(#clipPath34)" fill="none" r="12.5" cx="467.5" cy="668.5" stroke="black"/>
+<polygon fill="none" clip-path="url(#clipPath34)" points=" 459 665 467 661 476 665 474 675 461 675" stroke="black"/>
+<circle clip-path="url(#clipPath35)" fill="black" r="14.5" cx="812.5" opacity="0.2745" cy="611.5" stroke="none"/>
+<circle clip-path="url(#clipPath36)" fill="white" r="14.5" cx="810.5" cy="609.5" stroke="none"/>
+<circle clip-path="url(#clipPath36)" fill="none" r="11.5" cx="810.5" cy="609.5" stroke="black"/>
+<circle clip-path="url(#clipPath36)" fill="none" r="14.5" cx="810.5" cy="609.5" stroke="black"/>
+<circle clip-path="url(#clipPath36)" fill="none" r="7.5" cx="810.5" cy="609.5" stroke="black"/>
+<line clip-path="url(#clipPath36)" fill="none" x1="816" x2="817" y1="610" y2="610" stroke="black"/>
+<line clip-path="url(#clipPath36)" fill="none" x1="815" x2="816" y1="612" y2="613" stroke="black"/>
+<line clip-path="url(#clipPath36)" fill="none" x1="813" x2="814" y1="614" y2="615" stroke="black"/>
+<line clip-path="url(#clipPath36)" fill="none" x1="811" x2="811" y1="615" y2="616" stroke="black"/>
+<line clip-path="url(#clipPath36)" fill="none" x1="808" x2="807" y1="614" y2="615" stroke="black"/>
+<line clip-path="url(#clipPath36)" fill="none" x1="806" x2="805" y1="612" y2="613" stroke="black"/>
+<line clip-path="url(#clipPath36)" fill="none" x1="805" x2="804" y1="610" y2="610" stroke="black"/>
+<line clip-path="url(#clipPath36)" fill="none" x1="806" x2="805" y1="607" y2="606" stroke="black"/>
+<line clip-path="url(#clipPath36)" fill="none" x1="808" x2="807" y1="605" y2="604" stroke="black"/>
+<line clip-path="url(#clipPath36)" fill="none" x1="811" x2="811" y1="604" y2="603" stroke="black"/>
+<line clip-path="url(#clipPath36)" fill="none" x1="813" x2="814" y1="605" y2="604" stroke="black"/>
+<line clip-path="url(#clipPath36)" fill="none" x1="815" x2="816" y1="607" y2="606" stroke="black"/>
+<line clip-path="url(#clipPath36)" fill="none" x1="811" x2="812" y1="610" y2="604" stroke="black"/>
+<line clip-path="url(#clipPath36)" fill="none" x1="811" x2="815" y1="610" y2="609" stroke="black"/>
+<text x="769" y="648" clip-path="url(#clipPath37)" fill="black" stroke="none" xml:space="preserve">wait 30 seconds</text>
+<rect x="709" y="696" clip-path="url(#clipPath38)" fill="black" width="107" rx="3.5" opacity="0.2745" ry="3.5" height="57" stroke="none"/>
+<rect x="706" y="693" clip-path="url(#clipPath38)" fill="white" width="107" rx="4.5" ry="4.5" height="57" stroke="none" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:activity-id="_uhaUUFOnEd-qUNL1xc5jrA" bpmn:activity-label="33"/>
+<rect x="706" y="693" clip-path="url(#clipPath38)" fill="none" width="106" rx="4" ry="4" height="56" stroke="black" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:activity-id="_uhaUUFOnEd-qUNL1xc5jrA" bpmn:activity-label="33"/>
+<text x="752" y="729" clip-path="url(#clipPath39)" fill="black" stroke="none" xml:space="preserve">33</text>
+<rect x="863" y="696" clip-path="url(#clipPath40)" fill="black" width="107" rx="3.5" opacity="0.2745" ry="3.5" height="57" stroke="none"/>
+<rect x="860" y="693" clip-path="url(#clipPath40)" fill="white" width="107" rx="4.5" ry="4.5" height="57" stroke="none" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:activity-id="_xW4AYFO5Ed-_Q-SZnn1pGA" bpmn:activity-label="33 reply"/>
+<rect x="860" y="693" clip-path="url(#clipPath40)" fill="none" width="106" rx="4" ry="4" height="56" stroke="black" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:activity-id="_xW4AYFO5Ed-_Q-SZnn1pGA" bpmn:activity-label="33 reply"/>
+<text x="891" y="729" clip-path="url(#clipPath41)" fill="black" stroke="none" xml:space="preserve">33 reply</text>
+<rect x="723" y="765" clip-path="url(#clipPath28)" fill="none" width="19" height="19" stroke="black"/>
+<line clip-path="url(#clipPath28)" fill="none" x1="725" x2="739" y1="774" y2="774" stroke="black" stroke-width="2"/>
+<path fill="none" stroke-width="2" d="M715.25 782.6603 A9.5 10 0 1 0 705.75 782.6603" clip-path="url(#clipPath28)" stroke="black"/>
+<line clip-path="url(#clipPath28)" fill="none" x1="701" x2="706" y1="782" y2="782" stroke="black" stroke-width="2"/>
+<line clip-path="url(#clipPath28)" fill="none" x1="706" x2="706" y1="782" y2="777" stroke="black" stroke-width="2"/>
+<line clip-path="url(#clipPath42)" fill="none" x1="65" x2="65" y1="559" y2="802" stroke="rgb(169,169,169)"/>
+<rect x="39" y="558" clip-path="url(#clipPath24)" fill="none" width="1500" height="246" stroke="rgb(169,169,169)" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:process-name="Pool3"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="759" x2="829" y1="331" y2="331" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="829" x2="829" y1="331" y2="331" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="829" x2="830" y1="331" y2="331" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="830" x2="830" y1="331" y2="331" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="830" x2="830" y1="331" y2="332" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="830" x2="831" y1="332" y2="333" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="831" x2="831" y1="333" y2="333" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="831" x2="831" y1="333" y2="333" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="831" x2="831" y1="333" y2="334" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="831" x2="831" y1="334" y2="334" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="831" x2="832" y1="334" y2="334" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="832" x2="833" y1="334" y2="335" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="833" x2="903" y1="335" y2="335" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath44)" opacity="0.6667" points=" 896 338 903 335 896 332" stroke="none"/>
+<line clip-path="url(#clipPath44)" fill="none" x1="896" x2="903" y1="338" y2="335" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath44)" fill="none" x1="903" x2="896" y1="335" y2="332" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="462" x2="549" y1="345" y2="345" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="549" x2="551" y1="345" y2="344" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="551" x2="553" y1="344" y2="343" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="553" x2="554" y1="343" y2="342" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="554" x2="555" y1="342" y2="340" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="555" x2="556" y1="340" y2="338" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="556" x2="556" y1="338" y2="338" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="556" x2="556" y1="338" y2="335" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="556" x2="557" y1="335" y2="333" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="557" x2="558" y1="333" y2="332" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="558" x2="560" y1="332" y2="331" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="560" x2="563" y1="331" y2="331" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="563" x2="652" y1="331" y2="331" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath45)" opacity="0.6667" points=" 645 334 652 331 645 328" stroke="none"/>
+<line clip-path="url(#clipPath45)" fill="none" x1="645" x2="652" y1="334" y2="331" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath45)" fill="none" x1="652" x2="645" y1="331" y2="328" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="367" x2="387" y1="348" y2="348" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="387" x2="387" y1="348" y2="347" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="387" x2="388" y1="347" y2="347" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="388" x2="388" y1="347" y2="347" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="388" x2="388" y1="347" y2="346" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="388" x2="389" y1="346" y2="346" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="389" x2="389" y1="346" y2="346" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="389" x2="389" y1="346" y2="346" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="389" x2="389" y1="346" y2="345" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="389" x2="389" y1="345" y2="345" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="389" x2="390" y1="345" y2="345" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="390" x2="390" y1="345" y2="345" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="390" x2="412" y1="345" y2="345" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath46)" opacity="0.6667" points=" 405 348 412 345 405 342" stroke="none"/>
+<line clip-path="url(#clipPath46)" fill="none" x1="405" x2="412" y1="348" y2="345" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath46)" fill="none" x1="412" x2="405" y1="345" y2="342" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="216" x2="260" y1="348" y2="348" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath47)" opacity="0.6667" points=" 253 351 260 348 253 345" stroke="none"/>
+<line clip-path="url(#clipPath47)" fill="none" x1="253" x2="260" y1="351" y2="348" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath47)" fill="none" x1="260" x2="253" y1="348" y2="345" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="490" x2="577" y1="440" y2="440" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath48)" opacity="0.6667" points=" 570 443 577 440 570 437" stroke="none"/>
+<line clip-path="url(#clipPath48)" fill="none" x1="570" x2="577" y1="443" y2="440" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath48)" fill="none" x1="577" x2="570" y1="440" y2="437" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="684" x2="777" y1="440" y2="440" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="777" x2="781" y1="440" y2="439" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="781" x2="786" y1="439" y2="436" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="786" x2="789" y1="436" y2="433" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="789" x2="792" y1="433" y2="428" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="792" x2="793" y1="428" y2="424" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="793" x2="793" y1="424" y2="370" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="793" x2="793" y1="370" y2="365" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="793" x2="796" y1="365" y2="360" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="796" x2="799" y1="360" y2="357" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="799" x2="804" y1="357" y2="354" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="804" x2="809" y1="354" y2="354" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="809" x2="903" y1="354" y2="354" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath49)" opacity="0.6667" points=" 896 357 903 354 896 351" stroke="none"/>
+<line clip-path="url(#clipPath49)" fill="none" x1="896" x2="903" y1="357" y2="354" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath49)" fill="none" x1="903" x2="896" y1="354" y2="351" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="437" x2="437" y1="370" y2="429" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="437" x2="437" y1="429" y2="433" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="437" x2="439" y1="433" y2="436" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="439" x2="441" y1="436" y2="438" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="441" x2="444" y1="438" y2="440" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="444" x2="448" y1="440" y2="441" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="448" x2="460" y1="441" y2="441" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath50)" opacity="0.6667" points=" 453 444 460 441 453 438" stroke="none"/>
+<line clip-path="url(#clipPath50)" fill="none" x1="453" x2="460" y1="444" y2="441" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath50)" fill="none" x1="460" x2="453" y1="441" y2="438" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="468" x2="468" y1="644" y2="625" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="468" x2="468" y1="625" y2="620" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="468" x2="471" y1="620" y2="615" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="471" x2="474" y1="615" y2="612" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="474" x2="479" y1="612" y2="609" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="479" x2="484" y1="609" y2="609" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="484" x2="587" y1="609" y2="609" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath51)" opacity="0.6667" points=" 580 612 587 609 580 606" stroke="none"/>
+<line clip-path="url(#clipPath51)" fill="none" x1="580" x2="587" y1="612" y2="609" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath51)" fill="none" x1="587" x2="580" y1="609" y2="606" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="694" x2="796" y1="609" y2="609" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath52)" opacity="0.6667" points=" 789 612 796 609 789 606" stroke="none"/>
+<line clip-path="url(#clipPath52)" fill="none" x1="789" x2="796" y1="612" y2="609" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath52)" fill="none" x1="796" x2="789" y1="609" y2="606" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="353" x2="379" y1="639" y2="639" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="379" x2="383" y1="639" y2="639" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="383" x2="388" y1="639" y2="642" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="388" x2="391" y1="642" y2="645" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="391" x2="394" y1="645" y2="650" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="394" x2="395" y1="650" y2="655" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="395" x2="395" y1="655" y2="664" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="395" x2="395" y1="664" y2="668" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="395" x2="398" y1="668" y2="673" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="398" x2="401" y1="673" y2="676" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="401" x2="406" y1="676" y2="679" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="406" x2="411" y1="679" y2="680" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="411" x2="438" y1="680" y2="680" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath53)" opacity="0.6667" points=" 431 683 438 680 431 677" stroke="none"/>
+<line clip-path="url(#clipPath53)" fill="none" x1="431" x2="438" y1="683" y2="680" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath53)" fill="none" x1="438" x2="431" y1="680" y2="677" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="468" x2="468" y1="694" y2="707" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="468" x2="468" y1="707" y2="711" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="468" x2="470" y1="711" y2="715" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="470" x2="473" y1="715" y2="718" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="473" x2="477" y1="718" y2="720" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="477" x2="481" y1="720" y2="721" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="481" x2="706" y1="721" y2="721" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath54)" opacity="0.6667" points=" 699 724 706 721 699 718" stroke="none"/>
+<line clip-path="url(#clipPath54)" fill="none" x1="699" x2="706" y1="724" y2="721" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath54)" fill="none" x1="706" x2="699" y1="721" y2="718" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="813" x2="860" y1="721" y2="721" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath55)" opacity="0.6667" points=" 853 724 860 721 853 718" stroke="none"/>
+<line clip-path="url(#clipPath55)" fill="none" x1="853" x2="860" y1="724" y2="721" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath55)" fill="none" x1="860" x2="853" y1="721" y2="718" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="826" x2="889" y1="609" y2="609" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath56)" opacity="0.6667" points=" 882 612 889 609 882 606" stroke="none"/>
+<line clip-path="url(#clipPath56)" fill="none" x1="882" x2="889" y1="612" y2="609" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath56)" fill="none" x1="889" x2="882" y1="609" y2="606" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="161" x2="161" y1="172" y2="320" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<circle clip-path="url(#clipPath57)" fill="white" r="3.5" cx="160.5" cy="171.5" stroke="none"/>
+<circle clip-path="url(#clipPath57)" fill="none" r="3.5" cx="160.5" opacity="0.5882" cy="171.5" stroke="black"/>
+<polygon fill="white" clip-path="url(#clipPath58)" points=" 157 314 161 320 165 314 157 314" stroke="none"/>
+<line clip-path="url(#clipPath58)" fill="none" x1="157" x2="161" y1="314" y2="320" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath58)" fill="none" x1="161" x2="165" y1="320" y2="314" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath58)" fill="none" x1="165" x2="157" y1="314" y2="314" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="216" x2="260" y1="348" y2="348" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath47)" opacity="0.6667" points=" 253 351 260 348 253 345" stroke="none"/>
+<line clip-path="url(#clipPath47)" fill="none" x1="253" x2="260" y1="351" y2="348" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath47)" fill="none" x1="260" x2="253" y1="348" y2="345" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="367" x2="387" y1="348" y2="348" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="387" x2="387" y1="348" y2="347" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="387" x2="388" y1="347" y2="347" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="388" x2="388" y1="347" y2="347" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="388" x2="388" y1="347" y2="346" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="388" x2="389" y1="346" y2="346" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="389" x2="389" y1="346" y2="346" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="389" x2="389" y1="346" y2="346" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="389" x2="389" y1="346" y2="345" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="389" x2="389" y1="345" y2="345" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="389" x2="390" y1="345" y2="345" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="390" x2="390" y1="345" y2="345" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="390" x2="412" y1="345" y2="345" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath46)" opacity="0.6667" points=" 405 348 412 345 405 342" stroke="none"/>
+<line clip-path="url(#clipPath46)" fill="none" x1="405" x2="412" y1="348" y2="345" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath46)" fill="none" x1="412" x2="405" y1="345" y2="342" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="313" x2="313" y1="377" y2="487" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="313" x2="312" y1="487" y2="489" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="312" x2="311" y1="489" y2="491" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="311" x2="310" y1="491" y2="492" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="310" x2="308" y1="492" y2="493" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="308" x2="306" y1="493" y2="494" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="306" x2="306" y1="494" y2="494" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="306" x2="303" y1="494" y2="494" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="303" x2="301" y1="494" y2="495" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="301" x2="300" y1="495" y2="496" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="300" x2="299" y1="496" y2="498" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="299" x2="299" y1="498" y2="501" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="299" x2="299" y1="501" y2="611" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<circle clip-path="url(#clipPath59)" fill="white" r="3.5" cx="312.5" cy="376.5" stroke="none"/>
+<circle clip-path="url(#clipPath59)" fill="none" r="3.5" cx="312.5" opacity="0.5882" cy="376.5" stroke="black"/>
+<polygon fill="white" clip-path="url(#clipPath60)" points=" 295 605 299 611 303 605 295 605" stroke="none"/>
+<line clip-path="url(#clipPath60)" fill="none" x1="295" x2="299" y1="605" y2="611" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath60)" fill="none" x1="299" x2="303" y1="611" y2="605" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath60)" fill="none" x1="303" x2="295" y1="605" y2="605" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="353" x2="379" y1="639" y2="639" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="379" x2="383" y1="639" y2="639" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="383" x2="388" y1="639" y2="642" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="388" x2="391" y1="642" y2="645" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="391" x2="394" y1="645" y2="650" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="394" x2="395" y1="650" y2="655" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="395" x2="395" y1="655" y2="664" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="395" x2="395" y1="664" y2="668" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="395" x2="398" y1="668" y2="673" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="398" x2="401" y1="673" y2="676" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="401" x2="406" y1="676" y2="679" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="406" x2="411" y1="679" y2="680" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="411" x2="438" y1="680" y2="680" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath53)" opacity="0.6667" points=" 431 683 438 680 431 677" stroke="none"/>
+<line clip-path="url(#clipPath53)" fill="none" x1="431" x2="438" y1="683" y2="680" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath53)" fill="none" x1="438" x2="431" y1="680" y2="677" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="468" x2="468" y1="644" y2="625" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="468" x2="468" y1="625" y2="620" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="468" x2="471" y1="620" y2="615" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="471" x2="474" y1="615" y2="612" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="474" x2="479" y1="612" y2="609" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="479" x2="484" y1="609" y2="609" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="484" x2="587" y1="609" y2="609" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath51)" opacity="0.6667" points=" 580 612 587 609 580 606" stroke="none"/>
+<line clip-path="url(#clipPath51)" fill="none" x1="580" x2="587" y1="612" y2="609" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath51)" fill="none" x1="587" x2="580" y1="609" y2="606" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="468" x2="468" y1="694" y2="707" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="468" x2="468" y1="707" y2="711" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="468" x2="470" y1="711" y2="715" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="470" x2="473" y1="715" y2="718" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="473" x2="477" y1="718" y2="720" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="477" x2="481" y1="720" y2="721" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="481" x2="706" y1="721" y2="721" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath54)" opacity="0.6667" points=" 699 724 706 721 699 718" stroke="none"/>
+<line clip-path="url(#clipPath54)" fill="none" x1="699" x2="706" y1="724" y2="721" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath54)" fill="none" x1="706" x2="699" y1="721" y2="718" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="462" x2="549" y1="345" y2="345" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="549" x2="551" y1="345" y2="344" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="551" x2="553" y1="344" y2="343" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="553" x2="554" y1="343" y2="342" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="554" x2="555" y1="342" y2="340" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="555" x2="556" y1="340" y2="338" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="556" x2="556" y1="338" y2="338" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="556" x2="556" y1="338" y2="335" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="556" x2="557" y1="335" y2="333" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="557" x2="558" y1="333" y2="332" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="558" x2="560" y1="332" y2="331" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="560" x2="563" y1="331" y2="331" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="563" x2="652" y1="331" y2="331" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath45)" opacity="0.6667" points=" 645 334 652 331 645 328" stroke="none"/>
+<line clip-path="url(#clipPath45)" fill="none" x1="645" x2="652" y1="334" y2="331" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath45)" fill="none" x1="652" x2="645" y1="331" y2="328" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="437" x2="437" y1="370" y2="429" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="437" x2="437" y1="429" y2="433" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="437" x2="439" y1="433" y2="436" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="439" x2="441" y1="436" y2="438" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="441" x2="444" y1="438" y2="440" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="444" x2="448" y1="440" y2="441" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="448" x2="460" y1="441" y2="441" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath50)" opacity="0.6667" points=" 453 444 460 441 453 438" stroke="none"/>
+<line clip-path="url(#clipPath50)" fill="none" x1="453" x2="460" y1="444" y2="441" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath50)" fill="none" x1="460" x2="453" y1="441" y2="438" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="490" x2="577" y1="440" y2="440" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath48)" opacity="0.6667" points=" 570 443 577 440 570 437" stroke="none"/>
+<line clip-path="url(#clipPath48)" fill="none" x1="570" x2="577" y1="443" y2="440" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath48)" fill="none" x1="577" x2="570" y1="440" y2="437" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="687" x2="687" y1="360" y2="454" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="687" x2="686" y1="454" y2="458" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="686" x2="683" y1="458" y2="463" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="683" x2="680" y1="463" y2="466" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="680" x2="675" y1="466" y2="469" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="675" x2="671" y1="469" y2="470" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="671" x2="656" y1="470" y2="470" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="656" x2="651" y1="470" y2="470" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="651" x2="646" y1="470" y2="473" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="646" x2="643" y1="473" y2="476" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="643" x2="640" y1="476" y2="481" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="640" x2="640" y1="481" y2="486" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="640" x2="640" y1="486" y2="581" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<circle clip-path="url(#clipPath61)" fill="white" r="3.5" cx="686.5" cy="359.5" stroke="none"/>
+<circle clip-path="url(#clipPath61)" fill="none" r="3.5" cx="686.5" opacity="0.5882" cy="359.5" stroke="black"/>
+<polygon fill="white" clip-path="url(#clipPath62)" points=" 636 575 640 581 644 575 636 575" stroke="none"/>
+<line clip-path="url(#clipPath62)" fill="none" x1="636" x2="640" y1="575" y2="581" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath62)" fill="none" x1="640" x2="644" y1="581" y2="575" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath62)" fill="none" x1="644" x2="636" y1="575" y2="575" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="612" x2="612" y1="469" y2="565" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="612" x2="612" y1="565" y2="569" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="612" x2="615" y1="569" y2="574" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="615" x2="618" y1="574" y2="577" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="618" x2="623" y1="577" y2="580" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="623" x2="628" y1="580" y2="581" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="628" x2="743" y1="581" y2="581" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="743" x2="747" y1="581" y2="581" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="747" x2="752" y1="581" y2="584" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="752" x2="755" y1="584" y2="587" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="755" x2="758" y1="587" y2="592" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="758" x2="759" y1="592" y2="597" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="759" x2="759" y1="597" y2="693" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<circle clip-path="url(#clipPath63)" fill="white" r="3.5" cx="611.5" cy="468.5" stroke="none"/>
+<circle clip-path="url(#clipPath63)" fill="none" r="3.5" cx="611.5" opacity="0.5882" cy="468.5" stroke="black"/>
+<polygon fill="white" clip-path="url(#clipPath64)" points=" 755 687 759 693 763 687 755 687" stroke="none"/>
+<line clip-path="url(#clipPath64)" fill="none" x1="755" x2="759" y1="687" y2="693" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath64)" fill="none" x1="759" x2="763" y1="693" y2="687" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath64)" fill="none" x1="763" x2="755" y1="687" y2="687" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="694" x2="796" y1="609" y2="609" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath52)" opacity="0.6667" points=" 789 612 796 609 789 606" stroke="none"/>
+<line clip-path="url(#clipPath52)" fill="none" x1="789" x2="796" y1="612" y2="609" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath52)" fill="none" x1="796" x2="789" y1="609" y2="606" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="826" x2="889" y1="609" y2="609" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath56)" opacity="0.6667" points=" 882 612 889 609 882 606" stroke="none"/>
+<line clip-path="url(#clipPath56)" fill="none" x1="882" x2="889" y1="612" y2="609" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath56)" fill="none" x1="889" x2="882" y1="609" y2="606" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="942" x2="942" y1="581" y2="486" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="942" x2="941" y1="486" y2="481" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="941" x2="938" y1="481" y2="476" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="938" x2="935" y1="476" y2="473" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="935" x2="930" y1="473" y2="470" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="930" x2="926" y1="470" y2="470" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="926" x2="738" y1="470" y2="470" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="738" x2="733" y1="470" y2="469" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="733" x2="728" y1="469" y2="466" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="728" x2="725" y1="466" y2="463" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="725" x2="722" y1="463" y2="458" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="722" x2="722" y1="458" y2="454" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="722" x2="722" y1="454" y2="360" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<circle clip-path="url(#clipPath65)" fill="white" r="3.5" cx="941.5" cy="580.5" stroke="none"/>
+<circle clip-path="url(#clipPath65)" fill="none" r="3.5" cx="941.5" opacity="0.5882" cy="580.5" stroke="black"/>
+<polygon fill="white" clip-path="url(#clipPath66)" points=" 726 366 722 360 718 366 726 366" stroke="none"/>
+<line clip-path="url(#clipPath66)" fill="none" x1="726" x2="722" y1="366" y2="360" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath66)" fill="none" x1="722" x2="718" y1="360" y2="366" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath66)" fill="none" x1="718" x2="726" y1="366" y2="366" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="913" x2="913" y1="693" y2="597" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="913" x2="912" y1="597" y2="592" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="912" x2="909" y1="592" y2="587" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="909" x2="906" y1="587" y2="584" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="906" x2="901" y1="584" y2="581" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="901" x2="897" y1="581" y2="581" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="897" x2="663" y1="581" y2="581" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="663" x2="658" y1="581" y2="580" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="658" x2="653" y1="580" y2="577" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="653" x2="650" y1="577" y2="574" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="650" x2="647" y1="574" y2="569" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="647" x2="647" y1="569" y2="565" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="647" x2="647" y1="565" y2="469" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<circle clip-path="url(#clipPath67)" fill="white" r="3.5" cx="912.5" cy="692.5" stroke="none"/>
+<circle clip-path="url(#clipPath67)" fill="none" r="3.5" cx="912.5" opacity="0.5882" cy="692.5" stroke="black"/>
+<polygon fill="white" clip-path="url(#clipPath68)" points=" 651 475 647 469 643 475 651 475" stroke="none"/>
+<line clip-path="url(#clipPath68)" fill="none" x1="651" x2="647" y1="475" y2="469" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath68)" fill="none" x1="647" x2="643" y1="469" y2="475" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath68)" fill="none" x1="643" x2="651" y1="475" y2="475" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="813" x2="860" y1="721" y2="721" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath55)" opacity="0.6667" points=" 853 724 860 721 853 718" stroke="none"/>
+<line clip-path="url(#clipPath55)" fill="none" x1="853" x2="860" y1="724" y2="721" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath55)" fill="none" x1="860" x2="853" y1="721" y2="718" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="759" x2="829" y1="331" y2="331" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="829" x2="829" y1="331" y2="331" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="829" x2="830" y1="331" y2="331" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="830" x2="830" y1="331" y2="331" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="830" x2="830" y1="331" y2="332" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="830" x2="831" y1="332" y2="333" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="831" x2="831" y1="333" y2="333" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="831" x2="831" y1="333" y2="333" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="831" x2="831" y1="333" y2="334" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="831" x2="831" y1="334" y2="334" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="831" x2="832" y1="334" y2="334" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="832" x2="833" y1="334" y2="335" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="833" x2="903" y1="335" y2="335" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath44)" opacity="0.6667" points=" 896 338 903 335 896 332" stroke="none"/>
+<line clip-path="url(#clipPath44)" fill="none" x1="896" x2="903" y1="338" y2="335" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath44)" fill="none" x1="903" x2="896" y1="335" y2="332" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="956" x2="956" y1="316" y2="260" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="956" x2="955" y1="260" y2="255" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="955" x2="952" y1="255" y2="250" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="952" x2="949" y1="250" y2="247" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="949" x2="944" y1="247" y2="244" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="944" x2="940" y1="244" y2="244" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="940" x2="212" y1="244" y2="244" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="212" x2="207" y1="244" y2="243" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="207" x2="202" y1="243" y2="240" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="202" x2="199" y1="240" y2="237" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="199" x2="196" y1="237" y2="232" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="196" x2="196" y1="232" y2="228" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="196" x2="196" y1="228" y2="172" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<circle clip-path="url(#clipPath69)" fill="white" r="3.5" cx="955.5" cy="315.5" stroke="none"/>
+<circle clip-path="url(#clipPath69)" fill="none" r="3.5" cx="955.5" opacity="0.5882" cy="315.5" stroke="black"/>
+<polygon fill="white" clip-path="url(#clipPath70)" points=" 200 178 196 172 192 178 200 178" stroke="none"/>
+<line clip-path="url(#clipPath70)" fill="none" x1="200" x2="196" y1="178" y2="172" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath70)" fill="none" x1="196" x2="192" y1="172" y2="178" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath70)" fill="none" x1="192" x2="200" y1="178" y2="178" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="684" x2="777" y1="440" y2="440" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="777" x2="781" y1="440" y2="439" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="781" x2="786" y1="439" y2="436" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="786" x2="789" y1="436" y2="433" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="789" x2="792" y1="433" y2="428" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="792" x2="793" y1="428" y2="424" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="793" x2="793" y1="424" y2="370" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="793" x2="793" y1="370" y2="365" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="793" x2="796" y1="365" y2="360" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="796" x2="799" y1="360" y2="357" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="799" x2="804" y1="357" y2="354" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="804" x2="809" y1="354" y2="354" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="809" x2="903" y1="354" y2="354" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath49)" opacity="0.6667" points=" 896 357 903 354 896 351" stroke="none"/>
+<line clip-path="url(#clipPath49)" fill="none" x1="896" x2="903" y1="357" y2="354" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath49)" fill="none" x1="903" x2="896" y1="354" y2="351" opacity="0.6667" stroke="black"/>
+</g>
+</g>
+</svg>
Added: branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem.wsdl
===================================================================
--- branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem.wsdl (rev 0)
+++ branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem.wsdl 2010-05-28 04:59:49 UTC (rev 677)
@@ -0,0 +1,29 @@
+<?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 xmlns:Pool2="http://example.com/ReproduceIsolationProblem/Pool2" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:diag="http://example.com/ReproduceIsolationProblem" xmlns:Pool3="http://example.com/ReproduceIsolationProblem/Pool3" xmlns:Pool="http://example.com/ReproduceIsolationProblem/Pool" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:pnlk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable" xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop" xmlns:bpdm="http://www.intalio/designer/business-process-data-modeling" targetNamespace="http://example.com/ReproduceIsolationProblem">
+ <wsdl:import namespace="http://example.com/ReproduceIsolationProblem/Pool2" location="ReproduceIsolationProblem-Pool2.wsdl"/>
+ <wsdl:import namespace="http://example.com/ReproduceIsolationProblem/Pool3" location="ReproduceIsolationProblem-Pool3.wsdl"/>
+ <pnlk:partnerLinkType name="Pool2AndPool">
+ <pnlk:role name="Pool2_for_Pool" portType="Pool2:ForPool"/>
+ </pnlk:partnerLinkType>
+ <pnlk:partnerLinkType name="Pool3AndPool2">
+ <pnlk:role name="Pool3_for_Pool2" portType="Pool3:ForPool2"/>
+ </pnlk:partnerLinkType>
+</wsdl:definitions>
Added: branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSelectors/deploy.xml
===================================================================
--- branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSelectors/deploy.xml (rev 0)
+++ branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSelectors/deploy.xml 2010-05-28 04:59:49 UTC (rev 677)
@@ -0,0 +1,35 @@
+<?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.
+ -->
+<dd:deploy xmlns:dd="http://www.apache.org/ode/schemas/dd/2007/03"><dd:process xmlns:dd="http://www.apache.org/ode/schemas/dd/2007/03" xmlns:diag="http://example.com/ReproduceIsolationProblem" xmlns:Pool2="http://example.com/ReproduceIsolationProblem/Pool2" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:this="http://example.com/ReproduceIsolationProblem/Pool3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="this:Pool3" fileName="ReproduceIsolationProblem-Pool3.bpel">
+ <dd:property name="PATH">ReproduceIsolationProblem</dd:property>
+ <dd:property name="SVG">ReproduceIsolationProblem.svg</dd:property>
+ <dd:provide partnerLink="pool3AndPool2PlkVar">
+ <dd:service name="this:CanonicServiceForPool2" port="canonicPort"></dd:service>
+ </dd:provide>
+</dd:process><dd:process xmlns:dd="http://www.apache.org/ode/schemas/dd/2007/03" xmlns:diag="http://example.com/ReproduceIsolationProblem" xmlns:Pool3="http://example.com/ReproduceIsolationProblem/Pool3" xmlns:Pool="http://example.com/ReproduceIsolationProblem/Pool" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:this="http://example.com/ReproduceIsolationProblem/Pool2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="this:Pool2" fileName="ReproduceIsolationProblem-Pool2.bpel">
+ <dd:property name="PATH">ReproduceIsolationProblem</dd:property>
+ <dd:property name="SVG">ReproduceIsolationProblem.svg</dd:property>
+ <dd:provide partnerLink="pool2AndPoolPlkVar">
+ <dd:service name="this:CanonicServiceForPool" port="canonicPort"></dd:service>
+ </dd:provide>
+ <dd:invoke partnerLink="pool3AndPool2PlkVar">
+ <dd:service name="Pool3:CanonicServiceForPool2" port="canonicPort"></dd:service>
+ </dd:invoke>
+</dd:process></dd:deploy>
Added: branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSelectors/testRequest.soap
===================================================================
--- branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSelectors/testRequest.soap (rev 0)
+++ branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSelectors/testRequest.soap 2010-05-28 04:59:49 UTC (rev 677)
@@ -0,0 +1,25 @@
+<!--
+ ~ 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.
+ -->
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:pool="http://example.com/ReproduceIsolationProblem/Pool2">
+ <soapenv:Header/>
+ <soapenv:Body>
+ <pool:_21Request>abc1</pool:_21Request>
+ </soapenv:Body>
+</soapenv:Envelope>
+
Modified: branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSoapHeader2/HelloWorld2.wsdl
===================================================================
--- branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSoapHeader2/HelloWorld2.wsdl 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSoapHeader2/HelloWorld2.wsdl 2010-05-28 04:59:49 UTC (rev 677)
@@ -1,4 +1,22 @@
<?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/unit-test.wsdl"
Modified: branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSoapHeader2/deploy.xml
===================================================================
--- branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSoapHeader2/deploy.xml 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSoapHeader2/deploy.xml 2010-05-28 04:59:49 UTC (rev 677)
@@ -1,4 +1,22 @@
<?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.
+ -->
<dd:deploy xmlns:dd="http://www.apache.org/ode/schemas/dd/2007/03"><dd:process xmlns:dd="http://www.apache.org/ode/schemas/dd/2007/03" xmlns:tns="http://ode/bpel/unit-test.wsdl" xmlns:service="http://example.com/hello/service" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:diag="http://example.com/hello" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:client="http://example.com/hello/client" xmlns:this="http://example.com/hello/process" name="this:process" fileName="hello-process.bpel">
<dd:property name="PATH">hello</dd:property>
<dd:property name="SVG">hello.svg</dd:property>
@@ -8,4 +26,4 @@
<dd:invoke partnerLink="serviceAndProcessForHelloPortPlkVar">
<dd:service name="tns:HelloService" port="HelloPort"></dd:service>
</dd:invoke>
-</dd:process></dd:deploy>
\ No newline at end of file
+</dd:process></dd:deploy>
Modified: branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSoapHeader2/hello-process.bpel
===================================================================
--- branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSoapHeader2/hello-process.bpel 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSoapHeader2/hello-process.bpel 2010-05-28 04:59:49 UTC (rev 677)
@@ -1,4 +1,22 @@
<?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.
+ -->
<bpel:process xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable" xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop" xmlns:pnlk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ode="http://www.apache.org/ode/type/extension" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:this="http://example.com/hello/process" xmlns:client="http://example.com/hello/client" xmlns:tns="http://ode/bpel/unit-test.wsdl" xmlns:diag="http://example.com/hello" xmlns:service="http://example.com/hello/service" xmlns:bpmn="http://www.intalio.com/bpms" xmlns:atomic="http://ode.apache.org/atomicScope" queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0" expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0" bpmn:label="process" name="process" bpmn:id="_Ue3NkBenEd6EIOjxNvjNWw" targetNamespace="http://!
example.com/hello/process">
<bpel:import namespace="http://ode/bpel/unit-test.wsdl" location="HelloWorld2.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
<bpel:import namespace="http://example.com/hello" location="hello.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
@@ -78,4 +96,4 @@
</bpel:assign>
<bpel:reply partnerLink="processAndClientPlkVar" portType="this:Forclient" operation="EventStartMessage" variable="thisEventStartMessageResponse" bpmn:label="Message_End_Event" name="Message_End_Event-1" bpmn:id="_cYnYEBenEd6EIOjxNvjNWw"></bpel:reply>
</bpel:sequence>
-</bpel:process>
\ No newline at end of file
+</bpel:process>
Modified: branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSoapHeader2/hello-process.wsdl
===================================================================
--- branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSoapHeader2/hello-process.wsdl 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSoapHeader2/hello-process.wsdl 2010-05-28 04:59:49 UTC (rev 677)
@@ -1,4 +1,22 @@
<?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 xmlns:tns="http://ode/bpel/unit-test.wsdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:hello="http://ode/bpel/unit-test.wsdl" xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:client="http://example.com/hello/client" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:service="http://example.com/hello/service" xmlns:diag="http://example.com/hello" xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable" xmlns:pnlk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:this="http://example.com/hello/process" targetNamespace="http://example.com/hello/process">
<wsdl:types>
<xs:schema targetNamespace="http://ode/bpel/unit-test.wsdl">
@@ -37,4 +55,4 @@
<soap:address location="http://localhost:8080/ode/processes/hello/hello/process/client"/>
</wsdl:port>
</wsdl:service>
-</wsdl:definitions>
\ No newline at end of file
+</wsdl:definitions>
Modified: branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSoapHeader2/hello.wsdl
===================================================================
--- branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSoapHeader2/hello.wsdl 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSoapHeader2/hello.wsdl 2010-05-28 04:59:49 UTC (rev 677)
@@ -1,4 +1,22 @@
<?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 xmlns:process="http://example.com/hello/process" xmlns:tns="http://ode/bpel/unit-test.wsdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:diag="http://example.com/hello" xmlns:client="http://example.com/hello/client" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:pnlk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable" xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop" xmlns:bpdm="http://www.intalio/designer/business-process-data-modeling" targetNamespace="http://example.com/hello">
<wsdl:import namespace="http://ode/bpel/unit-test.wsdl" location="HelloWorld2.wsdl"/>
<wsdl:import namespace="http://example.com/hello/process" location="hello-process.wsdl"/>
@@ -8,4 +26,4 @@
<pnlk:partnerLinkType name="processAndClient">
<pnlk:role name="process_for_client" portType="process:Forclient"/>
</pnlk:partnerLinkType>
-</wsdl:definitions>
\ No newline at end of file
+</wsdl:definitions>
Modified: branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSoapHeader2/hello.xsd
===================================================================
--- branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSoapHeader2/hello.xsd 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/TestSoapHeader2/hello.xsd 2010-05-28 04:59:49 UTC (rev 677)
@@ -1,4 +1,22 @@
<?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.
+ -->
<xsd:schema targetNamespace="http://ode/bpel/unit-test.wsdl"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
attributeFormDefault="qualified" elementFormDefault="qualified">
Modified: branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/test-log4j.properties
===================================================================
--- branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/test-log4j.properties 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/axis2-war/src/test/resources/test-log4j.properties 2010-05-28 04:59:49 UTC (rev 677)
@@ -1,36 +1,40 @@
+#
+# 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, CONSOLE
+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 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
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=%d{MM-dd@HH:mm:ss} %-5p (%13F:%L) %3x - %m%n
-log4j.category.org.apache.ode.bpel.runtime=DEBUG
-
-# 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.category.httpclient=INFO
+log4j.category.httpclient.Wire=INFO
+log4j.category.org.apache.ode=INFO
+#log4j.category.hibernate=DEBUG
+#log4j.category.org.hibernate=DEBUG
Added: branches/ODE/ODE-1.x-fixes/axis2-war/src/test/webapp/WEB-INF/conf/ode-axis2.properties
===================================================================
--- branches/ODE/ODE-1.x-fixes/axis2-war/src/test/webapp/WEB-INF/conf/ode-axis2.properties (rev 0)
+++ branches/ODE/ODE-1.x-fixes/axis2-war/src/test/webapp/WEB-INF/conf/ode-axis2.properties 2010-05-28 04:59:49 UTC (rev 677)
@@ -0,0 +1,23 @@
+#
+# 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.
+#
+
+ode-axis2.dao.factory=org.apache.ode.axis2.instancecleanup.HibDaoConnectionFactoryImpl
+ode-axis2.db.emb.name=hibdb
+ode-axis2.db.mode=EMBEDDED
+ode-axis2.cluster.localRoute.targets=http://doesntexist:8080/ode/processes/
+ode-axis2.cluster.localRoute.base=http://localhost:8888/ode/processes/
+ode-axis2.event.listeners=org.apache.ode.bpel.common.evt.DebugBpelEventListener
Modified: branches/ODE/ODE-1.x-fixes/bpel-api/src/main/java/org/apache/ode/bpel/common/CorrelationKey.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-api/src/main/java/org/apache/ode/bpel/common/CorrelationKey.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-api/src/main/java/org/apache/ode/bpel/common/CorrelationKey.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -131,6 +131,10 @@
* @return <code>true</code> if the given object
*/
public boolean equals(Object o) {
+ if (!(o instanceof CorrelationKey)) {
+ return false;
+ }
+
CorrelationKey okey = (CorrelationKey) o;
if (okey == null || !okey._csetName.equals(_csetName) || okey._keyValues.length != _keyValues.length)
Modified: branches/ODE/ODE-1.x-fixes/bpel-api/src/main/java/org/apache/ode/bpel/common/CorrelationKeySet.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-api/src/main/java/org/apache/ode/bpel/common/CorrelationKeySet.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-api/src/main/java/org/apache/ode/bpel/common/CorrelationKeySet.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -79,7 +79,7 @@
*/
public CorrelationKeySet add(CorrelationKey ck) {
for( CorrelationKey key : correlationKeys ) {
- if( key.getCorrelationSetName() == ck.getCorrelationSetName() ) {
+ if( key.getCorrelationSetName().equals(ck.getCorrelationSetName()) ) {
correlationKeys.remove(ck);
break;
}
Modified: branches/ODE/ODE-1.x-fixes/bpel-api/src/main/java/org/apache/ode/bpel/evt/ScopeCompletionEvent.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-api/src/main/java/org/apache/ode/bpel/evt/ScopeCompletionEvent.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-api/src/main/java/org/apache/ode/bpel/evt/ScopeCompletionEvent.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -26,32 +26,6 @@
public class ScopeCompletionEvent extends ScopeEvent {
private static final long serialVersionUID = 1L;
- private boolean _success;
- private QName _fault;
-
- public ScopeCompletionEvent(boolean success, QName fault) {
- _success = success;
- _fault = fault;
+ public ScopeCompletionEvent() {
}
-
- /**
- * @param fault The fault to set.
- */
- public void setFault(QName fault) {
- _fault = fault;
- }
-
- /**
- * @return Returns the fault.
- */
- public QName getFault() {
- return _fault;
- }
-
- public boolean isSuccess() {
- return _success;
- }
- public void setSuccess(boolean success) {
- _success = success;
- }
}
Modified: branches/ODE/ODE-1.x-fixes/bpel-api/src/main/java/org/apache/ode/bpel/evt/VariableModificationEvent.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-api/src/main/java/org/apache/ode/bpel/evt/VariableModificationEvent.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-api/src/main/java/org/apache/ode/bpel/evt/VariableModificationEvent.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -24,7 +24,7 @@
public class VariableModificationEvent extends VariableEvent {
private static final long serialVersionUID = 1L;
- private Node newValue;
+ private transient Node newValue;
public VariableModificationEvent() {
super();
Modified: branches/ODE/ODE-1.x-fixes/bpel-api/src/main/java/org/apache/ode/bpel/iapi/ClusterAware.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-api/src/main/java/org/apache/ode/bpel/iapi/ClusterAware.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-api/src/main/java/org/apache/ode/bpel/iapi/ClusterAware.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -1,3 +1,21 @@
+/*
+ * 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.bpel.iapi;
/**
Modified: branches/ODE/ODE-1.x-fixes/bpel-api/src/main/java/org/apache/ode/bpel/iapi/Endpoint.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-api/src/main/java/org/apache/ode/bpel/iapi/Endpoint.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-api/src/main/java/org/apache/ode/bpel/iapi/Endpoint.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -47,6 +47,9 @@
*/
@Override
public boolean equals(Object other) {
+ if (!(other instanceof Endpoint)) {
+ return false;
+ }
Endpoint o = (Endpoint) other;
return o.serviceName.equals(serviceName) && o.portName.equals(portName);
}
Modified: branches/ODE/ODE-1.x-fixes/bpel-api/src/main/java/org/apache/ode/bpel/iapi/ProcessConf.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-api/src/main/java/org/apache/ode/bpel/iapi/ProcessConf.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-api/src/main/java/org/apache/ode/bpel/iapi/ProcessConf.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -33,6 +33,7 @@
import org.apache.ode.bpel.evt.BpelEvent;
import org.apache.ode.bpel.o.OFailureHandling;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
import org.apache.ode.utils.CronExpression;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
@@ -216,7 +217,7 @@
public class CronJob {
private CronExpression _cronExpression;
- private final List<Map<String,Object>> runnableDetailList = new ArrayList<Map<String,Object>>();
+ private final List<JobDetails> runnableDetailList = new ArrayList<JobDetails>();
public void setCronExpression(CronExpression _cronExpression) {
this._cronExpression = _cronExpression;
@@ -226,7 +227,7 @@
return _cronExpression;
}
- public List<Map<String,Object>> getRunnableDetailList() {
+ public List<JobDetails> getRunnableDetailList() {
return runnableDetailList;
}
@@ -242,7 +243,7 @@
}
}
- public class CleanupInfo {
+ public class CleanupInfo implements java.io.Serializable {
private List<String> _filters = new ArrayList<String>();
private final Set<CLEANUP_CATEGORY> _categories = EnumSet.noneOf(CLEANUP_CATEGORY.class);
Modified: branches/ODE/ODE-1.x-fixes/bpel-api/src/main/java/org/apache/ode/bpel/iapi/Scheduler.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-api/src/main/java/org/apache/ode/bpel/iapi/Scheduler.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-api/src/main/java/org/apache/ode/bpel/iapi/Scheduler.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -26,6 +26,10 @@
import java.util.concurrent.Callable;
import java.util.concurrent.Future;
+import javax.xml.namespace.QName;
+
+import org.apache.ode.bpel.common.CorrelationKeySet;
+
/**
* The BPEL scheduler.
*/
@@ -42,7 +46,7 @@
* @param when when the job should run (<code>null</code> means now)
* @return unique job identifier
*/
- String schedulePersistedJob(Map<String,Object>jobDetail,Date when)
+ String schedulePersistedJob(JobDetails jobDetail,Date when)
throws ContextException ;
@@ -66,13 +70,13 @@
* @param when does the job should be executed?
* @return unique (as far as the scheduler is concerned) job identifier
*/
- String scheduleVolatileJob(boolean transacted, Map<String,Object> jobDetail, Date when) throws ContextException;
+ String scheduleVolatileJob(boolean transacted, JobDetails jobDetail, Date when) throws ContextException;
/**
* Schedule a volatile job for right now
* @see #scheduleVolatileJob(boolean, java.util.Map, java.util.Date)
*/
- String scheduleVolatileJob(boolean transacted, Map<String,Object> jobDetail) throws ContextException;
+ String scheduleVolatileJob(boolean transacted, JobDetails jobDetail) throws ContextException;
/**
* Make a good effort to cancel the job. If its already running no big
@@ -166,6 +170,105 @@
void onScheduledJob(JobInfo jobInfo) throws JobProcessorException;
}
+ public enum JobType {
+ TIMER,
+ RESUME,
+ INVOKE_INTERNAL,
+ INVOKE_RESPONSE,
+ MATCHER,
+ INVOKE_CHECK
+ }
+
+ public static class JobDetails {
+ public Long instanceId;
+ public String mexId;
+ public String processId;
+ public String type;
+ public String channel;
+ public String correlatorId;
+ public String correlationKeySet;
+ public Integer retryCount;
+ public Boolean inMem;
+ public Map<String, Object> detailsExt = new HashMap<String, Object>();
+
+ public Boolean getInMem() {
+ return inMem == null ? false : inMem;
+ }
+ public void setInMem(Boolean inMem) {
+ this.inMem = inMem;
+ }
+ public String getMexId() {
+ return mexId;
+ }
+ public void setMexId(String mexId) {
+ this.mexId = mexId;
+ }
+ public QName getProcessId() {
+ return processId == null ? null : QName.valueOf(processId);
+ }
+ public void setProcessId(QName processId) {
+ this.processId = "" + processId;
+ }
+ public JobType getType() {
+ return JobType.valueOf(type);
+ }
+ public void setType(JobType type) {
+ this.type = type.toString();
+ }
+ public String getChannel() {
+ return channel;
+ }
+ public void setChannel(String channel) {
+ this.channel = channel;
+ }
+ public String getCorrelatorId() {
+ return correlatorId;
+ }
+ public void setCorrelatorId(String correlatorId) {
+ this.correlatorId = correlatorId;
+ }
+ public CorrelationKeySet getCorrelationKeySet() {
+ return new CorrelationKeySet(correlationKeySet);
+ }
+ public void setCorrelationKeySet(CorrelationKeySet correlationKeySet) {
+ this.correlationKeySet = correlationKeySet == null ? null : correlationKeySet.toCanonicalString();
+ }
+ public Integer getRetryCount() {
+ return retryCount == null ? 0 : retryCount;
+ }
+ public void setRetryCount(Integer retryCount) {
+ this.retryCount = retryCount;
+ }
+ public Long getInstanceId() {
+ return instanceId;
+ }
+ public void setInstanceId(Long instanceId) {
+ this.instanceId = instanceId;
+ }
+ public Map<String, Object> getDetailsExt() {
+ return detailsExt;
+ }
+ public void setDetailsExt(Map<String, Object> detailsExt) {
+ this.detailsExt = detailsExt;
+ }
+
+ @Override
+ public String toString() {
+ return "JobDetails("
+ + " instanceId: " + instanceId
+ + " mexId: " + mexId
+ + " processId: " + processId
+ + " type: " + type
+ + " channel: " + channel
+ + " correlatorId: " + correlatorId
+ + " correlationKeySet: " + correlationKeySet
+ + " retryCount: " + retryCount
+ + " inMem: " + inMem
+ + " detailsExt: " + detailsExt
+ + ")";
+ }
+ }
+
/**
* Wrapper containing information about a scheduled job.
* @author mszefler
@@ -174,17 +277,16 @@
private static final long serialVersionUID = 1L;
public final String jobName;
public final int retryCount;
- public final Map<String,Object> jobDetail;
+ public final JobDetails jobDetail;
- public JobInfo(String jobName, Map<String,Object>jobDetail, int retryCount) {
+ public JobInfo(String jobName, JobDetails jobDetail, int retryCount) {
this.jobName = jobName;
this.jobDetail = jobDetail;
this.retryCount = retryCount;
}
public String toString() {
- // Wrap in hashmap in case the underlying object has no toString method.
- return jobName + "["+retryCount +"]: " + new HashMap<Object, Object>(jobDetail);
+ return jobName + "["+retryCount +"]: " + jobDetail;
}
}
@@ -193,7 +295,7 @@
* processing.
* @author mszefler
*/
- public class JobProcessorException extends Exception {
+ public class JobProcessorException extends RuntimeException {
private static final long serialVersionUID = 1L;
public final boolean retry;
@@ -208,7 +310,7 @@
}
public interface MapSerializableRunnable extends Runnable, Serializable {
- void storeToDetailsMap(Map<String, Object> details);
- void restoreFromDetailsMap(Map<String, Object> details);
+ void storeToDetails(JobDetails details);
+ void restoreFromDetails(JobDetails details);
}
}
\ No newline at end of file
Modified: branches/ODE/ODE-1.x-fixes/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/BpelCompiler.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/BpelCompiler.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/BpelCompiler.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -302,7 +302,7 @@
}
// A "real" variable couldn't be found, checking if we're dealing with a
// process custom property
- if (_customProcessProperties != null && _customProcessProperties.get(varName) != null) {
+ if (_customProcessProperties != null && _customProcessProperties.get(QName.valueOf(varName)) != null) {
}
throw new CompilationException(__cmsgs.errUndeclaredVariable(varName));
@@ -1074,7 +1074,7 @@
oplink.myRoleName = myRole.getName();
QName portType = myRole.getPortType();
if (portType == null)
- throw new CompilationException(__cmsgs.errMissingMyRolePortType(portType, plink.getMyRole(), plinkType.getName()));
+ throw new CompilationException(__cmsgs.errMissingMyRolePortType(myRole.getPortType(), plink.getMyRole(), plinkType.getName()));
oplink.myRolePortType = resolvePortType(portType);
}
@@ -1089,7 +1089,7 @@
oplink.partnerRoleName = partnerRole.getName();
QName portType = partnerRole.getPortType();
if (portType == null)
- throw new CompilationException(__cmsgs.errMissingPartnerRolePortType(portType, plink.getPartnerRole(), plinkType.getName()));
+ throw new CompilationException(__cmsgs.errMissingPartnerRolePortType(partnerRole.getPortType(), plink.getPartnerRole(), plinkType.getName()));
oplink.partnerRolePortType = resolvePortType(portType);
}
Modified: branches/ODE/ODE-1.x-fixes/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/bom/InvokeActivity.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/bom/InvokeActivity.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/bom/InvokeActivity.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -86,7 +86,7 @@
* @author mszefler
*
*/
- class BastardScope extends Scope {
+ static class BastardScope extends Scope {
public BastardScope(Element el) {
super(el);
Modified: branches/ODE/ODE-1.x-fixes/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/bom/Scope.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/bom/Scope.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/bom/Scope.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -160,7 +160,7 @@
return Boolean.TRUE;
if ("no".equals(value))
return Boolean.FALSE;
- return null;
+ return Boolean.FALSE;
}
/**
Modified: branches/ODE/ODE-1.x-fixes/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/JaxpFunctionResolver.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/JaxpFunctionResolver.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/JaxpFunctionResolver.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -167,7 +167,7 @@
/**
* Compile time checking for the non standard ode:splitToElements function.
*/
- public class SplitToElements implements XPathFunction {
+ public static class SplitToElements implements XPathFunction {
public Object evaluate(List params) throws XPathFunctionException {
if (params.size() < 3 || params.size() > 4) {
throw new CompilationException(
@@ -205,7 +205,7 @@
}
}
- public class InsertInto implements XPathFunction {
+ public static class InsertInto implements XPathFunction {
public Object evaluate(List args) throws XPathFunctionException {
if (args.size() != 3) {
throw new CompilationException(__msgs.errInvalidNumberOfArguments(Constants.NON_STDRD_FUNCTION_INSERT_AFTER));
@@ -214,7 +214,7 @@
}
}
- public class InsertAfter implements XPathFunction {
+ public static class InsertAfter implements XPathFunction {
public Object evaluate(List args) throws XPathFunctionException {
if (args.size() < 2 || args.size() > 3) {
throw new CompilationException(__msgs.errInvalidNumberOfArguments(Constants.NON_STDRD_FUNCTION_INSERT_AFTER));
@@ -223,7 +223,7 @@
}
}
- public class InsertBefore implements XPathFunction {
+ public static class InsertBefore implements XPathFunction {
public Object evaluate(List args) throws XPathFunctionException {
if (args.size() < 2 || args.size() > 3) {
throw new CompilationException(__msgs.errInvalidNumberOfArguments(Constants.NON_STDRD_FUNCTION_INSERT_BEFORE));
@@ -232,7 +232,7 @@
}
}
- public class InsertAsFirstInto implements XPathFunction {
+ public static class InsertAsFirstInto implements XPathFunction {
public Object evaluate(List args) throws XPathFunctionException {
if (args.size() != 2) {
throw new CompilationException(__msgs.errInvalidNumberOfArguments(Constants.NON_STDRD_FUNCTION_INSERT_AS_FIRST_INTO));
@@ -241,7 +241,7 @@
}
}
- public class InsertAsLastInto implements XPathFunction {
+ public static class InsertAsLastInto implements XPathFunction {
public Object evaluate(List args) throws XPathFunctionException {
if (args.size() != 2) {
throw new CompilationException(__msgs.errInvalidNumberOfArguments(Constants.NON_STDRD_FUNCTION_INSERT_AS_LAST_INTO));
@@ -250,7 +250,7 @@
}
}
- public class Delete implements XPathFunction {
+ public static class Delete implements XPathFunction {
public Object evaluate(List args) throws XPathFunctionException {
if (args.size() < 1 || args.size() > 2) {
throw new CompilationException(__msgs.errInvalidNumberOfArguments(Constants.NON_STDRD_FUNCTION_DELETE));
@@ -259,7 +259,7 @@
}
}
- public class Rename implements XPathFunction {
+ public static class Rename implements XPathFunction {
public Object evaluate(List args) throws XPathFunctionException {
if (args.size() < 2) {
throw new CompilationException(__msgs.errInvalidNumberOfArguments(Constants.NON_STDRD_FUNCTION_RENAME));
@@ -268,7 +268,7 @@
}
}
- public class ProcessProperty implements XPathFunction {
+ public static class ProcessProperty implements XPathFunction {
public Object evaluate(List args) throws XPathFunctionException {
if (args.size() != 1) {
throw new CompilationException(__msgs.errInvalidNumberOfArguments(Constants.NON_STDRD_FUNCTION_PROCESS_PROPERTY));
@@ -277,7 +277,7 @@
}
}
- public class DayTimeDuration implements XPathFunction {
+ public static class DayTimeDuration implements XPathFunction {
public Object evaluate(List args) throws XPathFunctionException {
if (args.size() != 1) {
throw new CompilationException(__msgs.errInvalidNumberOfArguments(Constants.NON_STDRD_FUNCTION_DAY_TIME_DURATION));
@@ -286,7 +286,7 @@
}
}
- public class YearMonthDuration implements XPathFunction {
+ public static class YearMonthDuration implements XPathFunction {
public Object evaluate(List args) throws XPathFunctionException {
if (args.size() != 1) {
throw new CompilationException(__msgs.errInvalidNumberOfArguments(Constants.NON_STDRD_FUNCTION_YEAR_MONTH_DURATION));
Modified: branches/ODE/ODE-1.x-fixes/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/OdeXPathFunctionLibrary.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/OdeXPathFunctionLibrary.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/OdeXPathFunctionLibrary.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -37,7 +37,7 @@
public class OdeXPathFunctionLibrary extends net.sf.saxon.xpath.XPathFunctionLibrary {
private static final long serialVersionUID = -8885396864277163797L;
- private JaxpFunctionResolver _funcResolver;
+ private transient JaxpFunctionResolver _funcResolver;
public OdeXPathFunctionLibrary(JaxpFunctionResolver funcResolver) {
_funcResolver = funcResolver;
Modified: branches/ODE/ODE-1.x-fixes/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/SaxonContext.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/SaxonContext.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/SaxonContext.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -35,8 +35,10 @@
*/
public class SaxonContext extends JAXPXPathStaticContext {
- private JaxpVariableResolver _varResolver;
- private JaxpFunctionResolver _funcResolver;
+
+ private static final long serialVersionUID = 2460900369574468960L;
+ private transient JaxpVariableResolver _varResolver;
+ private transient JaxpFunctionResolver _funcResolver;
public SaxonContext(Configuration config, JaxpVariableResolver varResolver,
JaxpFunctionResolver funcResolver) {
Modified: branches/ODE/ODE-1.x-fixes/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/XPath20ExpressionCompilerImpl.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/XPath20ExpressionCompilerImpl.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/XPath20ExpressionCompilerImpl.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -20,9 +20,12 @@
package org.apache.ode.bpel.elang.xpath20.compiler;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import javax.xml.namespace.QName;
import javax.xml.transform.TransformerFactory;
@@ -251,60 +254,19 @@
* @return list of function expressions that may not have been resolved properly
*/
private List<String> extractFunctionExprs(String xpathStr) {
- ArrayList<String> functionExprs = new ArrayList<String>();
+ ArrayList<String> functionExprs = new ArrayList<String>();
+ // Match the prefix : function name ( all contents except the ) and the closing )'s that may occur
+ final String FUNCTION_REGEX = "\\w+:\\w+\\([.[^\\)]]*\\)*";
int firstFunction = xpathStr.indexOf("("),
lastFunction = xpathStr.lastIndexOf("(");
- StringBuffer functionExpr = new StringBuffer();
- if ((firstFunction > 0 && // the xpath contains a function
- firstFunction < lastFunction)) { // the xpath references multiple variables
- // most likely, the variable reference has not been resolved, so make that happen
- boolean quoted = false, doubleQuoted = false, function = false, arguments = false;
- Name11Checker nameChecker = Name11Checker.getInstance();
- for (int index = firstFunction; index < xpathStr.length(); index++) {
- if (!function) {
- int colonIndex = xpathStr.indexOf(':', index);
- if (colonIndex == -1) {
- break;
- }
- while (colonIndex >= 0 && nameChecker.isNCNameChar(xpathStr.charAt(--colonIndex)));
- if (xpathStr.charAt(colonIndex) == '$') {
- index = xpathStr.indexOf(':', index) + 1;
- continue;
- }
- function = true;
- arguments = false;
- functionExpr.setLength(0);
- index = colonIndex;
- continue;
- }
- char ch = xpathStr.charAt(index);
- if (function) {
- functionExpr.append(ch);
- // in the name is qualified, don't check if its a qname when we're at the ":" character
- if (ch == ':') {
- continue;
- } else if (ch == '(') {
- if (nameChecker.isQName(functionExpr.substring(0, functionExpr.length() - 1))) {
- arguments = true;
- } else {
- function = false;
- continue;
- }
- } else if (ch == ')') {
- if (arguments) {
- function = false;
- functionExprs.add(functionExpr.toString());
- functionExpr.setLength(0);
- }
- } else {
- if (!arguments) {
- if (!nameChecker.isQName(functionExpr.substring(0, functionExpr.length()))) {
- function = false;
- }
- }
- }
- }
- }
+ if ((firstFunction > 0 && firstFunction < lastFunction)) {
+ Pattern regex = Pattern.compile(FUNCTION_REGEX);
+ Matcher matcher = regex.matcher(xpathStr);
+
+ while (matcher.find()) {
+ String function = matcher.group();
+ functionExprs.add(function);
+ }
}
return functionExprs;
}
Modified: branches/ODE/ODE-1.x-fixes/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xquery10/compiler/XQuery10BpelFunctions.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xquery10/compiler/XQuery10BpelFunctions.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xquery10/compiler/XQuery10BpelFunctions.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -17,165 +17,168 @@
* under the License.
*/
-package org.apache.ode.bpel.elang.xquery10.compiler;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.xml.namespace.QName;
-import javax.xml.xpath.XPathFunction;
-import javax.xml.xpath.XPathFunctionException;
-
-import net.sf.saxon.dom.NodeWrapper;
-import net.sf.saxon.expr.XPathContext;
-import net.sf.saxon.om.Item;
-
-import org.apache.ode.bpel.elang.xpath20.compiler.Constants;
-import org.apache.ode.bpel.elang.xpath20.compiler.JaxpFunctionResolver;
-import org.apache.ode.utils.Namespaces;
-import org.w3c.dom.Node;
-
-
-/**
- * XQuery-Friendly definition of BPEL functions, which
- * delegates calls to the JAXP-based function resolver
- */
-public class XQuery10BpelFunctions {
- public static final String USER_DATA_KEY_FUNCTION_RESOLVER = "function-resolver";
- private static final QName WSBPEL_GET_VARIABLE_PROPERTY = new QName(Namespaces.WSBPEL2_0_FINAL_EXEC,
- Constants.EXT_FUNCTION_GETVARIABLEPROPERTY);
- private static final QName WSBPEL_GET_VARIABLE_DATA = new QName(Namespaces.WSBPEL2_0_FINAL_EXEC,
- Constants.EXT_FUNCTION_GETVARIABLEDATA);
- private static final QName WSBPEL_GET_LINK_STATUS = new QName(Namespaces.WSBPEL2_0_FINAL_EXEC,
- Constants.EXT_FUNCTION_GETLINKSTATUS);
- private static final QName WSBPEL_DO_XSL_TRANSFORM = new QName(Namespaces.WSBPEL2_0_FINAL_EXEC,
- Constants.EXT_FUNCTION_DOXSLTRANSFORM);
-
- /**
- * WS-BPEL getVariableProperty function
- *
- * @param context context
- * @param variableName variableName
- * @param propertyName propertyName
- *
- * @return type
- *
- * @throws XPathFunctionException XPathFunctionException
- */
- public static Object getVariableProperty(XPathContext context,
- String variableName, String propertyName) throws XPathFunctionException {
- ArrayList<String> arguments = new ArrayList<String>();
- arguments.add(variableName);
- arguments.add(propertyName);
-
- return evaluate(resolveFunction(context, WSBPEL_GET_VARIABLE_PROPERTY),
- arguments);
- }
-
- /**
- * WS-BPEL getVariableData function
- *
- * @param context context
- * @param variableName variableName
- * @param partName partName
- * @param xpath xpath
- *
- * @return type
- *
- * @throws XPathFunctionException XPathFunctionException
- */
- public static Object getVariableData(XPathContext context,
- String variableName, String partName, String xpath)
- throws XPathFunctionException {
- ArrayList<String> arguments = new ArrayList<String>();
- arguments.add(variableName);
- arguments.add(partName);
- arguments.add(xpath);
-
- return evaluate(resolveFunction(context, WSBPEL_GET_VARIABLE_DATA),
- arguments);
- }
-
- /**
- * WS-BPEL doXslTransform function
- *
- * @param context context
- * @param xslUri xslUri
- * @param sources sources
- *
- * @return type
- *
- * @throws XPathFunctionException XPathFunctionException
- */
- public static Object doXslTransform(XPathContext context, String xslUri,
- Object sources) throws XPathFunctionException {
- ArrayList<Object> arguments = new ArrayList<Object>();
- arguments.add(xslUri);
- arguments.add(sources);
-
- return evaluate(resolveFunction(context, WSBPEL_DO_XSL_TRANSFORM),
- arguments);
- }
-
- /**
- * WS-BPEL getLinkStatus function
- *
- * @param context context
- * @param linkName linkName
- *
- * @return type
- *
- * @throws XPathFunctionException XPathFunctionException
- */
- public static Object getLinkStatus(XPathContext context, String linkName)
- throws XPathFunctionException {
- ArrayList<String> arguments = new ArrayList<String>();
- arguments.add(linkName);
-
- return evaluate(resolveFunction(context, WSBPEL_GET_LINK_STATUS),
- arguments);
- }
-
- /**
- * Locates the JAXP equivalent function
- *
- * @param context context
- * @param name name
- *
- * @return type
- */
- private static XPathFunction resolveFunction(XPathContext context,
- QName name) {
- JaxpFunctionResolver funcResolver = null;
- Item item = context.getCurrentIterator().current();
-
- if (item instanceof NodeWrapper) {
- Node node = (Node) ((NodeWrapper) item).getUnderlyingNode();
-
- if (node != null) {
- funcResolver = (JaxpFunctionResolver) node.getUserData(USER_DATA_KEY_FUNCTION_RESOLVER);
- }
- }
-
- return funcResolver.resolveFunction(name, 0);
- }
-
- /**
- * Evaluates function against arguments passed by XQuery
- *
- * @param function function
- * @param arguments arguments
- *
- * @return type
- *
- * @throws XPathFunctionException XPathFunctionException
- */
- private static Object evaluate(XPathFunction function, List arguments)
- throws XPathFunctionException {
- if (function == null) {
- throw new XPathFunctionException("Unable to locate function in library");
- }
-
- return function.evaluate(arguments);
- }
-}
+package org.apache.ode.bpel.elang.xquery10.compiler;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+import javax.xml.xpath.XPathFunction;
+import javax.xml.xpath.XPathFunctionException;
+
+import net.sf.saxon.dom.NodeWrapper;
+import net.sf.saxon.expr.XPathContext;
+import net.sf.saxon.om.Item;
+
+import org.apache.ode.bpel.elang.xpath20.compiler.Constants;
+import org.apache.ode.bpel.elang.xpath20.compiler.JaxpFunctionResolver;
+import org.apache.ode.utils.Namespaces;
+import org.w3c.dom.Node;
+
+
+/**
+ * XQuery-Friendly definition of BPEL functions, which
+ * delegates calls to the JAXP-based function resolver
+ */
+public class XQuery10BpelFunctions {
+ public static final String USER_DATA_KEY_FUNCTION_RESOLVER = "function-resolver";
+ private static final QName WSBPEL_GET_VARIABLE_PROPERTY = new QName(Namespaces.WSBPEL2_0_FINAL_EXEC,
+ Constants.EXT_FUNCTION_GETVARIABLEPROPERTY);
+ private static final QName WSBPEL_GET_VARIABLE_DATA = new QName(Namespaces.WSBPEL2_0_FINAL_EXEC,
+ Constants.EXT_FUNCTION_GETVARIABLEDATA);
+ private static final QName WSBPEL_GET_LINK_STATUS = new QName(Namespaces.WSBPEL2_0_FINAL_EXEC,
+ Constants.EXT_FUNCTION_GETLINKSTATUS);
+ private static final QName WSBPEL_DO_XSL_TRANSFORM = new QName(Namespaces.WSBPEL2_0_FINAL_EXEC,
+ Constants.EXT_FUNCTION_DOXSLTRANSFORM);
+
+ /**
+ * WS-BPEL getVariableProperty function
+ *
+ * @param context context
+ * @param variableName variableName
+ * @param propertyName propertyName
+ *
+ * @return type
+ *
+ * @throws XPathFunctionException XPathFunctionException
+ */
+ public static Object getVariableProperty(XPathContext context,
+ String variableName, String propertyName) throws XPathFunctionException {
+ ArrayList<String> arguments = new ArrayList<String>();
+ arguments.add(variableName);
+ arguments.add(propertyName);
+
+ return evaluate(resolveFunction(context, WSBPEL_GET_VARIABLE_PROPERTY),
+ arguments);
+ }
+
+ /**
+ * WS-BPEL getVariableData function
+ *
+ * @param context context
+ * @param variableName variableName
+ * @param partName partName
+ * @param xpath xpath
+ *
+ * @return type
+ *
+ * @throws XPathFunctionException XPathFunctionException
+ */
+ public static Object getVariableData(XPathContext context,
+ String variableName, String partName, String xpath)
+ throws XPathFunctionException {
+ ArrayList<String> arguments = new ArrayList<String>();
+ arguments.add(variableName);
+ arguments.add(partName);
+ arguments.add(xpath);
+
+ return evaluate(resolveFunction(context, WSBPEL_GET_VARIABLE_DATA),
+ arguments);
+ }
+
+ /**
+ * WS-BPEL doXslTransform function
+ *
+ * @param context context
+ * @param xslUri xslUri
+ * @param sources sources
+ *
+ * @return type
+ *
+ * @throws XPathFunctionException XPathFunctionException
+ */
+ public static Object doXslTransform(XPathContext context, String xslUri,
+ Object sources) throws XPathFunctionException {
+ ArrayList<Object> arguments = new ArrayList<Object>();
+ arguments.add(xslUri);
+ arguments.add(sources);
+
+ return evaluate(resolveFunction(context, WSBPEL_DO_XSL_TRANSFORM),
+ arguments);
+ }
+
+ /**
+ * WS-BPEL getLinkStatus function
+ *
+ * @param context context
+ * @param linkName linkName
+ *
+ * @return type
+ *
+ * @throws XPathFunctionException XPathFunctionException
+ */
+ public static Object getLinkStatus(XPathContext context, String linkName)
+ throws XPathFunctionException {
+ ArrayList<String> arguments = new ArrayList<String>();
+ arguments.add(linkName);
+
+ return evaluate(resolveFunction(context, WSBPEL_GET_LINK_STATUS),
+ arguments);
+ }
+
+ /**
+ * Locates the JAXP equivalent function
+ *
+ * @param context context
+ * @param name name
+ *
+ * @return type
+ */
+ private static XPathFunction resolveFunction(XPathContext context,
+ QName name) {
+ Item item = context.getCurrentIterator().current();
+ XPathFunction function = null;
+
+ if (item instanceof NodeWrapper) {
+ Node node = (Node) ((NodeWrapper) item).getUnderlyingNode();
+ JaxpFunctionResolver funcResolver = null;
+ if (node != null) {
+ funcResolver = (JaxpFunctionResolver) node.getUserData(USER_DATA_KEY_FUNCTION_RESOLVER);
+ }
+ if (funcResolver != null) {
+ function = funcResolver.resolveFunction(name, 0);
+ }
+ }
+
+ return function;
+ }
+
+ /**
+ * Evaluates function against arguments passed by XQuery
+ *
+ * @param function function
+ * @param arguments arguments
+ *
+ * @return type
+ *
+ * @throws XPathFunctionException XPathFunctionException
+ */
+ private static Object evaluate(XPathFunction function, List arguments)
+ throws XPathFunctionException {
+ if (function == null) {
+ throw new XPathFunctionException("Unable to locate function in library");
+ }
+
+ return function.evaluate(arguments);
+ }
+}
Modified: branches/ODE/ODE-1.x-fixes/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xquery10/compiler/XQuery10ExpressionCompilerImpl.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xquery10/compiler/XQuery10ExpressionCompilerImpl.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xquery10/compiler/XQuery10ExpressionCompilerImpl.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -365,7 +365,7 @@
return typeQName;
}
- private class XQueryDeclarations {
+ private static class XQueryDeclarations {
StringBuffer declarations = new StringBuffer();
public XQueryDeclarations() {}
Added: branches/ODE/ODE-1.x-fixes/bpel-compiler/src/test/java/org/apache/ode/bpel/elang/xpath20/compiler/XPath20ExpressionCompilerImplTest.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-compiler/src/test/java/org/apache/ode/bpel/elang/xpath20/compiler/XPath20ExpressionCompilerImplTest.java (rev 0)
+++ branches/ODE/ODE-1.x-fixes/bpel-compiler/src/test/java/org/apache/ode/bpel/elang/xpath20/compiler/XPath20ExpressionCompilerImplTest.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -0,0 +1,86 @@
+/*
+ * 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.bpel.elang.xpath20.compiler;
+
+import java.lang.reflect.Method;
+import java.util.List;
+
+import org.junit.*;
+
+
+public class XPath20ExpressionCompilerImplTest {
+
+ private static final String TEST_NAMESPACE = "http://www.example.com/";
+ private static final String EXTRACT_FUNCTION_EXPRS = "extractFunctionExprs";
+
+ @Test
+ public void testresolvedFunctionsExpr() throws Exception {
+ XPath20ExpressionCompilerImpl xp20Exp = new XPath20ExpressionCompilerImpl(TEST_NAMESPACE);
+ final Method[] methods =
+ xp20Exp.getClass().getDeclaredMethods();
+ for (int i = 0; i < methods.length; ++i) {
+ if (methods[i].getName().equals(EXTRACT_FUNCTION_EXPRS)) {
+ final Object params[] = { "count(count(1))" };
+ methods[i].setAccessible(true);
+ Object ret = methods[i].invoke(xp20Exp, params);
+ List<?> values = (List<?>) ret;
+ Assert.assertEquals(0, values.size());
+ }
+ }
+ }
+
+ @Test
+ public void testTimeStampInFunction() throws Exception {
+ XPath20ExpressionCompilerImpl xp20Exp = new XPath20ExpressionCompilerImpl(TEST_NAMESPACE);
+ final Method[] methods =
+ xp20Exp.getClass().getDeclaredMethods();
+ for (int i = 0; i < methods.length; ++i) {
+ if (methods[i].getName().equals(EXTRACT_FUNCTION_EXPRS)) {
+ final Object params[] = { "concat(xs:concat(\"P\", \"08:30:00.000+08:00\"))" };
+ methods[i].setAccessible(true);
+ Object ret = methods[i].invoke(xp20Exp, params);
+ List<?> values = (List<?>) ret;
+ Assert.assertEquals(1, values.size());
+ }
+ }
+
+ }
+
+ @Test
+ public void testresolvedFunctionsTimeStamp() throws Exception {
+ XPath20ExpressionCompilerImpl xp20Exp = new XPath20ExpressionCompilerImpl(TEST_NAMESPACE);
+ final Method[] methods =
+ xp20Exp.getClass().getDeclaredMethods();
+ for (int i = 0; i < methods.length; ++i) {
+ if (methods[i].getName().equals(EXTRACT_FUNCTION_EXPRS)) {
+ final Object params[] = { "concat(current-date() + xs:dayTimeDuration(concat(\"P\", $DAYS_TO_NEXT_REMINDER, \"D\")), \"T\", \"08:30:00.000+08:00\")" };
+ methods[i].setAccessible(true);
+ Object ret = methods[i].invoke(xp20Exp, params);
+ List<?> values = (List<?>) ret;
+ Assert.assertEquals(1, values.size());
+ Assert.assertEquals("Unexpected Function value", "xs:dayTimeDuration(concat(\"P\", $DAYS_TO_NEXT_REMINDER, \"D\"))", (String)values.get(0));
+ }
+ }
+ }
+
+
+
+
+}
Modified: branches/ODE/ODE-1.x-fixes/bpel-compiler/src/test/java/org/apache/ode/bpel/elang/xquery10/compiler/XQuery10ExpressionCompilerImplTest.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-compiler/src/test/java/org/apache/ode/bpel/elang/xquery10/compiler/XQuery10ExpressionCompilerImplTest.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-compiler/src/test/java/org/apache/ode/bpel/elang/xquery10/compiler/XQuery10ExpressionCompilerImplTest.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -1,3 +1,21 @@
+/*
+ * 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.bpel.elang.xquery10.compiler;
import java.util.Arrays;
Modified: branches/ODE/ODE-1.x-fixes/bpel-compiler/src/test/resources/log4j.properties
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-compiler/src/test/resources/log4j.properties 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-compiler/src/test/resources/log4j.properties 2010-05-28 04:59:49 UTC (rev 677)
@@ -32,5 +32,5 @@
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{MM-dd@HH:mm:ss} %-5p (%13F:%L) %3x - %m%n
-log4j.category.org.apache.ode=INFO
+log4j.category.org.apache.ode=DEBUG
Modified: branches/ODE/ODE-1.x-fixes/bpel-dao/src/main/java/org/apache/ode/bpel/dao/DeferredProcessInstanceCleanable.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-dao/src/main/java/org/apache/ode/bpel/dao/DeferredProcessInstanceCleanable.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-dao/src/main/java/org/apache/ode/bpel/dao/DeferredProcessInstanceCleanable.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -1,3 +1,21 @@
+/*
+ * 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.bpel.dao;
import java.io.Serializable;
Modified: branches/ODE/ODE-1.x-fixes/bpel-dao/src/main/java/org/apache/ode/bpel/dao/FilteredInstanceDeletable.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-dao/src/main/java/org/apache/ode/bpel/dao/FilteredInstanceDeletable.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-dao/src/main/java/org/apache/ode/bpel/dao/FilteredInstanceDeletable.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -1,3 +1,21 @@
+/*
+ * 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.bpel.dao;
import java.util.Set;
Modified: branches/ODE/ODE-1.x-fixes/bpel-dao/src/main/java/org/apache/ode/bpel/dao/ScopeStateEnum.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-dao/src/main/java/org/apache/ode/bpel/dao/ScopeStateEnum.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-dao/src/main/java/org/apache/ode/bpel/dao/ScopeStateEnum.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -18,39 +18,6 @@
*/
package org.apache.ode.bpel.dao;
-public class ScopeStateEnum {
- /** DOCUMENTME */
- public static final ScopeStateEnum ACTIVE = new ScopeStateEnum("ACTIVE");
-
- /** DOCUMENTME */
- public static final ScopeStateEnum FAULTED = new ScopeStateEnum("FAULTED");
-
- /** DOCUMENTME */
- public static final ScopeStateEnum FAULTHANDLER = new ScopeStateEnum("FAULTHANDLER");
-
- /** DOCUMENTME */
- public static final ScopeStateEnum COMPLETED = new ScopeStateEnum("COMPLETED");
-
- /** DOCUMENTME */
- public static final ScopeStateEnum COMPENSATING = new ScopeStateEnum("COMPENSATING");
-
- /** DOCUMENTME */
- public static final ScopeStateEnum COMPENSATED = new ScopeStateEnum("COMPENSATED");
- private final String myName; // for debug only
-
- public ScopeStateEnum(String name) {
- myName = name;
- }
-
- public boolean equals(Object o) {
- return ((ScopeStateEnum)o).myName.equals(myName);
- }
-
- public int hashCode() {
- return myName.hashCode();
- }
-
- public String toString() {
- return myName;
- }
+public enum ScopeStateEnum {
+ NEW, ACTIVE, FAULT, COMPLETED
}
Modified: branches/ODE/ODE-1.x-fixes/bpel-epr/src/main/java/org/apache/ode/il/MockScheduler.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-epr/src/main/java/org/apache/ode/il/MockScheduler.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-epr/src/main/java/org/apache/ode/il/MockScheduler.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -69,7 +69,7 @@
}
};
- public String schedulePersistedJob(final Map<String, Object> detail, final Date date) throws ContextException {
+ public String schedulePersistedJob(final JobDetails detail, final Date date) throws ContextException {
if (date != null) {
return scheduleVolatileJob(true, detail, date);
} else {
@@ -77,11 +77,11 @@
}
}
- public String scheduleVolatileJob(boolean transacted, Map<String, Object> jobDetail) throws ContextException {
+ public String scheduleVolatileJob(boolean transacted, JobDetails jobDetail) throws ContextException {
return scheduleVolatileJob(transacted, jobDetail, null);
}
- public String scheduleVolatileJob(final boolean transacted, final Map<String, Object> detail, final Date date) throws ContextException {
+ public String scheduleVolatileJob(final boolean transacted, final JobDetails detail, final Date date) throws ContextException {
if (date != null) {
registerSynchronizer(new Synchronizer() {
public void afterCompletion(boolean success) {
@@ -113,7 +113,7 @@
}
}
- private void exec(boolean transacted, final Map<String, Object> detail) {
+ private void exec(boolean transacted, final JobDetails detail) {
try {
if (transacted) {
@@ -148,7 +148,7 @@
});
return null;
} else {
- return scheduleVolatileJob(true, new HashMap<String, Object>());
+ return scheduleVolatileJob(true, new JobDetails());
}
}
Modified: branches/ODE/ODE-1.x-fixes/bpel-obj/src/main/java/org/apache/ode/bpel/o/OMessageVarType.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-obj/src/main/java/org/apache/ode/bpel/o/OMessageVarType.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-obj/src/main/java/org/apache/ode/bpel/o/OMessageVarType.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -68,6 +68,14 @@
return el;
}
+ public String toString() {
+ StringBuffer buf = new StringBuffer(super.toString());
+ buf.append('(');
+ buf.append(this.messageType.toString());
+ buf.append(')');
+ return buf.toString();
+ }
+
public static class Part extends OBase {
private static final long serialVersionUID = -2356665271228433779L;
Modified: branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelEngineImpl.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelEngineImpl.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelEngineImpl.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -52,7 +52,9 @@
import org.apache.ode.bpel.iapi.MessageExchange.MessageExchangePattern;
import org.apache.ode.bpel.iapi.MessageExchange.Status;
import org.apache.ode.bpel.iapi.MyRoleMessageExchange.CorrelationStatus;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
import org.apache.ode.bpel.iapi.Scheduler.JobInfo;
+import org.apache.ode.bpel.iapi.Scheduler.JobType;
import org.apache.ode.bpel.intercept.InterceptorInvoker;
import org.apache.ode.bpel.intercept.MessageExchangeInterceptor;
import org.apache.ode.bpel.intercept.ProcessCountThrottler;
@@ -378,31 +380,36 @@
if (process == null) return null;
return process.getOProcess();
}
-
- public void onScheduledJob(Scheduler.JobInfo jobInfo) throws Scheduler.JobProcessorException {
- final WorkEvent we = new WorkEvent(jobInfo.jobDetail);
-
- if( __log.isTraceEnabled() ) __log.trace("[JOB] onScheduledJob " + jobInfo + "" + we.getIID());
-
+
+ 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.getIID(), 1, TimeUnit.MICROSECONDS);
+ _instanceLockManager.lock(iid, 1, TimeUnit.MICROSECONDS);
_contexts.scheduler.registerSynchronizer(new Scheduler.Synchronizer() {
public void afterCompletion(boolean success) {
- _instanceLockManager.unlock(we.getIID());
+ _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.getIID() + " 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
@@ -413,11 +420,11 @@
process = _activeProcesses.get(we.getProcessId());
} else {
ProcessInstanceDAO instance;
- if (we.isInMem()) instance = _contexts.inMemDao.getConnection().getInstance(we.getIID());
- else instance = _contexts.dao.getConnection().getInstance(we.getIID());
+ if (we.getInMem()) instance = _contexts.inMemDao.getConnection().getInstance(we.getInstanceId());
+ else instance = _contexts.dao.getConnection().getInstance(we.getInstanceId());
if (instance == null) {
- __log.debug(__msgs.msgScheduledJobReferencesUnknownInstance(we.getIID()));
+ __log.debug(__msgs.msgScheduledJobReferencesUnknownInstance(we.getInstanceId()));
// nothing we can do, this instance is not in the database, it will always fail, not
// exactly an error since can occur in normal course of events.
return;
@@ -435,13 +442,13 @@
ClassLoader cl = Thread.currentThread().getContextClassLoader();
try {
Thread.currentThread().setContextClassLoader(process._classLoader);
- if (we.getType().equals(WorkEvent.Type.INVOKE_CHECK)) {
- if (__log.isDebugEnabled()) __log.debug("handleWorkEvent: InvokeCheck event for mexid " + we.getMexId());
+ if (we.getType().equals(JobType.INVOKE_CHECK)) {
+ if (__log.isDebugEnabled()) __log.debug("handleJobDetails: InvokeCheck event for mexid " + we.getMexId());
sendPartnerRoleFailure(we, MessageExchange.FailureType.COMMUNICATION_ERROR);
return;
- } else if (we.getType().equals(WorkEvent.Type.INVOKE_INTERNAL)) {
- if (__log.isDebugEnabled()) __log.debug("handleWorkEvent: InvokeInternal event for mexid " + we.getMexId());
+ } else if (we.getType().equals(JobType.INVOKE_INTERNAL)) {
+ if (__log.isDebugEnabled()) __log.debug("handleJobDetails: InvokeInternal event for mexid " + we.getMexId());
setMessageExchangeProcess(we.getMexId(), process.getProcessDAO());
MyRoleMessageExchangeImpl mex = (MyRoleMessageExchangeImpl) getMessageExchange(we.getMexId());
@@ -458,33 +465,35 @@
}
}
}
- process.handleWorkEvent(jobInfo.jobDetail);
+ process.handleJobDetails(jobInfo.jobDetail);
debuggingDelay();
} finally {
Thread.currentThread().setContextClassLoader(cl);
}
+ } catch (Scheduler.JobProcessorException e) {
+ throw e;
} catch (BpelEngineException bee) {
- __log.error(__msgs.msgScheduledJobFailed(we.getDetail()), bee);
+ __log.error(__msgs.msgScheduledJobFailed(we), bee);
throw new Scheduler.JobProcessorException(bee, checkRetry(we));
} catch (ContextException ce) {
- __log.error(__msgs.msgScheduledJobFailed(we.getDetail()), ce);
+ __log.error(__msgs.msgScheduledJobFailed(we), ce);
throw new Scheduler.JobProcessorException(ce, checkRetry(we));
} catch (InvalidProcessException ipe) {
- __log.error(__msgs.msgScheduledJobFailed(we.getDetail()), ipe);
+ __log.error(__msgs.msgScheduledJobFailed(we), ipe);
sendMyRoleFault(process, we, ipe.getCauseCode());
} catch (RuntimeException rte) {
- __log.error(__msgs.msgScheduledJobFailed(we.getDetail()), rte);
+ __log.error(__msgs.msgScheduledJobFailed(we), rte);
throw new Scheduler.JobProcessorException(rte, checkRetry(we));
} catch (Throwable t) {
- __log.error(__msgs.msgScheduledJobFailed(we.getDetail()), t);
+ __log.error(__msgs.msgScheduledJobFailed(we), t);
throw new Scheduler.JobProcessorException(t, checkRetry(we));
}
}
- private boolean checkRetry(WorkEvent we) {
+ private boolean checkRetry(JobDetails we) {
// Only retry if the job is NOT in memory. Not that this does not guaranty that a retry will be scheduled.
// Actually events are not retried if not persisted and the scheduler might choose to discard the event if it has been retried too many times.
- return !we.isInMem();
+ return !we.getInMem();
}
/**
@@ -692,7 +701,7 @@
return false;
}
- public void sendMyRoleFault(BpelProcess process, WorkEvent we, int causeCode) {
+ public void sendMyRoleFault(BpelProcess process, JobDetails we, int causeCode) {
MessageExchange mex = (MessageExchange) getMessageExchange(we.getMexId());
if (!(mex instanceof MyRoleMessageExchange)) {
return;
@@ -725,7 +734,7 @@
&& activeProcess.getConf().getType().equals(process.getConf().getType())) {
we.setProcessId(activeProcess._pid);
((MyRoleMessageExchangeImpl) mex)._process = activeProcess;
- process.handleWorkEvent(we.getDetail());
+ process.handleJobDetails(we);
return;
}
}
@@ -741,7 +750,7 @@
}
}
- private void sendPartnerRoleFailure(WorkEvent we, FailureType failureType) {
+ private void sendPartnerRoleFailure(JobDetails we, FailureType failureType) {
MessageExchange mex = (MessageExchange) getMessageExchange(we.getMexId());
if (mex instanceof PartnerRoleMessageExchange) {
if (mex.getStatus() == MessageExchange.Status.ASYNC || mex.getStatus() == MessageExchange.Status.REQUEST) {
Modified: branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -55,6 +55,8 @@
import org.apache.ode.bpel.iapi.ProcessConf;
import org.apache.ode.bpel.iapi.Scheduler;
import org.apache.ode.bpel.iapi.ProcessConf.CLEANUP_CATEGORY;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
+import org.apache.ode.bpel.iapi.Scheduler.JobType;
import org.apache.ode.bpel.intercept.InstanceCountThrottler;
import org.apache.ode.bpel.intercept.InterceptorInvoker;
import org.apache.ode.bpel.intercept.MessageExchangeInterceptor;
@@ -286,6 +288,7 @@
return true;
} else if (routing.messageRoute != null) {
// Found a route, hitting it
+ _engine.acquireInstanceLock(routing.messageRoute.getTargetInstance().getInstanceId());
target.invokeInstance(mex, routing);
return true;
}
@@ -406,20 +409,20 @@
}
/**
- * @see org.apache.ode.bpel.engine.BpelProcess#handleWorkEvent(java.util.Map<java.lang.String,java.lang.Object>)
+ * @see org.apache.ode.bpel.engine.BpelProcess#handleJobDetails(java.util.Map<java.lang.String,java.lang.Object>)
*/
- public void handleWorkEvent(Map<String, Object> jobData) {
+ public void handleJobDetails(JobDetails jobData) {
try {
_hydrationLatch.latch(1);
markused();
if (__log.isDebugEnabled()) {
- __log.debug(ObjectPrinter.stringifyMethodEnter("handleWorkEvent", new Object[] { "jobData", jobData }));
+ __log.debug(ObjectPrinter.stringifyMethodEnter("handleJobDetails", new Object[] { "jobData", jobData }));
}
- WorkEvent we = new WorkEvent(jobData);
+ JobDetails we = jobData;
// Process level events
- if (we.getType().equals(WorkEvent.Type.INVOKE_INTERNAL)) {
+ if (we.getType().equals(JobType.INVOKE_INTERNAL)) {
if (__log.isDebugEnabled()) {
__log.debug("InvokeInternal event for mexid " + we.getMexId());
}
@@ -427,10 +430,10 @@
invokeProcess(mex);
} else {
// Instance level events
- ProcessInstanceDAO procInstance = getProcessDAO().getInstance(we.getIID());
+ ProcessInstanceDAO procInstance = getProcessDAO().getInstance(we.getInstanceId());
if (procInstance == null) {
if (__log.isDebugEnabled()) {
- __log.debug("handleWorkEvent: no ProcessInstance found with iid " + we.getIID() + "; ignoring.");
+ __log.debug("handleJobDetails: no ProcessInstance found with iid " + we.getInstanceId() + "; ignoring.");
}
return;
}
@@ -439,26 +442,26 @@
switch (we.getType()) {
case TIMER:
if (__log.isDebugEnabled()) {
- __log.debug("handleWorkEvent: TimerWork event for process instance " + processInstance);
+ __log.debug("handleJobDetails: TimerWork event for process instance " + processInstance);
}
processInstance.timerEvent(we.getChannel());
break;
case RESUME:
if (__log.isDebugEnabled()) {
- __log.debug("handleWorkEvent: ResumeWork event for iid " + we.getIID());
+ __log.debug("handleJobDetails: ResumeWork event for iid " + we.getInstanceId());
}
processInstance.execute();
break;
case INVOKE_RESPONSE:
if (__log.isDebugEnabled()) {
- __log.debug("InvokeResponse event for iid " + we.getIID());
+ __log.debug("InvokeResponse event for iid " + we.getInstanceId());
}
processInstance.invocationResponse(we.getMexId(), we.getChannel());
processInstance.execute();
break;
case MATCHER:
if (__log.isDebugEnabled()) {
- __log.debug("Matcher event for iid " + we.getIID());
+ __log.debug("Matcher event for iid " + we.getInstanceId());
}
if( procInstance.getState() == ProcessState.STATE_COMPLETED_OK
|| procInstance.getState() == ProcessState.STATE_COMPLETED_WITH_FAULT ) {
Modified: branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -48,6 +48,7 @@
import org.apache.ode.bpel.dao.ProcessDAO;
import org.apache.ode.bpel.dao.ProcessInstanceDAO;
import org.apache.ode.bpel.dao.ScopeDAO;
+import org.apache.ode.bpel.dao.ScopeStateEnum;
import org.apache.ode.bpel.dao.XmlDataDAO;
import org.apache.ode.bpel.evar.ExternalVariableModuleException;
import org.apache.ode.bpel.evar.ExternalVariableModule.Value;
@@ -57,7 +58,10 @@
import org.apache.ode.bpel.evt.ProcessInstanceStateChangeEvent;
import org.apache.ode.bpel.evt.ProcessMessageExchangeEvent;
import org.apache.ode.bpel.evt.ProcessTerminationEvent;
+import org.apache.ode.bpel.evt.ScopeCompletionEvent;
import org.apache.ode.bpel.evt.ScopeEvent;
+import org.apache.ode.bpel.evt.ScopeFaultEvent;
+import org.apache.ode.bpel.evt.ScopeStartEvent;
import org.apache.ode.bpel.iapi.BpelEngineException;
import org.apache.ode.bpel.iapi.ContextException;
import org.apache.ode.bpel.iapi.Endpoint;
@@ -72,6 +76,8 @@
import org.apache.ode.bpel.iapi.MessageExchange.Status;
import org.apache.ode.bpel.iapi.ProcessConf.CLEANUP_CATEGORY;
import org.apache.ode.bpel.iapi.ProcessConf.PartnerRoleConfig;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
+import org.apache.ode.bpel.iapi.Scheduler.JobType;
import org.apache.ode.bpel.intercept.InterceptorInvoker;
import org.apache.ode.bpel.memdao.ProcessInstanceDaoImpl;
import org.apache.ode.bpel.o.OFailureHandling;
@@ -698,29 +704,29 @@
}
public void registerTimer(TimerResponseChannel timerChannel, Date timeToFire) {
- WorkEvent we = new WorkEvent();
- we.setIID(_dao.getInstanceId());
+ JobDetails we = new JobDetails();
+ we.setInstanceId(_dao.getInstanceId());
we.setChannel(timerChannel.export());
- we.setType(WorkEvent.Type.TIMER);
+ we.setType(JobType.TIMER);
we.setInMem(_bpelProcess.isInMemory());
if(_bpelProcess.isInMemory()){
- _bpelProcess._engine._contexts.scheduler.scheduleVolatileJob(true, we.getDetail(), timeToFire);
+ _bpelProcess._engine._contexts.scheduler.scheduleVolatileJob(true, we, timeToFire);
}else{
- _bpelProcess._engine._contexts.scheduler.schedulePersistedJob(we.getDetail(), timeToFire);
+ _bpelProcess._engine._contexts.scheduler.schedulePersistedJob(we, timeToFire);
}
}
private void scheduleCorrelatorMatcher(String correlatorId, CorrelationKeySet keySet) {
- WorkEvent we = new WorkEvent();
- we.setIID(_dao.getInstanceId());
- we.setType(WorkEvent.Type.MATCHER);
+ JobDetails we = new JobDetails();
+ we.setInstanceId(_dao.getInstanceId());
+ we.setType(JobType.MATCHER);
we.setCorrelatorId(correlatorId);
we.setCorrelationKeySet(keySet);
we.setInMem(_bpelProcess.isInMemory());
if(_bpelProcess.isInMemory()){
- _bpelProcess._engine._contexts.scheduler.scheduleVolatileJob(true, we.getDetail());
+ _bpelProcess._engine._contexts.scheduler.scheduleVolatileJob(true, we);
}else{
- _bpelProcess._engine._contexts.scheduler.schedulePersistedJob(we.getDetail(), null);
+ _bpelProcess._engine._contexts.scheduler.schedulePersistedJob(we, null);
}
}
@@ -911,16 +917,16 @@
boolean isTwoWay = mex.getMessageExchangePattern() ==
org.apache.ode.bpel.iapi.MessageExchange.MessageExchangePattern.REQUEST_RESPONSE;
if (!_bpelProcess.isInMemory() && isTwoWay) {
- WorkEvent event = new WorkEvent();
+ JobDetails event = new JobDetails();
event.setMexId(mex.getMessageExchangeId());
event.setProcessId(_bpelProcess.getPID());
event.setInMem(false);
- event.setType(WorkEvent.Type.INVOKE_CHECK);
+ event.setType(JobType.INVOKE_CHECK);
// use a greater timeout to make sure the check job does not get executed while the service invocation is still waiting for a response
long timeout = getBpelProcess().getTimeout(partnerLink, p2p);
if (__log.isDebugEnabled()) __log.debug("Creating invocation check event in "+timeout+"ms for mexid " + mex.getMessageExchangeId());
Date future = new Date(System.currentTimeMillis() + timeout);
- String jobId = _bpelProcess._engine._contexts.scheduler.schedulePersistedJob(event.getDetail(), future);
+ String jobId = _bpelProcess._engine._contexts.scheduler.schedulePersistedJob(event, future);
mex.setProperty("invokeCheckJobId", jobId);
}
}
@@ -977,14 +983,14 @@
if (__log.isDebugEnabled())
__log.debug("MaxTime exceeded for instance # " + _iid);
try {
- WorkEvent we = new WorkEvent();
- we.setIID(_iid);
- we.setType(WorkEvent.Type.RESUME);
+ JobDetails we = new JobDetails();
+ we.setInstanceId(_iid);
+ we.setType(JobType.RESUME);
we.setInMem(_bpelProcess.isInMemory());
if (_bpelProcess.isInMemory())
- _bpelProcess._engine._contexts.scheduler.scheduleVolatileJob(true, we.getDetail());
+ _bpelProcess._engine._contexts.scheduler.scheduleVolatileJob(true, we);
else
- _bpelProcess._engine._contexts.scheduler.schedulePersistedJob(we.getDetail(), new Date());
+ _bpelProcess._engine._contexts.scheduler.schedulePersistedJob(we, new Date());
} catch (ContextException e) {
__log.error("Failed to schedule resume task.", e);
throw new BpelEngineException(e);
@@ -1119,6 +1125,11 @@
sendEvent(evt);
}
+ private void saveScopeState(Long scopeId, ScopeStateEnum scopeState) {
+ ScopeDAO scope = _dao.getScope(scopeId);
+ scope.setState(scopeState);
+ }
+
/**
* @see BpelRuntimeContext#sendEvent(org.apache.ode.bpel.evt.ProcessInstanceEvent)
*/
@@ -1132,7 +1143,17 @@
// filter scopes
List<String> scopeNames = null;
if (event instanceof ScopeEvent) {
- scopeNames = ((ScopeEvent) event).getParentScopesNames();
+ ScopeEvent sevent = (ScopeEvent) event;
+
+ scopeNames = sevent.getParentScopesNames();
+
+ if (sevent instanceof ScopeStartEvent) {
+ saveScopeState(sevent.getScopeId(), ScopeStateEnum.ACTIVE);
+ } else if (sevent instanceof ScopeCompletionEvent) {
+ saveScopeState(sevent.getScopeId(), ScopeStateEnum.COMPLETED);
+ } else if (sevent instanceof ScopeFaultEvent) {
+ saveScopeState(sevent.getScopeId(), ScopeStateEnum.FAULT);
+ }
}
// saving
@@ -1458,31 +1479,29 @@
MessageExchangeDAO mexdao = correlator.dequeueMessage(ckeySet);
if (mexdao != null) {
__log.debug("MatcherEvent handling: found matching message in DB (i.e. message arrived before <receive>)");
-
- if( MessageExchangePattern.REQUEST_RESPONSE.toString().equals(mexdao.getPattern())) {
- __log.warn("A message arrived before a receive is ready for a request/response pattern. This may be processed to success. However, you should consider revising your process since this may cause performance degradataion");
- }
-
- Set<String> groupIds = new HashSet<String>();
+ if( MessageExchangePattern.REQUEST_RESPONSE.toString().equals(mexdao.getPattern())) {
+ __log.warn("A message arrived before a receive is ready for a request/response pattern. This may be processed to success. However, you should consider revising your process since a TCP port and a container thread will be held for a longer time and the process will not scale under heavy load.");
+ }
+
for (MessageRouteDAO mroute : mroutes) {
// We have a match, so we can get rid of the routing entries.
- groupIds.add(mroute.getGroupId());
-
- // Found message matching one of our selectors.
- if (BpelProcess.__log.isDebugEnabled()) {
- BpelProcess.__log.debug("SELECT: " + mroute.getGroupId() + ": matched to MESSAGE " + mexdao
- + " on CKEYSET " + ckeySet);
- }
-
- MyRoleMessageExchangeImpl mex = new MyRoleMessageExchangeImpl(_bpelProcess, _bpelProcess._engine, mexdao);
-
- inputMsgMatch(mroute.getGroupId(), mroute.getIndex(), mex);
- execute();
+ correlator.removeRoutes(mroute.getGroupId(), _dao);
}
- for (String groupId : groupIds) {
- correlator.removeRoutes(groupId, _dao);
+
+ // Selecting first route to proceed, other matching entries are ignored
+ MessageRouteDAO mroute = mroutes.get(0);
+
+ // Found message matching one of our selectors.
+ if (BpelProcess.__log.isDebugEnabled()) {
+ BpelProcess.__log.debug("SELECT: " + mroute.getGroupId() + ": matched to MESSAGE " + mexdao
+ + " on CKEYSET " + ckeySet);
}
+ MyRoleMessageExchangeImpl mex = new MyRoleMessageExchangeImpl(_bpelProcess, _bpelProcess._engine, mexdao);
+
+ inputMsgMatch(mroute.getGroupId(), mroute.getIndex(), mex);
+ execute();
+
// Do not release yet if the process is suspended, the mex will be used again
if (_dao.getState() != ProcessState.STATE_SUSPENDED)
mexdao.releasePremieMessages();
Modified: branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -619,7 +619,7 @@
}
if( statusOfPriorTry == JOB_STATUS.COMPLETED ) {
resultsByJobId.remove(jobInfo.jobName);
- jobInfo.jobDetail.put("runnable_status", JOB_STATUS.COMPLETED);
+ jobInfo.jobDetail.getDetailsExt().put("runnable_status", JOB_STATUS.COMPLETED);
return;
}
if( statusOfPriorTry == JOB_STATUS.PENDING || statusOfPriorTry == JOB_STATUS.FAILED ) {
@@ -633,8 +633,8 @@
_polledRunnableExec.submit(new Runnable() {
public void run() {
try {
- MapSerializableRunnable runnable = (MapSerializableRunnable)jobInfo.jobDetail.get("runnable");
- runnable.restoreFromDetailsMap(jobInfo.jobDetail);
+ MapSerializableRunnable runnable = (MapSerializableRunnable)jobInfo.jobDetail.getDetailsExt().get("runnable");
+ runnable.restoreFromDetails(jobInfo.jobDetail);
if( runnable instanceof ContextsAware ) {
((ContextsAware)runnable).setContexts(_contexts);
}
@@ -653,7 +653,7 @@
});
}
- jobInfo.jobDetail.put("runnable_status", JOB_STATUS.IN_PROGRESS);
+ jobInfo.jobDetail.getDetailsExt().put("runnable_status", JOB_STATUS.IN_PROGRESS);
if( exceptionThrownOnPriorTry != null ) {
throw new Scheduler.JobProcessorException(exceptionThrownOnPriorTry, true);
}
Modified: branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/DebuggerSupport.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/DebuggerSupport.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/DebuggerSupport.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -21,6 +21,8 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.ode.bpel.iapi.DebuggerContext;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
+import org.apache.ode.bpel.iapi.Scheduler.JobType;
import org.apache.ode.bpel.bdi.breaks.Breakpoint;
import org.apache.ode.bpel.common.ProcessState;
import org.apache.ode.bpel.dao.BpelDAOConnection;
@@ -173,10 +175,10 @@
__log.debug("step(" + iid + ") adding step indicator to table.");
_step.add(iid);
- WorkEvent we = new WorkEvent();
- we.setIID(iid);
- we.setType(WorkEvent.Type.RESUME);
- _process._engine._contexts.scheduler.schedulePersistedJob(we.getDetail(), null);
+ JobDetails we = new JobDetails();
+ we.setInstanceId(iid);
+ we.setType(JobType.RESUME);
+ _process._engine._contexts.scheduler.schedulePersistedJob(we, null);
return true;
}
@@ -297,10 +299,10 @@
_process.saveEvent(evt, instance);
onEvent(evt);
- WorkEvent we = new WorkEvent();
- we.setType(WorkEvent.Type.RESUME);
- we.setIID(iid);
- _process._engine._contexts.scheduler.schedulePersistedJob(we.getDetail(), null);
+ JobDetails we = new JobDetails();
+ we.setType(JobType.RESUME);
+ we.setInstanceId(iid);
+ _process._engine._contexts.scheduler.schedulePersistedJob(we, null);
return true;
Modified: branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/Messages.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/Messages.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/Messages.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -18,6 +18,7 @@
*/
package org.apache.ode.bpel.engine;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
import org.apache.ode.utils.msg.MessageBundle;
import javax.xml.namespace.QName;
@@ -186,7 +187,7 @@
return format("Error registering expression language \"" + expressionLanguageUri + "\" with properties " + properties);
}
- public String msgScheduledJobFailed(Map<String, Object> jobDetail) {
+ public String msgScheduledJobFailed(JobDetails jobDetail) {
return format("Scheduled job failed; jobDetail={0}", jobDetail);
}
Modified: branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeImpl.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeImpl.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeImpl.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -41,6 +41,8 @@
import org.apache.ode.bpel.iapi.ProcessConf;
import org.apache.ode.bpel.iapi.Scheduler;
import org.apache.ode.bpel.iapi.ProcessConf.CLEANUP_CATEGORY;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
+import org.apache.ode.bpel.iapi.Scheduler.JobType;
import org.apache.ode.bpel.intercept.AbortMessageExchangeException;
import org.apache.ode.bpel.intercept.FaultMessageExchangeException;
import org.apache.ode.bpel.intercept.InterceptorInvoker;
@@ -137,8 +139,8 @@
return null;
} else {
// Schedule a new job for invocation
- WorkEvent we = new WorkEvent();
- we.setType(WorkEvent.Type.INVOKE_INTERNAL);
+ JobDetails we = new JobDetails();
+ we.setType(JobType.INVOKE_INTERNAL);
we.setInMem(target.isInMemory());
we.setProcessId(target.getPID());
we.setMexId(getDAO().getMessageExchangeId());
@@ -152,11 +154,11 @@
Replayer replayer = Replayer.replayer.get();
if (replayer == null) {
if (target.isInMemory())
- _engine._contexts.scheduler.scheduleVolatileJob(true, we.getDetail());
+ _engine._contexts.scheduler.scheduleVolatileJob(true, we);
else
- _engine._contexts.scheduler.schedulePersistedJob(we.getDetail(), null);
+ _engine._contexts.scheduler.schedulePersistedJob(we, null);
} else {
- replayer.scheduler.schedulePersistedJob(we.getDetail(), null);
+ replayer.scheduler.schedulePersistedJob(we, null);
}
return new ResponseFuture(getClientId());
}
Modified: branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerLinkMyRoleImpl.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerLinkMyRoleImpl.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerLinkMyRoleImpl.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -211,14 +211,15 @@
public void invokeInstance(MyRoleMessageExchangeImpl mex, RoutingInfo routing) {
Operation operation = getMyRoleOperation(mex.getOperationName());
if (__log.isDebugEnabled()) {
- __log.debug("INPUTMSG: " + routing.correlator.getCorrelatorId() + ": ROUTING to instance "
+ __log.debug("INPUTMSG: " + routing.correlator.getCorrelatorId() + ": ROUTING to existing instance "
+ routing.messageRoute.getTargetInstance().getInstanceId());
}
ProcessInstanceDAO instanceDao = routing.messageRoute.getTargetInstance();
+ BpelProcess process2 = _process._engine._activeProcesses.get(instanceDao.getProcess().getProcessId());
// Reload process instance for DAO.
- BpelRuntimeContextImpl instance = _process.createRuntimeContext(instanceDao, null, null);
+ BpelRuntimeContextImpl instance = process2.createRuntimeContext(instanceDao, null, null);
instance.inputMsgMatch(routing.messageRoute.getGroupId(), routing.messageRoute.getIndex(), mex);
// Kill the route so some new message does not get routed to
@@ -226,16 +227,16 @@
routing.correlator.removeRoutes(routing.messageRoute.getGroupId(), instanceDao);
// send process instance event
- CorrelationMatchEvent evt = new CorrelationMatchEvent(new QName(_process.getOProcess().targetNamespace,
- _process.getOProcess().getName()), _process.getProcessDAO().getProcessId(),
+ CorrelationMatchEvent evt = new CorrelationMatchEvent(new QName(process2.getOProcess().targetNamespace,
+ process2.getOProcess().getName()), process2.getProcessDAO().getProcessId(),
instanceDao.getInstanceId(), routing.matchedKeySet);
evt.setPortType(mex.getPortType().getQName());
evt.setOperation(operation.getName());
evt.setMexId(mex.getMessageExchangeId());
- _process._debugger.onEvent(evt);
+ process2._debugger.onEvent(evt);
// store event
- _process.saveEvent(evt, instanceDao);
+ process2.saveEvent(evt, instanceDao);
mex.setCorrelationStatus(MyRoleMessageExchange.CorrelationStatus.MATCHED);
mex.getDAO().setInstance(routing.messageRoute.getTargetInstance());
Modified: branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerRoleMessageExchangeImpl.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerRoleMessageExchangeImpl.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerRoleMessageExchangeImpl.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -22,13 +22,14 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.ode.bpel.dao.MessageExchangeDAO;
-import org.apache.ode.bpel.engine.WorkEvent.Type;
import org.apache.ode.bpel.engine.replayer.Replayer;
import org.apache.ode.bpel.iapi.BpelEngineException;
import org.apache.ode.bpel.iapi.EndpointReference;
import org.apache.ode.bpel.iapi.Message;
import org.apache.ode.bpel.iapi.PartnerRoleChannel;
import org.apache.ode.bpel.iapi.PartnerRoleMessageExchange;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
+import org.apache.ode.bpel.iapi.Scheduler.JobType;
import org.apache.ode.utils.DOMUtils;
import org.w3c.dom.Element;
@@ -132,20 +133,20 @@
if (LOG.isDebugEnabled()) {
LOG.debug("create work event for mex=" + getMessageExchangeId());
}
- WorkEvent we = new WorkEvent();
- we.setIID(getDAO().getInstance().getInstanceId());
- we.setType(Type.INVOKE_RESPONSE);
+ JobDetails we = new JobDetails();
+ we.setInstanceId(getDAO().getInstance().getInstanceId());
+ we.setType(JobType.INVOKE_RESPONSE);
we.setInMem(_engine._activeProcesses.get(getDAO().getProcess().getProcessId()).isInMemory());
we.setChannel(getDAO().getChannel());
we.setMexId(getDAO().getMessageExchangeId());
Replayer replayer = Replayer.replayer.get();
if (replayer == null) {
- if (we.isInMem())
- _engine._contexts.scheduler.scheduleVolatileJob(true, we.getDetail());
+ if (we.getInMem())
+ _engine._contexts.scheduler.scheduleVolatileJob(true, we);
else
- _engine._contexts.scheduler.schedulePersistedJob(we.getDetail(), null);
+ _engine._contexts.scheduler.schedulePersistedJob(we, null);
} else {
- replayer.scheduler.schedulePersistedJob(we.getDetail(), null);
+ replayer.scheduler.schedulePersistedJob(we, null);
}
}
Modified: branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -75,6 +75,7 @@
import org.apache.ode.bpel.evt.ScopeEvent;
import org.apache.ode.bpel.evt.ScopeFaultEvent;
import org.apache.ode.bpel.evt.VariableEvent;
+import org.apache.ode.bpel.evt.VariableModificationEvent;
import org.apache.ode.bpel.evtproc.ActivityStateDocumentBuilder;
import org.apache.ode.bpel.iapi.BpelEngineException;
import org.apache.ode.bpel.iapi.BpelServer;
@@ -133,6 +134,7 @@
import org.apache.ode.bpel.pmapi.TVariableInfo;
import org.apache.ode.bpel.pmapi.TVariableRef;
import org.apache.ode.bpel.pmapi.VariableInfoDocument;
+import org.apache.ode.utils.DOMUtils;
import org.apache.ode.utils.ISO8601DateParser;
import org.apache.ode.utils.msg.MessageBundle;
import org.apache.ode.utils.stl.CollectionsX;
@@ -1164,8 +1166,7 @@
info.setMexId(((ProcessMessageExchangeEvent) event).getMessageExchangeId());
}
if (event instanceof ScopeCompletionEvent) {
- info.setSuccess(((ScopeCompletionEvent) event).isSuccess());
- info.setFault(((ScopeCompletionEvent) event).getFault());
+ info.setSuccess(true);
}
if (event instanceof ScopeEvent) {
info.setScopeId(((ScopeEvent) event).getScopeId());
@@ -1183,6 +1184,9 @@
if (event instanceof VariableEvent) {
info.setVariableName(((VariableEvent) event).getVarName());
}
+ if(event instanceof VariableModificationEvent) {
+ info.setNewValue(DOMUtils.domToString(((VariableModificationEvent) event).getNewValue()));
+ }
}
/**
Modified: branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessCleanUpRunnable.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessCleanUpRunnable.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessCleanUpRunnable.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -1,3 +1,21 @@
+/*
+ * 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.bpel.engine;
import java.io.Serializable;
@@ -4,11 +22,14 @@
import java.util.Map;
import java.util.concurrent.Callable;
+import javax.xml.namespace.QName;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.ode.bpel.dao.DeferredProcessInstanceCleanable;
import org.apache.ode.bpel.dao.ProcessDAO;
import org.apache.ode.bpel.engine.BpelServerImpl.ContextsAware;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
import org.apache.ode.bpel.iapi.Scheduler.MapSerializableRunnable;
public class ProcessCleanUpRunnable implements MapSerializableRunnable, ContextsAware {
@@ -28,12 +49,12 @@
_pid = pid;
}
- public void storeToDetailsMap(Map<String, Object> details) {
- details.put("pid", _pid);
+ public void storeToDetails(JobDetails details) {
+ details.getDetailsExt().put("pid", _pid);
}
- public void restoreFromDetailsMap(Map<String, Object> details) {
- _pid = (Serializable)details.get("pid");
+ public void restoreFromDetails(JobDetails details) {
+ _pid = (Serializable) details.getDetailsExt().get("pid");
}
public void setContexts(Contexts contexts) {
@@ -65,4 +86,4 @@
}
if(__log.isInfoEnabled()) __log.info("Deleted runtime data for old process: " + _pid + ".");
}
-}
\ No newline at end of file
+}
Modified: branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessStatusConverter.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessStatusConverter.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessStatusConverter.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -61,11 +61,8 @@
}
__scopeStateMap.put(ScopeStateEnum.ACTIVE, TScopeStatus.ACTIVE);
- __scopeStateMap.put(ScopeStateEnum.COMPENSATED,TScopeStatus.COMPENSATED);
- __scopeStateMap.put(ScopeStateEnum.COMPENSATING,TScopeStatus.COMPENSATING);
__scopeStateMap.put(ScopeStateEnum.COMPLETED,TScopeStatus.COMPLETED);
- __scopeStateMap.put(ScopeStateEnum.FAULTED,TScopeStatus.FAULTED);
- __scopeStateMap.put(ScopeStateEnum.FAULTHANDLER,TScopeStatus.FAULTED);
+ __scopeStateMap.put(ScopeStateEnum.FAULT,TScopeStatus.FAULTED);
}
Modified: branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/CronScheduler.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/CronScheduler.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/CronScheduler.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -1,3 +1,21 @@
+/*
+ * 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.bpel.engine.cron;
import java.util.ArrayList;
@@ -20,6 +38,7 @@
import org.apache.ode.bpel.iapi.ClusterAware;
import org.apache.ode.bpel.iapi.ProcessConf;
import org.apache.ode.bpel.iapi.ProcessConf.CronJob;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
import org.apache.ode.bpel.iapi.Scheduler.MapSerializableRunnable;
import org.apache.ode.utils.CronExpression;
@@ -112,11 +131,11 @@
Runnable runnable = new Runnable() {
public void run() {
if( __log.isDebugEnabled() ) __log.debug("Running cron cleanup with details list size: " + job.getRunnableDetailList().size());
- for( Map<String, Object> details : job.getRunnableDetailList() ) {
+ for( JobDetails details : job.getRunnableDetailList() ) {
try {
// for each clean up for the scheduled time
RuntimeDataCleanupRunnable cleanup = new RuntimeDataCleanupRunnable();
- cleanup.restoreFromDetailsMap(details);
+ cleanup.restoreFromDetails(details);
cleanup.setContexts(_contexts);
cleanup.run();
if( __log.isDebugEnabled() ) __log.debug("Finished running runtime data cleanup from a PROCESS CRON job: " + cleanup);
@@ -168,17 +187,17 @@
// for each different scheduled time
Runnable runnable = new Runnable() {
public void run() {
- for( Map<String, Object> details : job.getRunnableDetailList() ) {
+ for( JobDetails details : job.getRunnableDetailList() ) {
try {
// for now, we have only runtime data cleanup cron job defined
// for each clean up for the scheduled time
RuntimeDataCleanupRunnable cleanup = new RuntimeDataCleanupRunnable();
synchronized( _terminationListenersByPid ) {
if( !_terminationListenersByPid.isEmpty() ) {
- details.put("pidsToExclude", _terminationListenersByPid.keySet());
+ details.getDetailsExt().put("pidsToExclude", _terminationListenersByPid.keySet());
}
}
- cleanup.restoreFromDetailsMap(details);
+ cleanup.restoreFromDetails(details);
cleanup.setContexts(_contexts);
cleanup.run();
if( __log.isDebugEnabled() ) __log.debug("Finished running runtime data cleanup from a SYSTEM CRON job:" + cleanup);
@@ -197,7 +216,7 @@
}
public TerminationListener schedule(final CronExpression cronExpression,
- final Runnable runnable, final Map<String, Object> runnableDetails,
+ final Runnable runnable, final JobDetails runnableDetails,
TerminationListener terminationListener) {
if( _shuttingDown ) {
__log.info("CRON Scheduler is being shut down. This new scheduling request is ignored.");
@@ -250,12 +269,12 @@
private volatile boolean terminated = false;
private Date nextScheduleTime;
private Runnable runnable;
- private Map<String, Object> runnableDetails;
+ private JobDetails runnableDetails;
private CronExpression cronExpression;
private TerminationListener terminationListener;
public CronScheduledJob(Date nextScheduleTime,
- Runnable runnable, Map<String, Object> runnableDetails,
+ Runnable runnable, JobDetails runnableDetails,
CronExpression cronExpression, TerminationListener terminationListener) {
this.nextScheduleTime = nextScheduleTime;
this.runnable = runnable;
@@ -277,7 +296,7 @@
nextScheduleTime.getTime() < System.currentTimeMillis() + TOLERABLE_SCHEDULE_DELAY) {
if( runnableDetails != null &&
runnable instanceof MapSerializableRunnable ) {
- ((MapSerializableRunnable)runnable).restoreFromDetailsMap(runnableDetails);
+ ((MapSerializableRunnable)runnable).restoreFromDetails(runnableDetails);
}
if (runnable instanceof ContextsAware) {
((ContextsAware) runnable).setContexts(_contexts);
@@ -306,4 +325,4 @@
return terminationListener;
}
}
-}
\ No newline at end of file
+}
Modified: branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/RuntimeDataCleanupRunnable.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/RuntimeDataCleanupRunnable.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/RuntimeDataCleanupRunnable.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -1,5 +1,24 @@
+/*
+ * 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.bpel.engine.cron;
+import java.io.Serializable;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.Callable;
@@ -15,6 +34,7 @@
import org.apache.ode.bpel.engine.BpelServerImpl.ContextsAware;
import org.apache.ode.bpel.iapi.ProcessConf.CLEANUP_CATEGORY;
import org.apache.ode.bpel.iapi.ProcessConf.CleanupInfo;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
import org.apache.ode.bpel.iapi.Scheduler.MapSerializableRunnable;
public class RuntimeDataCleanupRunnable implements MapSerializableRunnable, ContextsAware {
@@ -33,14 +53,14 @@
}
@SuppressWarnings("unchecked")
- public void restoreFromDetailsMap(Map<String, Object> details) {
- _cleanupInfo = (CleanupInfo)details.get("cleanupInfo");
- _transactionSize = (Integer)details.get("transactionSize");
- _pid = (QName)details.get("pid");
- _pidsToExclude = (Set<QName>)details.get("pidsToExclude");
+ public void restoreFromDetails(JobDetails details) {
+ _cleanupInfo = (CleanupInfo)details.getDetailsExt().get("cleanupInfo");
+ _transactionSize = (Integer)details.getDetailsExt().get("transactionSize");
+ _pid = (QName) details.getDetailsExt().get("pid");
+ _pidsToExclude = (Set<QName>)details.getDetailsExt().get("pidsToExclude");
}
- public void storeToDetailsMap(Map<String, Object> details) {
+ public void storeToDetails(JobDetails details) {
// we don't serialize
}
Modified: branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/SystemSchedulesConfig.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/SystemSchedulesConfig.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/SystemSchedulesConfig.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -1,3 +1,21 @@
+/*
+ * 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.bpel.engine.cron;
import java.io.File;
@@ -15,6 +33,7 @@
import org.apache.ode.bpel.iapi.ContextException;
import org.apache.ode.bpel.iapi.ProcessConf.CleanupInfo;
import org.apache.ode.bpel.iapi.ProcessConf.CronJob;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
import org.apache.ode.store.ProcessCleanupConfImpl;
import org.apache.ode.utils.CronExpression;
import org.apache.xmlbeans.XmlOptions;
@@ -64,9 +83,10 @@
cleanupInfo.setFilters(aCleanup.getFilterList());
ProcessCleanupConfImpl.processACleanup(cleanupInfo.getCategories(), aCleanup.getCategoryList());
- Map<String, Object> runnableDetails = new HashMap<String, Object>();
- runnableDetails.put("cleanupInfo", cleanupInfo);
- runnableDetails.put("transactionSize", 10);
+ JobDetails runnableDetails = new JobDetails();
+
+ runnableDetails.getDetailsExt().put("cleanupInfo", cleanupInfo);
+ runnableDetails.getDetailsExt().put("transactionSize", 10);
job.getRunnableDetailList().add(runnableDetails);
__log.info("SYSTEM CRON configuration added a runtime data cleanup: " + runnableDetails);
}
@@ -100,4 +120,4 @@
return sd;
}
-}
\ No newline at end of file
+}
Modified: branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/Replayer.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/Replayer.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/Replayer.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -40,13 +40,14 @@
import org.apache.ode.bpel.engine.BpelProcess;
import org.apache.ode.bpel.engine.MyRoleMessageExchangeImpl;
import org.apache.ode.bpel.engine.PartnerLinkMyRoleImpl;
-import org.apache.ode.bpel.engine.WorkEvent;
import org.apache.ode.bpel.engine.PartnerLinkMyRoleImpl.RoutingInfo;
import org.apache.ode.bpel.evt.CorrelationMatchEvent;
import org.apache.ode.bpel.iapi.BpelEngine;
import org.apache.ode.bpel.iapi.MyRoleMessageExchange;
import org.apache.ode.bpel.iapi.MessageExchange.Status;
import org.apache.ode.bpel.iapi.ProcessConf.CLEANUP_CATEGORY;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
+import org.apache.ode.bpel.iapi.Scheduler.JobType;
import org.apache.ode.bpel.pmapi.CommunicationType;
import org.apache.ode.bpel.pmapi.ExchangeType;
import org.apache.ode.bpel.pmapi.FaultType;
@@ -222,10 +223,10 @@
return null;
}
- public void handleWorkEvent(Map<String, Object> jobDetail, final Date when) {
- WorkEvent we = new WorkEvent(jobDetail);
- __log.debug("handleWorkEvent " + jobDetail + " " + when);
- if (we.getType() == WorkEvent.Type.INVOKE_INTERNAL) {
+ public void handleJobDetails(JobDetails jobDetail, final Date when) {
+ JobDetails we = jobDetail;
+ __log.debug("handleJobDetails " + jobDetail + " " + when);
+ if (we.getType() == JobType.INVOKE_INTERNAL) {
final BpelProcess p = engine._activeProcesses.get(we.getProcessId());
final ProcessDAO processDAO = p.getProcessDAO();
final MyRoleMessageExchangeImpl mex = (MyRoleMessageExchangeImpl) engine.getMessageExchange(we.getMexId());
@@ -270,9 +271,9 @@
return false;
}
});
- } else if (we.getType() == WorkEvent.Type.INVOKE_RESPONSE) {
+ } else if (we.getType() == JobType.INVOKE_RESPONSE) {
__log.debug("reply for live communication");
- ReplayerContext ctx = findReplayedInstance(we.getIID());
+ ReplayerContext ctx = findReplayedInstance(we.getInstanceId());
assert ctx != null;
ctx.runtimeContext.invocationResponse(we.getMexId(), we.getChannel());
ctx.runtimeContext.execute();
Modified: branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/ReplayerScheduler.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/ReplayerScheduler.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/ReplayerScheduler.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -129,12 +129,12 @@
return null;
}
- public String schedulePersistedJob(final Map<String, Object> jobDetail, final Date when1) throws ContextException {
+ public String schedulePersistedJob(final JobDetails jobDetail, final Date when1) throws ContextException {
final Date when = when1 == null ? currentTaskElement.get().when : when1;
__log.debug("schedulePersistedJob " + jobDetail + " " + when, new Exception());
scheduleReplayerJob(new Callable<Void>() {
public Void call() throws Exception {
- replayer.handleWorkEvent(jobDetail, when);
+ replayer.handleJobDetails(jobDetail, when);
return null;
}
}, when, null);
@@ -145,13 +145,13 @@
public void setPolledRunnableProcesser(JobProcessor polledRunnableProcessor) {
}
- public String scheduleVolatileJob(boolean transacted, Map<String, Object> jobDetail, Date when) throws ContextException {
+ public String scheduleVolatileJob(boolean transacted, JobDetails jobDetail, Date when) throws ContextException {
// TODO Auto-generated method stub
__log.debug("scheduleVolatileJob");
return null;
}
- public String scheduleVolatileJob(boolean transacted, Map<String, Object> jobDetail) throws ContextException {
+ public String scheduleVolatileJob(boolean transacted, JobDetails jobDetail) throws ContextException {
// TODO Auto-generated method stub
__log.debug("scheduleVolatileJob");
return null;
Modified: branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/extvar/jdbc/DbExternalVariable.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/extvar/jdbc/DbExternalVariable.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/extvar/jdbc/DbExternalVariable.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -142,7 +142,8 @@
sb.append(c.colname);
}
- sb.append(" from " + table);
+ sb.append(" from ");
+ sb.append(schema + "." + table);
if (_keycolumns.size() > 0) {
sb.append(" where ");
first = true;
@@ -166,7 +167,7 @@
private void createUpdate() {
_updcolumns.clear();
StringBuilder sb = new StringBuilder("update ");
- sb.append(table);
+ sb.append(schema + "." + table);
sb.append(" set ");
boolean first = true;
for (Column c : _columns) {
@@ -213,7 +214,7 @@
private void createInsert() {
_inscolumns.clear();
StringBuilder sb = new StringBuilder("insert into ");
- sb.append(table);
+ sb.append(schema + "." + table);
sb.append(" ( ");
boolean first = true;
for (Column c : _columns) {
Modified: branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/ProcessDaoImpl.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/ProcessDaoImpl.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/ProcessDaoImpl.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -242,7 +242,9 @@
Long id = (Long) oldInstances[i];
Long age = _instancesAge.get(id);
if (age != null && now-age > _conn._mexTtl) {
- __log.warn("Discarding in-memory instance "+id+" because it exceeded its time-to-live: "+_instances.get(id));
+ if (_instances.get(id) != null) {
+ __log.warn("Discarding in-memory instance "+id+" because it exceeded its time-to-live: "+_instances.get(id));
+ }
_instances.remove(id);
_instancesAge.remove(id);
}
Modified: branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -432,7 +432,8 @@
rvalue = ((Document)rvalue).getDocumentElement();
}
- if (headerAssign && lvaluePtr.getParentNode().getNodeName().equals("message") && rvalue.getNodeType()==Node.ELEMENT_NODE) {
+ Node parentNode = lvaluePtr.getParentNode();
+ if (headerAssign && parentNode != null && "message".equals(parentNode.getNodeName()) && rvalue.getNodeType()==Node.ELEMENT_NODE ) {
lvalue = copyInto((Element)lvalue, (Element) lvaluePtr, (Element) rvalue);
} else if (rvalue.getNodeType() == Node.ELEMENT_NODE && lvaluePtr.getNodeType() == Node.ELEMENT_NODE) {
lvalue = replaceElement((Element)lvalue, (Element) lvaluePtr, (Element) rvalue,
Modified: branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/SCOPE.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/SCOPE.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/SCOPE.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -30,6 +30,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.ode.bpel.evt.ScopeCompletionEvent;
import org.apache.ode.bpel.evt.ScopeFaultEvent;
import org.apache.ode.bpel.evt.ScopeStartEvent;
import org.apache.ode.bpel.evt.VariableModificationEvent;
@@ -352,6 +353,8 @@
});
}
} else /* completed ok */ {
+ sendEvent(new ScopeCompletionEvent());
+
if (_oscope.compensationHandler != null) {
CompensationHandler compensationHandler = new CompensationHandler(
_scopeFrame,
Modified: branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/WAIT.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/WAIT.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/WAIT.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -57,7 +57,8 @@
} catch (EvaluationException ee) {
String msg = "Unexpected error evaluating wait condition.";
__log.error(msg, ee);
- throw new InvalidProcessException(msg,ee);
+ _self.parent.completed(createFault(_self.o.getOwner().constants.qnSubLanguageExecutionFault, _self.o), CompensationHandler.emptySet());
+ return;
}
Modified: branches/ODE/ODE-1.x-fixes/bpel-runtime/src/test/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeImplTest.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-runtime/src/test/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeImplTest.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-runtime/src/test/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeImplTest.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -1,3 +1,21 @@
+/*
+ * 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.bpel.engine;
import java.util.Map;
Modified: branches/ODE/ODE-1.x-fixes/bpel-runtime/src/test/java/org/apache/ode/bpel/engine/cron/CronSchedulerTest.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-runtime/src/test/java/org/apache/ode/bpel/engine/cron/CronSchedulerTest.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-runtime/src/test/java/org/apache/ode/bpel/engine/cron/CronSchedulerTest.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -1,3 +1,21 @@
+/*
+ * 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.bpel.engine.cron;
import java.util.HashMap;
@@ -17,6 +35,7 @@
import org.apache.ode.bpel.iapi.Scheduler;
import org.apache.ode.bpel.iapi.ProcessConf.CLEANUP_CATEGORY;
import org.apache.ode.bpel.iapi.ProcessConf.CleanupInfo;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
import org.apache.ode.daohib.bpel.BpelDAOConnectionImpl;
import org.apache.ode.utils.CronExpression;
import org.jmock.Mock;
@@ -71,14 +90,14 @@
CronExpression cronExpr = new CronExpression("* * * * * ?");
RuntimeDataCleanupRunnable runnable = new RuntimeDataCleanupRunnable();
- Map<String, Object> details = new HashMap<String, Object>();
- details.put("pid", new QName("test"));
- details.put("transactionSize", 10);
+ JobDetails details = new JobDetails();
+ details.setProcessId(new QName("test"));
+ details.getDetailsExt().put("transactionSize", 10);
CleanupInfo cleanupInfo = new CleanupInfo();
cleanupInfo.getFilters().add("a=b");
cleanupInfo.getCategories().add(CLEANUP_CATEGORY.CORRELATIONS);
- details.put("cleanupInfo", cleanupInfo);
- runnable.restoreFromDetailsMap(details);
+ details.getDetailsExt().put("cleanupInfo", cleanupInfo);
+ runnable.restoreFromDetails(details);
runnable.setContexts(contexts);
NotifyingTerminationListener listener = new NotifyingTerminationListener();
@@ -89,4 +108,4 @@
}
}
}
-}
\ No newline at end of file
+}
Modified: branches/ODE/ODE-1.x-fixes/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -342,10 +342,10 @@
_scheduler.setJobProcessor(server);
}
- public String schedulePersistedJob(Map<String,Object>jobDetail,Date when) throws ContextException {
+ public String schedulePersistedJob(JobDetails jobDetail,Date when) throws ContextException {
String jobId = _scheduler.schedulePersistedJob(jobDetail, when);
// Invocation checks get scheduled much later, we don't want (or need) to wait for them
- if (!"INVOKE_CHECK".equals(jobDetail.get("type")))
+ if (jobDetail.getType() != JobType.INVOKE_CHECK)
_nextSchedule = when == null ? System.currentTimeMillis() : when.getTime();
return jobId;
}
@@ -355,11 +355,11 @@
return new GUID().toString();
}
- public String scheduleVolatileJob(boolean transacted, Map<String,Object> jobDetail) throws ContextException {
+ public String scheduleVolatileJob(boolean transacted, JobDetails jobDetail) throws ContextException {
return scheduleVolatileJob(transacted, jobDetail, null);
}
- public String scheduleVolatileJob(boolean transacted, Map<String, Object> jobDetail, Date when) throws ContextException {
+ public String scheduleVolatileJob(boolean transacted, JobDetails jobDetail, Date when) throws ContextException {
String jobId = _scheduler.scheduleVolatileJob(transacted, jobDetail, when);
_nextSchedule = System.currentTimeMillis();
return jobId;
Modified: branches/ODE/ODE-1.x-fixes/bpel-runtime/src/test/resources/recovery/failure-to-fault2.bpel
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-runtime/src/test/resources/recovery/failure-to-fault2.bpel 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-runtime/src/test/resources/recovery/failure-to-fault2.bpel 2010-05-28 04:59:49 UTC (rev 677)
@@ -49,30 +49,19 @@
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>
</invoke>
<invoke name="response"
partnerLink="instantiatingPartnerLink"
portType="tns:ResponsePortType"
operation="respond"
inputVariable="response">
- <targets>
- <target linkName="successfulInvoke"/>
- </targets>
</invoke>
- </flow>
</sequence>
</process>
Modified: branches/ODE/ODE-1.x-fixes/bpel-schemas/src/main/xsd/pmapi.xsd
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-schemas/src/main/xsd/pmapi.xsd 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-schemas/src/main/xsd/pmapi.xsd 2010-05-28 04:59:49 UTC (rev 677)
@@ -781,6 +781,7 @@
<element name="activity-failure-reason" type="xs:string" minOccurs="0" maxOccurs="1"/>
<element name="activity-recovery-action" type="xs:string" minOccurs="0" maxOccurs="1"/>
<element name="variable-name" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ <element name="new-value" type="xs:string" minOccurs="0" maxOccurs="1"/>
<element name="port-type" type="xs:QName" minOccurs="0" maxOccurs="1"/>
<element name="operation" type="xs:string" minOccurs="0" maxOccurs="1"/>
<element name="correlation-set" type="xs:string" minOccurs="0" maxOccurs="1"/>
Modified: branches/ODE/ODE-1.x-fixes/bpel-scripts/src/main/resources/2.0/good/circularReference/CircularReference.bpel
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-scripts/src/main/resources/2.0/good/circularReference/CircularReference.bpel 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-scripts/src/main/resources/2.0/good/circularReference/CircularReference.bpel 2010-05-28 04:59:49 UTC (rev 677)
@@ -1,4 +1,22 @@
<?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.
+ -->
<bpel:process xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop"
xmlns:pnlk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
@@ -26,4 +44,4 @@
operation="EventStartMessage" variable="start"
createInstance="yes" name="start" partnerLink="pnlk" />
</bpel:sequence>
-</bpel:process>
\ No newline at end of file
+</bpel:process>
Modified: branches/ODE/ODE-1.x-fixes/bpel-scripts/src/main/resources/2.0/good/circularReference/CircularReference1.wsdl
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-scripts/src/main/resources/2.0/good/circularReference/CircularReference1.wsdl 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-scripts/src/main/resources/2.0/good/circularReference/CircularReference1.wsdl 2010-05-28 04:59:49 UTC (rev 677)
@@ -1,4 +1,22 @@
<?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 xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop"
@@ -47,4 +65,4 @@
<soap:address location="http://example.com/hello"/>
</wsdl:port>
</wsdl:service>
-</wsdl:definitions>
\ No newline at end of file
+</wsdl:definitions>
Modified: branches/ODE/ODE-1.x-fixes/bpel-scripts/src/main/resources/2.0/good/circularReference/CircularReference2.wsdl
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-scripts/src/main/resources/2.0/good/circularReference/CircularReference2.wsdl 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-scripts/src/main/resources/2.0/good/circularReference/CircularReference2.wsdl 2010-05-28 04:59:49 UTC (rev 677)
@@ -1,4 +1,22 @@
<?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 xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop"
@@ -44,4 +62,4 @@
<soap:address location="http://example.com/hello"/>
</wsdl:port>
</wsdl:service>
-</wsdl:definitions>
\ No newline at end of file
+</wsdl:definitions>
Modified: branches/ODE/ODE-1.x-fixes/bpel-store/pom.xml
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-store/pom.xml 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-store/pom.xml 2010-05-28 04:59:49 UTC (rev 677)
@@ -100,6 +100,11 @@
<groupId>wsdl4j</groupId>
<artifactId>wsdl4j</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring</artifactId>
+ <version>${spring.version}</version>
+ </dependency>
<dependency>
<groupId>commons-collections</groupId>
Modified: branches/ODE/ODE-1.x-fixes/bpel-store/src/main/java/org/apache/ode/store/DeploymentUnitDir.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-store/src/main/java/org/apache/ode/store/DeploymentUnitDir.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-store/src/main/java/org/apache/ode/store/DeploymentUnitDir.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -29,6 +29,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Properties;
import java.util.Set;
import javax.wsdl.Definition;
@@ -54,6 +55,17 @@
import org.apache.ode.utils.InternPool.InternableBlock;
import org.apache.ode.utils.fs.FileUtils;
import org.apache.xmlbeans.XmlOptions;
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.BeanFactory;
+import org.springframework.beans.factory.NoSuchBeanDefinitionException;
+import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationEvent;
+import org.springframework.context.MessageSourceResolvable;
+import org.springframework.context.NoSuchMessageException;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+import org.springframework.context.support.FileSystemXmlApplicationContext;
+import org.springframework.core.io.Resource;
import org.w3c.dom.Node;
/**
@@ -70,6 +82,7 @@
private String _name;
private File _duDirectory;
private File _descriptorFile;
+ private Properties _properties = new Properties();
private HashMap<QName, CBPInfo> _processes = new HashMap<QName, CBPInfo>();
private HashMap<QName, TDeployment.Process> _processInfo = new HashMap<QName, TDeployment.Process>();
@@ -118,6 +131,17 @@
if (!_descriptorFile.exists())
throw new IllegalArgumentException("Directory " + dir + " does not contain a deploy.xml file!");
+
+ try {
+ ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
+ _properties = (java.util.Properties) ctx.getBean("properties");
+ if (__log.isDebugEnabled()) {
+ __log.debug("Loaded spring properties from file beans.xml:" + _properties + " for " + _name);
+ }
+ } catch (Exception e) {
+ __log.info("Can't initialize beans.xml application context " + e + " for " + _name);
+ }
+
}
@@ -366,7 +390,7 @@
continue;
if (bpelFile.getName().equals(process.getFileName())) {
- Map<QName, Node> props = ProcessStoreImpl.calcInitialProperties(process);
+ Map<QName, Node> props = ProcessStoreImpl.calcInitialProperties(_properties, process);
Map<String, Object> result = new HashMap<String, Object>();
result.put(BpelC.PROCESS_CUSTOM_PROPERTIES, props);
return result;
@@ -412,4 +436,7 @@
_version = version;
}
+ public Properties getProperties() {
+ return _properties;
+ }
}
Modified: branches/ODE/ODE-1.x-fixes/bpel-store/src/main/java/org/apache/ode/store/ProcessConfImpl.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-store/src/main/java/org/apache/ode/store/ProcessConfImpl.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-store/src/main/java/org/apache/ode/store/ProcessConfImpl.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -19,14 +19,23 @@
package org.apache.ode.store;
import java.io.File;
+import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
-import java.io.FileFilter;
import java.net.URI;
import java.text.ParseException;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
import javax.wsdl.Definition;
import javax.xml.namespace.QName;
@@ -46,18 +55,18 @@
import org.apache.ode.bpel.evt.BpelEvent;
import org.apache.ode.bpel.iapi.ContextException;
import org.apache.ode.bpel.iapi.Endpoint;
+import org.apache.ode.bpel.iapi.EndpointReference;
+import org.apache.ode.bpel.iapi.EndpointReferenceContext;
import org.apache.ode.bpel.iapi.ProcessConf;
import org.apache.ode.bpel.iapi.ProcessState;
-import org.apache.ode.bpel.iapi.EndpointReferenceContext;
-import org.apache.ode.bpel.iapi.EndpointReference;
-import org.apache.ode.bpel.iapi.ProcessConf.PartnerRoleConfig;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
import org.apache.ode.bpel.o.OFailureHandling;
import org.apache.ode.store.DeploymentUnitDir.CBPInfo;
+import org.apache.ode.utils.CollectionUtils;
import org.apache.ode.utils.CronExpression;
import org.apache.ode.utils.DOMUtils;
import org.apache.ode.utils.HierarchicalProperties;
import org.apache.ode.utils.WatchDog;
-import org.apache.ode.utils.CollectionUtils;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
@@ -545,10 +554,10 @@
cleanupInfo.setFilters(aCleanup.getFilterList());
ProcessCleanupConfImpl.processACleanup(cleanupInfo.getCategories(), aCleanup.getCategoryList());
- Map<String, Object> runnableDetails = new HashMap<String, Object>();
- runnableDetails.put("cleanupInfo", cleanupInfo);
- runnableDetails.put("pid", _pid);
- runnableDetails.put("transactionSize", 10);
+ JobDetails runnableDetails = new JobDetails();
+ runnableDetails.getDetailsExt().put("cleanupInfo", cleanupInfo);
+ runnableDetails.getDetailsExt().put("pid", _pid);
+ runnableDetails.getDetailsExt().put("transactionSize", 10);
job.getRunnableDetailList().add(runnableDetails);
}
jobs.add(job);
Modified: branches/ODE/ODE-1.x-fixes/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -239,7 +239,7 @@
}
ProcessConfImpl pconf = new ProcessConfImpl(pid, processDD.getName(), version, du, processDD, deployDate,
- calcInitialProperties(processDD), calcInitialState(processDD), eprContext, _configDir, generateProcessEventsAll);
+ calcInitialProperties(du.getProperties(), processDD), calcInitialState(processDD), eprContext, _configDir, generateProcessEventsAll);
processes.add(pconf);
}
@@ -678,8 +678,18 @@
* @param dd
* @return
*/
- public static Map<QName, Node> calcInitialProperties(TDeployment.Process dd) {
+ public static Map<QName, Node> calcInitialProperties(Properties properties, TDeployment.Process dd) {
HashMap<QName, Node> ret = new HashMap<QName, Node>();
+
+ for (Object key1 : properties.keySet()) {
+ String key = (String) key1;
+ Document doc = DOMUtils.newDocument();
+ doc.appendChild(doc.createElementNS(null, "temporary-simple-type-wrapper"));
+ doc.getDocumentElement().appendChild(doc.createTextNode(properties.getProperty(key)));
+
+ ret.put(new QName(key), doc.getDocumentElement());
+ }
+
if (dd.getPropertyList().size() > 0) {
for (TDeployment.Process.Property property : dd.getPropertyList()) {
Element elmtContent = DOMUtils.getElementContent(property.getDomNode());
@@ -745,7 +755,7 @@
continue;
}
- Map<QName, Node> props = calcInitialProperties(pinfo);
+ Map<QName, Node> props = calcInitialProperties(dud.getProperties(), pinfo);
// TODO: update the props based on the values in the DB.
ProcessConfImpl pconf = new ProcessConfImpl(p.getPID(), p.getType(), p.getVersion(), dud, pinfo, dudao
Modified: branches/ODE/ODE-1.x-fixes/bpel-store/src/main/java/org/apache/ode/store/jpa/DbConfStoreConnectionFactory.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-store/src/main/java/org/apache/ode/store/jpa/DbConfStoreConnectionFactory.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-store/src/main/java/org/apache/ode/store/jpa/DbConfStoreConnectionFactory.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -56,6 +56,7 @@
propMap.put("openjpa.FlushBeforeQueries", "false");
propMap.put("openjpa.FetchBatchSize", 1000);
propMap.put("openjpa.jdbc.TransactionIsolation", "read-committed");
+ propMap.put("javax.persistence.provider", "org.apache.openjpa.persistence.PersistenceProviderImpl");
if (createDatamodel) propMap.put("openjpa.jdbc.SynchronizeMappings", "buildSchema(ForeignKeys=false)");
Modified: branches/ODE/ODE-1.x-fixes/bpel-test/src/main/java/org/apache/ode/test/BPELTestAbstract.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-test/src/main/java/org/apache/ode/test/BPELTestAbstract.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-test/src/main/java/org/apache/ode/test/BPELTestAbstract.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -50,7 +50,6 @@
import org.apache.ode.bpel.iapi.MessageExchange.Status;
import org.apache.ode.bpel.iapi.MyRoleMessageExchange.CorrelationStatus;
import org.apache.ode.bpel.memdao.BpelDAOConnectionFactoryImpl;
-import org.apache.ode.dao.jpa.BPELDAOConnectionFactoryImpl;
import org.apache.ode.il.MockScheduler;
import org.apache.ode.il.config.OdeConfigProperties;
import org.apache.ode.store.ProcessConfImpl;
@@ -105,7 +104,7 @@
if (Boolean.getBoolean("org.apache.ode.test.persistent")) {
emf = Persistence.createEntityManagerFactory("ode-unit-test-embedded");
em = emf.createEntityManager();
- _cf = new BPELDAOConnectionFactoryImpl();
+ _cf = new org.apache.ode.daohib.bpel.BpelDAOConnectionFactoryImpl();
_server.setDaoConnectionFactory(_cf);
scheduler = new MockScheduler() {
@Override
@@ -137,7 +136,7 @@
_server.setBindingContext(new BindingContextImpl());
_server.setMessageExchangeContext(mexContext);
scheduler.setJobProcessor(_server);
- store = new ProcessStoreImpl(null, null, "jpa", new OdeConfigProperties(new Properties(), ""), true);
+ store = new ProcessStoreImpl(null, null, "hibernate", new OdeConfigProperties(new Properties(), ""), true);
store.registerListener(new ProcessStoreListener() {
public void onProcessStoreEvent(ProcessStoreEvent event) {
// bounce the process
Modified: branches/ODE/ODE-1.x-fixes/bpel-test/src/test/resources/bpel/2.0/TestWait1/Wait1-2.0.bpel
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-test/src/test/resources/bpel/2.0/TestWait1/Wait1-2.0.bpel 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-test/src/test/resources/bpel/2.0/TestWait1/Wait1-2.0.bpel 2010-05-28 04:59:49 UTC (rev 677)
@@ -53,6 +53,17 @@
<for>'PT5S'</for>
</wait>
+ <scope>
+ <faultHandlers>
+ <catchAll>
+ <empty/>
+ </catchAll>
+ </faultHandlers>
+ <wait>
+ <for expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0">xsd:double('')</for>
+ </wait>
+ </scope>
+
<reply name="endReply"
operation="testOperation"
partnerLink="testPartnerLink"
Modified: branches/ODE/ODE-1.x-fixes/bpel-test/src/test/resources/bpel/2.0/TestXQueryExpression/HelloXQueryWorld.xsl
===================================================================
--- branches/ODE/ODE-1.x-fixes/bpel-test/src/test/resources/bpel/2.0/TestXQueryExpression/HelloXQueryWorld.xsl 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/bpel-test/src/test/resources/bpel/2.0/TestXQueryExpression/HelloXQueryWorld.xsl 2010-05-28 04:59:49 UTC (rev 677)
@@ -1,3 +1,21 @@
+<!--
+ ~ 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.
+ -->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.example.org/ProcessData"
xmlns:tns="http://www.example.org/ProcessData"
@@ -10,4 +28,4 @@
</root>
</xsl:template>
-</xsl:stylesheet>
\ No newline at end of file
+</xsl:stylesheet>
Modified: branches/ODE/ODE-1.x-fixes/dao-hibernate/pom.xml
===================================================================
--- branches/ODE/ODE-1.x-fixes/dao-hibernate/pom.xml 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/dao-hibernate/pom.xml 2010-05-28 04:59:49 UTC (rev 677)
@@ -99,6 +99,7 @@
<!--doclet does not support not-found="ignore" -->
<groupId>org.codehaus.groovy.maven</groupId>
<artifactId>gmaven-plugin</artifactId>
+ <version>1.0</version>
<executions>
<execution>
<phase>process-sources</phase>
@@ -108,7 +109,7 @@
<configuration>
<source>
import java.io.File
- def process_instance_hbm_file = new File('${project.build.outputDirectory}', 'org/apache/ode/daohib/bpel/hobj/HProcessInstance.hbm.xml')
+ def process_instance_hbm_file = new File(project.build.outputDirectory, 'org/apache/ode/daohib/bpel/hobj/HProcessInstance.hbm.xml')
def contents = process_instance_hbm_file.text
if (!contents.contains('not-found="ignore"')) {
process_instance_hbm_file.text = contents.replace('class="org.apache.ode.daohib.bpel.hobj.HProcess"',
Modified: branches/ODE/ODE-1.x-fixes/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/CriteriaBuilder.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/CriteriaBuilder.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/CriteriaBuilder.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -69,7 +69,7 @@
List<String> iids = filter.getIidFilter();
for (int m = 0; m < iids.size(); m++) {
filters.append(" pi.id = :iid").append(m);
- parameters.put("iid" + m, iids.get(m));
+ parameters.put("iid" + m, Long.parseLong(iids.get(m)));
if (m < iids.size() - 1) filters.append(" or");
}
clauses.add(" (" + filters + ")");
@@ -86,7 +86,7 @@
cmp = " = ";
}
for (int m = 0; m < pids.size(); m++) {
- filters.append(" pi.process.id ").append(cmp).append(" :pid").append(m);
+ filters.append(" pi.process.processId ").append(cmp).append(" :pid").append(m);
parameters.put("pid" + m, pids.get(m));
if (m < pids.size() - 1) filters.append(" or");
}
Modified: branches/ODE/ODE-1.x-fixes/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ProcessInstanceDaoImpl.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ProcessInstanceDaoImpl.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ProcessInstanceDaoImpl.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -220,7 +220,7 @@
: null);
scope.setName(name);
scope.setScopeModelId(scopeModelId);
- scope.setState(ScopeStateEnum.ACTIVE.toString());
+ scope.setState(ScopeStateEnum.NEW.toString());
scope.setInstance(_instance);
scope.setCreated(new Date());
// _instance.addScope(scope);
Modified: branches/ODE/ODE-1.x-fixes/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ScopeDaoImpl.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ScopeDaoImpl.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ScopeDaoImpl.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -121,7 +121,7 @@
* @see org.apache.ode.bpel.dao.ScopeDAO#getState()
*/
public ScopeStateEnum getState() {
- return new ScopeStateEnum(_scope.getState());
+ return ScopeStateEnum.valueOf(_scope.getState());
}
/**
* @see org.apache.ode.bpel.dao.ScopeDAO#getName()
Modified: branches/ODE/ODE-1.x-fixes/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/XmlDataDaoImpl.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/XmlDataDaoImpl.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/XmlDataDaoImpl.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -58,7 +58,7 @@
*/
public boolean isNull() {
entering("XmlDataDaoImpl.isNull");
- return (_data.getData() == null || _data.getData().length == 0);
+ return (_data.getSimpleValue() == null && (_data.getData() == null || _data.getData().length == 0));
}
/**
@@ -84,14 +84,26 @@
public void set(Node val) {
entering("XmlDataDaoImpl.set");
_node = val;
- _data.setSimpleType(!(val instanceof Element));
-
- if(_data.isSimpleType()) {
- _data.setData(_node.getNodeValue().getBytes());
+ if (val != null && val.getNamespaceURI() == null && "temporary-simple-type-wrapper".equals(val.getLocalName())) {
+ _data.setSimpleType(true);
+ String value = _node.getTextContent();
+ if (value.length() <= 255) {
+ _data.setSimpleValue(value);
+ _data.setData(null);
+ } else {
+ _data.setData(value.getBytes());
+ _data.setSimpleValue(null);
+ }
+ } else if (val instanceof Element) {
+ _data.setSimpleType(false);
+ _data.setData(DOMUtils.domToString(_node).getBytes());
+ _data.setSimpleValue(null);
} else {
- _data.setData(DOMUtils.domToString(_node).getBytes());
+ _data.setSimpleType(true);
+ _data.setSimpleValue(_node.getNodeValue());
+ _data.setData(null);
}
-
+
getSession().saveOrUpdate(_data);
leaving("XmlDataDaoImpl.set");
}
@@ -143,20 +155,28 @@
}
private Node prepare(){
- if(_data.getData() == null || _data.getData().length == 0)
- return null;
- String data = new String(_data.getData());
- if(_data.isSimpleType()){
+ if(_data.isSimpleType()) {
+ String data;
+ if (_data.getSimpleValue() != null) {
+ data = _data.getSimpleValue();
+ } else {
+ if(_data.getData() == null || _data.getData().length == 0)
+ return null;
+ data = new String(_data.getData());
+ }
Document d = DOMUtils.newDocument();
// we create a dummy wrapper element
// prevents some apps from complaining
// when text node is not actual child of document
- Element e = d.createElement("text-node-wrapper");
+ Element e = d.createElement("temporary-simple-type-wrapper");
Text tnode = d.createTextNode(data);
d.appendChild(e);
e.appendChild(tnode);
return tnode;
- }else{
+ } else {
+ if(_data.getData() == null || _data.getData().length == 0)
+ return null;
+ String data = new String(_data.getData());
try{
return DOMUtils.stringToDOM(data);
}catch(Exception e){
Modified: branches/ODE/ODE-1.x-fixes/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HXmlData.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HXmlData.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HXmlData.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -33,6 +33,7 @@
private byte[] _data;
private Collection<HVariableProperty> _properties = new HashSet<HVariableProperty>();
private String _name;
+ private String _simpleValue;
private HScope _scope;
private HProcessInstance _instance;
@@ -53,7 +54,7 @@
public void setData(byte[] data) {
_data = data;
}
-
+
/**
* @hibernate.property
* column="NAME"
@@ -70,6 +71,21 @@
}
/**
+ * @hibernate.property
+ * column="SIMPLE_VALUE"
+ * type="string"
+ * length="255"
+ * not-null="false"
+ */
+ public String getSimpleValue() {
+ return _simpleValue;
+ }
+
+ public void setSimpleValue(String simpleValue) {
+ _simpleValue = simpleValue;
+ }
+
+ /**
* @hibernate.bag
* lazy="true"
* inverse="true"
Modified: branches/ODE/ODE-1.x-fixes/dao-hibernate-db/build.xml
===================================================================
--- branches/ODE/ODE-1.x-fixes/dao-hibernate-db/build.xml 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/dao-hibernate-db/build.xml 2010-05-28 04:59:49 UTC (rev 677)
@@ -93,6 +93,7 @@
</fileset>
</schemaexport>
<concat destfile="${db.scripts.dir}/(a){db}.sql">
+ <fileset file="${sql.dir}/common.sql"/>
<fileset file="${sql.dir}/simplesched-(a){db}.sql"/>
<fileset file="${db.scripts.dir}/partial.(a){db}.sql"/>
</concat>
Modified: branches/ODE/ODE-1.x-fixes/dao-hibernate-db/src/main/sql/simplesched-derby.sql
===================================================================
--- branches/ODE/ODE-1.x-fixes/dao-hibernate-db/src/main/sql/simplesched-derby.sql 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/dao-hibernate-db/src/main/sql/simplesched-derby.sql 2010-05-28 04:59:49 UTC (rev 677)
@@ -10,7 +10,18 @@
nodeid char(64),
scheduled int NOT NULL DEFAULT 0,
transacted int NOT NULL DEFAULT 0,
- details blob(4096),
+
+ instanceId BIGINT,
+ mexId varchar(255),
+ processId varchar(255),
+ type varchar(255),
+ channel varchar(255),
+ correlatorId varchar(255),
+ correlationKeySet varchar(255),
+ retryCount int,
+ inMem int,
+ detailsExt blob(4096),
+
PRIMARY KEY(jobid));
CREATE INDEX IDX_ODE_JOB_TS ON ode_job(ts);
Modified: branches/ODE/ODE-1.x-fixes/dao-hibernate-db/src/main/sql/simplesched-firebird.sql
===================================================================
--- branches/ODE/ODE-1.x-fixes/dao-hibernate-db/src/main/sql/simplesched-firebird.sql 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/dao-hibernate-db/src/main/sql/simplesched-firebird.sql 2010-05-28 04:59:49 UTC (rev 677)
@@ -10,7 +10,18 @@
nodeid char(64),
scheduled int NOT NULL DEFAULT 0,
transacted int NOT NULL DEFAULT 0,
- details blob(4096),
+
+ instanceId BIGINT,
+ mexId varchar(255),
+ processId varchar(255),
+ type varchar(255),
+ channel varchar(255),
+ correlatorId varchar(255),
+ correlationKeySet varchar(255),
+ retryCount int,
+ inMem int,
+ detailsExt blob(4096),
+
PRIMARY KEY(jobid));
CREATE INDEX IDX_ODE_JOB_TS ON ode_job(ts);
Modified: branches/ODE/ODE-1.x-fixes/dao-hibernate-db/src/main/sql/simplesched-hsql.sql
===================================================================
--- branches/ODE/ODE-1.x-fixes/dao-hibernate-db/src/main/sql/simplesched-hsql.sql 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/dao-hibernate-db/src/main/sql/simplesched-hsql.sql 2010-05-28 04:59:49 UTC (rev 677)
@@ -10,7 +10,18 @@
nodeid char(64),
scheduled int NOT NULL DEFAULT 0,
transacted int NOT NULL DEFAULT 0,
- details blob(4096),
+
+ instanceId BIGINT,
+ mexId varchar(255),
+ processId varchar(255),
+ type varchar(255),
+ channel varchar(255),
+ correlatorId varchar(255),
+ correlationKeySet varchar(255),
+ retryCount int,
+ inMem int,
+ detailsExt binary(4096),
+
PRIMARY KEY(jobid));
CREATE INDEX IDX_ODE_JOB_TS ON ode_job(ts);
Modified: branches/ODE/ODE-1.x-fixes/dao-hibernate-db/src/main/sql/simplesched-mysql.sql
===================================================================
--- branches/ODE/ODE-1.x-fixes/dao-hibernate-db/src/main/sql/simplesched-mysql.sql 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/dao-hibernate-db/src/main/sql/simplesched-mysql.sql 2010-05-28 04:59:49 UTC (rev 677)
@@ -11,7 +11,18 @@
nodeid char(64) NULL,
scheduled int NOT NULL DEFAULT 0,
transacted int NOT NULL DEFAULT 0,
- details blob(4096) NULL,
+
+ instanceId BIGINT,
+ mexId varchar(255),
+ processId varchar(255),
+ type varchar(255),
+ channel varchar(255),
+ correlatorId varchar(255),
+ correlationKeySet varchar(255),
+ retryCount int,
+ inMem int,
+ detailsExt blob(4096),
+
PRIMARY KEY(jobid),
INDEX IDX_ODE_JOB_TS(ts),
INDEX IDX_ODE_JOB_NODEID(nodeid)
Modified: branches/ODE/ODE-1.x-fixes/dao-hibernate-db/src/main/sql/simplesched-oracle.sql
===================================================================
--- branches/ODE/ODE-1.x-fixes/dao-hibernate-db/src/main/sql/simplesched-oracle.sql 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/dao-hibernate-db/src/main/sql/simplesched-oracle.sql 2010-05-28 04:59:49 UTC (rev 677)
@@ -4,13 +4,26 @@
--
--
+DROP TABLE ode_job;
+
CREATE TABLE ode_job (
- jobid CHAR(64) NOT NULL DEFAULT '',
- ts BIGINT NOT NULL DEFAULT 0,
- nodeid char(64),
- scheduled int NOT NULL DEFAULT 0,
- transacted int NOT NULL DEFAULT 0,
- details blob(4096),
+ jobid VARCHAR(64) NOT NULL,
+ ts number(37) NOT NULL,
+ nodeid varchar(64),
+ scheduled int NOT NULL,
+ transacted int NOT NULL,
+
+ instanceId number(37),
+ mexId varchar(255),
+ processId varchar(255),
+ type varchar(255),
+ channel varchar(255),
+ correlatorId varchar(255),
+ correlationKeySet varchar(255),
+ retryCount int,
+ inMem int,
+ detailsExt blob,
+
PRIMARY KEY(jobid));
CREATE INDEX IDX_ODE_JOB_TS ON ode_job(ts);
Modified: branches/ODE/ODE-1.x-fixes/dao-hibernate-db/src/main/sql/simplesched-postgres.sql
===================================================================
--- branches/ODE/ODE-1.x-fixes/dao-hibernate-db/src/main/sql/simplesched-postgres.sql 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/dao-hibernate-db/src/main/sql/simplesched-postgres.sql 2010-05-28 04:59:49 UTC (rev 677)
@@ -10,7 +10,18 @@
nodeid char(64),
scheduled int NOT NULL DEFAULT 0,
transacted int NOT NULL DEFAULT 0,
- details blob(4096),
+
+ instanceId BIGINT,
+ mexId varchar(255),
+ processId varchar(255),
+ type varchar(255),
+ channel varchar(255),
+ correlatorId varchar(255),
+ correlationKeySet varchar(255),
+ retryCount int,
+ inMem int,
+ detailsExt blob(4096),
+
PRIMARY KEY(jobid));
CREATE INDEX IDX_ODE_JOB_TS ON ode_job(ts);
Modified: branches/ODE/ODE-1.x-fixes/dao-hibernate-db/src/main/sql/simplesched-sqlserver.sql
===================================================================
--- branches/ODE/ODE-1.x-fixes/dao-hibernate-db/src/main/sql/simplesched-sqlserver.sql 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/dao-hibernate-db/src/main/sql/simplesched-sqlserver.sql 2010-05-28 04:59:49 UTC (rev 677)
@@ -10,7 +10,18 @@
nodeid char(64),
scheduled int NOT NULL DEFAULT 0,
transacted int NOT NULL DEFAULT 0,
- details blob(4096),
+
+ instanceId BIGINT,
+ mexId varchar(255),
+ processId varchar(255),
+ type varchar(255),
+ channel varchar(255),
+ correlatorId varchar(255),
+ correlationKeySet varchar(255),
+ retryCount int,
+ inMem int,
+ detailsExt blob(4096),
+
PRIMARY KEY(jobid));
CREATE INDEX IDX_ODE_JOB_TS ON ode_job(ts);
Modified: branches/ODE/ODE-1.x-fixes/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ScopeDAOImpl.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ScopeDAOImpl.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ScopeDAOImpl.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -163,7 +163,7 @@
}
public ScopeStateEnum getState() {
- return new ScopeStateEnum(_scopeState);
+ return ScopeStateEnum.valueOf(_scopeState);
}
public XmlDataDAO getVariable(String varName) {
Modified: branches/ODE/ODE-1.x-fixes/dao-jpa-ojpa-derby/build.xml
===================================================================
--- branches/ODE/ODE-1.x-fixes/dao-jpa-ojpa-derby/build.xml 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/dao-jpa-ojpa-derby/build.xml 2010-05-28 04:59:49 UTC (rev 677)
@@ -74,6 +74,7 @@
</classpath>
</mappingtool>
<concat destfile="${db.scripts.dir}/(a){db}.sql">
+ <fileset file="${scripts.dir}/common.sql"/>
<fileset file="${scripts.dir}/license-header.sql"/>
<fileset file="${scripts.dir}/simplesched-(a){db}.sql"/>
<fileset file="${db.scripts.dir}/partial.(a){db}.sql"/>
Modified: branches/ODE/ODE-1.x-fixes/dao-jpa-ojpa-derby/src/main/scripts/simplesched-derby.sql
===================================================================
--- branches/ODE/ODE-1.x-fixes/dao-jpa-ojpa-derby/src/main/scripts/simplesched-derby.sql 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/dao-jpa-ojpa-derby/src/main/scripts/simplesched-derby.sql 2010-05-28 04:59:49 UTC (rev 677)
@@ -10,7 +10,18 @@
nodeid char(64),
scheduled int NOT NULL DEFAULT 0,
transacted int NOT NULL DEFAULT 0,
- details blob(4096),
+
+ instanceId BIGINT,
+ mexId varchar(255),
+ processId varchar(255),
+ type varchar(255),
+ channel varchar(255),
+ correlatorId varchar(255),
+ correlationKeySet varchar(255),
+ retryCount int,
+ inMem int,
+ detailsExt blob(4096),
+
PRIMARY KEY(jobid));
CREATE INDEX IDX_ODE_JOB_TS ON ode_job(ts);
Modified: branches/ODE/ODE-1.x-fixes/dao-jpa-ojpa-derby/src/main/scripts/simplesched-mysql.sql
===================================================================
--- branches/ODE/ODE-1.x-fixes/dao-jpa-ojpa-derby/src/main/scripts/simplesched-mysql.sql 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/dao-jpa-ojpa-derby/src/main/scripts/simplesched-mysql.sql 2010-05-28 04:59:49 UTC (rev 677)
@@ -11,7 +11,18 @@
nodeid char(64) NULL,
scheduled int NOT NULL DEFAULT 0,
transacted int NOT NULL DEFAULT 0,
- details blob(4096) NULL,
+
+ instanceId BIGINT,
+ mexId varchar(255),
+ processId varchar(255),
+ type varchar(255),
+ channel varchar(255),
+ correlatorId varchar(255),
+ correlationKeySet varchar(255),
+ retryCount int,
+ inMem int,
+ detailsExt blob(4096),
+
PRIMARY KEY(jobid),
INDEX IDX_ODE_JOB_TS(ts),
INDEX IDX_ODE_JOB_NODEID(nodeid)
Modified: branches/ODE/ODE-1.x-fixes/dao-jpa-ojpa-derby/src/main/scripts/simplesched-oracle.sql
===================================================================
--- branches/ODE/ODE-1.x-fixes/dao-jpa-ojpa-derby/src/main/scripts/simplesched-oracle.sql 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/dao-jpa-ojpa-derby/src/main/scripts/simplesched-oracle.sql 2010-05-28 04:59:49 UTC (rev 677)
@@ -1,5 +1,31 @@
-CREATE TABLE ODE_JOB (jobid varchar2(64 char) DEFAULT '' NOT NULL, ts number(19,0) DEFAULT 0 NOT NULL, nodeid varchar2(64 char) NULL, scheduled number(12,0) DEFAULT 0 NOT NULL, transacted number(12,0) DEFAULT 0 NOT NULL, details BLOB, PRIMARY KEY(jobid));
+-- Apache ODE - SimpleScheduler Database Schema
+--
+-- Apache Derby scripts by Maciej Szefler.
+--
+--
+DROP TABLE ode_job;
+
+CREATE TABLE ode_job (
+ jobid VARCHAR(64) NOT NULL,
+ ts number(37) NOT NULL,
+ nodeid varchar(64),
+ scheduled int NOT NULL,
+ transacted int NOT NULL,
+
+ instanceId number(37),
+ mexId varchar(255),
+ processId varchar(255),
+ type varchar(255),
+ channel varchar(255),
+ correlatorId varchar(255),
+ correlationKeySet varchar(255),
+ retryCount int,
+ inMem int,
+ detailsExt blob,
+
+ PRIMARY KEY(jobid));
+
CREATE INDEX IDX_ODE_JOB_TS ON ode_job(ts);
CREATE INDEX IDX_ODE_JOB_NODEID ON ode_job(nodeid);
Modified: branches/ODE/ODE-1.x-fixes/dependencies.rb
===================================================================
--- branches/ODE/ODE-1.x-fixes/dependencies.rb 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/dependencies.rb 2010-05-28 04:59:49 UTC (rev 677)
@@ -87,7 +87,7 @@
OPENJPA = ["org.apache.openjpa:openjpa:jar:1.2.1",
"net.sourceforge.serp:serp:jar:1.13.1"]
-SAXON = group("saxon", "saxon-xpath", "saxon-dom", "saxon-xqj", :under=>"net.sf.saxon", :version=>"9.x")
+SAXON = group("saxon", "saxon-xpath", "saxon-dom", "saxon-xqj", :under=>"net.sf.saxon", :version=>"9.1.0.8")
SERVICEMIX = [
group("servicemix-core",
:under=>"org.apache.servicemix", :version=>"3.3"),
Modified: branches/ODE/ODE-1.x-fixes/jbi/pom.xml
===================================================================
--- branches/ODE/ODE-1.x-fixes/jbi/pom.xml 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/jbi/pom.xml 2010-05-28 04:59:49 UTC (rev 677)
@@ -227,14 +227,13 @@
<dependency>
<groupId>org.jboss.soa.bpel</groupId>
<artifactId>riftsaw-dao-hibernate</artifactId>
- <exclusions>
- <exclusion>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-core</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
<groupId>org.jboss.soa.bpel</groupId>
<artifactId>riftsaw-bpel-api-jca</artifactId>
</dependency>
@@ -470,7 +469,7 @@
<goal>copy-resources</goal>
</goals>
<configuration>
- <outputDirectory>${project.build.directory}/test/smx/ode</outputDirectory>
+ <outputDirectory>target/test/smx/ode</outputDirectory>
<resources>
<resource>
<directory>${basedir}/../dao-jpa-ojpa-derby/target/derby</directory>
@@ -481,6 +480,21 @@
</resources>
</configuration>
</execution>
+ <execution>
+ <id>copy-resources2</id>
+ <phase>process-test-resources</phase>
+ <goals>
+ <goal>copy-resources</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>target/test/resources</outputDirectory>
+ <resources>
+ <resource>
+ <directory>src/test/resources</directory>
+ </resource>
+ </resources>
+ </configuration>
+ </execution>
</executions>
</plugin>
</plugins>
@@ -488,20 +502,15 @@
<testResources>
<testResource>
<directory>src/test/resources</directory>
- <targetPath>${project.build.directory}/test/resources</targetPath>
</testResource>
<testResource>
- <directory>src/test/resources</directory>
- <targetPath>${project.build.testOutputDirectory}</targetPath>
- </testResource>
- <testResource>
<directory>src/test/jbi</directory>
- <targetPath>${project.build.directory}/test/smx/ode</targetPath>
+ <targetPath>../test/smx/ode</targetPath>
</testResource>
<testResource>
<directory>src/main/jbi</directory>
<includes><include>hibernate.properties</include></includes>
- <targetPath>${project.build.directory}/test/smx/ode</targetPath>
+ <targetPath>../test/smx/ode</targetPath>
</testResource>
</testResources>
</build>
Modified: branches/ODE/ODE-1.x-fixes/jbi/src/main/assembly/bin.xml
===================================================================
--- branches/ODE/ODE-1.x-fixes/jbi/src/main/assembly/bin.xml 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/jbi/src/main/assembly/bin.xml 2010-05-28 04:59:49 UTC (rev 677)
@@ -91,6 +91,7 @@
<include>commons-dbcp:commons-dbcp</include>
<include>commons-lang:commons-lang</include>
<include>commons-pool:commons-pool</include>
+ <include>commons-beanutils:commons-beanutils</include>
<include>commons-primitives:commons-primitives</include>
<include>org.apache.derby:derby</include>
<include>org.apache.geronimo.specs:geronimo-ejb_2.1_spec</include>
@@ -113,9 +114,13 @@
<include>tranql:tranql-connector</include>
<include>xalan:xalan</include>
<include>org.apache.xmlbeans:xmlbeans</include>
- <include>com.thoughtworks.xstream:xstream</include>
<include>axion:axion</include>
<include>xerces:xercesImpl</include>
+ <include>org.objectweb.howl:howl</include>
+ <include>com.thoughtworks.xstream:xstream</include>
+ <include>xalan:serializer</include>
+ <include>xml-apis:xml-apis</include>
+ <include>org.apache.geronimo.specs:geronimo-jpa_3.0_spec</include>
</includes>
</dependencySet>
Modified: branches/ODE/ODE-1.x-fixes/jbi/src/test/java/org/apache/ode/jbi/JbiTestBase.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/jbi/src/test/java/org/apache/ode/jbi/JbiTestBase.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/jbi/src/test/java/org/apache/ode/jbi/JbiTestBase.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -107,13 +107,15 @@
protected void enableProcess(String resource, boolean enable) throws Exception {
resource = "target/test/resources/" + resource;
String process = resource.substring(resource.lastIndexOf('/') + 1);
+ String dir = new File(resource).getAbsolutePath();
+ log.debug("enableProcess " + resource + " " + enable + " path: " + dir);
if (enable) {
- odeComponent.getServiceUnitManager().deploy(process, resource);
- odeComponent.getServiceUnitManager().init(process, resource);
+ odeComponent.getServiceUnitManager().deploy(process, dir);
+ odeComponent.getServiceUnitManager().init(process, dir);
odeComponent.getServiceUnitManager().start(process);
} else {
odeComponent.getServiceUnitManager().stop(process);
- odeComponent.getServiceUnitManager().undeploy(process, resource);
+ odeComponent.getServiceUnitManager().undeploy(process, dir);
}
}
@@ -128,86 +130,89 @@
if (!manualDeploy)
enableProcess(getTestName(), true);
- int i = 0;
- boolean loop;
- do {
- String prefix = i == 0 ? "" : "" + i;
- loop = i == 0;
-
- {
- String deploy = testProperties.getProperty(prefix + "deploy");
- if (deploy != null) {
- loop = true;
- enableProcess(getTestName() + "/" + deploy, true);
+ try {
+ int i = 0;
+ boolean loop;
+ do {
+ String prefix = i == 0 ? "" : "" + i;
+ loop = i == 0;
+
+ {
+ String deploy = testProperties.getProperty(prefix + "deploy");
+ if (deploy != null) {
+ loop = true;
+ enableProcess(getTestName() + "/" + deploy, true);
+ }
}
- }
- {
- String undeploy = testProperties.getProperty(prefix + "undeploy");
- if (undeploy != null) {
- loop = true;
- enableProcess(getTestName() + "/" + undeploy, false);
+ {
+ String undeploy = testProperties.getProperty(prefix + "undeploy");
+ if (undeploy != null) {
+ loop = true;
+ enableProcess(getTestName() + "/" + undeploy, false);
+ }
}
- }
-
- String request = testProperties.getProperty(prefix + "request");
- if (request != null && request.startsWith("@")) {
- request = inputStreamToString(getClass().getResourceAsStream("/" + getTestName() + "/" + request.substring(1)));
- }
- String expectedResponse = testProperties.getProperty(prefix + "response");
- {
- String delay = testProperties.getProperty(prefix + "delay");
- if (delay != null) {
- loop = true;
- long d = Long.parseLong(delay);
- log.debug("Sleeping " + d + " ms");
- Thread.sleep(d);
+
+ String request = testProperties.getProperty(prefix + "request");
+ if (request != null && request.startsWith("@")) {
+ request = inputStreamToString(getClass().getResourceAsStream("/" + getTestName() + "/" + request.substring(1)));
}
- }
- {
- String httpUrl = testProperties.getProperty(prefix + "http.url");
- if (httpUrl != null && request != null) {
- loop = true;
- log.debug(getTestName() + " sending http request to " + httpUrl + " request: " + request);
- URLConnection connection = new URL(httpUrl).openConnection();
- connection.setDoOutput(true);
- connection.setDoInput(true);
- //Send request
- OutputStream os = connection.getOutputStream();
- PrintWriter wt = new PrintWriter(os);
- wt.print(request);
- wt.flush();
- wt.close();
- // Read the response.
- String result = inputStreamToString(connection.getInputStream());
-
- log.debug(getTestName() + " have result: " + result);
- matchResponse(expectedResponse, result, true);
- }
- }
- {
- if (testProperties.getProperty(prefix + "nmr.service") != null && request != null) {
- loop = true;
- InOut io = smxClient.createInOutExchange();
- io.setService(QName.valueOf(testProperties.getProperty(prefix + "nmr.service")));
- io.setOperation(QName.valueOf(testProperties.getProperty(prefix + "nmr.operation")));
- io.getInMessage().setContent(new StreamSource(new ByteArrayInputStream(request.getBytes())));
- smxClient.sendSync(io,20000);
- if (io.getStatus() == ExchangeStatus.ACTIVE) {
- assertNotNull(io.getOutMessage());
- String result = new SourceTransformer().contentToString(io.getOutMessage());
- matchResponse(expectedResponse, result, true);
- smxClient.done(io);
- } else {
- matchResponse(expectedResponse, "", false);
+ String expectedResponse = testProperties.getProperty(prefix + "response");
+ {
+ String delay = testProperties.getProperty(prefix + "delay");
+ if (delay != null) {
+ loop = true;
+ long d = Long.parseLong(delay);
+ log.debug("Sleeping " + d + " ms");
+ Thread.sleep(d);
}
- }
- }
-
- i++;
- } while (loop);
-
- if (!manualDeploy)
- enableProcess(getTestName(), false);
+ }
+ {
+ String httpUrl = testProperties.getProperty(prefix + "http.url");
+ if (httpUrl != null && request != null) {
+ loop = true;
+ log.debug(getTestName() + " sending http request to " + httpUrl + " request: " + request);
+ URLConnection connection = new URL(httpUrl).openConnection();
+ connection.setDoOutput(true);
+ connection.setDoInput(true);
+ //Send request
+ OutputStream os = connection.getOutputStream();
+ PrintWriter wt = new PrintWriter(os);
+ wt.print(request);
+ wt.flush();
+ wt.close();
+ // Read the response.
+ String result = inputStreamToString(connection.getInputStream());
+
+ log.debug(getTestName() + " have result: " + result);
+ matchResponse(expectedResponse, result, true);
+ }
+ }
+ {
+ if (testProperties.getProperty(prefix + "nmr.service") != null && request != null) {
+ loop = true;
+ InOut io = smxClient.createInOutExchange();
+ io.setService(QName.valueOf(testProperties.getProperty(prefix + "nmr.service")));
+ io.setOperation(QName.valueOf(testProperties.getProperty(prefix + "nmr.operation")));
+ io.getInMessage().setContent(new StreamSource(new ByteArrayInputStream(request.getBytes())));
+ smxClient.sendSync(io,20000);
+ if (io.getStatus() == ExchangeStatus.ACTIVE) {
+ assertNotNull(io.getOutMessage());
+ String result = new SourceTransformer().contentToString(io.getOutMessage());
+ matchResponse(expectedResponse, result, true);
+ smxClient.done(io);
+ } else {
+ matchResponse(expectedResponse, "", false);
+ }
+ }
+ }
+
+ i++;
+ } while (loop);
+
+ } finally {
+ if (!manualDeploy)
+ enableProcess(getTestName(), false);
+ }
}
protected void matchResponse(String expectedResponse, String result, boolean succeeded) {
Modified: branches/ODE/ODE-1.x-fixes/jbi/src/test/java/org/apache/ode/jbi/RetireJbiTest.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/jbi/src/test/java/org/apache/ode/jbi/RetireJbiTest.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/jbi/src/test/java/org/apache/ode/jbi/RetireJbiTest.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -1,3 +1,21 @@
+/*
+ * 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.jbi;
public class RetireJbiTest extends JbiTestBase {
Added: branches/ODE/ODE-1.x-fixes/jbi/src/test/java/org/apache/ode/jbi/SpringPropertiesJbiTest.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/jbi/src/test/java/org/apache/ode/jbi/SpringPropertiesJbiTest.java (rev 0)
+++ branches/ODE/ODE-1.x-fixes/jbi/src/test/java/org/apache/ode/jbi/SpringPropertiesJbiTest.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -0,0 +1,23 @@
+/*
+ * 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.jbi;
+
+public class SpringPropertiesJbiTest extends JbiTestBase {
+ public void test() throws Exception {
+ go();
+ }
+}
Modified: branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/ReplayerJbiTest/initiateRequest.xml
===================================================================
--- branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/ReplayerJbiTest/initiateRequest.xml 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/ReplayerJbiTest/initiateRequest.xml 2010-05-28 04:59:49 UTC (rev 677)
@@ -1,4 +1,22 @@
<?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.
+ -->
<initiate>
<payload>abc7</payload>
<payload2>abc8</payload2>
Modified: branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/ReplayerJbiTest/replayRequest.xml
===================================================================
--- branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/ReplayerJbiTest/replayRequest.xml 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/ReplayerJbiTest/replayRequest.xml 2010-05-28 04:59:49 UTC (rev 677)
@@ -1,4 +1,22 @@
<?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.
+ -->
<pmap:replay xmlns:ns="http://www.apache.org/ode/pmapi/types/2006/08/02/" xmlns:pmap="http://www.apache.org/ode/pmapi">
<replay>
<!--
Modified: branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/ReplayerJbiTest/replayXQueryRequest.xml
===================================================================
--- branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/ReplayerJbiTest/replayXQueryRequest.xml 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/ReplayerJbiTest/replayXQueryRequest.xml 2010-05-28 04:59:49 UTC (rev 677)
@@ -1,4 +1,22 @@
<?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.
+ -->
<pmap:replay xmlns:ns="http://www.apache.org/ode/pmapi/types/2006/08/02/" xmlns:pmap="http://www.apache.org/ode/pmapi">
<replay>
<!--
Added: branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/SpringPropertiesJbiTest/OnEventCorrelation.bpel
===================================================================
--- branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/SpringPropertiesJbiTest/OnEventCorrelation.bpel (rev 0)
+++ branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/SpringPropertiesJbiTest/OnEventCorrelation.bpel 2010-05-28 04:59:49 UTC (rev 677)
@@ -0,0 +1,54 @@
+<?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.
+ -->
+<bpws:process xmlns:bpws="http://docs.oasis-open.org/wsbpel/2.0/process/executable" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://sample.bpel.org/bpel/sampleArtifacts" xmlns:tns="http://sample.bpel.org/bpel/sample" exitOnStandardFault="yes" name="OnEventCorrelation" suppressJoinFailure="yes" targetNamespace="http://sample.bpel.org/bpel/sample" expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"
+ xmlns:ode="http://www.apache.org/ode/type/extension"
+ >
+ <bpws:import importType="http://schemas.xmlsoap.org/wsdl/" location="OnEventCorrelation.wsdl" namespace="http://sample.bpel.org/bpel/sample"/>
+ <bpws:import importType="http://schemas.xmlsoap.org/wsdl/" location="OnEventCorrelationArtifacts.wsdl" namespace="http://sample.bpel.org/bpel/sampleArtifacts"/>
+ <bpws:partnerLinks>
+ <bpws:partnerLink myRole="OnEventCorrelationProvider" name="client" partnerLinkType="tns:OnEventCorrelation"/>
+ </bpws:partnerLinks>
+ <bpws:variables>
+ <bpws:variable messageType="tns:OnEventCorrelationMessage" name="input"/>
+ <bpws:variable messageType="tns:OnEventCorrelationMessage" name="output"/>
+ <bpws:variable type="xsd:int" name="i"/>
+ </bpws:variables>
+ <bpws:correlationSets>
+ <bpws:correlationSet name="CorrelationSet" properties="ns:input"/>
+ </bpws:correlationSets>
+ <bpws:sequence name="main">
+ <bpws:scope name="Initialize">
+ <bpws:sequence>
+ <bpws:receive createInstance="yes" operation="initiate" partnerLink="client" portType="tns:OnEventCorrelation" variable="input">
+ <bpws:correlations>
+ <bpws:correlation initiate="yes" set="CorrelationSet"/>
+ </bpws:correlations>
+ </bpws:receive>
+ <bpws:assign>
+ <bpws:copy>
+ <bpws:from>ode:process-property('weirdProp')</bpws:from>
+ <bpws:to>$output.payload</bpws:to>
+ </bpws:copy>
+ </bpws:assign>
+ <bpws:reply operation="initiate" partnerLink="client" variable="output"/>
+ </bpws:sequence>
+ </bpws:scope>
+ </bpws:sequence>
+</bpws:process>
Added: branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/SpringPropertiesJbiTest/OnEventCorrelation.wsdl
===================================================================
--- branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/SpringPropertiesJbiTest/OnEventCorrelation.wsdl (rev 0)
+++ branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/SpringPropertiesJbiTest/OnEventCorrelation.wsdl 2010-05-28 04:59:49 UTC (rev 677)
@@ -0,0 +1,66 @@
+<?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.
+ -->
+<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:tns="http://sample.bpel.org/bpel/sample" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" name="OnEventCorrelation" targetNamespace="http://sample.bpel.org/bpel/sample"
+xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+>
+ <message name="OnEventCorrelationMessage">
+ <part type="xsd:string" name="payload"/>
+ <part type="xsd:string" name="payload2"/>
+ </message>
+ <portType name="OnEventCorrelation">
+ <operation name="initiate">
+ <input message="tns:OnEventCorrelationMessage"/>
+ <output message="tns:OnEventCorrelationMessage"/>
+ </operation>
+ <operation name="complete">
+ <input message="tns:OnEventCorrelationMessage"/>
+ <output message="tns:OnEventCorrelationMessage"/>
+ </operation>
+ </portType>
+ <binding name="OnEventCorrelationBinding" type="tns:OnEventCorrelation">
+ <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
+ <operation name="initiate">
+ <wsdlsoap:operation soapAction="initiate"/>
+ <input>
+ <wsdlsoap:body use="literal"/>
+ </input>
+ <output>
+ <wsdlsoap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="complete">
+ <wsdlsoap:operation soapAction="complete"/>
+ <input>
+ <wsdlsoap:body use="literal"/>
+ </input>
+ <output>
+ <wsdlsoap:body use="literal"/>
+ </output>
+ </operation>
+ </binding>
+ <service name="OnEventCorrelation">
+ <port binding="tns:OnEventCorrelationBinding" name="OnEventCorrelation">
+ <wsdlsoap:address location="http://localhost:8835/ode/processes/OnEventCorrelation/"/>
+ </port>
+ </service>
+ <plnk:partnerLinkType name="OnEventCorrelation">
+ <plnk:role name="OnEventCorrelationProvider" portType="tns:OnEventCorrelation"/>
+ </plnk:partnerLinkType>
+</definitions>
Added: branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/SpringPropertiesJbiTest/OnEventCorrelationArtifacts.wsdl
===================================================================
--- branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/SpringPropertiesJbiTest/OnEventCorrelationArtifacts.wsdl (rev 0)
+++ branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/SpringPropertiesJbiTest/OnEventCorrelationArtifacts.wsdl 2010-05-28 04:59:49 UTC (rev 677)
@@ -0,0 +1,35 @@
+<?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.
+ -->
+<definitions
+ xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype"
+ xmlns:tns="http://sample.bpel.org/bpel/sampleArtifacts"
+ xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:bpel="http://sample.bpel.org/bpel/sample"
+ name="OnEventCorrelationArtifacts"
+ targetNamespace="http://sample.bpel.org/bpel/sampleArtifacts"
+ xmlns="http://schemas.xmlsoap.org/wsdl/"
+ >
+<vprop:property name="input" type="xs:string"/>
+<vprop:propertyAlias messageType="bpel:OnEventCorrelationMessage" part="payload" propertyName="tns:input">
+<!--vprop:query><![CDATA[bpel:input]]></vprop:query-->
+</vprop:propertyAlias>
+<import location="OnEventCorrelation.wsdl" namespace="http://sample.bpel.org/bpel/sample"/>
+</definitions>
Added: branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/SpringPropertiesJbiTest/beans.xml
===================================================================
--- branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/SpringPropertiesJbiTest/beans.xml (rev 0)
+++ branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/SpringPropertiesJbiTest/beans.xml 2010-05-28 04:59:49 UTC (rev 677)
@@ -0,0 +1,38 @@
+<?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.
+ -->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:util="http://www.springframework.org/schema/util"
+xmlns:ctx="http://www.springframework.org/schema/context"
+
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
+ http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
+ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
+ http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.5.xsd
+ ">
+
+ <!--
+ <util:properties id="properties" location="/myProcess.properties"/>
+ -->
+ <util:properties id="properties">
+ <prop key="weirdProp">myWeirdPropValue2</prop>
+ </util:properties>
+
+</beans>
Added: branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/SpringPropertiesJbiTest/deploy.xml
===================================================================
--- branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/SpringPropertiesJbiTest/deploy.xml (rev 0)
+++ branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/SpringPropertiesJbiTest/deploy.xml 2010-05-28 04:59:49 UTC (rev 677)
@@ -0,0 +1,31 @@
+<?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.
+ -->
+<dd:deploy xmlns:dd="http://www.apache.org/ode/schemas/dd/2007/03"
+ xmlns:bpel="http://sample.bpel.org/bpel/sample"
+ >
+
+ <dd:process
+ name="bpel:OnEventCorrelation" fileName="OnEventCorrelation.bpel">
+ <!--dd:process-events generate="none"/-->
+ <dd:provide partnerLink="client">
+ <dd:service name="bpel:OnEventCorrelation3" port="OnEventCorrelation" />
+ </dd:provide>
+ </dd:process>
+</dd:deploy>
Added: branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/SpringPropertiesJbiTest/smx.xml
===================================================================
--- branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/SpringPropertiesJbiTest/smx.xml (rev 0)
+++ branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/SpringPropertiesJbiTest/smx.xml 2010-05-28 04:59:49 UTC (rev 677)
@@ -0,0 +1,60 @@
+<?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.
+
+-->
+<beans xmlns:sm="http://servicemix.apache.org/config/1.0"
+ xmlns:http="http://servicemix.apache.org/http/1.0"
+ xmlns:eip="http://servicemix.apache.org/eip/1.0"
+ xmlns:util="http://www.springframework.org/schema/util"
+ xmlns:jencks="http://jencks.org/2.0"
+ xmlns:mws="http://ode/bpel/unit-test.wsdl"
+ xmlns:bpel="http://sample.bpel.org/bpel/sample"
+ >
+
+ <util:map id="jndiEntries">
+ <entry key="java:comp/env/jdbc/ode" value-ref="odeDS"/>
+ </util:map>
+
+ <sm:container
+ id="jbi"
+ embedded="true"
+ rootDir="target/test/smx"
+ transactionManager="#transactionManager"
+ depends-on="jndi"
+ >
+ <sm:activationSpecs>
+ <sm:activationSpec id="ms-eip">
+ <sm:component>
+ <eip:component>
+ <eip:endpoints>
+ <eip:content-based-router service="bpel:OnEventCorrelation2Fwd" endpoint="OnEventCorrelation2" forwardOperation="true">
+ <eip:rules>
+ <eip:routing-rule>
+ <eip:target>
+ <eip:exchange-target service="bpel:OnEventCorrelation2"/>
+ </eip:target>
+ </eip:routing-rule>
+ </eip:rules>
+ </eip:content-based-router>
+ </eip:endpoints>
+ </eip:component>
+ </sm:component>
+ </sm:activationSpec>
+ </sm:activationSpecs>
+ </sm:container>
+</beans>
Added: branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/SpringPropertiesJbiTest/test.properties
===================================================================
--- branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/SpringPropertiesJbiTest/test.properties (rev 0)
+++ branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/SpringPropertiesJbiTest/test.properties 2010-05-28 04:59:49 UTC (rev 677)
@@ -0,0 +1,21 @@
+#
+# 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.
+#
+
+1nmr.service={http://sample.bpel.org/bpel/sample}OnEventCorrelation3
+1nmr.operation=initiate
+1request=<message><payload>9000</payload><payload2>t2</payload2></message>
+1response=.*myWeirdPropValue2.*
Modified: branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/log4j.properties
===================================================================
--- branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/log4j.properties 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/log4j.properties 2010-05-28 04:59:49 UTC (rev 677)
@@ -33,20 +33,20 @@
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{MM-dd@HH:mm:ss} %-5p (%13F:%L) %3x - %m%n
-log4j.category.org.apache.servicemix.jbi.nmr.flow.seda=DEBUG
+log4j.category.org.apache.servicemix.jbi.nmr.flow.seda=INFO
#log4j.category.org.apache.ode.jbi.msgmap=TRACE
#log4j.category.org.apache.ode.jbi.EndpointReferenceContextImpl=DEBUG
#log4j.category.org.apache.ode.bpel=DEBUG
#log4j.category.org.apache.ode.dao.jpa.CorrelatorDAOImpl=TRACE
#log4j.category.org.apache.ode.dao.jpa.MessageDAOImpl=TRACE
-log4j.category.httpclient=DEBUG
-log4j.category.httpclient.Wire=DEBUG
-log4j.category.org.apache.ode.jbi.JbiTestBase=DEBUG
+log4j.category.httpclient=INFO
+log4j.category.httpclient.Wire=INFO
+log4j.category.org.apache.ode.jbi.JbiTestBase=INFO
#log4j.category.org.apache.ode.bpel.runtime.SCOPE=DEBUG
#log4j.category.org.apache.ode.bpel.runtime.EH_EVENT=DEBUG
#log4j.category.org.apache.ode.bpel.runtime.EH_ALARM=DEBUG
#log4j.category.org.apache.ode.daohib.bpel.CorrelatorDaoImpl=DEBUG
#log4j.category.org.apache.ode.bpel.elang=DEBUG
#log4j.category.org.apache.ode.bpel.compiler=DEBUG
-log4j.category.org.apache.ode.bpel.iapi.BpelEventListener=DEBUG
-log4j.category.org.apache.ode.bpel.engine=DEBUG
+log4j.category.org.apache.ode.bpel.iapi.BpelEventListener=INFO
+log4j.category.org.apache.ode.bpel.engine=INFO
Modified: branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/test.wsdl
===================================================================
--- branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/test.wsdl 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/jbi/src/test/resources/test.wsdl 2010-05-28 04:59:49 UTC (rev 677)
@@ -1,4 +1,22 @@
<?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 xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.example.org/test/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="test" targetNamespace="http://www.example.org/test/">
<wsdl:types>
<xsd:schema targetNamespace="http://www.example.org/test/">
Modified: branches/ODE/ODE-1.x-fixes/jbi-bundle/src/main/resources/META-INF/spring/ode-jbi.xml
===================================================================
--- branches/ODE/ODE-1.x-fixes/jbi-bundle/src/main/resources/META-INF/spring/ode-jbi.xml 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/jbi-bundle/src/main/resources/META-INF/spring/ode-jbi.xml 2010-05-28 04:59:49 UTC (rev 677)
@@ -61,6 +61,7 @@
<prop key="ode-jbi.db.ext.dataSource">java:comp/env/jdbc/ode</prop>
<prop key="ode-jbi.messageMapper">org.apache.ode.jbi.msgmap.ServiceMixMapper,org.apache.ode.jbi.msgmap.JbiWsdl11WrapperMapper</prop>
<prop key="ode-jbi.jca.port">0</prop>
+ <prop key="javax.persistence.provider">org.apache.openjpa.persistence.PersistenceProviderImpl</prop>
</osgix:cm-properties>
</beans>
Modified: branches/ODE/ODE-1.x-fixes/pom.xml
===================================================================
--- branches/ODE/ODE-1.x-fixes/pom.xml 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/pom.xml 2010-05-28 04:59:49 UTC (rev 677)
@@ -41,11 +41,12 @@
<annogen.version>0.1.0</annogen.version>
<antlr.version>2.7.7</antlr.version>
<axiom.version>1.2.7</axiom.version>
- <axis2.version>1.4.1</axis2.version>
+ <axis2.version>1.3</axis2.version>
+ <rampart.version>1.3</rampart.version>
<commons.codec.version>1.3</commons.codec.version>
<backport.concurrent.version>3.1</backport.concurrent.version>
<commons.fileupload.version>1.2</commons.fileupload.version>
- <commons.collections.version>3.1</commons.collections.version>
+ <commons.collections.version>3.2.1</commons.collections.version>
<commons.httpclient.version>3.1</commons.httpclient.version>
<commons.io.version>1.4</commons.io.version>
<commons.lang.version>2.4</commons.lang.version>
@@ -185,7 +186,7 @@
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>xmlbeans-maven-plugin</artifactId>
- <version>2.2.0</version>
+ <version>${xmlbeans.version}</version>
</plugin>
<plugin>
@@ -760,7 +761,7 @@
</dependency>
<dependency>
- <groupId>xstream</groupId>
+ <groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>${xstream.version}</version>
</dependency>
Modified: branches/ODE/ODE-1.x-fixes/repositories.rb
===================================================================
--- branches/ODE/ODE-1.x-fixes/repositories.rb 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/repositories.rb 2010-05-28 04:59:49 UTC (rev 677)
@@ -18,5 +18,6 @@
repositories.remote << "http://repo1.maven.org/maven2"
repositories.remote << "http://people.apache.org/repo/m2-snapshot-repository"
repositories.remote << "http://download.java.net/maven/2"
+repositories.remote << "http://svn.apache.org/repos/asf/servicemix/m2-repo"
repositories.remote << "http://www.aqute.biz/repo"
-repositories.release_to[:url] ||= "sftp://guest@localhost/home/guest"
\ No newline at end of file
+repositories.release_to[:url] ||= "sftp://guest@localhost/home/guest"
Modified: branches/ODE/ODE-1.x-fixes/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/DatabaseDelegate.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/DatabaseDelegate.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/DatabaseDelegate.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -38,7 +38,7 @@
boolean insertJob(Job job, String nodeId, boolean loaded) throws DatabaseException ;
/**
- * Update the job in the database (only updates timestamp and details)
+ * Update the job in the database (only updates timestamp and retryCount)
*
* @param job the job
* @throws DatabaseException in case of error
Modified: branches/ODE/ODE-1.x-fixes/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/JdbcDelegate.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/JdbcDelegate.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/JdbcDelegate.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -27,12 +27,20 @@
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
+import java.sql.Types;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.math.BigDecimal;
import javax.sql.DataSource;
+import javax.xml.namespace.QName;
+import org.apache.ode.bpel.iapi.Scheduler;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
+import org.apache.ode.utils.DbIsolation;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.ode.utils.DbIsolation;
@@ -52,7 +60,7 @@
private static final String UPDATE_REASSIGN = "update ODE_JOB set nodeid = ?, scheduled = 0 where nodeid = ?";
- private static final String UPDATE_JOB = "update ODE_JOB set ts = ?, details = ? where jobid = ?";
+ private static final String UPDATE_JOB = "update ODE_JOB set ts = ?, retryCount = ? where jobid = ?";
private static final String UPGRADE_JOB_DEFAULT = "update ODE_JOB set nodeid = ? where nodeid is null "
+ "and mod(ts,?) = ? and ts < ?";
@@ -70,13 +78,61 @@
+ "and -1 <> ? and -1 <> ? and ts < ?";
private static final String SAVE_JOB = "insert into ODE_JOB "
- + " (jobid, nodeid, ts, scheduled, transacted, details) values(?, ?, ?, ?, ?, ?)";
+ + " (jobid, nodeid, ts, scheduled, transacted, "
+ + "instanceId,"
+ + "mexId,"
+ + "processId,"
+ + "type,"
+ + "channel,"
+ + "correlatorId,"
+ + "correlationKeySet,"
+ + "retryCount,"
+ + "inMem,"
+ + "detailsExt"
+ + ") values(?, ?, ?, ?, ?,"
+ + "?,"
+ + "?,"
+ + "?,"
+ + "?,"
+ + "?,"
+ + "?,"
+ + "?,"
+ + "?,"
+ + "?,"
+ + "?"
+ + ")";
private static final String GET_NODEIDS = "select distinct nodeid from ODE_JOB";
- private static final String SCHEDULE_IMMEDIATE = "select jobid, ts, transacted, scheduled, details from ODE_JOB "
+ private static final String SCHEDULE_IMMEDIATE = "select jobid, ts, transacted, scheduled, "
+ + "instanceId,"
+ + "mexId,"
+ + "processId,"
+ + "type,"
+ + "channel,"
+ + "correlatorId,"
+ + "correlationKeySet,"
+ + "retryCount,"
+ + "inMem,"
+ + "detailsExt"
+ + " from ODE_JOB "
+ "where nodeid = ? and ts < ? order by ts";
+// public Long instanceId;
+// public String mexId;
+// public String processId;
+// public String type;
+// public String channel;
+// public String correlatorId;
+// public String correlationKeySet;
+// public Integer retryCount;
+// public Boolean inMem;
+// public Map<String, Object> detailsExt = new HashMap<String, Object>();
+
+ private static final String UPDATE_SCHEDULED = "update ODE_JOB set scheduled = 1 where jobid in (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
+
+ private static final int UPDATE_SCHEDULED_SLOTS = 10;
+
private DataSource _ds;
private Dialect _dialect;
@@ -137,21 +193,39 @@
Connection con = null;
PreparedStatement ps = null;
try {
+ int i = 1;
con = getConnection();
ps = con.prepareStatement(SAVE_JOB);
- ps.setString(1, job.jobId);
- ps.setString(2, nodeId);
- ps.setLong(3, job.schedDate);
- ps.setInt(4, asInteger(loaded));
- ps.setInt(5, asInteger(job.transacted));
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- try {
- StreamUtils.write(bos, (Serializable) job.detail);
- } catch (Exception ex) {
- __log.error("Error serializing job detail: " + job.detail);
- throw new DatabaseException(ex);
+ ps.setString(i++, job.jobId);
+ ps.setString(i++, nodeId);
+ ps.setLong(i++, job.schedDate);
+ ps.setInt(i++, asInteger(loaded));
+ ps.setInt(i++, asInteger(job.transacted));
+
+ JobDetails details = job.detail;
+ ps.setObject(i++, details.instanceId, Types.BIGINT);
+ ps.setObject(i++, details.mexId, Types.VARCHAR);
+ ps.setObject(i++, details.processId, Types.VARCHAR);
+ ps.setObject(i++, details.type, Types.VARCHAR);
+ ps.setObject(i++, details.channel, Types.VARCHAR);
+ ps.setObject(i++, details.correlatorId, Types.VARCHAR);
+ ps.setObject(i++, details.correlationKeySet, Types.VARCHAR);
+ ps.setObject(i++, details.retryCount, Types.INTEGER);
+ ps.setObject(i++, details.inMem, Types.INTEGER);
+
+ if (details.detailsExt == null || details.detailsExt.size() == 0) {
+ ps.setObject(i++, null, Types.BLOB);
+ } else {
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ try {
+ StreamUtils.write(bos, (Serializable) details.detailsExt);
+ } catch (Exception ex) {
+ __log.error("Error serializing job detail: " + job.detail);
+ throw new DatabaseException(ex);
+ }
+ ps.setBytes(i++, bos.toByteArray());
}
- ps.setBytes(6, bos.toByteArray());
+
return ps.executeUpdate() == 1;
} catch (SQLException se) {
throw new DatabaseException(se);
@@ -163,7 +237,7 @@
public boolean updateJob(Job job) throws DatabaseException {
if (__log.isDebugEnabled())
- __log.debug("updateJob " + job.jobId + " details=" + job);
+ __log.debug("updateJob " + job.jobId + " retryCount=" + job.detail.getRetryCount());
Connection con = null;
PreparedStatement ps = null;
@@ -171,14 +245,7 @@
con = getConnection();
ps = con.prepareStatement(UPDATE_JOB);
ps.setLong(1, job.schedDate);
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- try {
- StreamUtils.write(bos, (Serializable) job.detail);
- } catch (Exception ex) {
- __log.error("Error serializing job detail: " + job.detail);
- throw new DatabaseException(ex);
- }
- ps.setBytes(2, bos.toByteArray());
+ ps.setInt(2, job.detail.getRetryCount());
ps.setString(3, job.jobId);
return ps.executeUpdate() == 1;
} catch (SQLException se) {
@@ -189,6 +256,21 @@
}
}
+ private Long asLong(Object o) {
+ if (o == null) return null;
+ else if (o instanceof BigDecimal) return ((BigDecimal) o).longValue();
+ else if (o instanceof Long) return (Long) o;
+ else if (o instanceof Integer) return ((Integer) o).longValue();
+ else throw new IllegalStateException("Can't convert to long " + o.getClass());
+ }
+
+ private Integer asInteger(Object o) {
+ if (o == null) return null;
+ else if (o instanceof BigDecimal) return ((BigDecimal) o).intValue();
+ else if (o instanceof Integer) return (Integer) o;
+ else throw new IllegalStateException("Can't convert to integer " + o.getClass());
+ }
+
@SuppressWarnings("unchecked")
public List<Job> dequeueImmediate(String nodeId, long maxtime, int maxjobs) throws DatabaseException {
ArrayList<Job> ret = new ArrayList<Job>(maxjobs);
@@ -200,17 +282,65 @@
ps.setString(1, nodeId);
ps.setLong(2, maxtime);
ps.setMaxRows(maxjobs);
+
ResultSet rs = ps.executeQuery();
while (rs.next()) {
- Map<String, Object> details;
- try {
- ObjectInputStream is = new ObjectInputStream(rs.getBinaryStream(5));
- details = (Map<String, Object>) is.readObject();
- is.close();
- } catch (Exception e) {
- throw new DatabaseException("Error deserializing job details", e);
+ Scheduler.JobDetails details = new Scheduler.JobDetails();
+ details.instanceId = asLong(rs.getObject("instanceId"));
+ details.mexId = (String) rs.getObject("mexId");
+ details.processId = (String) rs.getObject("processId");
+ details.type = (String) rs.getObject("type");
+ details.channel = (String) rs.getObject("channel");
+ details.correlatorId = (String) rs.getObject("correlatorId");
+ details.correlationKeySet = (String) rs.getObject("correlationKeySet");
+ details.retryCount = asInteger(rs.getObject("retryCount"));
+ details.inMem = asBoolean(rs.getInt("inMem"));
+ if (rs.getObject("detailsExt") != null) {
+ try {
+ ObjectInputStream is = new ObjectInputStream(rs.getBinaryStream("detailsExt"));
+ details.detailsExt = (Map<String, Object>) is.readObject();
+ is.close();
+ } catch (Exception e) {
+ throw new DatabaseException("Error deserializing job detailsExt", e);
+ }
}
- Job job = new Job(rs.getLong(2), rs.getString(1), asBoolean(rs.getInt(3)), details);
+
+ {
+ //For compatibility reasons, we check whether there are entries inside
+ //jobDetailsExt blob, which correspond to extracted entries. If so, we
+ //use them.
+
+ Map<String, Object> detailsExt = details.getDetailsExt();
+ if (detailsExt.get("type") != null) {
+ details.type = (String) detailsExt.get("type");
+ }
+ if (detailsExt.get("iid") != null) {
+ details.instanceId = (Long) detailsExt.get("iid");
+ }
+ if (detailsExt.get("pid") != null) {
+ details.processId = (String) detailsExt.get("pid");
+ }
+ if (detailsExt.get("inmem") != null) {
+ details.inMem = (Boolean) detailsExt.get("inmem");
+ }
+ if (detailsExt.get("ckey") != null) {
+ details.correlationKeySet = (String) detailsExt.get("ckey");
+ }
+ if (detailsExt.get("channel") != null) {
+ details.channel = (String) detailsExt.get("channel");
+ }
+ if (detailsExt.get("mexid") != null) {
+ details.mexId = (String) detailsExt.get("mexid");
+ }
+ if (detailsExt.get("correlatorId") != null) {
+ details.correlatorId = (String) detailsExt.get("correlatorId");
+ }
+ if (detailsExt.get("retryCount") != null) {
+ details.retryCount = Integer.parseInt((String) detailsExt.get("retryCount"));
+ }
+ }
+
+ Job job = new Job(rs.getLong("ts"), rs.getString("jobid"), asBoolean(rs.getInt("transacted")), details);
ret.add(job);
}
rs.close();
Modified: branches/ODE/ODE-1.x-fixes/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/Job.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/Job.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/Job.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -22,6 +22,7 @@
import java.util.Map;
import java.text.SimpleDateFormat;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
import org.apache.ode.utils.GUID;
/**
@@ -34,14 +35,14 @@
String jobId;
boolean transacted;
- Map<String,Object> detail;
+ JobDetails detail;
boolean persisted = true;
- public Job(long when, boolean transacted, Map<String, Object> jobDetail) {
+ public Job(long when, boolean transacted, JobDetails jobDetail) {
this(when, new GUID().toString(),transacted,jobDetail);
}
-
- public Job(long when, String jobId, boolean transacted,Map<String, Object> jobDetail) {
+
+ public Job(long when, String jobId, boolean transacted, JobDetails jobDetail) {
super(when);
this.jobId = jobId;
this.detail = jobDetail;
Modified: branches/ODE/ODE-1.x-fixes/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SimpleScheduler.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SimpleScheduler.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SimpleScheduler.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -33,12 +33,15 @@
import javax.transaction.SystemException;
import javax.transaction.Transaction;
import javax.transaction.TransactionManager;
+import javax.xml.namespace.QName;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.ode.bpel.common.CorrelationKey;
import org.apache.ode.bpel.iapi.ContextException;
import org.apache.ode.bpel.iapi.Scheduler;
import org.apache.log4j.helpers.AbsoluteTimeDateFormat;
+import org.apache.ode.bpel.iapi.Scheduler.JobType;
/**
* A reliable and relatively simple scheduler that uses a database to persist information about
@@ -340,7 +343,7 @@
}
}
- public String schedulePersistedJob(final Map<String, Object> jobDetail, Date when) throws ContextException {
+ public String schedulePersistedJob(final JobDetails jobDetail, Date when) throws ContextException {
long ctime = System.currentTimeMillis();
if (when == null)
when = new Date(ctime);
@@ -356,10 +359,10 @@
if (when == null)
when = new Date(ctime);
- Map<String, Object> jobDetails = new HashMap<String, Object>();
- jobDetails.put("runnable", runnable);
- runnable.storeToDetailsMap(jobDetails);
-
+ JobDetails jobDetails = new JobDetails();
+ jobDetails.getDetailsExt().put("runnable", runnable);
+ runnable.storeToDetails(jobDetails);
+
if (__log.isDebugEnabled())
__log.debug("scheduling " + jobDetails + " for " + when);
@@ -396,11 +399,11 @@
return job.jobId;
}
- public String scheduleVolatileJob(boolean transacted, Map<String, Object> jobDetail) throws ContextException {
+ public String scheduleVolatileJob(boolean transacted, JobDetails jobDetail) throws ContextException {
return scheduleVolatileJob(transacted, jobDetail, null);
}
- public String scheduleVolatileJob(boolean transacted, Map<String, Object> jobDetail, Date when) throws ContextException {
+ public String scheduleVolatileJob(boolean transacted, JobDetails jobDetail, Date when) throws ContextException {
long ctime = System.currentTimeMillis();
if (when == null)
when = new Date(ctime);
@@ -502,7 +505,7 @@
public Void call() throws Exception {
try {
final Scheduler.JobInfo jobInfo = new Scheduler.JobInfo(job.jobId, job.detail,
- (Integer) (job.detail.get("retry") != null ? job.detail.get("retry") : 0));
+ job.detail.getRetryCount());
if (job.transacted) {
final boolean[] needRetry = new boolean[]{true};
try {
@@ -514,7 +517,7 @@
try {
processor.onScheduledJob(jobInfo);
// If the job is a "runnable" job, schedule the next job occurence
- if (job.detail.get("runnable") != null && !"COMPLETED".equals(String.valueOf(jobInfo.jobDetail.get("runnable_status")))) {
+ if (job.detail.getDetailsExt().get("runnable") != null && !"COMPLETED".equals(String.valueOf(jobInfo.jobDetail.getDetailsExt().get("runnable_status")))) {
// the runnable is still in progress, schedule checker to 10 mins later
if (_pollIntervalForPolledRunnable < 0) {
if (__log.isWarnEnabled())
@@ -547,9 +550,9 @@
execTransaction(new Callable<Void>() {
public Void call() throws Exception {
if (needRetry[0]) {
- int retry = job.detail.get("retry") != null ? (((Integer) job.detail.get("retry")) + 1) : 0;
+ int retry = job.detail.getRetryCount() + 1;
if (retry <= 10) {
- job.detail.put("retry", retry);
+ job.detail.setRetryCount(retry);
long delay = (long)(Math.pow(5, retry));
job.schedDate = System.currentTimeMillis() + delay*1000;
_db.updateJob(job);
@@ -643,7 +646,7 @@
public void runTask(final Task task) {
if (task instanceof Job) {
Job job = (Job)task;
- if( job.detail.get("runnable") != null ) {
+ if( job.detail.getDetailsExt().get("runnable") != null ) {
runPolledRunnable(job);
} else {
runJob(job);
@@ -811,9 +814,17 @@
} finally {
__log.debug("node recovery complete");
}
-
}
+// private long doRetry(Job job) throws DatabaseException {
+// int retry = job.detail.getRetryCount() + 1;
+// job.detail.setRetryCount(retry);
+// long delay = (long)(Math.pow(5, retry - 1));
+// Job jobRetry = new Job(System.currentTimeMillis() + delay*1000, true, job.detail);
+// _db.insertJob(jobRetry, _nodeId, false);
+// return delay;
+// }
+
private abstract class SchedulerTask extends Task implements Runnable {
SchedulerTask(long schedDate) {
super(schedDate);
Modified: branches/ODE/ODE-1.x-fixes/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/DelegateSupport.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/DelegateSupport.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/DelegateSupport.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -19,6 +19,7 @@
package org.apache.ode.scheduler.simple;
+import java.io.InputStream;
import java.sql.Connection;
import javax.sql.DataSource;
@@ -64,9 +65,18 @@
public void setup() throws Exception {
Connection c = _ds.getConnection();
try {
+ StringBuffer sql = new StringBuffer();
+
+ {
+ InputStream in = getClass().getResourceAsStream("/simplesched-hsql.sql");
+ int v;
+ while ((v = in.read()) != -1) {
+ sql.append((char) v);
+ }
+ }
+
c.createStatement().executeUpdate("CREATE ALIAS MOD FOR \"org.apache.ode.scheduler.simple.DelegateSupport.mod\";");
- String sql = "CREATE TABLE \"ODE_JOB\" (\"JOBID\" CHAR(64) NOT NULL, \"TS\" NUMERIC NOT NULL, \"NODEID\" char(64) NULL, \"SCHEDULED\" int NOT NULL, \"TRANSACTED\" int NOT NULL, \"DETAILS\" BINARY(4096) NULL, PRIMARY KEY(\"JOBID\"));";
- c.createStatement().executeUpdate(sql);
+ c.createStatement().executeUpdate(sql.toString());
} finally {
c.close();
}
Modified: branches/ODE/ODE-1.x-fixes/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/GeronimoDelegateSupport.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/GeronimoDelegateSupport.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/GeronimoDelegateSupport.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -1,3 +1,21 @@
+/*
+ * 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.scheduler.simple;
import javax.sql.DataSource;
Modified: branches/ODE/ODE-1.x-fixes/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/JdbcDelegateTest.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/JdbcDelegateTest.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/JdbcDelegateTest.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -22,6 +22,10 @@
import java.util.HashMap;
import java.util.List;
+import javax.xml.namespace.QName;
+
+import org.apache.ode.bpel.iapi.Scheduler;
+import org.apache.ode.bpel.iapi.Scheduler.JobType;
import org.apache.ode.scheduler.simple.DatabaseDelegate;
import org.apache.ode.scheduler.simple.Job;
@@ -52,19 +56,19 @@
assertEquals(0, nids.size());
// try for one nodeid
- _del.insertJob(new Job(0L,true,new HashMap<String, Object>()), "abc", true);
+ _del.insertJob(new Job(0L,true,new Scheduler.JobDetails()), "abc", true);
nids = _del.getNodeIds();
assertEquals(1, nids.size());
assertTrue(nids.contains("abc"));
// check that dups are ignored.
- _del.insertJob(new Job(0L,true,new HashMap<String, Object>()), "abc", true);
+ _del.insertJob(new Job(0L,true,new Scheduler.JobDetails()), "abc", true);
nids = _del.getNodeIds();
assertEquals(1, nids.size());
assertTrue(nids.contains("abc"));
// add another nodeid,
- _del.insertJob(new Job(0L,true,new HashMap<String, Object>()), "123", true);
+ _del.insertJob(new Job(0L,true,new Scheduler.JobDetails()), "123", true);
nids = _del.getNodeIds();
assertEquals(2, nids.size());
assertTrue(nids.contains("abc"));
@@ -72,8 +76,8 @@
}
public void testReassign() throws Exception {
- _del.insertJob(new Job(100L,"j1",true,new HashMap<String, Object>()), "n1", false);
- _del.insertJob(new Job(200L,"j2",true,new HashMap<String, Object>()), "n2", false);
+ _del.insertJob(new Job(100L,"j1",true,new Scheduler.JobDetails()), "n1", false);
+ _del.insertJob(new Job(200L,"j2",true,new Scheduler.JobDetails()), "n2", false);
assertEquals(1,_del.updateReassign("n1","n2"));
List<Job> jobs = _del.dequeueImmediate("n2", 400L, 1000);
@@ -81,8 +85,8 @@
}
public void testScheduleImmediateTimeFilter() throws Exception {
- _del.insertJob(new Job(100L,"j1",true,new HashMap<String, Object>()), "n1", false);
- _del.insertJob(new Job(200L,"j2",true,new HashMap<String, Object>()), "n1", false);
+ _del.insertJob(new Job(100L,"j1",true,new Scheduler.JobDetails()), "n1", false);
+ _del.insertJob(new Job(200L,"j2",true,new Scheduler.JobDetails()), "n1", false);
List<Job> jobs = _del.dequeueImmediate("n1", 150L, 1000);
@@ -97,8 +101,8 @@
}
public void testScheduleImmediateMaxRows() throws Exception {
- _del.insertJob(new Job(100L,"j1",true,new HashMap<String, Object>()), "n1", false);
- _del.insertJob(new Job(200L,"j2",true,new HashMap<String, Object>()), "n1", false);
+ _del.insertJob(new Job(100L,"j1",true,new Scheduler.JobDetails()), "n1", false);
+ _del.insertJob(new Job(200L,"j2",true,new Scheduler.JobDetails()), "n1", false);
List<Job> jobs = _del.dequeueImmediate("n1", 201L, 1);
assertNotNull(jobs);
@@ -107,8 +111,8 @@
}
public void testScheduleImmediateNodeFilter() throws Exception {
- _del.insertJob(new Job(100L,"j1",true,new HashMap<String, Object>()), "n1", false);
- _del.insertJob(new Job(200L,"j2",true,new HashMap<String, Object>()), "n2", false);
+ _del.insertJob(new Job(100L,"j1",true,new Scheduler.JobDetails()), "n1", false);
+ _del.insertJob(new Job(200L,"j2",true,new Scheduler.JobDetails()), "n2", false);
List<Job> jobs = _del.dequeueImmediate("n2", 300L, 1000);
assertNotNull(jobs);
@@ -117,8 +121,8 @@
}
public void testDeleteJob() throws Exception {
- _del.insertJob(new Job(100L,"j1",true,new HashMap<String, Object>()), "n1", false);
- _del.insertJob(new Job(200L,"j2",true,new HashMap<String, Object>()), "n2", false);
+ _del.insertJob(new Job(100L,"j1",true,new Scheduler.JobDetails()), "n1", false);
+ _del.insertJob(new Job(200L,"j2",true,new Scheduler.JobDetails()), "n2", false);
// try deleting, wrong jobid -- del should fail
assertFalse(_del.deleteJob("j1x", "n1"));
@@ -135,7 +139,7 @@
public void testUpgrade() throws Exception {
for (int i = 0; i < 200; ++i)
- _del.insertJob(new Job(i ,"j" +i,true,new HashMap<String, Object>()), null, false);
+ _del.insertJob(new Job(i ,"j" +i,true,new Scheduler.JobDetails()), null, false);
int n1 = _del.updateAssignToNode("n1", 0, 3, 100);
int n2 = _del.updateAssignToNode("n2", 1, 3, 100);
@@ -149,4 +153,30 @@
assertEquals(n3,_del.dequeueImmediate("n3", 10000L, 1000).size());
}
+ public void testMigration() throws Exception {
+ Scheduler.JobDetails j1 = new Scheduler.JobDetails();
+ j1.getDetailsExt().put("type", "MATCHER");
+ j1.getDetailsExt().put("iid", 1234L);
+ j1.getDetailsExt().put("pid", new QName("http://test1", "test2").toString());
+ j1.getDetailsExt().put("inmem", true);
+ j1.getDetailsExt().put("ckey", "@2[some~001~002]");
+ j1.getDetailsExt().put("channel", "123");
+ j1.getDetailsExt().put("mexid", "mexid123");
+ j1.getDetailsExt().put("correlatorId", "cid123");
+ j1.getDetailsExt().put("retryCount", "15");
+
+ _del.insertJob(new Job(0 ,"migration",true,j1), null, false);
+ _del.updateAssignToNode("m", 0, 3, 100);
+ Scheduler.JobDetails j2 = _del.dequeueImmediate("m", 10000L, 1000).get(0).detail;
+
+ assertEquals(j2.getType(), JobType.MATCHER);
+ assertEquals(j2.getInstanceId(), (Object) 1234L);
+ assertEquals(j2.getProcessId(), new QName("http://test1", "test2"));
+ assertEquals(j2.getInMem(), (Object) true);
+ assertEquals(j2.getCorrelationKeySet().toCanonicalString(), (Object) "@2[some~001~002]");
+ assertEquals(j2.getChannel(), (Object) "123");
+ assertEquals(j2.getMexId(), (Object) "mexid123");
+ assertEquals(j2.getCorrelatorId(), (Object) "cid123");
+ assertEquals(j2.getRetryCount(), (Object) 15);
+ }
}
Modified: branches/ODE/ODE-1.x-fixes/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/RetriesTest.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/RetriesTest.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/RetriesTest.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -20,6 +20,8 @@
package org.apache.ode.scheduler.simple;
import org.apache.ode.bpel.iapi.Scheduler;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.apache.geronimo.transaction.manager.GeronimoTransactionManager;
import javax.transaction.TransactionManager;
@@ -32,6 +34,8 @@
* @author Matthieu Riou <mriou(a)apache.org>
*/
public class RetriesTest extends TestCase implements Scheduler.JobProcessor {
+ private static final Log __log = LogFactory.getLog(RetriesTest.class);
+
DelegateSupport _ds;
SimpleScheduler _scheduler;
ArrayList<Scheduler.JobInfo> _jobs;
@@ -66,7 +70,7 @@
}
Thread.sleep(10000);
- assertEquals(8, _tried);
+ assertEquals(6, _tried);
}
public void testExecTransaction() throws Exception {
@@ -95,10 +99,10 @@
throw new Scheduler.JobProcessorException(jobInfo.retryCount < 1);
}
- Map<String, Object> newDetail(String x) {
- HashMap<String, Object> det = new HashMap<String, Object>();
- det.put("foo", x);
- return det;
+ Scheduler.JobDetails newDetail(String x) {
+ Scheduler.JobDetails jd = new Scheduler.JobDetails();
+ jd.getDetailsExt().put("foo", x);
+ return jd;
}
private SimpleScheduler newScheduler(String nodeId) {
Modified: branches/ODE/ODE-1.x-fixes/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/SimpleSchedulerTest.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/SimpleSchedulerTest.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/SimpleSchedulerTest.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -29,6 +29,8 @@
import junit.framework.TestCase;
+import org.apache.geronimo.transaction.manager.GeronimoTransactionManager;
+import org.apache.ode.bpel.iapi.Scheduler;
import org.apache.ode.bpel.iapi.Scheduler.JobInfo;
import org.apache.ode.bpel.iapi.Scheduler.JobProcessor;
import org.apache.ode.bpel.iapi.Scheduler.JobProcessorException;
@@ -238,10 +240,10 @@
}
- Map<String, Object> newDetail(String x) {
- HashMap<String, Object> det = new HashMap<String, Object>();
- det.put("foo", x);
- return det;
+ Scheduler.JobDetails newDetail(String x) {
+ Scheduler.JobDetails jd = new Scheduler.JobDetails();
+ jd.getDetailsExt().put("foo", x);
+ return jd;
}
private SimpleScheduler newScheduler(String nodeId) {
Added: branches/ODE/ODE-1.x-fixes/scheduler-simple/src/test/resources/log4j.properties
===================================================================
--- branches/ODE/ODE-1.x-fixes/scheduler-simple/src/test/resources/log4j.properties (rev 0)
+++ branches/ODE/ODE-1.x-fixes/scheduler-simple/src/test/resources/log4j.properties 2010-05-28 04:59:49 UTC (rev 677)
@@ -0,0 +1,28 @@
+#
+# 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.
+#
+
+# Set root logger level to WARN and its only appender to CONSOLE
+log4j.rootLogger=WARN, CONSOLE
+
+# log4j properties to work with commandline tools.
+log4j.category.org.apache.ode.scheduler.simple.RetriesTest=DEBUG
+log4j.category.org.apache.ode.bpel.engine=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
Added: branches/ODE/ODE-1.x-fixes/scheduler-simple/src/test/resources/simplesched-hsql.sql
===================================================================
--- branches/ODE/ODE-1.x-fixes/scheduler-simple/src/test/resources/simplesched-hsql.sql (rev 0)
+++ branches/ODE/ODE-1.x-fixes/scheduler-simple/src/test/resources/simplesched-hsql.sql 2010-05-28 04:59:49 UTC (rev 677)
@@ -0,0 +1,20 @@
+CREATE TABLE ode_job (
+ jobid CHAR(64) NOT NULL,
+ ts BIGINT NOT NULL,
+ nodeid char(64),
+ scheduled int NOT NULL,
+ transacted int NOT NULL,
+
+ instanceId BIGINT,
+ mexId varchar(255),
+ processId varchar(255),
+ type varchar(255),
+ channel varchar(255),
+ correlatorId varchar(255),
+ correlationKeySet varchar(255),
+ retryCount int,
+ inMem int,
+ detailsExt binary(4096),
+
+ PRIMARY KEY(jobid));
+
Added: branches/ODE/ODE-1.x-fixes/schema-updates/update01.sql
===================================================================
--- branches/ODE/ODE-1.x-fixes/schema-updates/update01.sql (rev 0)
+++ branches/ODE/ODE-1.x-fixes/schema-updates/update01.sql 2010-05-28 04:59:49 UTC (rev 677)
@@ -0,0 +1,7 @@
+alter table BPEL_XML_DATA add DATA blob;
+
+update BPEL_XML_DATA bxd set DATA=(select BIN_DATA from LARGE_DATA where id = bxd.ldata_id);
+delete from LARGE_DATA ld where ld.id in (select ldata_id from BPEL_XML_DATA);
+alter table BPEL_XML_DATA drop column ldata_id;
+
+alter table BPEL_XML_DATA add SIMPLE_VALUE varchar2(255);
Added: branches/ODE/ODE-1.x-fixes/schema-updates/update02.sql
===================================================================
--- branches/ODE/ODE-1.x-fixes/schema-updates/update02.sql (rev 0)
+++ branches/ODE/ODE-1.x-fixes/schema-updates/update02.sql 2010-05-28 04:59:49 UTC (rev 677)
@@ -0,0 +1,14 @@
+create table ODE_JOB_BAK as select * from ODE_JOB;
+alter table ODE_JOB add instanceId number(37);
+alter table ODE_JOB add mexId varchar(255);
+alter table ODE_JOB add processId varchar(255);
+alter table ODE_JOB add type varchar(255);
+alter table ODE_JOB add channel varchar(255);
+alter table ODE_JOB add correlatorId varchar(255);
+alter table ODE_JOB add correlationKeySet varchar(255);
+alter table ODE_JOB add retryCount int;
+alter table ODE_JOB add inMem int;
+alter table ODE_JOB add priority int;
+alter table ODE_JOB add detailsExt blob;
+update ODE_JOB oj set detailsExt = (select details from ODE_JOB where jobid = oj.jobid);
+alter table ODE_JOB drop column details;
Modified: branches/ODE/ODE-1.x-fixes/tools/src/main/java/org/apache/ode/tools/sendsoap/cline/HttpSoapSender.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/tools/src/main/java/org/apache/ode/tools/sendsoap/cline/HttpSoapSender.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/tools/src/main/java/org/apache/ode/tools/sendsoap/cline/HttpSoapSender.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -19,6 +19,8 @@
package org.apache.ode.tools.sendsoap.cline;
import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.HttpConnectionManager;
+import org.apache.commons.httpclient.SimpleHttpConnectionManager;
import org.apache.commons.httpclient.UsernamePasswordCredentials;
import org.apache.commons.httpclient.auth.AuthScope;
import org.apache.commons.httpclient.methods.PostMethod;
@@ -105,7 +107,10 @@
m.appendReplacement(sb, now + "-" + c++);
}
m.appendTail(sb);
- HttpClient httpClient = new HttpClient();
+ SimpleHttpConnectionManager mgr = new SimpleHttpConnectionManager();
+ mgr.getParams().setConnectionTimeout(60000);
+ mgr.getParams().setSoTimeout(60000);
+ HttpClient httpClient = new HttpClient(mgr);
PostMethod httpPostMethod = new PostMethod(u.toExternalForm());
if (proxyServer != null && proxyServer.length() > 0) {
httpClient.getState().setCredentials(new AuthScope(proxyServer, proxyPort),
Modified: branches/ODE/ODE-1.x-fixes/utils/pom.xml
===================================================================
--- branches/ODE/ODE-1.x-fixes/utils/pom.xml 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/utils/pom.xml 2010-05-28 04:59:49 UTC (rev 677)
@@ -65,7 +65,7 @@
<artifactId>log4j</artifactId>
</dependency>
<dependency>
- <groupId>xstream</groupId>
+ <groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
</dependency>
<dependency>
@@ -90,17 +90,9 @@
</dependency>
<dependency>
<groupId>org.apache.axis2</groupId>
- <artifactId>axis2-jibx</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.axis2</groupId>
<artifactId>axis2-saaj</artifactId>
</dependency>
<dependency>
- <groupId>org.apache.axis2</groupId>
- <artifactId>axis2-xmlbeans</artifactId>
- </dependency>
- <dependency>
<groupId>net.sf.saxon</groupId>
<artifactId>saxon</artifactId>
</dependency>
Modified: branches/ODE/ODE-1.x-fixes/utils/src/main/java/org/apache/ode/utils/CronExpression.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/utils/src/main/java/org/apache/ode/utils/CronExpression.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/utils/src/main/java/org/apache/ode/utils/CronExpression.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -1,3 +1,22 @@
+/*
++ * 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.utils;
import java.io.Serializable;
Modified: branches/ODE/ODE-1.x-fixes/utils/src/main/java/org/apache/ode/utils/RelativeDateParser.java
===================================================================
--- branches/ODE/ODE-1.x-fixes/utils/src/main/java/org/apache/ode/utils/RelativeDateParser.java 2010-05-27 16:08:03 UTC (rev 676)
+++ branches/ODE/ODE-1.x-fixes/utils/src/main/java/org/apache/ode/utils/RelativeDateParser.java 2010-05-28 04:59:49 UTC (rev 677)
@@ -1,3 +1,21 @@
+/*
+ * 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.utils;
import java.text.ParseException;
15 years, 4 months
riftsaw SVN: r676 - in branches/ODE/ODE-1.x-jpa: dao-jpa and 8 other directories.
by riftsaw-commits@lists.jboss.org
Author: jeff.yuchang
Date: 2010-05-27 12:08:03 -0400 (Thu, 27 May 2010)
New Revision: 676
Added:
branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/build.xml
branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/descriptors/persistence.db.xml
branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/files/hibernate.cfg/oracle.properties
branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/files/hibernate.cfg/postgres.properties
branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/resources/
branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/resources/META-INF/
branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/resources/META-INF/persistence.xml
branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/scripts/common.sql
branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/scripts/simplesched-hsql.sql
Removed:
branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/descriptors/persistence.derby.xml
branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/descriptors/persistence.mysql.xml
branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/descriptors/persistence.oracle.xml
branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/descriptors/persistence.postgres.xml
Modified:
branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/pom.xml
branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/files/hibernate.cfg/hsql.properties
branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/java/org/apache/ode/dao/jpa/hibernate/BpelDAOConnectionFactoryImpl.java
branches/ODE/ODE-1.x-jpa/dao-jpa/pom.xml
branches/ODE/ODE-1.x-jpa/pom.xml
Log:
* using Hibernate built-in tool for the JPA entity DDL script.
Modified: branches/ODE/ODE-1.x-jpa/dao-jpa/pom.xml
===================================================================
--- branches/ODE/ODE-1.x-jpa/dao-jpa/pom.xml 2010-05-27 15:55:40 UTC (rev 675)
+++ branches/ODE/ODE-1.x-jpa/dao-jpa/pom.xml 2010-05-27 16:08:03 UTC (rev 676)
@@ -98,20 +98,21 @@
</goals>
<configuration>
<tasks>
- <property name="maven.runtime.classpath" refid="maven.compile.classpath"/>
+ <copy todir="${basedir}/target/classes-openjpa">
+ <fileset dir="${basedir}/target/classes" includes="**/*"/>
+ </copy>
+ <property name="maven.compile.classpath" refid="maven.compile.classpath"/>
<path id="classpath">
- <pathelement path="${maven.runtime.classpath}"/>
- </path>
- <taskdef name="openjpac" classname="org.apache.openjpa.ant.PCEnhancerTask" classpathref="classpath"/>
- <openjpac>
- <fileset dir="${basedir}/src/main">
- <include name="**/*.java" />
- </fileset>
- <classpath>
- <pathelement location="${basedir}/target/classes"/>
- <pathelement path="${maven.runtime.classpath}"/>
- </classpath>
- </openjpac>
+ <pathelement location="${basedir}/target/classes-openjpa"/>
+ <pathelement path="${maven.compile.classpath}"/>
+ </path>
+ <taskdef name="openjpac" classname="org.apache.openjpa.ant.PCEnhancerTask" classpathref="classpath"/>
+ <openjpac directory="${basedir}/target/classes-openjpa">
+ <fileset dir="${basedir}/src/main">
+ <include name="**/*.java" />
+ </fileset>
+ <classpath refid="classpath"/>
+ </openjpac>
</tasks>
</configuration>
</execution>
Added: branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/build.xml
===================================================================
--- branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/build.xml (rev 0)
+++ branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/build.xml 2010-05-27 16:08:03 UTC (rev 676)
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- ============================================================ -->
+<!-- JBoss, the OpenSource J2EE webOS -->
+<!-- Distributable under LGPL license. -->
+<!-- See terms of license at http://www.gnu.org. -->
+<!-- ============================================================ -->
+
+
+<project>
+
+ <property name="db.scripts.dir" value="${basedir}/target" />
+ <property name="descriptor.dir" value="${basedir}/src/main/descriptors"/>
+ <property name="scripts.dir" value="${basedir}/src/main/scripts"/>
+ <property name="META-INF.dir" value="${basedir}/src/main/resources/META-INF" />
+
+ <path id="classpath">
+ <pathelement path="${maven.runtime.classpath}"/>
+ </path>
+
+
+ <!-- ================================================================== -->
+ <!-- jbossidm Database schema -->
+ <!-- ================================================================== -->
+
+ <target name="create-schema">
+
+ <taskdef name="hibernatetool" classname="org.hibernate.tool.ant.HibernateToolTask"
+ classpathref="classpath"/>
+
+ <mkdir dir="target"/>
+ <mkdir dir="target/db" />
+ <mkdir dir="${db.scripts.dir}" />
+
+ <!-- Hsql -->
+ <create-ddl db="hsql"/>
+
+ <!-- MySQL -->
+ <create-ddl db="mysql"/>
+
+ <!-- Oracle -->
+ <create-ddl db="oracle"/>
+
+ <!-- PostgreSQL -->
+ <create-ddl db="postgres"/>
+
+ <create-ddl db="hsql"/>
+
+ </target>
+
+ <!--
+ ============================================
+ Macro defs, no need to change anything below
+ ============================================
+ -->
+
+ <macrodef name="create-ddl">
+ <attribute name="db"/>
+
+ <sequential>
+ <echo></echo>
+ <echo>=====================</echo>
+ <echo>Create DDL @{db}</echo>
+
+ <copy file="${descriptor.dir}/persistence.db.xml"
+ toFile="${META-INF.dir}/persistence.xml"
+ overwrite="true">
+ <filterset filtersfile="${basedir}/src/main/files/hibernate.cfg/(a){db}.properties" />
+ </copy>
+
+ <hibernatetool destdir="${db.scripts.dir}">
+ <jpaconfiguration persistenceunit="ode-unit-test-embedded"/>
+ <hbm2ddl drop="false" create="true" export="${export}" console="false"
+ outputfilename="partial.(a){db}.sql" delimiter=";" format="true" />
+ </hibernatetool>
+ <concat destfile="${db.scripts.dir}/scripts/(a){db}.sql">
+ <fileset file="${scripts.dir}/license-header.sql"/>
+ <fileset file="${scripts.dir}/common.sql"/>
+ <fileset file="${scripts.dir}/simplesched-(a){db}.sql"/>
+ <fileset file="${db.scripts.dir}/partial.(a){db}.sql"/>
+ </concat>
+
+ <echo>Done.</echo>
+ <echo>=====================</echo>
+ </sequential>
+ </macrodef>
+
+</project>
Modified: branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/pom.xml
===================================================================
--- branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/pom.xml 2010-05-27 15:55:40 UTC (rev 675)
+++ branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/pom.xml 2010-05-27 16:08:03 UTC (rev 676)
@@ -59,10 +59,47 @@
<artifactId>hibernate-entitymanager</artifactId>
</dependency>
<dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-tools</artifactId>
+ <version>3.2.0.ga</version>
+ </dependency>
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-annotations</artifactId>
+ <version>3.4.0.GA</version>
+ </dependency>
+ <dependency>
+ <groupId>javassist</groupId>
+ <artifactId>javassist</artifactId>
+ </dependency>
+ <dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
</dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>create-db-schemas</id>
+ <phase>process-resources</phase>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ <configuration>
+ <tasks>
+ <property name="maven.runtime.classpath" refid="maven.compile.classpath"/>
+ <ant antfile="build.xml" target="create-schema" />
+ </tasks>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
</project>
Added: branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/descriptors/persistence.db.xml
===================================================================
--- branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/descriptors/persistence.db.xml (rev 0)
+++ branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/descriptors/persistence.db.xml 2010-05-27 16:08:03 UTC (rev 676)
@@ -0,0 +1,56 @@
+<?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.
+ -->
+<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0">
+ <persistence-unit name="ode-unit-test-embedded">
+ <provider>org.hibernate.ejb.HibernatePersistence</provider>
+
+ <class>org.apache.ode.dao.jpa.bpel.ActivityRecoveryDAOImpl</class>
+ <class>org.apache.ode.dao.jpa.bpel.CorrelationSetDAOImpl</class>
+ <class>org.apache.ode.dao.jpa.bpel.CorrelatorDAOImpl</class>
+ <class>org.apache.ode.dao.jpa.bpel.EventDAOImpl</class>
+ <class>org.apache.ode.dao.jpa.bpel.FaultDAOImpl</class>
+ <class>org.apache.ode.dao.jpa.bpel.MessageDAOImpl</class>
+ <class>org.apache.ode.dao.jpa.bpel.MessageExchangeDAOImpl</class>
+ <class>org.apache.ode.dao.jpa.bpel.MessageRouteDAOImpl</class>
+ <class>org.apache.ode.dao.jpa.bpel.PartnerLinkDAOImpl</class>
+ <class>org.apache.ode.dao.jpa.bpel.ProcessDAOImpl</class>
+ <class>org.apache.ode.dao.jpa.bpel.ProcessInstanceDAOImpl</class>
+ <class>org.apache.ode.dao.jpa.bpel.ScopeDAOImpl</class>
+ <class>org.apache.ode.dao.jpa.bpel.XmlDataDAOImpl</class>
+ <class>org.apache.ode.dao.jpa.bpel.CorrSetProperty</class>
+ <class>org.apache.ode.dao.jpa.bpel.MexProperty</class>
+ <class>org.apache.ode.dao.jpa.bpel.XmlDataProperty</class>
+
+ <class>org.apache.ode.dao.jpa.store.ProcessConfDaoImpl</class>
+ <class>org.apache.ode.dao.jpa.store.ProcessConfPropertyDaoImpl</class>
+ <class>org.apache.ode.dao.jpa.store.DeploymentUnitDaoImpl</class>
+ <class>org.apache.ode.dao.jpa.store.VersionTrackerDAOImpl</class>
+
+ <properties>
+ <property name="hibernate.show_sql" value="false" />
+ <property name="hibernate.dialect" value="@dialect@" />
+ <property name="hibernate.connection.datasource" value="java:BPELDB" />
+ <property name="hibernate.transaction.factory_class" value="org.hibernate.transaction.JTATransactionFactory" />
+ <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup" />
+ <property name="jta.UserTransaction" value="jta.UserTransaction" />
+ </properties>
+ </persistence-unit>
+</persistence>
+
Deleted: branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/descriptors/persistence.derby.xml
===================================================================
--- branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/descriptors/persistence.derby.xml 2010-05-27 15:55:40 UTC (rev 675)
+++ branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/descriptors/persistence.derby.xml 2010-05-27 16:08:03 UTC (rev 676)
@@ -1,56 +0,0 @@
-<?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.
- -->
-<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0">
- <persistence-unit name="ode-unit-test-embedded">
- <provider>org.hibernate.ejb.HibernatePersistence</provider>
-
- <class>org.apache.ode.dao.jpa.ActivityRecoveryDAOImpl</class>
- <class>org.apache.ode.dao.jpa.CorrelationSetDAOImpl</class>
- <class>org.apache.ode.dao.jpa.CorrelatorDAOImpl</class>
- <class>org.apache.ode.dao.jpa.EventDAOImpl</class>
- <class>org.apache.ode.dao.jpa.FaultDAOImpl</class>
- <class>org.apache.ode.dao.jpa.MessageDAOImpl</class>
- <class>org.apache.ode.dao.jpa.MessageExchangeDAOImpl</class>
- <class>org.apache.ode.dao.jpa.MessageRouteDAOImpl</class>
- <class>org.apache.ode.dao.jpa.PartnerLinkDAOImpl</class>
- <class>org.apache.ode.dao.jpa.ProcessDAOImpl</class>
- <class>org.apache.ode.dao.jpa.ProcessInstanceDAOImpl</class>
- <class>org.apache.ode.dao.jpa.ResourceRouteDAOImpl</class>
- <class>org.apache.ode.dao.jpa.ScopeDAOImpl</class>
- <class>org.apache.ode.dao.jpa.XmlDataDAOImpl</class>
- <class>org.apache.ode.dao.jpa.ContextValueDAOImpl</class>
-
- <class>org.apache.ode.store.jpa.ProcessConfDaoImpl</class>
- <class>org.apache.ode.store.jpa.ProcessConfPropertyDaoImpl</class>
- <class>org.apache.ode.store.jpa.DeploymentUnitDaoImpl</class>
- <class>org.apache.ode.store.jpa.VersionTrackerDAOImpl</class>
-
- <properties>
- <properties>
- <property name="hibernate.show_sql" value="false" />
- <property name="hibernate.dialect" value="org.hibernate.dialect.DerbyDialect" />
- <property name="hibernate.connection.datasource" value="java:BPELDB" />
- <property name="hibernate.transaction.factory_class" value="org.hibernate.transaction.JTATransactionFactory" />
- <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup" />
- <property name="jta.UserTransaction" value="jta.UserTransaction" />
- </properties>
- </persistence-unit>
-</persistence>
-
Deleted: branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/descriptors/persistence.mysql.xml
===================================================================
--- branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/descriptors/persistence.mysql.xml 2010-05-27 15:55:40 UTC (rev 675)
+++ branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/descriptors/persistence.mysql.xml 2010-05-27 16:08:03 UTC (rev 676)
@@ -1,54 +0,0 @@
-<?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.
- -->
-<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0">
- <persistence-unit name="ode-unit-test-embedded">
- <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
- <class>org.apache.ode.dao.jpa.ActivityRecoveryDAOImpl</class>
- <class>org.apache.ode.dao.jpa.CorrelationSetDAOImpl</class>
- <class>org.apache.ode.dao.jpa.CorrelatorDAOImpl</class>
- <class>org.apache.ode.dao.jpa.EventDAOImpl</class>
- <class>org.apache.ode.dao.jpa.FaultDAOImpl</class>
- <class>org.apache.ode.dao.jpa.MessageDAOImpl</class>
- <class>org.apache.ode.dao.jpa.MessageExchangeDAOImpl</class>
- <class>org.apache.ode.dao.jpa.MessageRouteDAOImpl</class>
- <class>org.apache.ode.dao.jpa.PartnerLinkDAOImpl</class>
- <class>org.apache.ode.dao.jpa.ProcessDAOImpl</class>
- <class>org.apache.ode.dao.jpa.ProcessInstanceDAOImpl</class>
- <class>org.apache.ode.dao.jpa.ResourceRouteDAOImpl</class>
- <class>org.apache.ode.dao.jpa.ScopeDAOImpl</class>
- <class>org.apache.ode.dao.jpa.XmlDataDAOImpl</class>
- <class>org.apache.ode.dao.jpa.ContextValueDAOImpl</class>
-
- <class>org.apache.ode.store.jpa.ProcessConfDaoImpl</class>
- <class>org.apache.ode.store.jpa.ProcessConfPropertyDaoImpl</class>
- <class>org.apache.ode.store.jpa.DeploymentUnitDaoImpl</class>
- <class>org.apache.ode.store.jpa.VersionTrackerDAOImpl</class>
-
- <properties>
- <property name="hibernate.show_sql" value="false" />
- <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLInnoDBDialect" />
- <property name="hibernate.connection.datasource" value="java:BPELDB" />
- <property name="hibernate.transaction.factory_class" value="org.hibernate.transaction.JTATransactionFactory" />
- <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup" />
- <property name="jta.UserTransaction" value="jta.UserTransaction" />
- </properties>
- </persistence-unit>
-</persistence>
-
Deleted: branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/descriptors/persistence.oracle.xml
===================================================================
--- branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/descriptors/persistence.oracle.xml 2010-05-27 15:55:40 UTC (rev 675)
+++ branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/descriptors/persistence.oracle.xml 2010-05-27 16:08:03 UTC (rev 676)
@@ -1,54 +0,0 @@
-<?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.
- -->
-<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0">
- <persistence-unit name="ode-unit-test-embedded">
- <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
- <class>org.apache.ode.dao.jpa.ActivityRecoveryDAOImpl</class>
- <class>org.apache.ode.dao.jpa.CorrelationSetDAOImpl</class>
- <class>org.apache.ode.dao.jpa.CorrelatorDAOImpl</class>
- <class>org.apache.ode.dao.jpa.EventDAOImpl</class>
- <class>org.apache.ode.dao.jpa.FaultDAOImpl</class>
- <class>org.apache.ode.dao.jpa.MessageDAOImpl</class>
- <class>org.apache.ode.dao.jpa.MessageExchangeDAOImpl</class>
- <class>org.apache.ode.dao.jpa.MessageRouteDAOImpl</class>
- <class>org.apache.ode.dao.jpa.PartnerLinkDAOImpl</class>
- <class>org.apache.ode.dao.jpa.ProcessDAOImpl</class>
- <class>org.apache.ode.dao.jpa.ProcessInstanceDAOImpl</class>
- <class>org.apache.ode.dao.jpa.ResourceRouteDAOImpl</class>
- <class>org.apache.ode.dao.jpa.ScopeDAOImpl</class>
- <class>org.apache.ode.dao.jpa.XmlDataDAOImpl</class>
- <class>org.apache.ode.dao.jpa.ContextValueDAOImpl</class>
-
- <class>org.apache.ode.store.jpa.ProcessConfDaoImpl</class>
- <class>org.apache.ode.store.jpa.ProcessConfPropertyDaoImpl</class>
- <class>org.apache.ode.store.jpa.DeploymentUnitDaoImpl</class>
- <class>org.apache.ode.store.jpa.VersionTrackerDAOImpl</class>
-
- <properties>
- <property name="hibernate.show_sql" value="false" />
- <property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect" />
- <property name="hibernate.connection.datasource" value="java:BPELDB" />
- <property name="hibernate.transaction.factory_class" value="org.hibernate.transaction.JTATransactionFactory" />
- <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup" />
- <property name="jta.UserTransaction" value="jta.UserTransaction" />
- </properties>
- </persistence-unit>
-</persistence>
-
Deleted: branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/descriptors/persistence.postgres.xml
===================================================================
--- branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/descriptors/persistence.postgres.xml 2010-05-27 15:55:40 UTC (rev 675)
+++ branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/descriptors/persistence.postgres.xml 2010-05-27 16:08:03 UTC (rev 676)
@@ -1,54 +0,0 @@
-<?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.
- -->
-<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0">
- <persistence-unit name="ode-unit-test-embedded">
- <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
- <class>org.apache.ode.dao.jpa.ActivityRecoveryDAOImpl</class>
- <class>org.apache.ode.dao.jpa.CorrelationSetDAOImpl</class>
- <class>org.apache.ode.dao.jpa.CorrelatorDAOImpl</class>
- <class>org.apache.ode.dao.jpa.EventDAOImpl</class>
- <class>org.apache.ode.dao.jpa.FaultDAOImpl</class>
- <class>org.apache.ode.dao.jpa.MessageDAOImpl</class>
- <class>org.apache.ode.dao.jpa.MessageExchangeDAOImpl</class>
- <class>org.apache.ode.dao.jpa.MessageRouteDAOImpl</class>
- <class>org.apache.ode.dao.jpa.PartnerLinkDAOImpl</class>
- <class>org.apache.ode.dao.jpa.ProcessDAOImpl</class>
- <class>org.apache.ode.dao.jpa.ProcessInstanceDAOImpl</class>
- <class>org.apache.ode.dao.jpa.ResourceRouteDAOImpl</class>
- <class>org.apache.ode.dao.jpa.ScopeDAOImpl</class>
- <class>org.apache.ode.dao.jpa.XmlDataDAOImpl</class>
- <class>org.apache.ode.dao.jpa.ContextValueDAOImpl</class>
-
- <class>org.apache.ode.store.jpa.ProcessConfDaoImpl</class>
- <class>org.apache.ode.store.jpa.ProcessConfPropertyDaoImpl</class>
- <class>org.apache.ode.store.jpa.DeploymentUnitDaoImpl</class>
- <class>org.apache.ode.store.jpa.VersionTrackerDAOImpl</class>
-
- <properties>
- <property name="hibernate.show_sql" value="false" />
- <property name="hibernate.dialect" value="org.hibernate.dialect.PostgresDialect" />
- <property name="hibernate.connection.datasource" value="java:BPELDB" />
- <property name="hibernate.transaction.factory_class" value="org.hibernate.transaction.JTATransactionFactory" />
- <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup" />
- <property name="jta.UserTransaction" value="jta.UserTransaction" />
- </properties>
- </persistence-unit>
-</persistence>
-
Modified: branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/files/hibernate.cfg/hsql.properties
===================================================================
--- branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/files/hibernate.cfg/hsql.properties 2010-05-27 15:55:40 UTC (rev 675)
+++ branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/files/hibernate.cfg/hsql.properties 2010-05-27 16:08:03 UTC (rev 676)
@@ -1 +1 @@
-dialect=org.hibernate.dialect.HSQLDialect
\ No newline at end of file
+dialect=org.hibernate.dialect.H2Dialect
\ No newline at end of file
Added: branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/files/hibernate.cfg/oracle.properties
===================================================================
--- branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/files/hibernate.cfg/oracle.properties (rev 0)
+++ branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/files/hibernate.cfg/oracle.properties 2010-05-27 16:08:03 UTC (rev 676)
@@ -0,0 +1 @@
+dialect=org.hibernate.dialect.OracleDialect
\ No newline at end of file
Added: branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/files/hibernate.cfg/postgres.properties
===================================================================
--- branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/files/hibernate.cfg/postgres.properties (rev 0)
+++ branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/files/hibernate.cfg/postgres.properties 2010-05-27 16:08:03 UTC (rev 676)
@@ -0,0 +1 @@
+dialect=org.hibernate.dialect.PostgresDialect
\ No newline at end of file
Modified: branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/java/org/apache/ode/dao/jpa/hibernate/BpelDAOConnectionFactoryImpl.java
===================================================================
--- branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/java/org/apache/ode/dao/jpa/hibernate/BpelDAOConnectionFactoryImpl.java 2010-05-27 15:55:40 UTC (rev 675)
+++ branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/java/org/apache/ode/dao/jpa/hibernate/BpelDAOConnectionFactoryImpl.java 2010-05-27 16:08:03 UTC (rev 676)
@@ -18,8 +18,6 @@
*/
package org.apache.ode.dao.jpa.hibernate;
-import java.sql.Connection;
-import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
@@ -40,8 +38,6 @@
import org.apache.ode.il.config.OdeConfigProperties;
import org.apache.ode.utils.GUID;
import org.hibernate.cfg.Environment;
-import org.hibernate.dialect.Dialect;
-import org.hibernate.dialect.resolver.DialectFactory;
import org.hibernate.ejb.EntityManagerImpl;
/**
@@ -93,7 +89,7 @@
if (ds != null) {
props.put(Environment.CONNECTION_PROVIDER, DataSourceConnectionProvider.class.getName());
HibernateUtil.registerDatasource(guid, ds);
- props.put(Environment.DIALECT, guessDialect(ds));
+ //props.put(Environment.DIALECT, guessDialect(ds));
}
if (txm != null) {
props.put(Environment.CURRENT_SESSION_CONTEXT_CLASS, "jta");
@@ -157,7 +153,10 @@
}
private static final String DEFAULT_HIBERNATE_DIALECT = "org.hibernate.dialect.DerbyDialect";
- public static String guessDialect(DataSource dataSource) {
+ //Because the JBoss AS 5.1.0.GA uses Hibernate 3.3.1.GA
+ //While SOA-P 5 uses Hibernate 3.3.2.GA, they are different for guessDialect, so comment it now.
+
+/* private static String guessDialect(DataSource dataSource) {
String dialect = null;
// Open a connection and use that connection to figure out database
@@ -185,7 +184,7 @@
return dialect;
- }
+ } */
}
Added: branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/resources/META-INF/persistence.xml
===================================================================
--- branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/resources/META-INF/persistence.xml (rev 0)
+++ branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/resources/META-INF/persistence.xml 2010-05-27 16:08:03 UTC (rev 676)
@@ -0,0 +1,56 @@
+<?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.
+ -->
+<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0">
+ <persistence-unit name="ode-unit-test-embedded">
+ <provider>org.hibernate.ejb.HibernatePersistence</provider>
+
+ <class>org.apache.ode.dao.jpa.bpel.ActivityRecoveryDAOImpl</class>
+ <class>org.apache.ode.dao.jpa.bpel.CorrelationSetDAOImpl</class>
+ <class>org.apache.ode.dao.jpa.bpel.CorrelatorDAOImpl</class>
+ <class>org.apache.ode.dao.jpa.bpel.EventDAOImpl</class>
+ <class>org.apache.ode.dao.jpa.bpel.FaultDAOImpl</class>
+ <class>org.apache.ode.dao.jpa.bpel.MessageDAOImpl</class>
+ <class>org.apache.ode.dao.jpa.bpel.MessageExchangeDAOImpl</class>
+ <class>org.apache.ode.dao.jpa.bpel.MessageRouteDAOImpl</class>
+ <class>org.apache.ode.dao.jpa.bpel.PartnerLinkDAOImpl</class>
+ <class>org.apache.ode.dao.jpa.bpel.ProcessDAOImpl</class>
+ <class>org.apache.ode.dao.jpa.bpel.ProcessInstanceDAOImpl</class>
+ <class>org.apache.ode.dao.jpa.bpel.ScopeDAOImpl</class>
+ <class>org.apache.ode.dao.jpa.bpel.XmlDataDAOImpl</class>
+ <class>org.apache.ode.dao.jpa.bpel.CorrSetProperty</class>
+ <class>org.apache.ode.dao.jpa.bpel.MexProperty</class>
+ <class>org.apache.ode.dao.jpa.bpel.XmlDataProperty</class>
+
+ <class>org.apache.ode.dao.jpa.store.ProcessConfDaoImpl</class>
+ <class>org.apache.ode.dao.jpa.store.ProcessConfPropertyDaoImpl</class>
+ <class>org.apache.ode.dao.jpa.store.DeploymentUnitDaoImpl</class>
+ <class>org.apache.ode.dao.jpa.store.VersionTrackerDAOImpl</class>
+
+ <properties>
+ <property name="hibernate.show_sql" value="false" />
+ <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect" />
+ <property name="hibernate.connection.datasource" value="java:BPELDB" />
+ <property name="hibernate.transaction.factory_class" value="org.hibernate.transaction.JTATransactionFactory" />
+ <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup" />
+ <property name="jta.UserTransaction" value="jta.UserTransaction" />
+ </properties>
+ </persistence-unit>
+</persistence>
+
Added: branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/scripts/common.sql
===================================================================
--- branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/scripts/common.sql (rev 0)
+++ branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/scripts/common.sql 2010-05-27 16:08:03 UTC (rev 676)
@@ -0,0 +1,3 @@
+create table ODE_SCHEMA_VERSION(VERSION integer);
+insert into ODE_SCHEMA_VERSION values (6);
+
Added: branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/scripts/simplesched-hsql.sql
===================================================================
--- branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/scripts/simplesched-hsql.sql (rev 0)
+++ branches/ODE/ODE-1.x-jpa/dao-jpa-hibernate/src/main/scripts/simplesched-hsql.sql 2010-05-27 16:08:03 UTC (rev 676)
@@ -0,0 +1,29 @@
+-- Apache ODE - SimpleScheduler Database Schema
+--
+-- Apache Derby scripts by Maciej Szefler.
+--
+--
+
+CREATE TABLE ode_job (
+ jobid CHAR(64) NOT NULL DEFAULT '',
+ ts BIGINT NOT NULL DEFAULT 0,
+ nodeid char(64),
+ scheduled int NOT NULL DEFAULT 0,
+ transacted int NOT NULL DEFAULT 0,
+
+ instanceId BIGINT,
+ mexId varchar(255),
+ processId varchar(255),
+ type varchar(255),
+ channel varchar(255),
+ correlatorId varchar(255),
+ correlationKeySet varchar(255),
+ retryCount int,
+ inMem int,
+ detailsExt varbinary,
+
+ PRIMARY KEY(jobid));
+
+CREATE INDEX IDX_ODE_JOB_TS ON ode_job(ts);
+CREATE INDEX IDX_ODE_JOB_NODEID ON ode_job(nodeid);
+
Modified: branches/ODE/ODE-1.x-jpa/pom.xml
===================================================================
--- branches/ODE/ODE-1.x-jpa/pom.xml 2010-05-27 15:55:40 UTC (rev 675)
+++ branches/ODE/ODE-1.x-jpa/pom.xml 2010-05-27 16:08:03 UTC (rev 676)
@@ -92,7 +92,7 @@
<persistence-api.version>1.0</persistence-api.version>
<xalan.version>2.7.1</xalan.version>
<ant.version>1.6.5</ant.version>
- <openjpa.version>1.2.1</openjpa.version>
+ <openjpa.version>1.3.0-SNAPSHOT</openjpa.version>
<serp.version>1.13.1</serp.version>
<dom4j.version>1.6.1</dom4j.version>
<derby.version>10.5.3.0_1</derby.version>
15 years, 4 months
riftsaw SVN: r675 - in branches/ODE/ODE-1.x: agents and 94 other directories.
by riftsaw-commits@lists.jboss.org
Author: jeff.yuchang
Date: 2010-05-27 11:55:40 -0400 (Thu, 27 May 2010)
New Revision: 675
Added:
branches/ODE/ODE-1.x/axis2-war/src/test/TimeService-soapui-project.xml
branches/ODE/ODE-1.x/axis2-war/src/test/java/org/apache/ode/axis2/SelectorsTest.java
branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSelectors/
branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool2.bpel
branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool2.wsdl
branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool3.bpel
branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool3.wsdl
branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem.svg
branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem.wsdl
branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSelectors/deploy.xml
branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSelectors/testRequest.soap
branches/ODE/ODE-1.x/axis2-war/src/test/webapp/WEB-INF/conf/ode-axis2.properties
branches/ODE/ODE-1.x/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/o/
branches/ODE/ODE-1.x/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/
branches/ODE/ODE-1.x/bpel-compiler/src/test/java/org/apache/ode/bpel/elang/xpath20/compiler/
branches/ODE/ODE-1.x/bpel-compiler/src/test/java/org/apache/ode/bpel/elang/xpath20/compiler/XPath20ExpressionCompilerImplTest.java
branches/ODE/ODE-1.x/jbi/src/test/java/org/apache/ode/jbi/SpringPropertiesJbiTest.java
branches/ODE/ODE-1.x/jbi/src/test/resources/SpringPropertiesJbiTest/
branches/ODE/ODE-1.x/jbi/src/test/resources/SpringPropertiesJbiTest/OnEventCorrelation.bpel
branches/ODE/ODE-1.x/jbi/src/test/resources/SpringPropertiesJbiTest/OnEventCorrelation.wsdl
branches/ODE/ODE-1.x/jbi/src/test/resources/SpringPropertiesJbiTest/OnEventCorrelationArtifacts.wsdl
branches/ODE/ODE-1.x/jbi/src/test/resources/SpringPropertiesJbiTest/beans.xml
branches/ODE/ODE-1.x/jbi/src/test/resources/SpringPropertiesJbiTest/deploy.xml
branches/ODE/ODE-1.x/jbi/src/test/resources/SpringPropertiesJbiTest/smx.xml
branches/ODE/ODE-1.x/jbi/src/test/resources/SpringPropertiesJbiTest/test.properties
branches/ODE/ODE-1.x/scheduler-simple/src/test/resources/log4j.properties
branches/ODE/ODE-1.x/scheduler-simple/src/test/resources/simplesched-hsql.sql
branches/ODE/ODE-1.x/schema-updates/
branches/ODE/ODE-1.x/schema-updates/update01.sql
branches/ODE/ODE-1.x/schema-updates/update02.sql
Modified:
branches/ODE/ODE-1.x/KEYS
branches/ODE/ODE-1.x/Rakefile
branches/ODE/ODE-1.x/agents/pom.xml
branches/ODE/ODE-1.x/axis2-war/pom.xml
branches/ODE/ODE-1.x/axis2-war/src/main/assembly/bin.xml
branches/ODE/ODE-1.x/axis2-war/src/main/webapp/WEB-INF/classes/log4j.properties
branches/ODE/ODE-1.x/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/ProcessCronCleanupTest.java
branches/ODE/ODE-1.x/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/SystemCronCleanupTest.java
branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSoapHeader2/HelloWorld2.wsdl
branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSoapHeader2/deploy.xml
branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSoapHeader2/hello-process.bpel
branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSoapHeader2/hello-process.wsdl
branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSoapHeader2/hello.wsdl
branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSoapHeader2/hello.xsd
branches/ODE/ODE-1.x/axis2-war/src/test/resources/test-log4j.properties
branches/ODE/ODE-1.x/axis2/pom.xml
branches/ODE/ODE-1.x/bpel-api-jca/pom.xml
branches/ODE/ODE-1.x/bpel-api/pom.xml
branches/ODE/ODE-1.x/bpel-api/src/main/java/org/apache/ode/bpel/common/CorrelationKey.java
branches/ODE/ODE-1.x/bpel-api/src/main/java/org/apache/ode/bpel/common/CorrelationKeySet.java
branches/ODE/ODE-1.x/bpel-api/src/main/java/org/apache/ode/bpel/evt/ScopeCompletionEvent.java
branches/ODE/ODE-1.x/bpel-api/src/main/java/org/apache/ode/bpel/evt/VariableModificationEvent.java
branches/ODE/ODE-1.x/bpel-api/src/main/java/org/apache/ode/bpel/iapi/ClusterAware.java
branches/ODE/ODE-1.x/bpel-api/src/main/java/org/apache/ode/bpel/iapi/Endpoint.java
branches/ODE/ODE-1.x/bpel-api/src/main/java/org/apache/ode/bpel/iapi/ProcessConf.java
branches/ODE/ODE-1.x/bpel-api/src/main/java/org/apache/ode/bpel/iapi/Scheduler.java
branches/ODE/ODE-1.x/bpel-compiler/pom.xml
branches/ODE/ODE-1.x/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/BpelCompiler.java
branches/ODE/ODE-1.x/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/bom/InvokeActivity.java
branches/ODE/ODE-1.x/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/bom/Scope.java
branches/ODE/ODE-1.x/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/JaxpFunctionResolver.java
branches/ODE/ODE-1.x/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/OdeXPathFunctionLibrary.java
branches/ODE/ODE-1.x/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/SaxonContext.java
branches/ODE/ODE-1.x/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/XPath20ExpressionCompilerImpl.java
branches/ODE/ODE-1.x/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xquery10/compiler/XQuery10BpelFunctions.java
branches/ODE/ODE-1.x/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xquery10/compiler/XQuery10ExpressionCompilerImpl.java
branches/ODE/ODE-1.x/bpel-compiler/src/test/java/org/apache/ode/bpel/elang/xquery10/compiler/XQuery10ExpressionCompilerImplTest.java
branches/ODE/ODE-1.x/bpel-compiler/src/test/resources/log4j.properties
branches/ODE/ODE-1.x/bpel-connector/pom.xml
branches/ODE/ODE-1.x/bpel-dao/pom.xml
branches/ODE/ODE-1.x/bpel-dao/src/main/java/org/apache/ode/bpel/dao/DeferredProcessInstanceCleanable.java
branches/ODE/ODE-1.x/bpel-dao/src/main/java/org/apache/ode/bpel/dao/FilteredInstanceDeletable.java
branches/ODE/ODE-1.x/bpel-dao/src/main/java/org/apache/ode/bpel/dao/ScopeStateEnum.java
branches/ODE/ODE-1.x/bpel-epr/pom.xml
branches/ODE/ODE-1.x/bpel-epr/src/main/java/org/apache/ode/il/MockScheduler.java
branches/ODE/ODE-1.x/bpel-obj/pom.xml
branches/ODE/ODE-1.x/bpel-obj/src/main/java/org/apache/ode/bpel/o/OMessageVarType.java
branches/ODE/ODE-1.x/bpel-ql/pom.xml
branches/ODE/ODE-1.x/bpel-runtime/pom.xml
branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelEngineImpl.java
branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java
branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java
branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java
branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/DebuggerSupport.java
branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/Messages.java
branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeImpl.java
branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerLinkMyRoleImpl.java
branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerRoleMessageExchangeImpl.java
branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java
branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessCleanUpRunnable.java
branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessStatusConverter.java
branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/CronScheduler.java
branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/RuntimeDataCleanupRunnable.java
branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/SystemSchedulesConfig.java
branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/Replayer.java
branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/ReplayerScheduler.java
branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/extvar/jdbc/DbExternalVariable.java
branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/ProcessDaoImpl.java
branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java
branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/SCOPE.java
branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/WAIT.java
branches/ODE/ODE-1.x/bpel-runtime/src/test/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeImplTest.java
branches/ODE/ODE-1.x/bpel-runtime/src/test/java/org/apache/ode/bpel/engine/cron/CronSchedulerTest.java
branches/ODE/ODE-1.x/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java
branches/ODE/ODE-1.x/bpel-runtime/src/test/resources/log4j.properties
branches/ODE/ODE-1.x/bpel-runtime/src/test/resources/recovery/failure-to-fault2.bpel
branches/ODE/ODE-1.x/bpel-schemas/pom.xml
branches/ODE/ODE-1.x/bpel-schemas/src/main/xsd/pmapi.xsd
branches/ODE/ODE-1.x/bpel-scripts/pom.xml
branches/ODE/ODE-1.x/bpel-scripts/src/main/resources/2.0/good/circularReference/CircularReference.bpel
branches/ODE/ODE-1.x/bpel-scripts/src/main/resources/2.0/good/circularReference/CircularReference1.wsdl
branches/ODE/ODE-1.x/bpel-scripts/src/main/resources/2.0/good/circularReference/CircularReference2.wsdl
branches/ODE/ODE-1.x/bpel-store/pom.xml
branches/ODE/ODE-1.x/bpel-store/src/main/java/org/apache/ode/store/DeploymentUnitDir.java
branches/ODE/ODE-1.x/bpel-store/src/main/java/org/apache/ode/store/ProcessConfImpl.java
branches/ODE/ODE-1.x/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java
branches/ODE/ODE-1.x/bpel-store/src/main/java/org/apache/ode/store/jpa/DbConfStoreConnectionFactory.java
branches/ODE/ODE-1.x/bpel-store/src/test/resources/log4j.properties
branches/ODE/ODE-1.x/bpel-test/pom.xml
branches/ODE/ODE-1.x/bpel-test/src/main/java/org/apache/ode/test/BPELTestAbstract.java
branches/ODE/ODE-1.x/bpel-test/src/test/resources/bpel/2.0/TestWait1/Wait1-2.0.bpel
branches/ODE/ODE-1.x/bpel-test/src/test/resources/bpel/2.0/TestXQueryExpression/HelloXQueryWorld.xsl
branches/ODE/ODE-1.x/bpel-test/src/test/resources/log4j.properties
branches/ODE/ODE-1.x/dao-hibernate-db/build.xml
branches/ODE/ODE-1.x/dao-hibernate-db/pom.xml
branches/ODE/ODE-1.x/dao-hibernate-db/src/main/sql/simplesched-derby.sql
branches/ODE/ODE-1.x/dao-hibernate-db/src/main/sql/simplesched-firebird.sql
branches/ODE/ODE-1.x/dao-hibernate-db/src/main/sql/simplesched-hsql.sql
branches/ODE/ODE-1.x/dao-hibernate-db/src/main/sql/simplesched-mysql.sql
branches/ODE/ODE-1.x/dao-hibernate-db/src/main/sql/simplesched-oracle.sql
branches/ODE/ODE-1.x/dao-hibernate-db/src/main/sql/simplesched-postgres.sql
branches/ODE/ODE-1.x/dao-hibernate-db/src/main/sql/simplesched-sqlserver.sql
branches/ODE/ODE-1.x/dao-hibernate/pom.xml
branches/ODE/ODE-1.x/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/CriteriaBuilder.java
branches/ODE/ODE-1.x/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ProcessInstanceDaoImpl.java
branches/ODE/ODE-1.x/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ScopeDaoImpl.java
branches/ODE/ODE-1.x/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/XmlDataDaoImpl.java
branches/ODE/ODE-1.x/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HXmlData.java
branches/ODE/ODE-1.x/dao-hibernate/src/test/resources/log4j.properties
branches/ODE/ODE-1.x/dao-jpa-ojpa-derby/build.xml
branches/ODE/ODE-1.x/dao-jpa-ojpa-derby/pom.xml
branches/ODE/ODE-1.x/dao-jpa-ojpa-derby/src/main/scripts/simplesched-derby.sql
branches/ODE/ODE-1.x/dao-jpa-ojpa-derby/src/main/scripts/simplesched-mysql.sql
branches/ODE/ODE-1.x/dao-jpa-ojpa-derby/src/main/scripts/simplesched-oracle.sql
branches/ODE/ODE-1.x/dao-jpa/pom.xml
branches/ODE/ODE-1.x/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ScopeDAOImpl.java
branches/ODE/ODE-1.x/dependencies.rb
branches/ODE/ODE-1.x/distro/pom.xml
branches/ODE/ODE-1.x/distro/src/examples-jbi/maven2/ping-pong-osgi/pom.xml
branches/ODE/ODE-1.x/jacob-ap/pom.xml
branches/ODE/ODE-1.x/jacob/pom.xml
branches/ODE/ODE-1.x/jbi-bundle/pom.xml
branches/ODE/ODE-1.x/jbi-bundle/src/main/resources/META-INF/spring/ode-jbi.xml
branches/ODE/ODE-1.x/jbi-karaf/pom.xml
branches/ODE/ODE-1.x/jbi/pom.xml
branches/ODE/ODE-1.x/jbi/src/main/assembly/bin.xml
branches/ODE/ODE-1.x/jbi/src/test/java/org/apache/ode/jbi/JbiTestBase.java
branches/ODE/ODE-1.x/jbi/src/test/java/org/apache/ode/jbi/RetireJbiTest.java
branches/ODE/ODE-1.x/jbi/src/test/resources/ReplayerJbiTest/initiateRequest.xml
branches/ODE/ODE-1.x/jbi/src/test/resources/ReplayerJbiTest/replayRequest.xml
branches/ODE/ODE-1.x/jbi/src/test/resources/ReplayerJbiTest/replayXQueryRequest.xml
branches/ODE/ODE-1.x/jbi/src/test/resources/log4j.properties
branches/ODE/ODE-1.x/jbi/src/test/resources/test.wsdl
branches/ODE/ODE-1.x/jca-ra/pom.xml
branches/ODE/ODE-1.x/jca-server/pom.xml
branches/ODE/ODE-1.x/pom.xml
branches/ODE/ODE-1.x/repositories.rb
branches/ODE/ODE-1.x/scheduler-simple/pom.xml
branches/ODE/ODE-1.x/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/DatabaseDelegate.java
branches/ODE/ODE-1.x/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/JdbcDelegate.java
branches/ODE/ODE-1.x/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/Job.java
branches/ODE/ODE-1.x/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SimpleScheduler.java
branches/ODE/ODE-1.x/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/DelegateSupport.java
branches/ODE/ODE-1.x/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/GeronimoDelegateSupport.java
branches/ODE/ODE-1.x/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/JdbcDelegateTest.java
branches/ODE/ODE-1.x/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/RetriesTest.java
branches/ODE/ODE-1.x/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/SimpleSchedulerTest.java
branches/ODE/ODE-1.x/tools/pom.xml
branches/ODE/ODE-1.x/tools/src/main/java/org/apache/ode/tools/sendsoap/cline/HttpSoapSender.java
branches/ODE/ODE-1.x/utils/pom.xml
branches/ODE/ODE-1.x/utils/src/main/java/org/apache/ode/utils/CronExpression.java
branches/ODE/ODE-1.x/utils/src/main/java/org/apache/ode/utils/RelativeDateParser.java
branches/ODE/ODE-1.x/utils/src/test/resources/log4j.properties
Log:
* upgraded to ODE 1.3.4 branch.
Modified: branches/ODE/ODE-1.x/KEYS
===================================================================
--- branches/ODE/ODE-1.x/KEYS 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/KEYS 2010-05-27 15:55:40 UTC (rev 675)
@@ -153,3 +153,63 @@
AKCCyI4u+Rwi1Lk7rd9V1bUsQyyEFw==
=u9zQ
-----END PGP PUBLIC KEY BLOCK-----
+pub 4096R/3C966102 2010-05-26
+uid Tammo van Lessen (CODE SIGNING KEY) <vanto(a)apache.org>
+sig 3 3C966102 2010-05-26 Tammo van Lessen (CODE SIGNING KEY) <vanto(a)apache.org>
+sig 3 E42E0E4D 2010-05-26 Tammo van Lessen <tvanlessen(a)taval.de>
+sub 4096R/8400A608 2010-05-26
+sig 3C966102 2010-05-26 Tammo van Lessen (CODE SIGNING KEY) <vanto(a)apache.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.4.10 (MingW32)
+
+mQINBEv9r8oBEAC/OjGwUYyKgpQotSgt5DbEsEAk3agbH5bn2nVe7SwXuB1MHwcb
+kcSSRZcez9hM2NybrMpnYqJI4Q/pRzxSUSwGLFeSMwiUr2DpuN61tjDiA2UxM4x5
+CRPaGFt6PqeB1QJf+g1GPPfwPU/Eqn1Y4lLfvoTTjT6Hl+j0rGkNsY+3wDI7v870
+G7MX4bI+9doQRHbuxMa6AtEHv4vvFGnsPthJlydJoAuCA9kchSqKNXJxI+alczHK
+UgFXEyIBWflO6NW6LlsfA2KFqTcu1+MgwUAC3q8f9JeFUwQ5muh2sQrtBOlqrTSB
+wvx2VoSMFPkfIKFiLdx7eaKzE19BhNCn4W2IF/PpMCF3VCsf7dPOtJGB3z7DZbxc
+H+7G6RE3DOEofw3VefYDttl4JAlhElIEkC9UVOfedioQOTs8jvmiwSxS612CmO0H
+Bo+yxwjn0n0EGUFToKcTQu8lUO9evHGDwfsFm+ehj88F0s8ZhklY5JXEQcDTmya9
+JuoNcYEM/BGzgd3RvmA/XBwpBEr2qeDTJmWBtg1z0/L06LW3WqNXNNsLwk3AYpBu
+QPdJJ7WLm3mcgDYQPLQ7esGuUbbuoyTivtw7vRplmwW/Pz6jMOOVrnfHgLACYh29
+cFMOjCYWzpdAozCy8uMa3qR/elGtPCv2j1JYHTDvaBbF5/C/pttaiA8xEwARAQAB
+tDZUYW1tbyB2YW4gTGVzc2VuIChDT0RFIFNJR05JTkcgS0VZKSA8dmFudG9AYXBh
+Y2hlLm9yZz6JAjcEEwECACECGyMCHgECF4AFAkv+TPAFCwkIBwMFFQoJCAsFFgID
+AQAACgkQ2B8u2jyWYQIZtg/+PR+/NuROoArnsW9vE8nMcfRNS/gO3VIBD1BC1Jjf
+OyeHU7stmlrtGI2aIJ+WpTx3umlcaXHfzw2ijbsnvbAX6pkPqPdSidioumztg8QG
+tWCYeufEna/XIJQgiqsp2OPVr4vREEze5ZEsi7siv1r7yPlgBMV7Vujfb2RUQ2JW
+1ttnlPMdDjbbHKIim2/J7jOauP/a+6LB+HvvtEkXWj2BooOZMeUGe/4E0FxU9yaY
+SIJyw9xtxedqj2/ESwIp8P6ClownO3xcGtRhwd0OOgnExrerF1ch5MDn9eBx1QB1
+pZQUhBmj00avYz7iUA7qnXfNF0Hu/KxcashxWUhLyvb6/iAsLUOiLPOJj8Yp3z1J
+1SrFLa9AxjCIaJetYtBIj5suh0kxtN4W+6a76+xfcDuBJCvjzOZTM21J00uJQ7Me
+JvzWfy3kQcQMmIEsBC3duE052NcF5+R/OBktgbULRS+pSLqXFxCh1ENBcnZPlclI
+yDoce76WJdZvxOKvsO2/hnET6hO53IZjDluJiBrtoakaPvSDVoWZLZNa7eBfxK1B
+QzOANrXNPMvcboNsXZk5hPLwAJ3sB+qG6kVE0O6SmUG/88y4lmuHWUQGMvYehoV5
+R4eIqg2IHL41S2r/jjC9Gp6U2/67YynB6UkqaocP83Ci8Fw9zwbd16MkWbT/n7Fg
+rryIRgQTEQIABgUCS/2wjAAKCRDzgigi5C4OTSzrAJ9cGfs5+vrjtCkGOQh35MkC
+q7JGDACdEN8fA9Z4cl9xwDxmcdKztap42ea5Ag0ES/2vygEQAOCkQU40N45EzNH3
+SQ0Ze6WnNw0K4q11AMrKrkpQzGMEacxAg6V6CaL7rvCWcl9qZ/brKgMSBGU4sck2
+pzXF6rC45MOlzm8rz1THaq+P9KU4/7GiMM+1ntu4NPX9LKBANNDDtPhIdig11qJl
+N+U+nLULlv+wd1At93NssLdltOLyHRFujBbw2ZRLcJct8zkdmpmZbko1ZMKuT7VA
++59c049iZoVp8dZQaule98l6LGQjVd2qMC28SA4Cqwjp4mR+0bXb5gxFNlL3zQol
+qYoVRzoFH6vZvvksJa8REIghRb0JasHirFscI0/eiV4DvAlaM6KKI8HTTqd76CTo
+jNsYTYWap6h330jODwiXEGZJERuAJdY48PZOCeJavow8RxhzNIfRLCBUgpLNxn4f
+HQy92B7ym65GVo37GA45lXa8y1ov3g9eHhSsv+kLaKH+Hl22lvWMnFpPcxfkxBgD
+X61d8FV7ZRlpRErcGFCd+wUbfq41VEZpKRZ6fRWTQ0ooTXTQOaJv4t7amyqwED8o
+0puxZNZ5ATjTuaI6oMPVAMfhSdohqAOGiabSo4NCHfISWgg+8HmtrsD6vZlmZw2C
+W8TC0kgU6N8D7RlLyLCZg+Vbnl4qMCuTwn7iyO8dSUHWba+IecDJTh9NmBfln2fT
+y71W0tA0kuvory4G8TM8V+tFHxGLABEBAAGJAh8EGAECAAkFAkv9r8oCGwwACgkQ
+2B8u2jyWYQIJqRAAsnaiZAlI7MMoKP1MjMk7qWlkb0dFLO26/pdsaiLm+tmYt/Nm
+r+1+ROOpgZpedRVM9+ZIclwrKag7vZ6c13O5v4XssvO0rE9mnQdhW9Ts3EKO7/BN
+0gSFKPrA8JlRBRvTExCFZHLcNNmS7fyaZsiuPFPamggKThKEn6CJnUYABDopiKul
+rb089vPVzQMpYtwazaqjKh/33mSQ98BUwtb8t2gUEwCUTxmxNvgMf4GwqQp3ooVY
+Hp57v2x2lmpvooaWsm9UGO87N6ubmiJBP309Yp7XgdElXsUWeZGwPozqtKUg+jYn
+PIhshjQD+GVrWmoQ0HXzTSEPkFbmWnu2oJGTlu+AjnNKwXQQ5OB80gDDjcdQmEOI
+wPPfKkcvvg4IlGN/hTFE7OVvy3FQhD6Cy0E05wKyFX9ESpoG9uAeJ6u52LJbXcS2
+6mb9YZY8boGLWj6QabG/LDQVMlYOjM2zzYN015uOKmULvKVt3t8/016qberdMl/e
+C+kf3ivwBekplcprHBQbVK0t4JizVRFWkiPFElKh04HgP8jf3HVl/tgohf1vSVTV
+amb+vHQUM5Gzd5586gXBNs8qFBS4VvTdmCfniaDvo9ZfXJGjuLuBNhRQbP+1rNfU
+Us7l63zTphxRaa8+oRYRX+QMCBMc5v0GeHIVhvz6DwGlv3okFIRbJvx+goc=
+=DCAF
+-----END PGP PUBLIC KEY BLOCK-----
Modified: branches/ODE/ODE-1.x/Rakefile
===================================================================
--- branches/ODE/ODE-1.x/Rakefile 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/Rakefile 2010-05-27 15:55:40 UTC (rev 675)
@@ -26,7 +26,7 @@
require File.join(File.dirname(__FILE__), 'dependencies.rb')
# Keep this structure to allow the build system to update version numbers.
-VERSION_NUMBER = "1.3.4-SNAPSHOT"
+VERSION_NUMBER = "1.3.4"
BUNDLE_VERSIONS = {
"ode.version" => VERSION_NUMBER,
@@ -76,7 +76,7 @@
COMMONS.lang, COMMONS.logging, COMMONS.pool, DERBY, DERBY_TOOLS, JAXEN, JAVAX.activation, JAVAX.ejb, JAVAX.javamail,
JAVAX.connector, JAVAX.jms, JAVAX.persistence, JAVAX.transaction, JAVAX.stream, JIBX,
GERONIMO.connector, GERONIMO.kernel, GERONIMO.transaction, LOG4J, OPENJPA, SAXON, TRANQL,
- WOODSTOX, WSDL4J, WS_COMMONS, XALAN, XERCES, XMLBEANS,
+ WOODSTOX, WSDL4J, WS_COMMONS, XALAN, XERCES, XMLBEANS, SPRING,
AXIS2_MODULES.libs
package(:war).with(:libs=>libs).path("WEB-INF").tap do |web_inf|
@@ -103,8 +103,8 @@
end
end
- test.using :testng, :properties=>{ "log4j.debug" => true, "log4j.configuration"=>"test-log4j.properties", "test.ports" => ENV['TEST_PORTS'] }
- test.with projects("tools"), libs, AXIS2_TEST, AXIOM, JAVAX.servlet, Buildr::Jetty::REQUIRES, HIBERNATE, DOM4J
+ test.using :testng, :properties=>{ "log4j.debug" => true, "log4j.configuration"=>"test-log4j.properties", "test.ports" => ENV['TEST_PORTS'] }, :java_args=>['-Xmx1024M', '-XX:MaxPermSize=1024m']
+ test.with projects("tools"), libs, AXIS2_TEST, AXIOM, JAVAX.servlet, Buildr::Jetty::REQUIRES, HIBERNATE, DOM4J, SLF4J, LOG4J
webapp_dir = "#{test.compile.target}/webapp"
test.setup task(:prepare_webapp) do |task|
cp_r _("src/main/webapp"), test.compile.target.to_s
@@ -198,8 +198,10 @@
compile.from apt
compile.with projects("bpel-api", "bpel-compiler", "bpel-dao", "bpel-epr", "bpel-obj", "bpel-schemas",
"bpel-store", "jacob", "jacob-ap", "utils", "agents"),
- COMMONS.logging, COMMONS.collections, COMMONS.httpclient, JAXEN, JAVAX.persistence, JAVAX.stream, SAXON, WSDL4J, XMLBEANS
+ COMMONS.logging, COMMONS.collections, COMMONS.httpclient, JAXEN, JAVAX.persistence, JAVAX.stream, SAXON, WSDL4J, XMLBEANS,
+ SPRING
+
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,
@@ -234,7 +236,7 @@
define "bpel-store" do
compile.with projects("bpel-api", "bpel-compiler", "bpel-dao", "bpel-obj", "bpel-schemas", "bpel-epr",
"dao-hibernate", "dao-jpa", "utils"),
- COMMONS.logging, JAVAX.persistence, JAVAX.stream, JAVAX.transaction, HIBERNATE, HSQLDB, XMLBEANS, XERCES, WSDL4J, OPENJPA
+ COMMONS.logging, JAVAX.persistence, JAVAX.stream, JAVAX.transaction, HIBERNATE, HSQLDB, XMLBEANS, XERCES, WSDL4J, OPENJPA, SPRING
compile { open_jpa_enhance }
resources hibernate_doclet(:package=>"org.apache.ode.store.hib", :excludedtags=>"@version,@author,@todo")
@@ -246,14 +248,14 @@
desc "ODE BPEL Tests"
define "bpel-test" do
compile.with projects("bpel-api", "bpel-compiler", "bpel-dao", "bpel-runtime",
- "bpel-store", "utils", "bpel-epr", "dao-jpa", "agents"),
+ "bpel-store", "utils", "bpel-epr", "dao-hibernate", "agents"),
DERBY, JUnit.dependencies, JAVAX.persistence, OPENJPA, WSDL4J, COMMONS.httpclient,
COMMONS.codec
test.with projects("bpel-obj", "jacob", "bpel-schemas",
"bpel-scripts", "scheduler-simple"),
COMMONS.collections, COMMONS.lang, COMMONS.logging, DERBY, JAVAX.connector,
- JAVAX.stream, JAVAX.transaction, JAXEN, HSQLDB, LOG4J, SAXON, XERCES, XMLBEANS, XALAN, GERONIMO.transaction
+ JAVAX.stream, JAVAX.transaction, JAXEN, HSQLDB, LOG4J, SAXON, XERCES, XMLBEANS, XALAN, GERONIMO.transaction, SPRING, HIBERNATE, SLF4J, DOM4J
package :jar
end
Modified: branches/ODE/ODE-1.x/agents/pom.xml
===================================================================
--- branches/ODE/ODE-1.x/agents/pom.xml 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/agents/pom.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -28,6 +28,6 @@
<parent>
<groupId>org.apache.ode</groupId>
<artifactId>ode</artifactId>
- <version>1.3.4-SNAPSHOT</version>
+ <version>1.3.4</version>
</parent>
</project>
Modified: branches/ODE/ODE-1.x/axis2/pom.xml
===================================================================
--- branches/ODE/ODE-1.x/axis2/pom.xml 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/axis2/pom.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -26,11 +26,10 @@
<parent>
<groupId>org.apache.ode</groupId>
<artifactId>ode</artifactId>
- <version>1.3.4-SNAPSHOT</version>
+ <version>1.3.4</version>
</parent>
<properties>
- <rampart.version>1.4</rampart.version>
<servlet.version>2.4</servlet.version>
</properties>
Modified: branches/ODE/ODE-1.x/axis2-war/pom.xml
===================================================================
--- branches/ODE/ODE-1.x/axis2-war/pom.xml 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/axis2-war/pom.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -28,13 +28,11 @@
<parent>
<groupId>org.apache.ode</groupId>
<artifactId>ode</artifactId>
- <version>1.3.4-SNAPSHOT</version>
+ <version>1.3.4</version>
</parent>
<properties>
- <rampart.version>1.4</rampart.version>
<mex.version>1.41</mex.version>
- <axis2.version>1.4.1</axis2.version>
<jibx.version>1.1.5</jibx.version>
<tranql.version>1.1</tranql.version>
<opensaml.version>1.1</opensaml.version>
@@ -91,12 +89,11 @@
</dependency>
<dependency>
<groupId>org.apache.ode</groupId>
- <artifactId>ode-axis2</artifactId>
+ <artifactId>ode-bpel-ql</artifactId>
</dependency>
<dependency>
- <groupId>org.apache.axis2</groupId>
- <artifactId>axis2-corba</artifactId>
- <version>${axis2.version}</version>
+ <groupId>org.apache.ode</groupId>
+ <artifactId>ode-axis2</artifactId>
</dependency>
<dependency>
<groupId>org.apache.axis2</groupId>
@@ -176,6 +173,11 @@
<version>${geronimo-spec-jms.version}</version>
</dependency>
<dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-ejb_2.1_spec</artifactId>
+ <version>1.1</version>
+ </dependency>
+ <dependency>
<groupId>org.apache.geronimo.modules</groupId>
<artifactId>geronimo-kernel</artifactId>
</dependency>
@@ -183,6 +185,7 @@
<groupId>xml-apis</groupId>
<artifactId>xml-apis</artifactId>
</dependency>
+ <!--
<dependency>
<groupId>org.apache.rampart</groupId>
<artifactId>rampart</artifactId>
@@ -207,6 +210,7 @@
<type>mar</type>
<version>${mex.version}</version>
</dependency>
+ -->
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>mex</artifactId>
Modified: branches/ODE/ODE-1.x/axis2-war/src/main/assembly/bin.xml
===================================================================
--- branches/ODE/ODE-1.x/axis2-war/src/main/assembly/bin.xml 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/axis2-war/src/main/assembly/bin.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -80,13 +80,13 @@
<include>org.apache.ode:ode-agents</include>
<include>org.apache.ode:ode-bpel-obj</include>
<include>org.apache.ode:ode-dao-jpa</include>
+ <include>org.apache.ode:ode-bpel-ql</include>
<include>annogen:annogen</include>
<include>antlr:antlr</include>
<include>javax.activation:activation</include>
<include>org.apache.axis2:axis2-adb</include>
<include>org.apache.axis2:axis2-adb-codegen</include>
<include>org.apache.axis2:axis2-codegen</include>
- <include>org.apache.axis2:axis2-corba</include>
<include>org.apache.axis2:axis2-fastinfoset</include>
<include>org.apache.axis2:axis2-java2wsdl</include>
<include>org.apache.axis2:axis2-jaxbri</include>
@@ -111,6 +111,7 @@
<include>commons-lang:commons-lang</include>
<include>commons-pool:commons-pool</include>
<include>commons-io:commons-io</include>
+ <include>commons-beanutils:commons-beanutils</include>
<include>commons-httpclient:commons-httpclient</include>
<include>commons-logging:commons-logging</include>
<include>commons-fileupload:commons-fileupload</include>
@@ -167,6 +168,7 @@
<include>xml-apis:xml-apis</include>
<include>javax.mail:mail</include>
<include>axion:axion</include>
+ <include>org.springframework:spring</include>
</includes>
</dependencySet>
Modified: branches/ODE/ODE-1.x/axis2-war/src/main/webapp/WEB-INF/classes/log4j.properties
===================================================================
--- branches/ODE/ODE-1.x/axis2-war/src/main/webapp/WEB-INF/classes/log4j.properties 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/axis2-war/src/main/webapp/WEB-INF/classes/log4j.properties 2010-05-27 15:55:40 UTC (rev 675)
@@ -22,13 +22,13 @@
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=INFO
log4j.category.org.apache.ode.axis2.hooks.SessionInHandler=INFO
-log4j.category.org.apache.ode.bpel.engine=DEBUG
+log4j.category.org.apache.ode.bpel.engine=INFO
log4j.category.org.apache.ode.bpel.engine.cron=INFO
-log4j.category.org.apache.ode.daohib.bpel.CorrelatorDaoImpl=DEBUG
+log4j.category.org.apache.ode.daohib.bpel.CorrelatorDaoImpl=INFO
log4j.category.org.apache.ode.bpel.epr=INFO
-log4j.category.org.apache.ode.sql=DEBUG
+log4j.category.org.apache.ode.sql=INFO
# Console appender
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
Added: branches/ODE/ODE-1.x/axis2-war/src/test/TimeService-soapui-project.xml
===================================================================
--- branches/ODE/ODE-1.x/axis2-war/src/test/TimeService-soapui-project.xml (rev 0)
+++ branches/ODE/ODE-1.x/axis2-war/src/test/TimeService-soapui-project.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<con:soapui-project name="TimeService" resourceRoot="" soapui-version="3.5-beta1" xmlns:con="http://eviware.com/soapui/config"><con:settings/><con:interface xsi:type="con:WsdlInterface" wsaVersion="NONE" name="TimeServiceSoap" type="wsdl" bindingName="{http://ws.intalio.com/TimeService/}TimeServiceSoap" soapVersion="1_1" anonymous="optional" definition="file:/home/joker/mind/intalio/pxe/axis2-war/src/test/resources/TestCleanSuccess_All/TimeService.wsdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:settings/><con:definitionCache type="TEXT" rootPart="file:/home/joker/mind/intalio/pxe/axis2-war/src/test/resources/TestCleanSuccess_All/TimeService.wsdl"><con:part><con:url>file:/home/joker/mind/intalio/pxe/axis2-war/src/test/resources/TestCleanSuccess_All/TimeService.wsdl</con:url><con:content><![CDATA[<!--~ 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://ws.intalio.com/TimeService/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://ws.intalio.com/TimeService/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+ <wsdl:documentation>A sample Time service</wsdl:documentation>
+ <wsdl:types>
+ <s:schema elementFormDefault="qualified" targetNamespace="http://ws.intalio.com/TimeService/">
+ <s:element name="getUTCTime" type="s:string"/>
+ <s:element name="getUTCTimeResponse">
+ <s:complexType>
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="1" name="getUTCTimeResult" type="s:string"/>
+ </s:sequence>
+ </s:complexType>
+ </s:element>
+ <s:element name="getCityTime">
+ <s:complexType>
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="1" name="city" type="s:string"/>
+ </s:sequence>
+ </s:complexType>
+ </s:element>
+ <s:element name="getCityTimeResponse">
+ <s:complexType>
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="1" name="getCityTimeResult" type="s:string"/>
+ </s:sequence>
+ </s:complexType>
+ </s:element>
+ </s:schema>
+ </wsdl:types>
+ <wsdl:message name="getUTCTimeSoapIn">
+ <wsdl:part name="parameters" element="tns:getUTCTime"/>
+ </wsdl:message>
+ <wsdl:message name="getUTCTimeSoapOut">
+ <wsdl:part name="parameters" element="tns:getUTCTimeResponse"/>
+ </wsdl:message>
+ <wsdl:message name="getCityTimeSoapIn">
+ <wsdl:part name="parameters" element="tns:getCityTime"/>
+ </wsdl:message>
+ <wsdl:message name="getCityTimeSoapOut">
+ <wsdl:part name="parameters" element="tns:getCityTimeResponse"/>
+ </wsdl:message>
+ <wsdl:portType name="TimeServiceSoap">
+ <wsdl:operation name="getUTCTime">
+ <wsdl:input message="tns:getUTCTimeSoapIn"/>
+ <wsdl:output message="tns:getUTCTimeSoapOut"/>
+ </wsdl:operation>
+ <wsdl:operation name="getCityTime">
+ <wsdl:input message="tns:getCityTimeSoapIn"/>
+ <wsdl:output message="tns:getCityTimeSoapOut"/>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="TimeServiceSoap" type="tns:TimeServiceSoap">
+ <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
+ <wsdl:operation name="getUTCTime">
+ <soap:operation soapAction="http://ws.intalio.com/TimeService/getUTCTime" style="document"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="getCityTime">
+ <soap:operation soapAction="http://ws.intalio.com/TimeService/getCityTime" style="document"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="TimeService">
+ <wsdl:documentation>A sample Time service</wsdl:documentation>
+ <wsdl:port name="TimeServiceSoap" binding="tns:TimeServiceSoap">
+ <soap:address location="http://ws.intalio.com/TimeService/"/>
+ </wsdl:port>
+ </wsdl:service>
+</wsdl:definitions>]]></con:content><con:type>http://schemas.xmlsoap.org/wsdl/</con:type></con:part></con:definitionCache><con:endpoints><con:endpoint>http://ws.intalio.com/TimeService/</con:endpoint><con:endpoint>http://joker-laptop:8088/TimeService/</con:endpoint></con:endpoints><con:operation isOneWay="false" action="http://ws.intalio.com/TimeService/getCityTime" name="getCityTime" bindingOperationName="getCityTime" type="Request-Response" inputName="" receivesAttachments="false" sendsAttachments="false" anonymous="optional"><con:settings/><con:call name="Request 1"><con:settings/><con:encoding>UTF-8</con:encoding><con:endpoint>http://ws.intalio.com/TimeService/</con:endpoint><con:request><![CDATA[<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tim="http://ws.intalio.com/TimeService/">
+ <soapenv:Header/>
+ <soapenv:Body>
+ <tim:getCityTime>
+ <!--Optional:-->
+ <tim:city>?</tim:city>
+ </tim:getCityTime>
+ </soapenv:Body>
+</soapenv:Envelope>]]></con:request><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://ws.intalio.com/TimeService/getCityTime"/></con:call></con:operation><con:operation isOneWay="false" action="http://ws.intalio.com/TimeService/getUTCTime" name="getUTCTime" bindingOperationName="getUTCTime" type="Request-Response" inputName="" receivesAttachments="false" sendsAttachments="false" anonymous="optional"><con:settings/><con:call name="Request 1"><con:settings/><con:encoding>UTF-8</con:encoding><con:endpoint>http://ws.intalio.com/TimeService/</con:endpoint><con:request><![CDATA[<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tim="http://ws.intalio.com/TimeService/">
+ <soapenv:Header/>
+ <soapenv:Body>
+ <tim:getUTCTime>?</tim:getUTCTime>
+ </soapenv:Body>
+</soapenv:Envelope>]]></con:request><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://ws.intalio.com/TimeService/getUTCTime"/></con:call></con:operation></con:interface><con:mockService port="8088" path="/TimeService/" host="joker-laptop" name="TimeServiceSoap MockService" bindToHostOnly="false" docroot=""><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.mock.WsdlMockService@require-soap-action">false</con:setting></con:settings><con:mockOperation name="getCityTime" interface="TimeServiceSoap" operation="getCityTime"><con:settings/><con:dispatchStyle>SEQUENCE</con:dispatchStyle><con:defaultResponse>Response 1</con:defaultResponse><con:response name="Response 1" encoding="UTF-8"><con:settings/><con:responseContent><![CDATA[<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tim="http://ws.intalio.com/TimeService/">
+ <soapenv:Header/>
+ <soapenv:Body>
+ <tim:getCityTimeResponse>
+ <!--Optional:-->
+ <tim:getCityTimeResult>?</tim:getCityTimeResult>
+ </tim:getCityTimeResponse>
+ </soapenv:Body>
+</soapenv:Envelope>]]></con:responseContent><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://ws.intalio.com/TimeService/getCityTime"/></con:response><con:dispatchConfig/></con:mockOperation><con:mockOperation name="getUTCTime" interface="TimeServiceSoap" operation="getUTCTime"><con:settings/><con:dispatchStyle>SEQUENCE</con:dispatchStyle><con:defaultResponse>Response 1</con:defaultResponse><con:response name="Response 1" encoding="UTF-8"><con:settings/><con:responseContent><![CDATA[<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tim="http://ws.intalio.com/TimeService/">
+ <soapenv:Header/>
+ <soapenv:Body>
+ <tim:getUTCTimeResponse>
+ <!--Optional:-->
+ <tim:getUTCTimeResult>?</tim:getUTCTimeResult>
+ </tim:getUTCTimeResponse>
+ </soapenv:Body>
+</soapenv:Envelope>]]></con:responseContent><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://ws.intalio.com/TimeService/getUTCTime"/></con:response><con:dispatchConfig/></con:mockOperation><con:properties/></con:mockService><con:properties/><con:wssContainer/></con:soapui-project>
\ No newline at end of file
Added: branches/ODE/ODE-1.x/axis2-war/src/test/java/org/apache/ode/axis2/SelectorsTest.java
===================================================================
--- branches/ODE/ODE-1.x/axis2-war/src/test/java/org/apache/ode/axis2/SelectorsTest.java (rev 0)
+++ branches/ODE/ODE-1.x/axis2-war/src/test/java/org/apache/ode/axis2/SelectorsTest.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -0,0 +1,50 @@
+/*
+ * 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;
+
+import org.testng.annotations.Test;
+import static org.testng.AssertJUnit.assertTrue;
+
+/**
+ * Tests that timeouts set in the *.endpoint files are applied.
+ * The test is designed so a fault must be received.
+ *
+ * Actually, the process invokes a 3-sec long operation (see the process request).
+ * The specified timeouts are lesser than 3-sec, so if properly applied, a fault should be trown.
+ * If not applied, the default 120-sec timeouts will be used. 5sec < 120sec, so the request will succeed.
+ *
+ */
+public class SelectorsTest extends Axis2TestBase implements ODEConfigDirAware {
+ @Test(dataProvider="configs")
+ public void testNoP2P() throws Exception {
+ String bundleName = "TestSelectors";
+ if (server.isDeployed(bundleName)) server.undeployProcess(bundleName);
+ server.deployProcess(bundleName);
+ String response = server.sendRequestFile("http://localhost:8888/ode/processes/Project-Reproduce-Isolation-Problem/R...",
+ bundleName, "testRequest.soap");
+ System.out.println(response);
+ assertTrue(response.contains("_21Response"));
+ if (server.isDeployed(bundleName)) server.undeployProcess(bundleName);
+ }
+
+ public String getODEConfigDir() {
+ return HIB_DERBY_CONF_DIR;
+ }
+}
\ No newline at end of file
Modified: branches/ODE/ODE-1.x/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/ProcessCronCleanupTest.java
===================================================================
--- branches/ODE/ODE-1.x/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/ProcessCronCleanupTest.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/ProcessCronCleanupTest.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -1,3 +1,21 @@
+/*
+ * 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.instancecleanup;
import org.apache.ode.bpel.dao.ProcessDAO;
Modified: branches/ODE/ODE-1.x/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/SystemCronCleanupTest.java
===================================================================
--- branches/ODE/ODE-1.x/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/SystemCronCleanupTest.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/axis2-war/src/test/java/org/apache/ode/axis2/instancecleanup/SystemCronCleanupTest.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -1,3 +1,21 @@
+/*
+ * 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.instancecleanup;
import org.apache.commons.logging.LogFactory;
Added: branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool2.bpel
===================================================================
--- branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool2.bpel (rev 0)
+++ branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool2.bpel 2010-05-27 15:55:40 UTC (rev 675)
@@ -0,0 +1,102 @@
+<?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.
+ -->
+<bpel:process xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable" xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop" xmlns:pnlk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ode="http://www.apache.org/ode/type/extension" xmlns:Pool3="http://example.com/ReproduceIsolationProblem/Pool3" xmlns:this="http://example.com/ReproduceIsolationProblem/Pool2" xmlns:Pool="http://example.com/ReproduceIsolationProblem/Pool" xmlns:diag="http://example.com/ReproduceIsolationProblem" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:bpmn="http://www.intalio.com/bpms" xmlns:atomic="http://ode.apache.org/atomicScope" queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0" expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0" bpmn:label="Pool2" name="Pool2" bpmn:id="_bR-rAFOnEd-qUNL1xc5jrA" t!
argetNamespace="http://example.com/ReproduceIsolationProblem/Pool2">
+ <bpel:import namespace="http://example.com/ReproduceIsolationProblem" location="ReproduceIsolationProblem.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
+ <bpel:import namespace="http://example.com/ReproduceIsolationProblem/Pool2" location="ReproduceIsolationProblem-Pool2.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
+ <bpel:import namespace="http://example.com/ReproduceIsolationProblem/Pool3" location="ReproduceIsolationProblem-Pool3.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
+ <bpel:partnerLinks>
+ <bpel:partnerLink name="pool2AndPoolPlkVar" partnerLinkType="diag:Pool2AndPool" myRole="Pool2_for_Pool"/>
+ <bpel:partnerLink name="pool3AndPool2PlkVar" partnerLinkType="diag:Pool3AndPool2" initializePartnerRole="yes" partnerRole="Pool3_for_Pool2"/>
+ </bpel:partnerLinks>
+ <bpel:variables>
+ <bpel:variable name="this_21RequestMsg" messageType="this:_21Request"/>
+ <bpel:variable name="pool3_31RequestMsg" messageType="Pool3:_31Request"/>
+ <bpel:variable name="pool3_32RequestMsg" messageType="Pool3:_32Request"/>
+ <bpel:variable name="pool3_33RequestMsg" messageType="Pool3:_33Request"/>
+ <bpel:variable name="pool3_32ResponseMsg" messageType="Pool3:_32Response"/>
+ <bpel:variable name="pool3_33ResponseMsg" messageType="Pool3:_33Response"/>
+ <bpel:variable name="this_21ResponseMsg" messageType="this:_21Response"/>
+ </bpel:variables>
+ <bpel:sequence>
+ <bpel:receive partnerLink="pool2AndPoolPlkVar" portType="this:ForPool" operation="_21" variable="this_21RequestMsg" createInstance="yes" bpmn:label="21" name="_21" bpmn:id="_bzzlsFOnEd-qUNL1xc5jrA"></bpel:receive>
+ <bpel:assign name="init-variables-Pool2" bpmn:id="_bzzlsFOnEd-qUNL1xc5jrA">
+ <bpel:copy bpmn:label="$pool3_31RequestMsg">
+ <bpel:from>
+ <bpel:literal>
+<Pool3:_31Request></Pool3:_31Request></bpel:literal>
+ </bpel:from>
+ <bpel:to>$pool3_31RequestMsg.body</bpel:to>
+ </bpel:copy>
+ <bpel:copy bpmn:label="$pool3_32RequestMsg">
+ <bpel:from>
+ <bpel:literal>
+<Pool3:_32Request></Pool3:_32Request></bpel:literal>
+ </bpel:from>
+ <bpel:to>$pool3_32RequestMsg.body</bpel:to>
+ </bpel:copy>
+ <bpel:copy bpmn:label="$pool3_33RequestMsg">
+ <bpel:from>
+ <bpel:literal>
+<Pool3:_33Request></Pool3:_33Request></bpel:literal>
+ </bpel:from>
+ <bpel:to>$pool3_33RequestMsg.body</bpel:to>
+ </bpel:copy>
+ <bpel:copy bpmn:label="$this_21ResponseMsg">
+ <bpel:from>
+ <bpel:literal>
+<this:_21Response></this:_21Response></bpel:literal>
+ </bpel:from>
+ <bpel:to>$this_21ResponseMsg.body</bpel:to>
+ </bpel:copy>
+ </bpel:assign>
+ <bpel:assign bpmn:label="22" name="_22" bpmn:id="_lf1mIFOnEd-qUNL1xc5jrA">
+ <bpel:copy>
+ <bpel:from>$ode:pid</bpel:from>
+ <bpel:to>$pool3_31RequestMsg.body</bpel:to>
+ </bpel:copy>
+ </bpel:assign>
+ <bpel:invoke partnerLink="pool3AndPool2PlkVar" portType="Pool3:ForPool2" operation="_31" inputVariable="pool3_31RequestMsg" bpmn:label="22" name="_22-1" bpmn:id="_lf1mIFOnEd-qUNL1xc5jrA"></bpel:invoke>
+ <bpel:flow bpmn:label="Parallel_Gateway" name="Parallel_Gateway" bpmn:id="_iyPXcFOnEd-qUNL1xc5jrA">
+ <bpel:sequence>
+ <bpel:assign bpmn:label="23" name="_23" bpmn:id="_vhobMFOnEd-qUNL1xc5jrA">
+ <bpel:copy>
+ <bpel:from>$ode:pid</bpel:from>
+ <bpel:to>$pool3_32RequestMsg.body</bpel:to>
+ </bpel:copy>
+ </bpel:assign>
+ <bpel:invoke partnerLink="pool3AndPool2PlkVar" portType="Pool3:ForPool2" operation="_32" inputVariable="pool3_32RequestMsg" outputVariable="pool3_32ResponseMsg" bpmn:label="23" name="_23-1" bpmn:id="_vhobMFOnEd-qUNL1xc5jrA"></bpel:invoke>
+ </bpel:sequence>
+ <bpel:sequence>
+ <bpel:wait bpmn:label="wait 10 sec" name="wait_10_sec" bpmn:id="_wlu8gFOnEd-qUNL1xc5jrA">
+ <bpel:for>"PT1S"</bpel:for>
+ </bpel:wait>
+ <bpel:assign bpmn:label="34" name="_34" bpmn:id="_xAHLYFOnEd-qUNL1xc5jrA">
+ <bpel:copy>
+ <bpel:from>$ode:pid</bpel:from>
+ <bpel:to>$pool3_33RequestMsg.body</bpel:to>
+ </bpel:copy>
+ </bpel:assign>
+ <bpel:invoke partnerLink="pool3AndPool2PlkVar" portType="Pool3:ForPool2" operation="_33" inputVariable="pool3_33RequestMsg" outputVariable="pool3_33ResponseMsg" bpmn:label="34" name="_34-1" bpmn:id="_xAHLYFOnEd-qUNL1xc5jrA"></bpel:invoke>
+ </bpel:sequence>
+ </bpel:flow>
+ <bpel:invoke partnerLink="pool3AndPool2PlkVar" portType="Pool3:ForPool2" operation="_33" inputVariable="pool3_33RequestMsg" outputVariable="pool3_33ResponseMsg" bpmn:label="34" name="_34-1" bpmn:id="_xAHLYFOnEd-qUNL1xc5jrA"></bpel:invoke>
+ <bpel:reply partnerLink="pool2AndPoolPlkVar" portType="this:ForPool" operation="_21" variable="this_21ResponseMsg" bpmn:label="Task" name="Task" bpmn:id="_7W620FRaEd-y87rmjcz7YQ"></bpel:reply>
+ </bpel:sequence>
+</bpel:process>
Added: branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool2.wsdl
===================================================================
--- branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool2.wsdl (rev 0)
+++ branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool2.wsdl 2010-05-27 15:55:40 UTC (rev 675)
@@ -0,0 +1,56 @@
+<?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 xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:pnlk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable" xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop" xmlns:this="http://example.com/ReproduceIsolationProblem/Pool2" xmlns:Pool3="http://example.com/ReproduceIsolationProblem/Pool3" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Pool="http://example.com/ReproduceIsolationProblem/Pool" xmlns:diag="http://example.com/ReproduceIsolationProblem" xmlns:xml="http://www.w3.org/XML/1998/namespace" targetNamespace="http://example.com/ReproduceIsolationProblem/Pool2">
+ <wsdl:types>
+ <xs:schema elementFormDefault="qualified" targetNamespace="http://example.com/ReproduceIsolationProblem/Pool2">
+ <xs:element name="_21Request" type="xs:string"/>
+ <xs:element name="_21Response" type="xs:string"/>
+ </xs:schema>
+ </wsdl:types>
+ <wsdl:message name="_21Request">
+ <wsdl:part name="body" element="this:_21Request"/>
+ </wsdl:message>
+ <wsdl:message name="_21Response">
+ <wsdl:part name="body" element="this:_21Response"/>
+ </wsdl:message>
+ <wsdl:portType name="ForPool">
+ <wsdl:operation name="_21">
+ <wsdl:input message="this:_21Request" name="_21"/>
+ <wsdl:output message="this:_21Response" name="_21Response"/>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="CanonicBindingForPool" type="this:ForPool">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+ <wsdl:operation name="_21">
+ <soap:operation style="document" soapAction="http://example.com/ReproduceIsolationProblem/Pool2/ForPool/_21"/>
+ <wsdl:input name="_21">
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output name="_21Response">
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="CanonicServiceForPool">
+ <wsdl:port name="canonicPort" binding="this:CanonicBindingForPool">
+ <soap:address location="http://localhost:8080/ode/processes/Project-Reproduce-Isolation-Problem/R..."/>
+ </wsdl:port>
+ </wsdl:service>
+</wsdl:definitions>
Added: branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool3.bpel
===================================================================
--- branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool3.bpel (rev 0)
+++ branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool3.bpel 2010-05-27 15:55:40 UTC (rev 675)
@@ -0,0 +1,127 @@
+<?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.
+ -->
+<bpel:process xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable" xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop" xmlns:pnlk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ode="http://www.apache.org/ode/type/extension" xmlns:this="http://example.com/ReproduceIsolationProblem/Pool3" xmlns:Pool2="http://example.com/ReproduceIsolationProblem/Pool2" xmlns:diag="http://example.com/ReproduceIsolationProblem" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:bpmn="http://www.intalio.com/bpms" xmlns:atomic="http://ode.apache.org/atomicScope" queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0" expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0" bpmn:label="Pool3" name="Pool3" bpmn:id="_jihk4FOnEd-qUNL1xc5jrA" targetNamespace="http://example.com/ReproduceIsolationProblem/Po!
ol3">
+ <bpel:import namespace="http://example.com/ReproduceIsolationProblem" location="ReproduceIsolationProblem.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
+ <bpel:import namespace="http://example.com/ReproduceIsolationProblem/Pool3" location="ReproduceIsolationProblem-Pool3.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
+ <bpel:partnerLinks>
+ <bpel:partnerLink name="pool3AndPool2PlkVar" partnerLinkType="diag:Pool3AndPool2" myRole="Pool3_for_Pool2"/>
+ </bpel:partnerLinks>
+ <bpel:correlationSets>
+ <bpel:correlationSet name="newCorrelationSet" properties="this:prop"/>
+ </bpel:correlationSets>
+ <bpel:variables>
+ <bpel:variable name="this_31RequestMsg" messageType="this:_31Request"/>
+ </bpel:variables>
+ <bpel:sequence>
+ <bpel:receive partnerLink="pool3AndPool2PlkVar" portType="this:ForPool2" operation="_31" variable="this_31RequestMsg" createInstance="yes" bpmn:label="31" name="_31" bpmn:id="_k1rO0FOnEd-qUNL1xc5jrA">
+ <bpel:correlations>
+ <bpel:correlation set="newCorrelationSet" initiate="join"/>
+ </bpel:correlations>
+ </bpel:receive>
+ <bpel:scope bpmn:label="outer-SubProcess" name="outer-SubProcess" bpmn:id="_-IzjIFOrEd-qUNL1xc5jrA">
+ <bpel:forEach bpmn:label="SubProcess" name="SubProcess" bpmn:id="_-IzjIFOrEd-qUNL1xc5jrA" parallel="no" counterName="emptyCounter">
+ <bpel:startCounterValue>0</bpel:startCounterValue>
+ <bpel:finalCounterValue>2</bpel:finalCounterValue>
+ <completionCondition>
+ <bpel:branches>2</bpel:branches>
+ </completionCondition>
+ <bpel:scope bpmn:label="SubProcess" name="SubProcess-1" bpmn:id="_-IzjIFOrEd-qUNL1xc5jrA">
+ <bpel:variables>
+ <bpel:variable name="this_33RequestMsg" messageType="this:_33Request"/>
+ <bpel:variable name="this_32ResponseMsg" messageType="this:_32Response"/>
+ <bpel:variable name="this_32RequestMsg" messageType="this:_32Request"/>
+ <bpel:variable name="this_33ResponseMsg" messageType="this:_33Response"/>
+ </bpel:variables>
+ <bpel:sequence>
+ <bpel:assign name="init-variables-SubProcess" bpmn:id="_-IzjIFOrEd-qUNL1xc5jrA">
+ <bpel:copy bpmn:label="$this_32ResponseMsg">
+ <bpel:from>
+ <bpel:literal>
+<this:_32Response></this:_32Response></bpel:literal>
+ </bpel:from>
+ <bpel:to>$this_32ResponseMsg.body</bpel:to>
+ </bpel:copy>
+ <bpel:copy bpmn:label="$this_33ResponseMsg">
+ <bpel:from>
+ <bpel:literal>
+<this:_33Response></this:_33Response></bpel:literal>
+ </bpel:from>
+ <bpel:to>$this_33ResponseMsg.body</bpel:to>
+ </bpel:copy>
+ </bpel:assign>
+ <bpel:pick bpmn:label="Exclusive_Event-Based_Gateway" name="Exclusive_Event-Based_Gateway" bpmn:id="_rFdx4FOnEd-qUNL1xc5jrA">
+ <bpel:onMessage partnerLink="pool3AndPool2PlkVar" portType="this:ForPool2" operation="_32" variable="this_32RequestMsg" bpmn:label="32" name="_32" bpmn:id="_tDPGIFOnEd-qUNL1xc5jrA">
+ <bpel:correlations>
+ <bpel:correlation set="newCorrelationSet" initiate="join"/>
+ </bpel:correlations>
+ <bpel:sequence>
+ <bpel:assign name="init-variables-SubProcess" bpmn:id="_-IzjIFOrEd-qUNL1xc5jrA">
+ <bpel:copy bpmn:label="$this_32ResponseMsg">
+ <bpel:from>
+ <bpel:literal>
+<this:_32Response></this:_32Response></bpel:literal>
+ </bpel:from>
+ <bpel:to>$this_32ResponseMsg.body</bpel:to>
+ </bpel:copy>
+ <bpel:copy bpmn:label="$this_33ResponseMsg">
+ <bpel:from>
+ <bpel:literal>
+<this:_33Response></this:_33Response></bpel:literal>
+ </bpel:from>
+ <bpel:to>$this_33ResponseMsg.body</bpel:to>
+ </bpel:copy>
+ </bpel:assign>
+ <bpel:wait bpmn:label="wait 30 seconds" name="wait_30_seconds" bpmn:id="_0iKV0FOnEd-qUNL1xc5jrA">
+ <bpel:for>"PT3S"</bpel:for>
+ </bpel:wait>
+ <bpel:reply partnerLink="pool3AndPool2PlkVar" portType="this:ForPool2" operation="_32" variable="this_32ResponseMsg" bpmn:label="34" name="_34" bpmn:id="_2OMZ0FOnEd-qUNL1xc5jrA"></bpel:reply>
+ </bpel:sequence>
+ </bpel:onMessage>
+ <bpel:onMessage partnerLink="pool3AndPool2PlkVar" portType="this:ForPool2" operation="_33" variable="this_33RequestMsg" bpmn:label="33" name="_33" bpmn:id="_uhaUUFOnEd-qUNL1xc5jrA">
+ <bpel:correlations>
+ <bpel:correlation set="newCorrelationSet" initiate="join"/>
+ </bpel:correlations>
+ <bpel:sequence>
+ <bpel:assign name="init-variables-SubProcess" bpmn:id="_-IzjIFOrEd-qUNL1xc5jrA">
+ <bpel:copy bpmn:label="$this_32ResponseMsg">
+ <bpel:from>
+ <bpel:literal>
+<this:_32Response></this:_32Response></bpel:literal>
+ </bpel:from>
+ <bpel:to>$this_32ResponseMsg.body</bpel:to>
+ </bpel:copy>
+ <bpel:copy bpmn:label="$this_33ResponseMsg">
+ <bpel:from>
+ <bpel:literal>
+<this:_33Response></this:_33Response></bpel:literal>
+ </bpel:from>
+ <bpel:to>$this_33ResponseMsg.body</bpel:to>
+ </bpel:copy>
+ </bpel:assign>
+ <bpel:reply partnerLink="pool3AndPool2PlkVar" portType="this:ForPool2" operation="_33" variable="this_33ResponseMsg" bpmn:label="33 reply" name="_33_reply" bpmn:id="_xW4AYFO5Ed-_Q-SZnn1pGA"></bpel:reply>
+ </bpel:sequence>
+ </bpel:onMessage>
+ </bpel:pick>
+ </bpel:sequence>
+ </bpel:scope>
+ </bpel:forEach>
+ </bpel:scope>
+ </bpel:sequence>
+</bpel:process>
Added: branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool3.wsdl
===================================================================
--- branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool3.wsdl (rev 0)
+++ branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem-Pool3.wsdl 2010-05-27 15:55:40 UTC (rev 675)
@@ -0,0 +1,100 @@
+<?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 xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:pnlk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable" xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop" xmlns:this="http://example.com/ReproduceIsolationProblem/Pool3" xmlns:Pool2="http://example.com/ReproduceIsolationProblem/Pool2" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:diag="http://example.com/ReproduceIsolationProblem" xmlns:xml="http://www.w3.org/XML/1998/namespace" targetNamespace="http://example.com/ReproduceIsolationProblem/Pool3">
+ <wsdl:types>
+ <xs:schema elementFormDefault="qualified" targetNamespace="http://example.com/ReproduceIsolationProblem/Pool3">
+ <xs:element name="_31Request" type="xs:string"/>
+ <xs:element name="_32Request" type="xs:string"/>
+ <xs:element name="_32Response" type="xs:string"/>
+ <xs:element name="_33Request" type="xs:string"/>
+ <xs:element name="_33Response" type="xs:string"/>
+ </xs:schema>
+ </wsdl:types>
+ <wsdl:message name="_31Request">
+ <wsdl:part name="body" element="this:_31Request"/>
+ </wsdl:message>
+ <wsdl:message name="_32Request">
+ <wsdl:part name="body" element="this:_32Request"/>
+ </wsdl:message>
+ <wsdl:message name="_32Response">
+ <wsdl:part name="body" element="this:_32Response"/>
+ </wsdl:message>
+ <wsdl:message name="_33Request">
+ <wsdl:part name="body" element="this:_33Request"/>
+ </wsdl:message>
+ <wsdl:message name="_33Response">
+ <wsdl:part name="body" element="this:_33Response"/>
+ </wsdl:message>
+ <wsdl:portType name="ForPool2">
+ <wsdl:operation name="_31">
+ <wsdl:input message="this:_31Request" name="_31"/>
+ </wsdl:operation>
+ <wsdl:operation name="_32">
+ <wsdl:input message="this:_32Request" name="_32"/>
+ <wsdl:output message="this:_32Response" name="_32Response"/>
+ </wsdl:operation>
+ <wsdl:operation name="_33">
+ <wsdl:input message="this:_33Request" name="_33"/>
+ <wsdl:output message="this:_33Response" name="_33Response"/>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="CanonicBindingForPool2" type="this:ForPool2">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+ <wsdl:operation name="_31">
+ <soap:operation style="document" soapAction="http://example.com/ReproduceIsolationProblem/Pool3/ForPool2/_31"/>
+ <wsdl:input name="_31">
+ <soap:body use="literal"/>
+ </wsdl:input>
+ </wsdl:operation>
+ <wsdl:operation name="_32">
+ <soap:operation style="document" soapAction="http://example.com/ReproduceIsolationProblem/Pool3/ForPool2/_32"/>
+ <wsdl:input name="_32">
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output name="_32Response">
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="_33">
+ <soap:operation style="document" soapAction="http://example.com/ReproduceIsolationProblem/Pool3/ForPool2/_33"/>
+ <wsdl:input name="_33">
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output name="_33Response">
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="CanonicServiceForPool2">
+ <wsdl:port name="canonicPort" binding="this:CanonicBindingForPool2">
+ <soap:address location="http://localhost:8080/ode/processes/Project-Reproduce-Isolation-Problem/R..."/>
+ </wsdl:port>
+ </wsdl:service>
+ <vprop:property name="prop" type="xs:string"/>
+ <vprop:propertyAlias propertyName="this:prop" messageType="this:_31Request" part="body">
+ <vprop:query>text()</vprop:query>
+ </vprop:propertyAlias>
+ <vprop:propertyAlias propertyName="this:prop" messageType="this:_33Request" part="body">
+ <vprop:query>text()</vprop:query>
+ </vprop:propertyAlias>
+ <vprop:propertyAlias propertyName="this:prop" messageType="this:_32Request" part="body">
+ <vprop:query>text()</vprop:query>
+ </vprop:propertyAlias>
+</wsdl:definitions>
Added: branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem.svg
===================================================================
--- branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem.svg (rev 0)
+++ branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem.svg 2010-05-27 15:55:40 UTC (rev 675)
@@ -0,0 +1,739 @@
+<?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.
+ -->
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-dasharray="none" shape-rendering="auto" font-family="'Dialog'" width="1549" text-rendering="auto" fill-opacity="1" contentScriptType="text/ecmascript" color-interpolation="auto" color-rendering="auto" preserveAspectRatio="xMidYMid meet" font-size="12" viewBox="0 0 1549 814" fill="black" stroke="black" image-rendering="auto" stroke-miterlimit="10" zoomAndPan="magnify" version="1.0" stroke-linecap="square" stroke-linejoin="miter" contentStyleType="text/css" font-style="normal" height="814" stroke-width="1" stroke-dashoffset="0" font-weight="normal" stroke-opacity="1" xmlns:bpmn="http://www.intalio.com/bpms">
+<!--Generated by the Batik Graphics2D SVG Generator-->
+<defs id="genericDefs"/>
+<g>
+<defs id="defs1">
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath1">
+<path d="M38 38 L1540 38 L1540 240 L38 240 L38 38 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath2">
+<path d="M44 123 L66 123 L66 154 L44 154 L44 123 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3">
+<path d="M125 114 L238 114 L238 177 L125 177 L125 114 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4">
+<path d="M166 135 L193 135 L193 151 L166 151 L166 135 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath5">
+<path d="M64 39 L1539 39 L1539 239 L64 239 L64 39 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath6">
+<path d="M38 272 L1540 272 L1540 543 L38 543 L38 272 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath7">
+<path d="M44 388 L66 388 L66 426 L44 426 L44 388 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath8">
+<path d="M108 319 L221 319 L221 382 L108 382 L108 319 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath9">
+<path d="M154 340 L170 340 L170 356 L154 356 L154 340 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath10">
+<path d="M411 319 L467 319 L467 375 L411 375 L411 319 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath11">
+<path d="M411 319 L463 319 L463 371 L411 371 L411 319 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath12">
+<path d="M259 319 L372 319 L372 382 L259 382 L259 319 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath13">
+<path d="M305 340 L321 340 L321 356 L305 356 L305 340 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath14">
+<path d="M651 302 L764 302 L764 365 L651 365 L651 302 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath15">
+<path d="M697 323 L713 323 L713 339 L697 339 L697 323 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath16">
+<path d="M459 425 L495 425 L495 461 L459 461 L459 425 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath17">
+<path d="M459 425 L491 425 L491 457 L459 457 L459 425 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath18">
+<path d="M446 463 L509 463 L509 479 L446 479 L446 463 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath19">
+<path d="M576 411 L689 411 L689 474 L576 474 L576 411 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath20">
+<path d="M622 432 L638 432 L638 448 L622 448 L622 432 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath21">
+<path d="M902 315 L1015 315 L1015 378 L902 378 L902 315 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath22">
+<path d="M943 336 L970 336 L970 352 L943 352 L943 336 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath23">
+<path d="M64 273 L1539 273 L1539 542 L64 542 L64 273 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath24">
+<path d="M38 557 L1540 557 L1540 805 L38 805 L38 557 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath25">
+<path d="M44 662 L66 662 L66 700 L44 700 L44 662 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath26">
+<path d="M245 610 L358 610 L358 673 L245 673 L245 610 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath27">
+<path d="M291 631 L307 631 L307 647 L291 647 L291 631 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath28">
+<path d="M437 575 L1010 575 L1010 799 L437 799 L437 575 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath29">
+<path d="M586 580 L699 580 L699 643 L586 643 L586 580 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath30">
+<path d="M632 601 L648 601 L648 617 L632 617 L632 601 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath31">
+<path d="M888 580 L1001 580 L1001 643 L888 643 L888 580 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath32">
+<path d="M934 601 L950 601 L950 617 L934 617 L934 601 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath33">
+<path d="M442 643 L498 643 L498 699 L442 699 L442 643 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath34">
+<path d="M442 643 L494 643 L494 695 L442 695 L442 643 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath35">
+<path d="M795 594 L831 594 L831 630 L795 630 L795 594 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath36">
+<path d="M795 594 L827 594 L827 626 L795 626 L795 594 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath37">
+<path d="M768 632 L858 632 L858 648 L768 648 L768 632 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath38">
+<path d="M705 692 L818 692 L818 755 L705 755 L705 692 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath39">
+<path d="M751 713 L767 713 L767 729 L751 729 L751 713 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath40">
+<path d="M859 692 L972 692 L972 755 L859 755 L859 692 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath41">
+<path d="M890 713 L936 713 L936 729 L890 729 L890 713 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath42">
+<path d="M64 558 L1539 558 L1539 804 L64 804 L64 558 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath43">
+<path d="M-1 -1 L1550 -1 L1550 815 L-1 815 L-1 -1 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath44">
+<path d="M895 331 L905 331 L905 340 L895 340 L895 331 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath45">
+<path d="M644 327 L654 327 L654 336 L644 336 L644 327 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath46">
+<path d="M404 341 L414 341 L414 350 L404 350 L404 341 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath47">
+<path d="M252 344 L262 344 L262 353 L252 353 L252 344 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath48">
+<path d="M569 436 L579 436 L579 445 L569 445 L569 436 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath49">
+<path d="M895 350 L905 350 L905 359 L895 359 L895 350 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath50">
+<path d="M452 437 L462 437 L462 446 L452 446 L452 437 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath51">
+<path d="M579 605 L589 605 L589 614 L579 614 L579 605 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath52">
+<path d="M788 605 L798 605 L798 614 L788 614 L788 605 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath53">
+<path d="M430 676 L440 676 L440 685 L430 685 L430 676 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath54">
+<path d="M698 717 L708 717 L708 726 L698 726 L698 717 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath55">
+<path d="M852 717 L862 717 L862 726 L852 726 L852 717 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath56">
+<path d="M881 605 L891 605 L891 614 L881 614 L881 605 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath57">
+<path d="M156 167 L166 167 L166 177 L156 177 L156 167 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath58">
+<path d="M156 313 L167 313 L167 322 L156 322 L156 313 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath59">
+<path d="M308 372 L318 372 L318 382 L308 382 L308 372 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath60">
+<path d="M294 604 L305 604 L305 613 L294 613 L294 604 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath61">
+<path d="M682 355 L692 355 L692 365 L682 365 L682 355 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath62">
+<path d="M635 574 L646 574 L646 583 L635 583 L635 574 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath63">
+<path d="M607 464 L617 464 L617 474 L607 474 L607 464 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath64">
+<path d="M754 686 L765 686 L765 695 L754 695 L754 686 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath65">
+<path d="M937 576 L947 576 L947 586 L937 586 L937 576 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath66">
+<path d="M717 359 L728 359 L728 368 L717 368 L717 359 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath67">
+<path d="M908 688 L918 688 L918 698 L908 698 L908 688 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath68">
+<path d="M642 468 L653 468 L653 477 L642 477 L642 468 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath69">
+<path d="M951 311 L961 311 L961 321 L951 321 L951 311 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath70">
+<path d="M191 171 L202 171 L202 180 L191 180 L191 171 Z"/>
+</clipPath>
+</defs>
+<g font-size="16" fill="rgb(139,139,153)" font-family="'Arial'" stroke-linejoin="round" stroke="rgb(139,139,153)" stroke-miterlimit="0">
+<rect x="39" y="39" clip-path="url(#clipPath1)" width="26" height="200" stroke="none" bpmn:process-id="_ao2OcFOnEd-qUNL1xc5jrA" bpmn:process-name="Pool"/>
+<rect x="65" y="39" clip-path="url(#clipPath1)" fill="rgb(232,232,255)" width="1474" height="200" stroke="none"/>
+<rect x="39" y="39" clip-path="url(#clipPath1)" fill="none" width="1500" height="200" stroke="black" bpmn:process-id="_ao2OcFOnEd-qUNL1xc5jrA" bpmn:process-name="Pool"/>
+<image stroke="black" width="14" xlink:show="embed" xlink:type="simple" fill="black" clip-path="url(#clipPath2)" preserveAspectRatio="none" height="25" x="45" y="124" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAZCAYAAAABmx/yAAABmklEQVR42mPs7p75
nwEKnv9hwAskWRBsFmSJuX0b8GqsKQvArrEs9CMDsQBFI5tiPJgGuf3Oj/8MV1//
YWBiZGDQEGZhUOVkxK0RBo4//cGwe95KBvX/N4A8RoZl/1UYnBMjGGzluPBrPLBm
OUOe908GQZ0kMP/D1X0M0zesYLDNS4KrYcLqga83GQSNUoBuVwVjAcNkhv9fb6Mo
waqRE+jJK58YGX4D2SB85RMTA8fff4T9GGijzLBw4iIGVl1HMP/X5f0M8bZKhDUq
2EUxlIovY3h1ZQaYLxaizMClEUNY439GboanCikMV7m/QaODi0GVkZGBcTQ6yIwO
UAKXJTU6PgFds+HmN4YXTz8xyCvGMPgGMzNwgeOAFRy6ODWu3HGF4e+xuQxO4r8Z
TuznYFjnmskQ46BMOD/eOraCoSXbl4FdwoRB/eFRhvbFKxgYHKqxakQN1Z+vGdgl
gQHCyMfAK+/K8PvTY5wlAJbogPqFkQUaVEQUHSBw8uM/nHxzfibsGqVB6bSzAyff
vK0Ku8a86ig0+61xOhUA6Higf32xHwgAAAAASUVORK5CYII=" xlink:actuate="onLoad"/>
+<rect x="129" y="118" clip-path="url(#clipPath3)" fill="black" width="107" rx="3.5" opacity="0.2745" ry="3.5" height="57" stroke="none"/>
+<rect x="126" y="115" clip-path="url(#clipPath3)" fill="white" width="107" rx="4.5" ry="4.5" height="57" stroke="none"/>
+<rect x="126" y="115" clip-path="url(#clipPath3)" fill="none" width="106" rx="4" ry="4" height="56" stroke="black"/>
+<text x="167" y="151" clip-path="url(#clipPath4)" fill="black" stroke="none" xml:space="preserve">Task</text>
+<line clip-path="url(#clipPath5)" fill="none" x1="65" x2="65" y1="40" y2="237" stroke="rgb(169,169,169)"/>
+<rect x="39" y="39" clip-path="url(#clipPath1)" fill="none" width="1500" height="200" stroke="rgb(169,169,169)" bpmn:process-id="_ao2OcFOnEd-qUNL1xc5jrA" bpmn:process-name="Pool"/>
+<rect x="39" y="273" clip-path="url(#clipPath6)" fill="rgb(232,232,255)" width="1500" height="269" stroke="none" bpmn:process-id="_bR-rAFOnEd-qUNL1xc5jrA" bpmn:process-name="Pool2"/>
+<rect x="39" y="273" clip-path="url(#clipPath6)" fill="none" width="1500" height="269" stroke="black" bpmn:process-id="_bR-rAFOnEd-qUNL1xc5jrA" bpmn:process-name="Pool2"/>
+<image stroke="black" width="14" xlink:show="embed" xlink:type="simple" fill="black" clip-path="url(#clipPath7)" preserveAspectRatio="none" height="32" x="45" y="389" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAgCAYAAAAi7kmXAAACfElEQVR42u2UbUhT
YRTH//e6xcrSOTSSGYWURRBJbWorBjp7h2AtIlhYS9fLtK3g4getMEFWw/qiZvPD
iKVFRPZB2m5RYtgiMCsYFFEj+hBuvQ1Gsjnn1t11W1vubtbnDhy45zz39zzPeXkO
4XZHIohJmNGXfuBbEKhcAhSQSMjdr2Goin47kpaAa2NeHJadgFG6A4ozNN75E3ui
UapI/jUVNFMNeHjuCx7RCrRManDweC/c07HFwAg3SPocEO+7DX5pM/b3PsfJiBEa
ow1TmCspYD5j3vcQYA/hr0BDzz2U2o/AcOdDZtBUvxlnt9dh6PGn2cU8CS73mxDs
UMwBcyiqrS1uiCXbUCcZRdnyQvCEq1gfT7QBe/YuRe3UMxTXUgmQl7zLm5AIKDcz
X0w2g3EvARSqIWhXppyYAqqrW5FJXjk60oOOKxOYr6SAiyotiQ5y+CKgXQGQTPoU
KwWQ5xPcYFysTh86DxlQExlmY2wMb8Vpaze0G4WZwW7qFOjzP1Gy6wZrf37QBWVL
E7R0f/o6JuT7MEpUt5i7y1kVKwcQ+THK3QCJDmKCtLsJBKItyqjdQ2Lx9Ez2GC9q
ZdDsrIdgdxNr+209sGirsoNS5lU8LdPhvV3F2qs7ZRDW9GUHw6QITulN0CJvrBwF
kDMf5P9y/GM5onOt/G/L4QkBrSNe!
vHV6sKnCjHYTH0I2mIWzD5oL1F+yIWRRw7Am
AGtXHpqpQfTptmR/j08seriGLiB37QFUv7Cg4pge0I2nBVOzOulC7jomIeQyFEkp
+N2vOScAyekiFsRmwTxGR1QGJmY4bXVxTnpwPaPXZVWctvrjWHqQHr/6x/lHOa/6
C8vB6emtha8jAAAAAElFTkSuQmCC" xlink:actuate="onLoad"/>
+<rect x="112" y="323" clip-path="url(#clipPath8)" fill="black" width="107" rx="3.5" opacity="0.2745" ry="3.5" height="57" stroke="none"/>
+<rect x="109" y="320" clip-path="url(#clipPath8)" fill="white" width="107" rx="4.5" ry="4.5" height="57" stroke="none" bpmn:process-id="_bR-rAFOnEd-qUNL1xc5jrA" bpmn:activity-id="_bzzlsFOnEd-qUNL1xc5jrA" bpmn:activity-label="21"/>
+<rect x="109" y="320" clip-path="url(#clipPath8)" fill="none" width="106" rx="4" ry="4" height="56" stroke="black" bpmn:process-id="_bR-rAFOnEd-qUNL1xc5jrA" bpmn:activity-id="_bzzlsFOnEd-qUNL1xc5jrA" bpmn:activity-label="21"/>
+<text x="155" y="356" clip-path="url(#clipPath9)" fill="black" stroke="none" xml:space="preserve">21</text>
+<polygon fill="black" clip-path="url(#clipPath10)" opacity="0.2745" points=" 440 322 465 347 440 372 415 347" stroke="none"/>
+<polygon fill="white" stroke-width="2" clip-path="url(#clipPath11)" points=" 437 321 461 345 437 369 413 345" stroke="none"/>
+<polygon fill="none" stroke-width="2" clip-path="url(#clipPath11)" points=" 437 321 461 345 437 369 413 345" stroke="rgb(64,64,64)"/>
+<line clip-path="url(#clipPath11)" fill="none" x1="437" x2="437" y1="336" y2="354" stroke="rgb(64,64,64)" stroke-width="8"/>
+<line clip-path="url(#clipPath11)" fill="none" x1="428" x2="446" y1="345" y2="345" stroke="rgb(64,64,64)" stroke-width="8"/>
+<rect x="263" y="323" clip-path="url(#clipPath12)" fill="black" width="107" rx="3.5" opacity="0.2745" ry="3.5" height="57" stroke="none"/>
+<rect x="260" y="320" clip-path="url(#clipPath12)" fill="white" width="107" rx="4.5" ry="4.5" height="57" stroke="none" bpmn:process-id="_bR-rAFOnEd-qUNL1xc5jrA" bpmn:activity-id="_lf1mIFOnEd-qUNL1xc5jrA" bpmn:activity-label="22"/>
+<rect x="260" y="320" clip-path="url(#clipPath12)" fill="none" width="106" rx="4" ry="4" height="56" stroke="black" bpmn:process-id="_bR-rAFOnEd-qUNL1xc5jrA" bpmn:activity-id="_lf1mIFOnEd-qUNL1xc5jrA" bpmn:activity-label="22"/>
+<text x="306" y="356" clip-path="url(#clipPath13)" fill="black" stroke="none" xml:space="preserve">22</text>
+<rect x="655" y="306" clip-path="url(#clipPath14)" fill="black" width="107" rx="3.5" opacity="0.2745" ry="3.5" height="57" stroke="none"/>
+<rect x="652" y="303" clip-path="url(#clipPath14)" fill="white" width="107" rx="4.5" ry="4.5" height="57" stroke="none" bpmn:process-id="_bR-rAFOnEd-qUNL1xc5jrA" bpmn:activity-id="_vhobMFOnEd-qUNL1xc5jrA" bpmn:activity-label="23"/>
+<rect x="652" y="303" clip-path="url(#clipPath14)" fill="none" width="106" rx="4" ry="4" height="56" stroke="black" bpmn:process-id="_bR-rAFOnEd-qUNL1xc5jrA" bpmn:activity-id="_vhobMFOnEd-qUNL1xc5jrA" bpmn:activity-label="23"/>
+<text x="698" y="339" clip-path="url(#clipPath15)" fill="black" stroke="none" xml:space="preserve">23</text>
+<circle clip-path="url(#clipPath16)" fill="black" r="14.5" cx="476.5" opacity="0.2745" cy="442.5" stroke="none"/>
+<circle clip-path="url(#clipPath17)" fill="white" r="14.5" cx="474.5" cy="440.5" stroke="none"/>
+<circle clip-path="url(#clipPath17)" fill="none" r="11.5" cx="474.5" cy="440.5" stroke="black"/>
+<circle clip-path="url(#clipPath17)" fill="none" r="14.5" cx="474.5" cy="440.5" stroke="black"/>
+<circle clip-path="url(#clipPath17)" fill="none" r="7.5" cx="474.5" cy="440.5" stroke="black"/>
+<line clip-path="url(#clipPath17)" fill="none" x1="480" x2="481" y1="441" y2="441" stroke="black"/>
+<line clip-path="url(#clipPath17)" fill="none" x1="479" x2="480" y1="443" y2="444" stroke="black"/>
+<line clip-path="url(#clipPath17)" fill="none" x1="477" x2="478" y1="445" y2="446" stroke="black"/>
+<line clip-path="url(#clipPath17)" fill="none" x1="475" x2="475" y1="446" y2="447" stroke="black"/>
+<line clip-path="url(#clipPath17)" fill="none" x1="472" x2="471" y1="445" y2="446" stroke="black"/>
+<line clip-path="url(#clipPath17)" fill="none" x1="470" x2="469" y1="443" y2="444" stroke="black"/>
+<line clip-path="url(#clipPath17)" fill="none" x1="469" x2="468" y1="441" y2="441" stroke="black"/>
+<line clip-path="url(#clipPath17)" fill="none" x1="470" x2="469" y1="438" y2="437" stroke="black"/>
+<line clip-path="url(#clipPath17)" fill="none" x1="472" x2="471" y1="436" y2="435" stroke="black"/>
+<line clip-path="url(#clipPath17)" fill="none" x1="475" x2="475" y1="435" y2="434" stroke="black"/>
+<line clip-path="url(#clipPath17)" fill="none" x1="477" x2="478" y1="436" y2="435" stroke="black"/>
+<line clip-path="url(#clipPath17)" fill="none" x1="479" x2="480" y1="438" y2="437" stroke="black"/>
+<line clip-path="url(#clipPath17)" fill="none" x1="475" x2="476" y1="441" y2="435" stroke="black"/>
+<line clip-path="url(#clipPath17)" fill="none" x1="475" x2="479" y1="441" y2="440" stroke="black"/>
+<text x="447" y="479" clip-path="url(#clipPath18)" fill="black" stroke="none" xml:space="preserve">wait 10 sec</text>
+<rect x="580" y="415" clip-path="url(#clipPath19)" fill="black" width="107" rx="3.5" opacity="0.2745" ry="3.5" height="57" stroke="none"/>
+<rect x="577" y="412" clip-path="url(#clipPath19)" fill="white" width="107" rx="4.5" ry="4.5" height="57" stroke="none" bpmn:process-id="_bR-rAFOnEd-qUNL1xc5jrA" bpmn:activity-id="_xAHLYFOnEd-qUNL1xc5jrA" bpmn:activity-label="34"/>
+<rect x="577" y="412" clip-path="url(#clipPath19)" fill="none" width="106" rx="4" ry="4" height="56" stroke="black" bpmn:process-id="_bR-rAFOnEd-qUNL1xc5jrA" bpmn:activity-id="_xAHLYFOnEd-qUNL1xc5jrA" bpmn:activity-label="34"/>
+<text x="623" y="448" clip-path="url(#clipPath20)" fill="black" stroke="none" xml:space="preserve">34</text>
+<rect x="906" y="319" clip-path="url(#clipPath21)" fill="black" width="107" rx="3.5" opacity="0.2745" ry="3.5" height="57" stroke="none"/>
+<rect x="903" y="316" clip-path="url(#clipPath21)" fill="white" width="107" rx="4.5" ry="4.5" height="57" stroke="none" bpmn:process-id="_bR-rAFOnEd-qUNL1xc5jrA" bpmn:activity-id="_7W620FRaEd-y87rmjcz7YQ" bpmn:activity-label=""/>
+<rect x="903" y="316" clip-path="url(#clipPath21)" fill="none" width="106" rx="4" ry="4" height="56" stroke="black" bpmn:process-id="_bR-rAFOnEd-qUNL1xc5jrA" bpmn:activity-id="_7W620FRaEd-y87rmjcz7YQ" bpmn:activity-label=""/>
+<text x="944" y="352" clip-path="url(#clipPath22)" fill="black" stroke="none" xml:space="preserve">Task</text>
+<line clip-path="url(#clipPath23)" fill="none" x1="65" x2="65" y1="274" y2="540" stroke="rgb(169,169,169)"/>
+<rect x="39" y="273" clip-path="url(#clipPath6)" fill="none" width="1500" height="269" stroke="rgb(169,169,169)" bpmn:process-id="_bR-rAFOnEd-qUNL1xc5jrA" bpmn:process-name="Pool2"/>
+<rect x="39" y="558" clip-path="url(#clipPath24)" fill="rgb(232,232,255)" width="1500" height="246" stroke="none" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:process-name="Pool3"/>
+<rect x="39" y="558" clip-path="url(#clipPath24)" fill="none" width="1500" height="246" stroke="black" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:process-name="Pool3"/>
+<image stroke="black" width="14" xlink:show="embed" xlink:type="simple" fill="black" clip-path="url(#clipPath25)" preserveAspectRatio="none" height="32" x="45" y="663" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAgCAYAAAAi7kmXAAACj0lEQVR42u2UX0hT
cRTHv/fabHOhaxEVSgWiiRCsP5u2aqBDSKsHMRKZUWZLWrrJGJFZWQOhQvNhK1Fo
iKXRi4UNnRCm1HqoxGpQkIweKtywlKyluavrt5vK7rjXWc8dONzfOfw+9/c733Pv
oXy+UAgR9p14HHEJ8ecBYHgsCNU6EbaRBBWxb0Uk9MjHwHThMcRyKU6VKdBQYkbG
Nzea1mhh7ahHcbqUH7xUfR6OtHsYGw/ixIEMuOtESD1Yh5EHLSgxm1HsbFncS0eC
P993Isv6GvubniFz5SBSS7sA2SGkHe3G7KfuyK1cMIFh0PeFXCd+I+7bjpCiJAiS
vNMvQiJHiSiwsXwnzuYdw6/ADJJyb7E558BH1OSVorFCzQE5NWZVtcG9qwZiaVjX
PxrmJb+B1k5O3NssDL5l5ICCCDATkdyUT7wAYChkxguAupxaLGXD7np+0H19FMs1
DpiQ5WCfc+GXTIbg8k6DJvJpN4uhSaKEwQVr90yiodSE3FA/K9LpuT2obrdDv122
NGi3VMF18QdS8m+z8ec+GwrPVULvusPfx0X72o+Uorvk7hrWkws7EBp/IvwBLFgS
KbLXR2GarMPe66exKjgbu8YrejXK9pVDXFDJxlM9N+DQZ8cGlRXNeJpuwEhvERun
Naghy22NDc7RcniUnXDJJ+bbsRo!
asqD/t+Mf2xGeEIq/bYefAWoHJvDO48cOVQus
10SQscVIwJ2qUaDxag8Yhw6mLdNotyXijKULrYbdsf/HQYcR3oeXIc04jJyXDqhO
GgHDEC/IVTXghTSTCEKvx1qlBVO+V4ITgBZMUfHzs2AZoyNsHaOzgrFuQxw/uJV4
mzpbMNZ9eMEPuoZuRp1/XPCqvwGOVO9fqXXaLgAAAABJRU5ErkJggg==" xlink:actuate="onLoad"/>
+<rect x="249" y="614" clip-path="url(#clipPath26)" fill="black" width="107" rx="3.5" opacity="0.2745" ry="3.5" height="57" stroke="none"/>
+<rect x="246" y="611" clip-path="url(#clipPath26)" fill="white" width="107" rx="4.5" ry="4.5" height="57" stroke="none" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:activity-id="_k1rO0FOnEd-qUNL1xc5jrA" bpmn:activity-label="31"/>
+<rect x="246" y="611" clip-path="url(#clipPath26)" fill="none" width="106" rx="4" ry="4" height="56" stroke="black" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:activity-id="_k1rO0FOnEd-qUNL1xc5jrA" bpmn:activity-label="31"/>
+<text x="292" y="647" clip-path="url(#clipPath27)" fill="black" stroke="none" xml:space="preserve">31</text>
+<rect x="441" y="579" clip-path="url(#clipPath28)" fill="black" width="567" rx="3.5" opacity="0.2745" ry="3.5" height="208" stroke="none"/>
+<rect x="438" y="576" clip-path="url(#clipPath28)" fill="white" width="567" rx="4" ry="4" height="208" stroke="none" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:activity-id="_-IzjIFOrEd-qUNL1xc5jrA" bpmn:activity-label=""/>
+<rect x="438" y="576" clip-path="url(#clipPath28)" fill="none" width="566" rx="4" ry="4" height="207" stroke="black" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:activity-id="_-IzjIFOrEd-qUNL1xc5jrA" bpmn:activity-label=""/>
+<rect x="590" y="584" clip-path="url(#clipPath29)" fill="black" width="107" rx="3.5" opacity="0.2745" ry="3.5" height="57" stroke="none"/>
+<rect x="587" y="581" clip-path="url(#clipPath29)" fill="white" width="107" rx="4.5" ry="4.5" height="57" stroke="none" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:activity-id="_xdm_xlOnEd-qUNL1xc5jrA" bpmn:activity-label=""/>
+<rect x="587" y="581" clip-path="url(#clipPath29)" fill="none" width="106" rx="4" ry="4" height="56" stroke="black" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:activity-id="_xdm_xlOnEd-qUNL1xc5jrA" bpmn:activity-label=""/>
+<text x="633" y="617" clip-path="url(#clipPath30)" fill="black" stroke="none" xml:space="preserve">32</text>
+<rect x="892" y="584" clip-path="url(#clipPath31)" fill="black" width="107" rx="3.5" opacity="0.2745" ry="3.5" height="57" stroke="none"/>
+<rect x="889" y="581" clip-path="url(#clipPath31)" fill="white" width="107" rx="4.5" ry="4.5" height="57" stroke="none" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:activity-id="_2OMZ0FOnEd-qUNL1xc5jrA" bpmn:activity-label="34"/>
+<rect x="889" y="581" clip-path="url(#clipPath31)" fill="none" width="106" rx="4" ry="4" height="56" stroke="black" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:activity-id="_2OMZ0FOnEd-qUNL1xc5jrA" bpmn:activity-label="34"/>
+<text x="935" y="617" clip-path="url(#clipPath32)" fill="black" stroke="none" xml:space="preserve">34</text>
+<polygon fill="black" clip-path="url(#clipPath33)" opacity="0.2745" points=" 471 646 496 671 471 696 446 671" stroke="none"/>
+<polygon fill="white" stroke-width="2" clip-path="url(#clipPath34)" points=" 468 645 492 669 468 693 444 669" stroke="none"/>
+<polygon fill="none" stroke-width="2" clip-path="url(#clipPath34)" points=" 468 645 492 669 468 693 444 669" stroke="rgb(64,64,64)"/>
+<circle clip-path="url(#clipPath34)" fill="none" r="14.5" cx="467.5" cy="668.5" stroke="black"/>
+<circle clip-path="url(#clipPath34)" fill="none" r="12.5" cx="467.5" cy="668.5" stroke="black"/>
+<polygon fill="none" clip-path="url(#clipPath34)" points=" 459 665 467 661 476 665 474 675 461 675" stroke="black"/>
+<circle clip-path="url(#clipPath35)" fill="black" r="14.5" cx="812.5" opacity="0.2745" cy="611.5" stroke="none"/>
+<circle clip-path="url(#clipPath36)" fill="white" r="14.5" cx="810.5" cy="609.5" stroke="none"/>
+<circle clip-path="url(#clipPath36)" fill="none" r="11.5" cx="810.5" cy="609.5" stroke="black"/>
+<circle clip-path="url(#clipPath36)" fill="none" r="14.5" cx="810.5" cy="609.5" stroke="black"/>
+<circle clip-path="url(#clipPath36)" fill="none" r="7.5" cx="810.5" cy="609.5" stroke="black"/>
+<line clip-path="url(#clipPath36)" fill="none" x1="816" x2="817" y1="610" y2="610" stroke="black"/>
+<line clip-path="url(#clipPath36)" fill="none" x1="815" x2="816" y1="612" y2="613" stroke="black"/>
+<line clip-path="url(#clipPath36)" fill="none" x1="813" x2="814" y1="614" y2="615" stroke="black"/>
+<line clip-path="url(#clipPath36)" fill="none" x1="811" x2="811" y1="615" y2="616" stroke="black"/>
+<line clip-path="url(#clipPath36)" fill="none" x1="808" x2="807" y1="614" y2="615" stroke="black"/>
+<line clip-path="url(#clipPath36)" fill="none" x1="806" x2="805" y1="612" y2="613" stroke="black"/>
+<line clip-path="url(#clipPath36)" fill="none" x1="805" x2="804" y1="610" y2="610" stroke="black"/>
+<line clip-path="url(#clipPath36)" fill="none" x1="806" x2="805" y1="607" y2="606" stroke="black"/>
+<line clip-path="url(#clipPath36)" fill="none" x1="808" x2="807" y1="605" y2="604" stroke="black"/>
+<line clip-path="url(#clipPath36)" fill="none" x1="811" x2="811" y1="604" y2="603" stroke="black"/>
+<line clip-path="url(#clipPath36)" fill="none" x1="813" x2="814" y1="605" y2="604" stroke="black"/>
+<line clip-path="url(#clipPath36)" fill="none" x1="815" x2="816" y1="607" y2="606" stroke="black"/>
+<line clip-path="url(#clipPath36)" fill="none" x1="811" x2="812" y1="610" y2="604" stroke="black"/>
+<line clip-path="url(#clipPath36)" fill="none" x1="811" x2="815" y1="610" y2="609" stroke="black"/>
+<text x="769" y="648" clip-path="url(#clipPath37)" fill="black" stroke="none" xml:space="preserve">wait 30 seconds</text>
+<rect x="709" y="696" clip-path="url(#clipPath38)" fill="black" width="107" rx="3.5" opacity="0.2745" ry="3.5" height="57" stroke="none"/>
+<rect x="706" y="693" clip-path="url(#clipPath38)" fill="white" width="107" rx="4.5" ry="4.5" height="57" stroke="none" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:activity-id="_uhaUUFOnEd-qUNL1xc5jrA" bpmn:activity-label="33"/>
+<rect x="706" y="693" clip-path="url(#clipPath38)" fill="none" width="106" rx="4" ry="4" height="56" stroke="black" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:activity-id="_uhaUUFOnEd-qUNL1xc5jrA" bpmn:activity-label="33"/>
+<text x="752" y="729" clip-path="url(#clipPath39)" fill="black" stroke="none" xml:space="preserve">33</text>
+<rect x="863" y="696" clip-path="url(#clipPath40)" fill="black" width="107" rx="3.5" opacity="0.2745" ry="3.5" height="57" stroke="none"/>
+<rect x="860" y="693" clip-path="url(#clipPath40)" fill="white" width="107" rx="4.5" ry="4.5" height="57" stroke="none" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:activity-id="_xW4AYFO5Ed-_Q-SZnn1pGA" bpmn:activity-label="33 reply"/>
+<rect x="860" y="693" clip-path="url(#clipPath40)" fill="none" width="106" rx="4" ry="4" height="56" stroke="black" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:activity-id="_xW4AYFO5Ed-_Q-SZnn1pGA" bpmn:activity-label="33 reply"/>
+<text x="891" y="729" clip-path="url(#clipPath41)" fill="black" stroke="none" xml:space="preserve">33 reply</text>
+<rect x="723" y="765" clip-path="url(#clipPath28)" fill="none" width="19" height="19" stroke="black"/>
+<line clip-path="url(#clipPath28)" fill="none" x1="725" x2="739" y1="774" y2="774" stroke="black" stroke-width="2"/>
+<path fill="none" stroke-width="2" d="M715.25 782.6603 A9.5 10 0 1 0 705.75 782.6603" clip-path="url(#clipPath28)" stroke="black"/>
+<line clip-path="url(#clipPath28)" fill="none" x1="701" x2="706" y1="782" y2="782" stroke="black" stroke-width="2"/>
+<line clip-path="url(#clipPath28)" fill="none" x1="706" x2="706" y1="782" y2="777" stroke="black" stroke-width="2"/>
+<line clip-path="url(#clipPath42)" fill="none" x1="65" x2="65" y1="559" y2="802" stroke="rgb(169,169,169)"/>
+<rect x="39" y="558" clip-path="url(#clipPath24)" fill="none" width="1500" height="246" stroke="rgb(169,169,169)" bpmn:process-id="_jihk4FOnEd-qUNL1xc5jrA" bpmn:process-name="Pool3"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="759" x2="829" y1="331" y2="331" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="829" x2="829" y1="331" y2="331" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="829" x2="830" y1="331" y2="331" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="830" x2="830" y1="331" y2="331" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="830" x2="830" y1="331" y2="332" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="830" x2="831" y1="332" y2="333" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="831" x2="831" y1="333" y2="333" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="831" x2="831" y1="333" y2="333" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="831" x2="831" y1="333" y2="334" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="831" x2="831" y1="334" y2="334" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="831" x2="832" y1="334" y2="334" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="832" x2="833" y1="334" y2="335" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="833" x2="903" y1="335" y2="335" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath44)" opacity="0.6667" points=" 896 338 903 335 896 332" stroke="none"/>
+<line clip-path="url(#clipPath44)" fill="none" x1="896" x2="903" y1="338" y2="335" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath44)" fill="none" x1="903" x2="896" y1="335" y2="332" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="462" x2="549" y1="345" y2="345" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="549" x2="551" y1="345" y2="344" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="551" x2="553" y1="344" y2="343" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="553" x2="554" y1="343" y2="342" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="554" x2="555" y1="342" y2="340" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="555" x2="556" y1="340" y2="338" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="556" x2="556" y1="338" y2="338" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="556" x2="556" y1="338" y2="335" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="556" x2="557" y1="335" y2="333" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="557" x2="558" y1="333" y2="332" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="558" x2="560" y1="332" y2="331" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="560" x2="563" y1="331" y2="331" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="563" x2="652" y1="331" y2="331" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath45)" opacity="0.6667" points=" 645 334 652 331 645 328" stroke="none"/>
+<line clip-path="url(#clipPath45)" fill="none" x1="645" x2="652" y1="334" y2="331" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath45)" fill="none" x1="652" x2="645" y1="331" y2="328" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="367" x2="387" y1="348" y2="348" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="387" x2="387" y1="348" y2="347" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="387" x2="388" y1="347" y2="347" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="388" x2="388" y1="347" y2="347" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="388" x2="388" y1="347" y2="346" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="388" x2="389" y1="346" y2="346" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="389" x2="389" y1="346" y2="346" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="389" x2="389" y1="346" y2="346" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="389" x2="389" y1="346" y2="345" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="389" x2="389" y1="345" y2="345" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="389" x2="390" y1="345" y2="345" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="390" x2="390" y1="345" y2="345" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="390" x2="412" y1="345" y2="345" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath46)" opacity="0.6667" points=" 405 348 412 345 405 342" stroke="none"/>
+<line clip-path="url(#clipPath46)" fill="none" x1="405" x2="412" y1="348" y2="345" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath46)" fill="none" x1="412" x2="405" y1="345" y2="342" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="216" x2="260" y1="348" y2="348" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath47)" opacity="0.6667" points=" 253 351 260 348 253 345" stroke="none"/>
+<line clip-path="url(#clipPath47)" fill="none" x1="253" x2="260" y1="351" y2="348" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath47)" fill="none" x1="260" x2="253" y1="348" y2="345" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="490" x2="577" y1="440" y2="440" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath48)" opacity="0.6667" points=" 570 443 577 440 570 437" stroke="none"/>
+<line clip-path="url(#clipPath48)" fill="none" x1="570" x2="577" y1="443" y2="440" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath48)" fill="none" x1="577" x2="570" y1="440" y2="437" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="684" x2="777" y1="440" y2="440" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="777" x2="781" y1="440" y2="439" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="781" x2="786" y1="439" y2="436" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="786" x2="789" y1="436" y2="433" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="789" x2="792" y1="433" y2="428" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="792" x2="793" y1="428" y2="424" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="793" x2="793" y1="424" y2="370" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="793" x2="793" y1="370" y2="365" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="793" x2="796" y1="365" y2="360" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="796" x2="799" y1="360" y2="357" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="799" x2="804" y1="357" y2="354" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="804" x2="809" y1="354" y2="354" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="809" x2="903" y1="354" y2="354" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath49)" opacity="0.6667" points=" 896 357 903 354 896 351" stroke="none"/>
+<line clip-path="url(#clipPath49)" fill="none" x1="896" x2="903" y1="357" y2="354" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath49)" fill="none" x1="903" x2="896" y1="354" y2="351" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="437" x2="437" y1="370" y2="429" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="437" x2="437" y1="429" y2="433" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="437" x2="439" y1="433" y2="436" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="439" x2="441" y1="436" y2="438" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="441" x2="444" y1="438" y2="440" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="444" x2="448" y1="440" y2="441" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="448" x2="460" y1="441" y2="441" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath50)" opacity="0.6667" points=" 453 444 460 441 453 438" stroke="none"/>
+<line clip-path="url(#clipPath50)" fill="none" x1="453" x2="460" y1="444" y2="441" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath50)" fill="none" x1="460" x2="453" y1="441" y2="438" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="468" x2="468" y1="644" y2="625" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="468" x2="468" y1="625" y2="620" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="468" x2="471" y1="620" y2="615" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="471" x2="474" y1="615" y2="612" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="474" x2="479" y1="612" y2="609" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="479" x2="484" y1="609" y2="609" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="484" x2="587" y1="609" y2="609" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath51)" opacity="0.6667" points=" 580 612 587 609 580 606" stroke="none"/>
+<line clip-path="url(#clipPath51)" fill="none" x1="580" x2="587" y1="612" y2="609" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath51)" fill="none" x1="587" x2="580" y1="609" y2="606" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="694" x2="796" y1="609" y2="609" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath52)" opacity="0.6667" points=" 789 612 796 609 789 606" stroke="none"/>
+<line clip-path="url(#clipPath52)" fill="none" x1="789" x2="796" y1="612" y2="609" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath52)" fill="none" x1="796" x2="789" y1="609" y2="606" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="353" x2="379" y1="639" y2="639" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="379" x2="383" y1="639" y2="639" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="383" x2="388" y1="639" y2="642" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="388" x2="391" y1="642" y2="645" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="391" x2="394" y1="645" y2="650" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="394" x2="395" y1="650" y2="655" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="395" x2="395" y1="655" y2="664" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="395" x2="395" y1="664" y2="668" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="395" x2="398" y1="668" y2="673" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="398" x2="401" y1="673" y2="676" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="401" x2="406" y1="676" y2="679" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="406" x2="411" y1="679" y2="680" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="411" x2="438" y1="680" y2="680" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath53)" opacity="0.6667" points=" 431 683 438 680 431 677" stroke="none"/>
+<line clip-path="url(#clipPath53)" fill="none" x1="431" x2="438" y1="683" y2="680" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath53)" fill="none" x1="438" x2="431" y1="680" y2="677" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="468" x2="468" y1="694" y2="707" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="468" x2="468" y1="707" y2="711" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="468" x2="470" y1="711" y2="715" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="470" x2="473" y1="715" y2="718" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="473" x2="477" y1="718" y2="720" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="477" x2="481" y1="720" y2="721" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="481" x2="706" y1="721" y2="721" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath54)" opacity="0.6667" points=" 699 724 706 721 699 718" stroke="none"/>
+<line clip-path="url(#clipPath54)" fill="none" x1="699" x2="706" y1="724" y2="721" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath54)" fill="none" x1="706" x2="699" y1="721" y2="718" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="813" x2="860" y1="721" y2="721" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath55)" opacity="0.6667" points=" 853 724 860 721 853 718" stroke="none"/>
+<line clip-path="url(#clipPath55)" fill="none" x1="853" x2="860" y1="724" y2="721" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath55)" fill="none" x1="860" x2="853" y1="721" y2="718" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="826" x2="889" y1="609" y2="609" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath56)" opacity="0.6667" points=" 882 612 889 609 882 606" stroke="none"/>
+<line clip-path="url(#clipPath56)" fill="none" x1="882" x2="889" y1="612" y2="609" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath56)" fill="none" x1="889" x2="882" y1="609" y2="606" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="161" x2="161" y1="172" y2="320" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<circle clip-path="url(#clipPath57)" fill="white" r="3.5" cx="160.5" cy="171.5" stroke="none"/>
+<circle clip-path="url(#clipPath57)" fill="none" r="3.5" cx="160.5" opacity="0.5882" cy="171.5" stroke="black"/>
+<polygon fill="white" clip-path="url(#clipPath58)" points=" 157 314 161 320 165 314 157 314" stroke="none"/>
+<line clip-path="url(#clipPath58)" fill="none" x1="157" x2="161" y1="314" y2="320" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath58)" fill="none" x1="161" x2="165" y1="320" y2="314" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath58)" fill="none" x1="165" x2="157" y1="314" y2="314" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="216" x2="260" y1="348" y2="348" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath47)" opacity="0.6667" points=" 253 351 260 348 253 345" stroke="none"/>
+<line clip-path="url(#clipPath47)" fill="none" x1="253" x2="260" y1="351" y2="348" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath47)" fill="none" x1="260" x2="253" y1="348" y2="345" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="367" x2="387" y1="348" y2="348" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="387" x2="387" y1="348" y2="347" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="387" x2="388" y1="347" y2="347" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="388" x2="388" y1="347" y2="347" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="388" x2="388" y1="347" y2="346" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="388" x2="389" y1="346" y2="346" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="389" x2="389" y1="346" y2="346" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="389" x2="389" y1="346" y2="346" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="389" x2="389" y1="346" y2="345" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="389" x2="389" y1="345" y2="345" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="389" x2="390" y1="345" y2="345" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="390" x2="390" y1="345" y2="345" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="390" x2="412" y1="345" y2="345" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath46)" opacity="0.6667" points=" 405 348 412 345 405 342" stroke="none"/>
+<line clip-path="url(#clipPath46)" fill="none" x1="405" x2="412" y1="348" y2="345" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath46)" fill="none" x1="412" x2="405" y1="345" y2="342" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="313" x2="313" y1="377" y2="487" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="313" x2="312" y1="487" y2="489" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="312" x2="311" y1="489" y2="491" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="311" x2="310" y1="491" y2="492" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="310" x2="308" y1="492" y2="493" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="308" x2="306" y1="493" y2="494" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="306" x2="306" y1="494" y2="494" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="306" x2="303" y1="494" y2="494" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="303" x2="301" y1="494" y2="495" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="301" x2="300" y1="495" y2="496" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="300" x2="299" y1="496" y2="498" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="299" x2="299" y1="498" y2="501" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="299" x2="299" y1="501" y2="611" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<circle clip-path="url(#clipPath59)" fill="white" r="3.5" cx="312.5" cy="376.5" stroke="none"/>
+<circle clip-path="url(#clipPath59)" fill="none" r="3.5" cx="312.5" opacity="0.5882" cy="376.5" stroke="black"/>
+<polygon fill="white" clip-path="url(#clipPath60)" points=" 295 605 299 611 303 605 295 605" stroke="none"/>
+<line clip-path="url(#clipPath60)" fill="none" x1="295" x2="299" y1="605" y2="611" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath60)" fill="none" x1="299" x2="303" y1="611" y2="605" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath60)" fill="none" x1="303" x2="295" y1="605" y2="605" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="353" x2="379" y1="639" y2="639" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="379" x2="383" y1="639" y2="639" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="383" x2="388" y1="639" y2="642" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="388" x2="391" y1="642" y2="645" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="391" x2="394" y1="645" y2="650" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="394" x2="395" y1="650" y2="655" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="395" x2="395" y1="655" y2="664" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="395" x2="395" y1="664" y2="668" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="395" x2="398" y1="668" y2="673" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="398" x2="401" y1="673" y2="676" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="401" x2="406" y1="676" y2="679" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="406" x2="411" y1="679" y2="680" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="411" x2="438" y1="680" y2="680" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath53)" opacity="0.6667" points=" 431 683 438 680 431 677" stroke="none"/>
+<line clip-path="url(#clipPath53)" fill="none" x1="431" x2="438" y1="683" y2="680" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath53)" fill="none" x1="438" x2="431" y1="680" y2="677" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="468" x2="468" y1="644" y2="625" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="468" x2="468" y1="625" y2="620" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="468" x2="471" y1="620" y2="615" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="471" x2="474" y1="615" y2="612" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="474" x2="479" y1="612" y2="609" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="479" x2="484" y1="609" y2="609" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="484" x2="587" y1="609" y2="609" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath51)" opacity="0.6667" points=" 580 612 587 609 580 606" stroke="none"/>
+<line clip-path="url(#clipPath51)" fill="none" x1="580" x2="587" y1="612" y2="609" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath51)" fill="none" x1="587" x2="580" y1="609" y2="606" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="468" x2="468" y1="694" y2="707" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="468" x2="468" y1="707" y2="711" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="468" x2="470" y1="711" y2="715" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="470" x2="473" y1="715" y2="718" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="473" x2="477" y1="718" y2="720" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="477" x2="481" y1="720" y2="721" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="481" x2="706" y1="721" y2="721" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath54)" opacity="0.6667" points=" 699 724 706 721 699 718" stroke="none"/>
+<line clip-path="url(#clipPath54)" fill="none" x1="699" x2="706" y1="724" y2="721" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath54)" fill="none" x1="706" x2="699" y1="721" y2="718" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="462" x2="549" y1="345" y2="345" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="549" x2="551" y1="345" y2="344" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="551" x2="553" y1="344" y2="343" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="553" x2="554" y1="343" y2="342" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="554" x2="555" y1="342" y2="340" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="555" x2="556" y1="340" y2="338" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="556" x2="556" y1="338" y2="338" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="556" x2="556" y1="338" y2="335" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="556" x2="557" y1="335" y2="333" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="557" x2="558" y1="333" y2="332" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="558" x2="560" y1="332" y2="331" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="560" x2="563" y1="331" y2="331" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="563" x2="652" y1="331" y2="331" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath45)" opacity="0.6667" points=" 645 334 652 331 645 328" stroke="none"/>
+<line clip-path="url(#clipPath45)" fill="none" x1="645" x2="652" y1="334" y2="331" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath45)" fill="none" x1="652" x2="645" y1="331" y2="328" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="437" x2="437" y1="370" y2="429" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="437" x2="437" y1="429" y2="433" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="437" x2="439" y1="433" y2="436" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="439" x2="441" y1="436" y2="438" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="441" x2="444" y1="438" y2="440" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="444" x2="448" y1="440" y2="441" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="448" x2="460" y1="441" y2="441" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath50)" opacity="0.6667" points=" 453 444 460 441 453 438" stroke="none"/>
+<line clip-path="url(#clipPath50)" fill="none" x1="453" x2="460" y1="444" y2="441" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath50)" fill="none" x1="460" x2="453" y1="441" y2="438" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="490" x2="577" y1="440" y2="440" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath48)" opacity="0.6667" points=" 570 443 577 440 570 437" stroke="none"/>
+<line clip-path="url(#clipPath48)" fill="none" x1="570" x2="577" y1="443" y2="440" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath48)" fill="none" x1="577" x2="570" y1="440" y2="437" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="687" x2="687" y1="360" y2="454" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="687" x2="686" y1="454" y2="458" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="686" x2="683" y1="458" y2="463" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="683" x2="680" y1="463" y2="466" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="680" x2="675" y1="466" y2="469" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="675" x2="671" y1="469" y2="470" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="671" x2="656" y1="470" y2="470" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="656" x2="651" y1="470" y2="470" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="651" x2="646" y1="470" y2="473" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="646" x2="643" y1="473" y2="476" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="643" x2="640" y1="476" y2="481" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="640" x2="640" y1="481" y2="486" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="640" x2="640" y1="486" y2="581" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<circle clip-path="url(#clipPath61)" fill="white" r="3.5" cx="686.5" cy="359.5" stroke="none"/>
+<circle clip-path="url(#clipPath61)" fill="none" r="3.5" cx="686.5" opacity="0.5882" cy="359.5" stroke="black"/>
+<polygon fill="white" clip-path="url(#clipPath62)" points=" 636 575 640 581 644 575 636 575" stroke="none"/>
+<line clip-path="url(#clipPath62)" fill="none" x1="636" x2="640" y1="575" y2="581" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath62)" fill="none" x1="640" x2="644" y1="581" y2="575" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath62)" fill="none" x1="644" x2="636" y1="575" y2="575" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="612" x2="612" y1="469" y2="565" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="612" x2="612" y1="565" y2="569" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="612" x2="615" y1="569" y2="574" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="615" x2="618" y1="574" y2="577" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="618" x2="623" y1="577" y2="580" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="623" x2="628" y1="580" y2="581" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="628" x2="743" y1="581" y2="581" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="743" x2="747" y1="581" y2="581" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="747" x2="752" y1="581" y2="584" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="752" x2="755" y1="584" y2="587" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="755" x2="758" y1="587" y2="592" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="758" x2="759" y1="592" y2="597" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="759" x2="759" y1="597" y2="693" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<circle clip-path="url(#clipPath63)" fill="white" r="3.5" cx="611.5" cy="468.5" stroke="none"/>
+<circle clip-path="url(#clipPath63)" fill="none" r="3.5" cx="611.5" opacity="0.5882" cy="468.5" stroke="black"/>
+<polygon fill="white" clip-path="url(#clipPath64)" points=" 755 687 759 693 763 687 755 687" stroke="none"/>
+<line clip-path="url(#clipPath64)" fill="none" x1="755" x2="759" y1="687" y2="693" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath64)" fill="none" x1="759" x2="763" y1="693" y2="687" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath64)" fill="none" x1="763" x2="755" y1="687" y2="687" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="694" x2="796" y1="609" y2="609" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath52)" opacity="0.6667" points=" 789 612 796 609 789 606" stroke="none"/>
+<line clip-path="url(#clipPath52)" fill="none" x1="789" x2="796" y1="612" y2="609" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath52)" fill="none" x1="796" x2="789" y1="609" y2="606" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="826" x2="889" y1="609" y2="609" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath56)" opacity="0.6667" points=" 882 612 889 609 882 606" stroke="none"/>
+<line clip-path="url(#clipPath56)" fill="none" x1="882" x2="889" y1="612" y2="609" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath56)" fill="none" x1="889" x2="882" y1="609" y2="606" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="942" x2="942" y1="581" y2="486" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="942" x2="941" y1="486" y2="481" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="941" x2="938" y1="481" y2="476" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="938" x2="935" y1="476" y2="473" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="935" x2="930" y1="473" y2="470" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="930" x2="926" y1="470" y2="470" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="926" x2="738" y1="470" y2="470" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="738" x2="733" y1="470" y2="469" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="733" x2="728" y1="469" y2="466" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="728" x2="725" y1="466" y2="463" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="725" x2="722" y1="463" y2="458" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="722" x2="722" y1="458" y2="454" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="722" x2="722" y1="454" y2="360" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<circle clip-path="url(#clipPath65)" fill="white" r="3.5" cx="941.5" cy="580.5" stroke="none"/>
+<circle clip-path="url(#clipPath65)" fill="none" r="3.5" cx="941.5" opacity="0.5882" cy="580.5" stroke="black"/>
+<polygon fill="white" clip-path="url(#clipPath66)" points=" 726 366 722 360 718 366 726 366" stroke="none"/>
+<line clip-path="url(#clipPath66)" fill="none" x1="726" x2="722" y1="366" y2="360" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath66)" fill="none" x1="722" x2="718" y1="360" y2="366" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath66)" fill="none" x1="718" x2="726" y1="366" y2="366" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="913" x2="913" y1="693" y2="597" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="913" x2="912" y1="597" y2="592" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="912" x2="909" y1="592" y2="587" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="909" x2="906" y1="587" y2="584" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="906" x2="901" y1="584" y2="581" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="901" x2="897" y1="581" y2="581" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="897" x2="663" y1="581" y2="581" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="663" x2="658" y1="581" y2="580" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="658" x2="653" y1="580" y2="577" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="653" x2="650" y1="577" y2="574" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="650" x2="647" y1="574" y2="569" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="647" x2="647" y1="569" y2="565" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="647" x2="647" y1="565" y2="469" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<circle clip-path="url(#clipPath67)" fill="white" r="3.5" cx="912.5" cy="692.5" stroke="none"/>
+<circle clip-path="url(#clipPath67)" fill="none" r="3.5" cx="912.5" opacity="0.5882" cy="692.5" stroke="black"/>
+<polygon fill="white" clip-path="url(#clipPath68)" points=" 651 475 647 469 643 475 651 475" stroke="none"/>
+<line clip-path="url(#clipPath68)" fill="none" x1="651" x2="647" y1="475" y2="469" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath68)" fill="none" x1="647" x2="643" y1="469" y2="475" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath68)" fill="none" x1="643" x2="651" y1="475" y2="475" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="813" x2="860" y1="721" y2="721" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath55)" opacity="0.6667" points=" 853 724 860 721 853 718" stroke="none"/>
+<line clip-path="url(#clipPath55)" fill="none" x1="853" x2="860" y1="724" y2="721" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath55)" fill="none" x1="860" x2="853" y1="721" y2="718" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="759" x2="829" y1="331" y2="331" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="829" x2="829" y1="331" y2="331" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="829" x2="830" y1="331" y2="331" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="830" x2="830" y1="331" y2="331" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="830" x2="830" y1="331" y2="332" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="830" x2="831" y1="332" y2="333" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="831" x2="831" y1="333" y2="333" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="831" x2="831" y1="333" y2="333" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="831" x2="831" y1="333" y2="334" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="831" x2="831" y1="334" y2="334" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="831" x2="832" y1="334" y2="334" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="832" x2="833" y1="334" y2="335" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="833" x2="903" y1="335" y2="335" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath44)" opacity="0.6667" points=" 896 338 903 335 896 332" stroke="none"/>
+<line clip-path="url(#clipPath44)" fill="none" x1="896" x2="903" y1="338" y2="335" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath44)" fill="none" x1="903" x2="896" y1="335" y2="332" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="956" x2="956" y1="316" y2="260" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="956" x2="955" y1="260" y2="255" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="955" x2="952" y1="255" y2="250" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="952" x2="949" y1="250" y2="247" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="949" x2="944" y1="247" y2="244" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="944" x2="940" y1="244" y2="244" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="940" x2="212" y1="244" y2="244" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="212" x2="207" y1="244" y2="243" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="207" x2="202" y1="243" y2="240" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="202" x2="199" y1="240" y2="237" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="199" x2="196" y1="237" y2="232" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="196" x2="196" y1="232" y2="228" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="196" x2="196" y1="228" y2="172" stroke-dasharray="7,5" opacity="0.5882" stroke="black"/>
+<circle clip-path="url(#clipPath69)" fill="white" r="3.5" cx="955.5" cy="315.5" stroke="none"/>
+<circle clip-path="url(#clipPath69)" fill="none" r="3.5" cx="955.5" opacity="0.5882" cy="315.5" stroke="black"/>
+<polygon fill="white" clip-path="url(#clipPath70)" points=" 200 178 196 172 192 178 200 178" stroke="none"/>
+<line clip-path="url(#clipPath70)" fill="none" x1="200" x2="196" y1="178" y2="172" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath70)" fill="none" x1="196" x2="192" y1="172" y2="178" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath70)" fill="none" x1="192" x2="200" y1="178" y2="178" opacity="0.5882" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="684" x2="777" y1="440" y2="440" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="777" x2="781" y1="440" y2="439" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="781" x2="786" y1="439" y2="436" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="786" x2="789" y1="436" y2="433" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="789" x2="792" y1="433" y2="428" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="792" x2="793" y1="428" y2="424" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="793" x2="793" y1="424" y2="370" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="793" x2="793" y1="370" y2="365" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="793" x2="796" y1="365" y2="360" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="796" x2="799" y1="360" y2="357" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="799" x2="804" y1="357" y2="354" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="804" x2="809" y1="354" y2="354" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath43)" fill="none" x1="809" x2="903" y1="354" y2="354" opacity="0.6667" stroke="black"/>
+<polygon fill="black" clip-path="url(#clipPath49)" opacity="0.6667" points=" 896 357 903 354 896 351" stroke="none"/>
+<line clip-path="url(#clipPath49)" fill="none" x1="896" x2="903" y1="357" y2="354" opacity="0.6667" stroke="black"/>
+<line clip-path="url(#clipPath49)" fill="none" x1="903" x2="896" y1="354" y2="351" opacity="0.6667" stroke="black"/>
+</g>
+</g>
+</svg>
Added: branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem.wsdl
===================================================================
--- branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem.wsdl (rev 0)
+++ branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSelectors/ReproduceIsolationProblem.wsdl 2010-05-27 15:55:40 UTC (rev 675)
@@ -0,0 +1,29 @@
+<?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 xmlns:Pool2="http://example.com/ReproduceIsolationProblem/Pool2" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:diag="http://example.com/ReproduceIsolationProblem" xmlns:Pool3="http://example.com/ReproduceIsolationProblem/Pool3" xmlns:Pool="http://example.com/ReproduceIsolationProblem/Pool" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:pnlk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable" xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop" xmlns:bpdm="http://www.intalio/designer/business-process-data-modeling" targetNamespace="http://example.com/ReproduceIsolationProblem">
+ <wsdl:import namespace="http://example.com/ReproduceIsolationProblem/Pool2" location="ReproduceIsolationProblem-Pool2.wsdl"/>
+ <wsdl:import namespace="http://example.com/ReproduceIsolationProblem/Pool3" location="ReproduceIsolationProblem-Pool3.wsdl"/>
+ <pnlk:partnerLinkType name="Pool2AndPool">
+ <pnlk:role name="Pool2_for_Pool" portType="Pool2:ForPool"/>
+ </pnlk:partnerLinkType>
+ <pnlk:partnerLinkType name="Pool3AndPool2">
+ <pnlk:role name="Pool3_for_Pool2" portType="Pool3:ForPool2"/>
+ </pnlk:partnerLinkType>
+</wsdl:definitions>
Added: branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSelectors/deploy.xml
===================================================================
--- branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSelectors/deploy.xml (rev 0)
+++ branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSelectors/deploy.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -0,0 +1,35 @@
+<?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.
+ -->
+<dd:deploy xmlns:dd="http://www.apache.org/ode/schemas/dd/2007/03"><dd:process xmlns:dd="http://www.apache.org/ode/schemas/dd/2007/03" xmlns:diag="http://example.com/ReproduceIsolationProblem" xmlns:Pool2="http://example.com/ReproduceIsolationProblem/Pool2" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:this="http://example.com/ReproduceIsolationProblem/Pool3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="this:Pool3" fileName="ReproduceIsolationProblem-Pool3.bpel">
+ <dd:property name="PATH">ReproduceIsolationProblem</dd:property>
+ <dd:property name="SVG">ReproduceIsolationProblem.svg</dd:property>
+ <dd:provide partnerLink="pool3AndPool2PlkVar">
+ <dd:service name="this:CanonicServiceForPool2" port="canonicPort"></dd:service>
+ </dd:provide>
+</dd:process><dd:process xmlns:dd="http://www.apache.org/ode/schemas/dd/2007/03" xmlns:diag="http://example.com/ReproduceIsolationProblem" xmlns:Pool3="http://example.com/ReproduceIsolationProblem/Pool3" xmlns:Pool="http://example.com/ReproduceIsolationProblem/Pool" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:this="http://example.com/ReproduceIsolationProblem/Pool2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="this:Pool2" fileName="ReproduceIsolationProblem-Pool2.bpel">
+ <dd:property name="PATH">ReproduceIsolationProblem</dd:property>
+ <dd:property name="SVG">ReproduceIsolationProblem.svg</dd:property>
+ <dd:provide partnerLink="pool2AndPoolPlkVar">
+ <dd:service name="this:CanonicServiceForPool" port="canonicPort"></dd:service>
+ </dd:provide>
+ <dd:invoke partnerLink="pool3AndPool2PlkVar">
+ <dd:service name="Pool3:CanonicServiceForPool2" port="canonicPort"></dd:service>
+ </dd:invoke>
+</dd:process></dd:deploy>
Added: branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSelectors/testRequest.soap
===================================================================
--- branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSelectors/testRequest.soap (rev 0)
+++ branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSelectors/testRequest.soap 2010-05-27 15:55:40 UTC (rev 675)
@@ -0,0 +1,25 @@
+<!--
+ ~ 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.
+ -->
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:pool="http://example.com/ReproduceIsolationProblem/Pool2">
+ <soapenv:Header/>
+ <soapenv:Body>
+ <pool:_21Request>abc1</pool:_21Request>
+ </soapenv:Body>
+</soapenv:Envelope>
+
Modified: branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSoapHeader2/HelloWorld2.wsdl
===================================================================
--- branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSoapHeader2/HelloWorld2.wsdl 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSoapHeader2/HelloWorld2.wsdl 2010-05-27 15:55:40 UTC (rev 675)
@@ -1,4 +1,22 @@
<?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/unit-test.wsdl"
Modified: branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSoapHeader2/deploy.xml
===================================================================
--- branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSoapHeader2/deploy.xml 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSoapHeader2/deploy.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -1,4 +1,22 @@
<?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.
+ -->
<dd:deploy xmlns:dd="http://www.apache.org/ode/schemas/dd/2007/03"><dd:process xmlns:dd="http://www.apache.org/ode/schemas/dd/2007/03" xmlns:tns="http://ode/bpel/unit-test.wsdl" xmlns:service="http://example.com/hello/service" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:diag="http://example.com/hello" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:client="http://example.com/hello/client" xmlns:this="http://example.com/hello/process" name="this:process" fileName="hello-process.bpel">
<dd:property name="PATH">hello</dd:property>
<dd:property name="SVG">hello.svg</dd:property>
@@ -8,4 +26,4 @@
<dd:invoke partnerLink="serviceAndProcessForHelloPortPlkVar">
<dd:service name="tns:HelloService" port="HelloPort"></dd:service>
</dd:invoke>
-</dd:process></dd:deploy>
\ No newline at end of file
+</dd:process></dd:deploy>
Modified: branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSoapHeader2/hello-process.bpel
===================================================================
--- branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSoapHeader2/hello-process.bpel 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSoapHeader2/hello-process.bpel 2010-05-27 15:55:40 UTC (rev 675)
@@ -1,4 +1,22 @@
<?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.
+ -->
<bpel:process xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable" xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop" xmlns:pnlk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ode="http://www.apache.org/ode/type/extension" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:this="http://example.com/hello/process" xmlns:client="http://example.com/hello/client" xmlns:tns="http://ode/bpel/unit-test.wsdl" xmlns:diag="http://example.com/hello" xmlns:service="http://example.com/hello/service" xmlns:bpmn="http://www.intalio.com/bpms" xmlns:atomic="http://ode.apache.org/atomicScope" queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0" expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0" bpmn:label="process" name="process" bpmn:id="_Ue3NkBenEd6EIOjxNvjNWw" targetNamespace="http://!
example.com/hello/process">
<bpel:import namespace="http://ode/bpel/unit-test.wsdl" location="HelloWorld2.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
<bpel:import namespace="http://example.com/hello" location="hello.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
@@ -78,4 +96,4 @@
</bpel:assign>
<bpel:reply partnerLink="processAndClientPlkVar" portType="this:Forclient" operation="EventStartMessage" variable="thisEventStartMessageResponse" bpmn:label="Message_End_Event" name="Message_End_Event-1" bpmn:id="_cYnYEBenEd6EIOjxNvjNWw"></bpel:reply>
</bpel:sequence>
-</bpel:process>
\ No newline at end of file
+</bpel:process>
Modified: branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSoapHeader2/hello-process.wsdl
===================================================================
--- branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSoapHeader2/hello-process.wsdl 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSoapHeader2/hello-process.wsdl 2010-05-27 15:55:40 UTC (rev 675)
@@ -1,4 +1,22 @@
<?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 xmlns:tns="http://ode/bpel/unit-test.wsdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:hello="http://ode/bpel/unit-test.wsdl" xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:client="http://example.com/hello/client" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:service="http://example.com/hello/service" xmlns:diag="http://example.com/hello" xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable" xmlns:pnlk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:this="http://example.com/hello/process" targetNamespace="http://example.com/hello/process">
<wsdl:types>
<xs:schema targetNamespace="http://ode/bpel/unit-test.wsdl">
@@ -37,4 +55,4 @@
<soap:address location="http://localhost:8080/ode/processes/hello/hello/process/client"/>
</wsdl:port>
</wsdl:service>
-</wsdl:definitions>
\ No newline at end of file
+</wsdl:definitions>
Modified: branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSoapHeader2/hello.wsdl
===================================================================
--- branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSoapHeader2/hello.wsdl 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSoapHeader2/hello.wsdl 2010-05-27 15:55:40 UTC (rev 675)
@@ -1,4 +1,22 @@
<?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 xmlns:process="http://example.com/hello/process" xmlns:tns="http://ode/bpel/unit-test.wsdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:diag="http://example.com/hello" xmlns:client="http://example.com/hello/client" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:pnlk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable" xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop" xmlns:bpdm="http://www.intalio/designer/business-process-data-modeling" targetNamespace="http://example.com/hello">
<wsdl:import namespace="http://ode/bpel/unit-test.wsdl" location="HelloWorld2.wsdl"/>
<wsdl:import namespace="http://example.com/hello/process" location="hello-process.wsdl"/>
@@ -8,4 +26,4 @@
<pnlk:partnerLinkType name="processAndClient">
<pnlk:role name="process_for_client" portType="process:Forclient"/>
</pnlk:partnerLinkType>
-</wsdl:definitions>
\ No newline at end of file
+</wsdl:definitions>
Modified: branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSoapHeader2/hello.xsd
===================================================================
--- branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSoapHeader2/hello.xsd 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/axis2-war/src/test/resources/TestSoapHeader2/hello.xsd 2010-05-27 15:55:40 UTC (rev 675)
@@ -1,4 +1,22 @@
<?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.
+ -->
<xsd:schema targetNamespace="http://ode/bpel/unit-test.wsdl"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
attributeFormDefault="qualified" elementFormDefault="qualified">
Modified: branches/ODE/ODE-1.x/axis2-war/src/test/resources/test-log4j.properties
===================================================================
--- branches/ODE/ODE-1.x/axis2-war/src/test/resources/test-log4j.properties 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/axis2-war/src/test/resources/test-log4j.properties 2010-05-27 15:55:40 UTC (rev 675)
@@ -1,36 +1,40 @@
+#
+# 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, CONSOLE
+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 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
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=%d{MM-dd@HH:mm:ss} %-5p (%13F:%L) %3x - %m%n
-log4j.category.org.apache.ode.bpel.runtime=DEBUG
-
-# 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.category.httpclient=INFO
+log4j.category.httpclient.Wire=INFO
+log4j.category.org.apache.ode=INFO
+#log4j.category.hibernate=DEBUG
+#log4j.category.org.hibernate=DEBUG
Added: branches/ODE/ODE-1.x/axis2-war/src/test/webapp/WEB-INF/conf/ode-axis2.properties
===================================================================
--- branches/ODE/ODE-1.x/axis2-war/src/test/webapp/WEB-INF/conf/ode-axis2.properties (rev 0)
+++ branches/ODE/ODE-1.x/axis2-war/src/test/webapp/WEB-INF/conf/ode-axis2.properties 2010-05-27 15:55:40 UTC (rev 675)
@@ -0,0 +1,23 @@
+#
+# 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.
+#
+
+ode-axis2.dao.factory=org.apache.ode.axis2.instancecleanup.HibDaoConnectionFactoryImpl
+ode-axis2.db.emb.name=hibdb
+ode-axis2.db.mode=EMBEDDED
+ode-axis2.cluster.localRoute.targets=http://doesntexist:8080/ode/processes/
+ode-axis2.cluster.localRoute.base=http://localhost:8888/ode/processes/
+ode-axis2.event.listeners=org.apache.ode.bpel.common.evt.DebugBpelEventListener
Modified: branches/ODE/ODE-1.x/bpel-api/pom.xml
===================================================================
--- branches/ODE/ODE-1.x/bpel-api/pom.xml 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-api/pom.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -28,7 +28,7 @@
<parent>
<groupId>org.apache.ode</groupId>
<artifactId>ode</artifactId>
- <version>1.3.4-SNAPSHOT</version>
+ <version>1.3.4</version>
</parent>
<dependencies>
Modified: branches/ODE/ODE-1.x/bpel-api/src/main/java/org/apache/ode/bpel/common/CorrelationKey.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-api/src/main/java/org/apache/ode/bpel/common/CorrelationKey.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-api/src/main/java/org/apache/ode/bpel/common/CorrelationKey.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -131,6 +131,10 @@
* @return <code>true</code> if the given object
*/
public boolean equals(Object o) {
+ if (!(o instanceof CorrelationKey)) {
+ return false;
+ }
+
CorrelationKey okey = (CorrelationKey) o;
if (okey == null || !okey._csetName.equals(_csetName) || okey._keyValues.length != _keyValues.length)
Modified: branches/ODE/ODE-1.x/bpel-api/src/main/java/org/apache/ode/bpel/common/CorrelationKeySet.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-api/src/main/java/org/apache/ode/bpel/common/CorrelationKeySet.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-api/src/main/java/org/apache/ode/bpel/common/CorrelationKeySet.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -79,7 +79,7 @@
*/
public CorrelationKeySet add(CorrelationKey ck) {
for( CorrelationKey key : correlationKeys ) {
- if( key.getCorrelationSetName() == ck.getCorrelationSetName() ) {
+ if( key.getCorrelationSetName().equals(ck.getCorrelationSetName()) ) {
correlationKeys.remove(ck);
break;
}
Modified: branches/ODE/ODE-1.x/bpel-api/src/main/java/org/apache/ode/bpel/evt/ScopeCompletionEvent.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-api/src/main/java/org/apache/ode/bpel/evt/ScopeCompletionEvent.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-api/src/main/java/org/apache/ode/bpel/evt/ScopeCompletionEvent.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -26,32 +26,6 @@
public class ScopeCompletionEvent extends ScopeEvent {
private static final long serialVersionUID = 1L;
- private boolean _success;
- private QName _fault;
-
- public ScopeCompletionEvent(boolean success, QName fault) {
- _success = success;
- _fault = fault;
+ public ScopeCompletionEvent() {
}
-
- /**
- * @param fault The fault to set.
- */
- public void setFault(QName fault) {
- _fault = fault;
- }
-
- /**
- * @return Returns the fault.
- */
- public QName getFault() {
- return _fault;
- }
-
- public boolean isSuccess() {
- return _success;
- }
- public void setSuccess(boolean success) {
- _success = success;
- }
}
Modified: branches/ODE/ODE-1.x/bpel-api/src/main/java/org/apache/ode/bpel/evt/VariableModificationEvent.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-api/src/main/java/org/apache/ode/bpel/evt/VariableModificationEvent.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-api/src/main/java/org/apache/ode/bpel/evt/VariableModificationEvent.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -24,7 +24,7 @@
public class VariableModificationEvent extends VariableEvent {
private static final long serialVersionUID = 1L;
- private Node newValue;
+ private transient Node newValue;
public VariableModificationEvent() {
super();
Modified: branches/ODE/ODE-1.x/bpel-api/src/main/java/org/apache/ode/bpel/iapi/ClusterAware.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-api/src/main/java/org/apache/ode/bpel/iapi/ClusterAware.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-api/src/main/java/org/apache/ode/bpel/iapi/ClusterAware.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -1,3 +1,21 @@
+/*
+ * 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.bpel.iapi;
/**
Modified: branches/ODE/ODE-1.x/bpel-api/src/main/java/org/apache/ode/bpel/iapi/Endpoint.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-api/src/main/java/org/apache/ode/bpel/iapi/Endpoint.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-api/src/main/java/org/apache/ode/bpel/iapi/Endpoint.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -47,6 +47,9 @@
*/
@Override
public boolean equals(Object other) {
+ if (!(other instanceof Endpoint)) {
+ return false;
+ }
Endpoint o = (Endpoint) other;
return o.serviceName.equals(serviceName) && o.portName.equals(portName);
}
Modified: branches/ODE/ODE-1.x/bpel-api/src/main/java/org/apache/ode/bpel/iapi/ProcessConf.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-api/src/main/java/org/apache/ode/bpel/iapi/ProcessConf.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-api/src/main/java/org/apache/ode/bpel/iapi/ProcessConf.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -33,6 +33,7 @@
import org.apache.ode.bpel.evt.BpelEvent;
import org.apache.ode.bpel.o.OFailureHandling;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
import org.apache.ode.utils.CronExpression;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
@@ -214,7 +215,7 @@
public class CronJob {
private CronExpression _cronExpression;
- private final List<Map<String,Object>> runnableDetailList = new ArrayList<Map<String,Object>>();
+ private final List<JobDetails> runnableDetailList = new ArrayList<JobDetails>();
public void setCronExpression(CronExpression _cronExpression) {
this._cronExpression = _cronExpression;
@@ -224,7 +225,7 @@
return _cronExpression;
}
- public List<Map<String,Object>> getRunnableDetailList() {
+ public List<JobDetails> getRunnableDetailList() {
return runnableDetailList;
}
@@ -240,7 +241,7 @@
}
}
- public class CleanupInfo {
+ public class CleanupInfo implements java.io.Serializable {
private List<String> _filters = new ArrayList<String>();
private final Set<CLEANUP_CATEGORY> _categories = EnumSet.noneOf(CLEANUP_CATEGORY.class);
Modified: branches/ODE/ODE-1.x/bpel-api/src/main/java/org/apache/ode/bpel/iapi/Scheduler.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-api/src/main/java/org/apache/ode/bpel/iapi/Scheduler.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-api/src/main/java/org/apache/ode/bpel/iapi/Scheduler.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -26,6 +26,10 @@
import java.util.concurrent.Callable;
import java.util.concurrent.Future;
+import javax.xml.namespace.QName;
+
+import org.apache.ode.bpel.common.CorrelationKeySet;
+
/**
* The BPEL scheduler.
*/
@@ -42,7 +46,7 @@
* @param when when the job should run (<code>null</code> means now)
* @return unique job identifier
*/
- String schedulePersistedJob(Map<String,Object>jobDetail,Date when)
+ String schedulePersistedJob(JobDetails jobDetail,Date when)
throws ContextException ;
@@ -66,13 +70,13 @@
* @param when does the job should be executed?
* @return unique (as far as the scheduler is concerned) job identifier
*/
- String scheduleVolatileJob(boolean transacted, Map<String,Object> jobDetail, Date when) throws ContextException;
+ String scheduleVolatileJob(boolean transacted, JobDetails jobDetail, Date when) throws ContextException;
/**
* Schedule a volatile job for right now
* @see #scheduleVolatileJob(boolean, java.util.Map, java.util.Date)
*/
- String scheduleVolatileJob(boolean transacted, Map<String,Object> jobDetail) throws ContextException;
+ String scheduleVolatileJob(boolean transacted, JobDetails jobDetail) throws ContextException;
/**
* Make a good effort to cancel the job. If its already running no big
@@ -166,6 +170,105 @@
void onScheduledJob(JobInfo jobInfo) throws JobProcessorException;
}
+ public enum JobType {
+ TIMER,
+ RESUME,
+ INVOKE_INTERNAL,
+ INVOKE_RESPONSE,
+ MATCHER,
+ INVOKE_CHECK
+ }
+
+ public static class JobDetails {
+ public Long instanceId;
+ public String mexId;
+ public String processId;
+ public String type;
+ public String channel;
+ public String correlatorId;
+ public String correlationKeySet;
+ public Integer retryCount;
+ public Boolean inMem;
+ public Map<String, Object> detailsExt = new HashMap<String, Object>();
+
+ public Boolean getInMem() {
+ return inMem == null ? false : inMem;
+ }
+ public void setInMem(Boolean inMem) {
+ this.inMem = inMem;
+ }
+ public String getMexId() {
+ return mexId;
+ }
+ public void setMexId(String mexId) {
+ this.mexId = mexId;
+ }
+ public QName getProcessId() {
+ return processId == null ? null : QName.valueOf(processId);
+ }
+ public void setProcessId(QName processId) {
+ this.processId = "" + processId;
+ }
+ public JobType getType() {
+ return JobType.valueOf(type);
+ }
+ public void setType(JobType type) {
+ this.type = type.toString();
+ }
+ public String getChannel() {
+ return channel;
+ }
+ public void setChannel(String channel) {
+ this.channel = channel;
+ }
+ public String getCorrelatorId() {
+ return correlatorId;
+ }
+ public void setCorrelatorId(String correlatorId) {
+ this.correlatorId = correlatorId;
+ }
+ public CorrelationKeySet getCorrelationKeySet() {
+ return new CorrelationKeySet(correlationKeySet);
+ }
+ public void setCorrelationKeySet(CorrelationKeySet correlationKeySet) {
+ this.correlationKeySet = correlationKeySet == null ? null : correlationKeySet.toCanonicalString();
+ }
+ public Integer getRetryCount() {
+ return retryCount == null ? 0 : retryCount;
+ }
+ public void setRetryCount(Integer retryCount) {
+ this.retryCount = retryCount;
+ }
+ public Long getInstanceId() {
+ return instanceId;
+ }
+ public void setInstanceId(Long instanceId) {
+ this.instanceId = instanceId;
+ }
+ public Map<String, Object> getDetailsExt() {
+ return detailsExt;
+ }
+ public void setDetailsExt(Map<String, Object> detailsExt) {
+ this.detailsExt = detailsExt;
+ }
+
+ @Override
+ public String toString() {
+ return "JobDetails("
+ + " instanceId: " + instanceId
+ + " mexId: " + mexId
+ + " processId: " + processId
+ + " type: " + type
+ + " channel: " + channel
+ + " correlatorId: " + correlatorId
+ + " correlationKeySet: " + correlationKeySet
+ + " retryCount: " + retryCount
+ + " inMem: " + inMem
+ + " detailsExt: " + detailsExt
+ + ")";
+ }
+ }
+
/**
* Wrapper containing information about a scheduled job.
* @author mszefler
@@ -174,17 +277,16 @@
private static final long serialVersionUID = 1L;
public final String jobName;
public final int retryCount;
- public final Map<String,Object> jobDetail;
+ public final JobDetails jobDetail;
- public JobInfo(String jobName, Map<String,Object>jobDetail, int retryCount) {
+ public JobInfo(String jobName, JobDetails jobDetail, int retryCount) {
this.jobName = jobName;
this.jobDetail = jobDetail;
this.retryCount = retryCount;
}
public String toString() {
- // Wrap in hashmap in case the underlying object has no toString method.
- return jobName + "["+retryCount +"]: " + new HashMap<Object, Object>(jobDetail);
+ return jobName + "["+retryCount +"]: " + jobDetail;
}
}
@@ -193,7 +295,7 @@
* processing.
* @author mszefler
*/
- public class JobProcessorException extends Exception {
+ public class JobProcessorException extends RuntimeException {
private static final long serialVersionUID = 1L;
public final boolean retry;
@@ -208,7 +310,7 @@
}
public interface MapSerializableRunnable extends Runnable, Serializable {
- void storeToDetailsMap(Map<String, Object> details);
- void restoreFromDetailsMap(Map<String, Object> details);
+ void storeToDetails(JobDetails details);
+ void restoreFromDetails(JobDetails details);
}
}
\ No newline at end of file
Modified: branches/ODE/ODE-1.x/bpel-api-jca/pom.xml
===================================================================
--- branches/ODE/ODE-1.x/bpel-api-jca/pom.xml 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-api-jca/pom.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -28,7 +28,7 @@
<parent>
<groupId>org.apache.ode</groupId>
<artifactId>ode</artifactId>
- <version>1.3.4-SNAPSHOT</version>
+ <version>1.3.4</version>
</parent>
<dependencies>
Modified: branches/ODE/ODE-1.x/bpel-compiler/pom.xml
===================================================================
--- branches/ODE/ODE-1.x/bpel-compiler/pom.xml 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-compiler/pom.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -26,7 +26,7 @@
<parent>
<groupId>org.apache.ode</groupId>
<artifactId>ode</artifactId>
- <version>1.3.4-SNAPSHOT</version>
+ <version>1.3.4</version>
</parent>
<dependencies>
Modified: branches/ODE/ODE-1.x/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/BpelCompiler.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/BpelCompiler.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/BpelCompiler.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -302,7 +302,7 @@
}
// A "real" variable couldn't be found, checking if we're dealing with a
// process custom property
- if (_customProcessProperties != null && _customProcessProperties.get(varName) != null) {
+ if (_customProcessProperties != null && _customProcessProperties.get(QName.valueOf(varName)) != null) {
}
throw new CompilationException(__cmsgs.errUndeclaredVariable(varName));
@@ -1074,7 +1074,7 @@
oplink.myRoleName = myRole.getName();
QName portType = myRole.getPortType();
if (portType == null)
- throw new CompilationException(__cmsgs.errMissingMyRolePortType(portType, plink.getMyRole(), plinkType.getName()));
+ throw new CompilationException(__cmsgs.errMissingMyRolePortType(myRole.getPortType(), plink.getMyRole(), plinkType.getName()));
oplink.myRolePortType = resolvePortType(portType);
}
@@ -1089,7 +1089,7 @@
oplink.partnerRoleName = partnerRole.getName();
QName portType = partnerRole.getPortType();
if (portType == null)
- throw new CompilationException(__cmsgs.errMissingPartnerRolePortType(portType, plink.getPartnerRole(), plinkType.getName()));
+ throw new CompilationException(__cmsgs.errMissingPartnerRolePortType(partnerRole.getPortType(), plink.getPartnerRole(), plinkType.getName()));
oplink.partnerRolePortType = resolvePortType(portType);
}
Modified: branches/ODE/ODE-1.x/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/bom/InvokeActivity.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/bom/InvokeActivity.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/bom/InvokeActivity.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -86,7 +86,7 @@
* @author mszefler
*
*/
- class BastardScope extends Scope {
+ static class BastardScope extends Scope {
public BastardScope(Element el) {
super(el);
Modified: branches/ODE/ODE-1.x/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/bom/Scope.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/bom/Scope.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/bom/Scope.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -160,7 +160,7 @@
return Boolean.TRUE;
if ("no".equals(value))
return Boolean.FALSE;
- return null;
+ return Boolean.FALSE;
}
/**
Modified: branches/ODE/ODE-1.x/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/JaxpFunctionResolver.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/JaxpFunctionResolver.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/JaxpFunctionResolver.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -167,7 +167,7 @@
/**
* Compile time checking for the non standard ode:splitToElements function.
*/
- public class SplitToElements implements XPathFunction {
+ public static class SplitToElements implements XPathFunction {
public Object evaluate(List params) throws XPathFunctionException {
if (params.size() < 3 || params.size() > 4) {
throw new CompilationException(
@@ -205,7 +205,7 @@
}
}
- public class InsertInto implements XPathFunction {
+ public static class InsertInto implements XPathFunction {
public Object evaluate(List args) throws XPathFunctionException {
if (args.size() != 3) {
throw new CompilationException(__msgs.errInvalidNumberOfArguments(Constants.NON_STDRD_FUNCTION_INSERT_AFTER));
@@ -214,7 +214,7 @@
}
}
- public class InsertAfter implements XPathFunction {
+ public static class InsertAfter implements XPathFunction {
public Object evaluate(List args) throws XPathFunctionException {
if (args.size() < 2 || args.size() > 3) {
throw new CompilationException(__msgs.errInvalidNumberOfArguments(Constants.NON_STDRD_FUNCTION_INSERT_AFTER));
@@ -223,7 +223,7 @@
}
}
- public class InsertBefore implements XPathFunction {
+ public static class InsertBefore implements XPathFunction {
public Object evaluate(List args) throws XPathFunctionException {
if (args.size() < 2 || args.size() > 3) {
throw new CompilationException(__msgs.errInvalidNumberOfArguments(Constants.NON_STDRD_FUNCTION_INSERT_BEFORE));
@@ -232,7 +232,7 @@
}
}
- public class InsertAsFirstInto implements XPathFunction {
+ public static class InsertAsFirstInto implements XPathFunction {
public Object evaluate(List args) throws XPathFunctionException {
if (args.size() != 2) {
throw new CompilationException(__msgs.errInvalidNumberOfArguments(Constants.NON_STDRD_FUNCTION_INSERT_AS_FIRST_INTO));
@@ -241,7 +241,7 @@
}
}
- public class InsertAsLastInto implements XPathFunction {
+ public static class InsertAsLastInto implements XPathFunction {
public Object evaluate(List args) throws XPathFunctionException {
if (args.size() != 2) {
throw new CompilationException(__msgs.errInvalidNumberOfArguments(Constants.NON_STDRD_FUNCTION_INSERT_AS_LAST_INTO));
@@ -250,7 +250,7 @@
}
}
- public class Delete implements XPathFunction {
+ public static class Delete implements XPathFunction {
public Object evaluate(List args) throws XPathFunctionException {
if (args.size() < 1 || args.size() > 2) {
throw new CompilationException(__msgs.errInvalidNumberOfArguments(Constants.NON_STDRD_FUNCTION_DELETE));
@@ -259,7 +259,7 @@
}
}
- public class Rename implements XPathFunction {
+ public static class Rename implements XPathFunction {
public Object evaluate(List args) throws XPathFunctionException {
if (args.size() < 2) {
throw new CompilationException(__msgs.errInvalidNumberOfArguments(Constants.NON_STDRD_FUNCTION_RENAME));
@@ -268,7 +268,7 @@
}
}
- public class ProcessProperty implements XPathFunction {
+ public static class ProcessProperty implements XPathFunction {
public Object evaluate(List args) throws XPathFunctionException {
if (args.size() != 1) {
throw new CompilationException(__msgs.errInvalidNumberOfArguments(Constants.NON_STDRD_FUNCTION_PROCESS_PROPERTY));
@@ -277,7 +277,7 @@
}
}
- public class DayTimeDuration implements XPathFunction {
+ public static class DayTimeDuration implements XPathFunction {
public Object evaluate(List args) throws XPathFunctionException {
if (args.size() != 1) {
throw new CompilationException(__msgs.errInvalidNumberOfArguments(Constants.NON_STDRD_FUNCTION_DAY_TIME_DURATION));
@@ -286,7 +286,7 @@
}
}
- public class YearMonthDuration implements XPathFunction {
+ public static class YearMonthDuration implements XPathFunction {
public Object evaluate(List args) throws XPathFunctionException {
if (args.size() != 1) {
throw new CompilationException(__msgs.errInvalidNumberOfArguments(Constants.NON_STDRD_FUNCTION_YEAR_MONTH_DURATION));
Modified: branches/ODE/ODE-1.x/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/OdeXPathFunctionLibrary.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/OdeXPathFunctionLibrary.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/OdeXPathFunctionLibrary.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -37,7 +37,7 @@
public class OdeXPathFunctionLibrary extends net.sf.saxon.xpath.XPathFunctionLibrary {
private static final long serialVersionUID = -8885396864277163797L;
- private JaxpFunctionResolver _funcResolver;
+ private transient JaxpFunctionResolver _funcResolver;
public OdeXPathFunctionLibrary(JaxpFunctionResolver funcResolver) {
_funcResolver = funcResolver;
Modified: branches/ODE/ODE-1.x/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/SaxonContext.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/SaxonContext.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/SaxonContext.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -35,8 +35,10 @@
*/
public class SaxonContext extends JAXPXPathStaticContext {
- private JaxpVariableResolver _varResolver;
- private JaxpFunctionResolver _funcResolver;
+
+ private static final long serialVersionUID = 2460900369574468960L;
+ private transient JaxpVariableResolver _varResolver;
+ private transient JaxpFunctionResolver _funcResolver;
public SaxonContext(Configuration config, JaxpVariableResolver varResolver,
JaxpFunctionResolver funcResolver) {
Modified: branches/ODE/ODE-1.x/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/XPath20ExpressionCompilerImpl.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/XPath20ExpressionCompilerImpl.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/XPath20ExpressionCompilerImpl.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -20,9 +20,12 @@
package org.apache.ode.bpel.elang.xpath20.compiler;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import javax.xml.namespace.QName;
import javax.xml.transform.TransformerFactory;
@@ -251,60 +254,19 @@
* @return list of function expressions that may not have been resolved properly
*/
private List<String> extractFunctionExprs(String xpathStr) {
- ArrayList<String> functionExprs = new ArrayList<String>();
+ ArrayList<String> functionExprs = new ArrayList<String>();
+ // Match the prefix : function name ( all contents except the ) and the closing )'s that may occur
+ final String FUNCTION_REGEX = "\\w+:\\w+\\([.[^\\)]]*\\)*";
int firstFunction = xpathStr.indexOf("("),
lastFunction = xpathStr.lastIndexOf("(");
- StringBuffer functionExpr = new StringBuffer();
- if ((firstFunction > 0 && // the xpath contains a function
- firstFunction < lastFunction)) { // the xpath references multiple variables
- // most likely, the variable reference has not been resolved, so make that happen
- boolean quoted = false, doubleQuoted = false, function = false, arguments = false;
- Name11Checker nameChecker = Name11Checker.getInstance();
- for (int index = firstFunction; index < xpathStr.length(); index++) {
- if (!function) {
- int colonIndex = xpathStr.indexOf(':', index);
- if (colonIndex == -1) {
- break;
- }
- while (colonIndex >= 0 && nameChecker.isNCNameChar(xpathStr.charAt(--colonIndex)));
- if (xpathStr.charAt(colonIndex) == '$') {
- index = xpathStr.indexOf(':', index) + 1;
- continue;
- }
- function = true;
- arguments = false;
- functionExpr.setLength(0);
- index = colonIndex;
- continue;
- }
- char ch = xpathStr.charAt(index);
- if (function) {
- functionExpr.append(ch);
- // in the name is qualified, don't check if its a qname when we're at the ":" character
- if (ch == ':') {
- continue;
- } else if (ch == '(') {
- if (nameChecker.isQName(functionExpr.substring(0, functionExpr.length() - 1))) {
- arguments = true;
- } else {
- function = false;
- continue;
- }
- } else if (ch == ')') {
- if (arguments) {
- function = false;
- functionExprs.add(functionExpr.toString());
- functionExpr.setLength(0);
- }
- } else {
- if (!arguments) {
- if (!nameChecker.isQName(functionExpr.substring(0, functionExpr.length()))) {
- function = false;
- }
- }
- }
- }
- }
+ if ((firstFunction > 0 && firstFunction < lastFunction)) {
+ Pattern regex = Pattern.compile(FUNCTION_REGEX);
+ Matcher matcher = regex.matcher(xpathStr);
+
+ while (matcher.find()) {
+ String function = matcher.group();
+ functionExprs.add(function);
+ }
}
return functionExprs;
}
Modified: branches/ODE/ODE-1.x/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xquery10/compiler/XQuery10BpelFunctions.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xquery10/compiler/XQuery10BpelFunctions.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xquery10/compiler/XQuery10BpelFunctions.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -146,18 +146,21 @@
*/
private static XPathFunction resolveFunction(XPathContext context,
QName name) {
- JaxpFunctionResolver funcResolver = null;
Item item = context.getCurrentIterator().current();
+ XPathFunction function = null;
if (item instanceof NodeWrapper) {
Node node = (Node) ((NodeWrapper) item).getUnderlyingNode();
-
+ JaxpFunctionResolver funcResolver = null;
if (node != null) {
funcResolver = (JaxpFunctionResolver) node.getUserData(USER_DATA_KEY_FUNCTION_RESOLVER);
}
+ if (funcResolver != null) {
+ function = funcResolver.resolveFunction(name, 0);
+ }
}
- return funcResolver.resolveFunction(name, 0);
+ return function;
}
/**
Modified: branches/ODE/ODE-1.x/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xquery10/compiler/XQuery10ExpressionCompilerImpl.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xquery10/compiler/XQuery10ExpressionCompilerImpl.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xquery10/compiler/XQuery10ExpressionCompilerImpl.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -365,7 +365,7 @@
return typeQName;
}
- private class XQueryDeclarations {
+ private static class XQueryDeclarations {
StringBuffer declarations = new StringBuffer();
public XQueryDeclarations() {}
Added: branches/ODE/ODE-1.x/bpel-compiler/src/test/java/org/apache/ode/bpel/elang/xpath20/compiler/XPath20ExpressionCompilerImplTest.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-compiler/src/test/java/org/apache/ode/bpel/elang/xpath20/compiler/XPath20ExpressionCompilerImplTest.java (rev 0)
+++ branches/ODE/ODE-1.x/bpel-compiler/src/test/java/org/apache/ode/bpel/elang/xpath20/compiler/XPath20ExpressionCompilerImplTest.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -0,0 +1,86 @@
+/*
+ * 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.bpel.elang.xpath20.compiler;
+
+import java.lang.reflect.Method;
+import java.util.List;
+
+import org.junit.*;
+
+
+public class XPath20ExpressionCompilerImplTest {
+
+ private static final String TEST_NAMESPACE = "http://www.example.com/";
+ private static final String EXTRACT_FUNCTION_EXPRS = "extractFunctionExprs";
+
+ @Test
+ public void testresolvedFunctionsExpr() throws Exception {
+ XPath20ExpressionCompilerImpl xp20Exp = new XPath20ExpressionCompilerImpl(TEST_NAMESPACE);
+ final Method[] methods =
+ xp20Exp.getClass().getDeclaredMethods();
+ for (int i = 0; i < methods.length; ++i) {
+ if (methods[i].getName().equals(EXTRACT_FUNCTION_EXPRS)) {
+ final Object params[] = { "count(count(1))" };
+ methods[i].setAccessible(true);
+ Object ret = methods[i].invoke(xp20Exp, params);
+ List<?> values = (List<?>) ret;
+ Assert.assertEquals(0, values.size());
+ }
+ }
+ }
+
+ @Test
+ public void testTimeStampInFunction() throws Exception {
+ XPath20ExpressionCompilerImpl xp20Exp = new XPath20ExpressionCompilerImpl(TEST_NAMESPACE);
+ final Method[] methods =
+ xp20Exp.getClass().getDeclaredMethods();
+ for (int i = 0; i < methods.length; ++i) {
+ if (methods[i].getName().equals(EXTRACT_FUNCTION_EXPRS)) {
+ final Object params[] = { "concat(xs:concat(\"P\", \"08:30:00.000+08:00\"))" };
+ methods[i].setAccessible(true);
+ Object ret = methods[i].invoke(xp20Exp, params);
+ List<?> values = (List<?>) ret;
+ Assert.assertEquals(1, values.size());
+ }
+ }
+
+ }
+
+ @Test
+ public void testresolvedFunctionsTimeStamp() throws Exception {
+ XPath20ExpressionCompilerImpl xp20Exp = new XPath20ExpressionCompilerImpl(TEST_NAMESPACE);
+ final Method[] methods =
+ xp20Exp.getClass().getDeclaredMethods();
+ for (int i = 0; i < methods.length; ++i) {
+ if (methods[i].getName().equals(EXTRACT_FUNCTION_EXPRS)) {
+ final Object params[] = { "concat(current-date() + xs:dayTimeDuration(concat(\"P\", $DAYS_TO_NEXT_REMINDER, \"D\")), \"T\", \"08:30:00.000+08:00\")" };
+ methods[i].setAccessible(true);
+ Object ret = methods[i].invoke(xp20Exp, params);
+ List<?> values = (List<?>) ret;
+ Assert.assertEquals(1, values.size());
+ Assert.assertEquals("Unexpected Function value", "xs:dayTimeDuration(concat(\"P\", $DAYS_TO_NEXT_REMINDER, \"D\"))", (String)values.get(0));
+ }
+ }
+ }
+
+
+
+
+}
Modified: branches/ODE/ODE-1.x/bpel-compiler/src/test/java/org/apache/ode/bpel/elang/xquery10/compiler/XQuery10ExpressionCompilerImplTest.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-compiler/src/test/java/org/apache/ode/bpel/elang/xquery10/compiler/XQuery10ExpressionCompilerImplTest.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-compiler/src/test/java/org/apache/ode/bpel/elang/xquery10/compiler/XQuery10ExpressionCompilerImplTest.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -1,3 +1,21 @@
+/*
+ * 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.bpel.elang.xquery10.compiler;
import java.util.Arrays;
Modified: branches/ODE/ODE-1.x/bpel-compiler/src/test/resources/log4j.properties
===================================================================
--- branches/ODE/ODE-1.x/bpel-compiler/src/test/resources/log4j.properties 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-compiler/src/test/resources/log4j.properties 2010-05-27 15:55:40 UTC (rev 675)
@@ -32,5 +32,5 @@
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{MM-dd@HH:mm:ss} %-5p (%13F:%L) %3x - %m%n
-log4j.category.org.apache.ode=DEBUG
+log4j.category.org.apache.ode=INFO
Modified: branches/ODE/ODE-1.x/bpel-connector/pom.xml
===================================================================
--- branches/ODE/ODE-1.x/bpel-connector/pom.xml 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-connector/pom.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -26,7 +26,7 @@
<parent>
<groupId>org.apache.ode</groupId>
<artifactId>ode</artifactId>
- <version>1.3.4-SNAPSHOT</version>
+ <version>1.3.4</version>
</parent>
<dependencies>
Modified: branches/ODE/ODE-1.x/bpel-dao/pom.xml
===================================================================
--- branches/ODE/ODE-1.x/bpel-dao/pom.xml 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-dao/pom.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -28,7 +28,7 @@
<parent>
<groupId>org.apache.ode</groupId>
<artifactId>ode</artifactId>
- <version>1.3.4-SNAPSHOT</version>
+ <version>1.3.4</version>
</parent>
<dependencies>
Modified: branches/ODE/ODE-1.x/bpel-dao/src/main/java/org/apache/ode/bpel/dao/DeferredProcessInstanceCleanable.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-dao/src/main/java/org/apache/ode/bpel/dao/DeferredProcessInstanceCleanable.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-dao/src/main/java/org/apache/ode/bpel/dao/DeferredProcessInstanceCleanable.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -1,3 +1,21 @@
+/*
+ * 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.bpel.dao;
import java.io.Serializable;
Modified: branches/ODE/ODE-1.x/bpel-dao/src/main/java/org/apache/ode/bpel/dao/FilteredInstanceDeletable.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-dao/src/main/java/org/apache/ode/bpel/dao/FilteredInstanceDeletable.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-dao/src/main/java/org/apache/ode/bpel/dao/FilteredInstanceDeletable.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -1,3 +1,21 @@
+/*
+ * 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.bpel.dao;
import java.util.Set;
Modified: branches/ODE/ODE-1.x/bpel-dao/src/main/java/org/apache/ode/bpel/dao/ScopeStateEnum.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-dao/src/main/java/org/apache/ode/bpel/dao/ScopeStateEnum.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-dao/src/main/java/org/apache/ode/bpel/dao/ScopeStateEnum.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -18,39 +18,6 @@
*/
package org.apache.ode.bpel.dao;
-public class ScopeStateEnum {
- /** DOCUMENTME */
- public static final ScopeStateEnum ACTIVE = new ScopeStateEnum("ACTIVE");
-
- /** DOCUMENTME */
- public static final ScopeStateEnum FAULTED = new ScopeStateEnum("FAULTED");
-
- /** DOCUMENTME */
- public static final ScopeStateEnum FAULTHANDLER = new ScopeStateEnum("FAULTHANDLER");
-
- /** DOCUMENTME */
- public static final ScopeStateEnum COMPLETED = new ScopeStateEnum("COMPLETED");
-
- /** DOCUMENTME */
- public static final ScopeStateEnum COMPENSATING = new ScopeStateEnum("COMPENSATING");
-
- /** DOCUMENTME */
- public static final ScopeStateEnum COMPENSATED = new ScopeStateEnum("COMPENSATED");
- private final String myName; // for debug only
-
- public ScopeStateEnum(String name) {
- myName = name;
- }
-
- public boolean equals(Object o) {
- return ((ScopeStateEnum)o).myName.equals(myName);
- }
-
- public int hashCode() {
- return myName.hashCode();
- }
-
- public String toString() {
- return myName;
- }
+public enum ScopeStateEnum {
+ NEW, ACTIVE, FAULT, COMPLETED
}
Modified: branches/ODE/ODE-1.x/bpel-epr/pom.xml
===================================================================
--- branches/ODE/ODE-1.x/bpel-epr/pom.xml 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-epr/pom.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -28,7 +28,7 @@
<parent>
<groupId>org.apache.ode</groupId>
<artifactId>ode</artifactId>
- <version>1.3.4-SNAPSHOT</version>
+ <version>1.3.4</version>
</parent>
<dependencies>
Modified: branches/ODE/ODE-1.x/bpel-epr/src/main/java/org/apache/ode/il/MockScheduler.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-epr/src/main/java/org/apache/ode/il/MockScheduler.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-epr/src/main/java/org/apache/ode/il/MockScheduler.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -69,7 +69,7 @@
}
};
- public String schedulePersistedJob(final Map<String, Object> detail, final Date date) throws ContextException {
+ public String schedulePersistedJob(final JobDetails detail, final Date date) throws ContextException {
if (date != null) {
return scheduleVolatileJob(true, detail, date);
} else {
@@ -77,11 +77,11 @@
}
}
- public String scheduleVolatileJob(boolean transacted, Map<String, Object> jobDetail) throws ContextException {
+ public String scheduleVolatileJob(boolean transacted, JobDetails jobDetail) throws ContextException {
return scheduleVolatileJob(transacted, jobDetail, null);
}
- public String scheduleVolatileJob(final boolean transacted, final Map<String, Object> detail, final Date date) throws ContextException {
+ public String scheduleVolatileJob(final boolean transacted, final JobDetails detail, final Date date) throws ContextException {
if (date != null) {
registerSynchronizer(new Synchronizer() {
public void afterCompletion(boolean success) {
@@ -113,7 +113,7 @@
}
}
- private void exec(boolean transacted, final Map<String, Object> detail) {
+ private void exec(boolean transacted, final JobDetails detail) {
try {
if (transacted) {
@@ -148,7 +148,7 @@
});
return null;
} else {
- return scheduleVolatileJob(true, new HashMap<String, Object>());
+ return scheduleVolatileJob(true, new JobDetails());
}
}
Modified: branches/ODE/ODE-1.x/bpel-obj/pom.xml
===================================================================
--- branches/ODE/ODE-1.x/bpel-obj/pom.xml 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-obj/pom.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -28,7 +28,7 @@
<parent>
<groupId>org.apache.ode</groupId>
<artifactId>ode</artifactId>
- <version>1.3.4-SNAPSHOT</version>
+ <version>1.3.4</version>
</parent>
<dependencies>
Modified: branches/ODE/ODE-1.x/bpel-obj/src/main/java/org/apache/ode/bpel/o/OMessageVarType.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-obj/src/main/java/org/apache/ode/bpel/o/OMessageVarType.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-obj/src/main/java/org/apache/ode/bpel/o/OMessageVarType.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -68,6 +68,14 @@
return el;
}
+ public String toString() {
+ StringBuffer buf = new StringBuffer(super.toString());
+ buf.append('(');
+ buf.append(this.messageType.toString());
+ buf.append(')');
+ return buf.toString();
+ }
+
public static class Part extends OBase {
private static final long serialVersionUID = -2356665271228433779L;
Modified: branches/ODE/ODE-1.x/bpel-ql/pom.xml
===================================================================
--- branches/ODE/ODE-1.x/bpel-ql/pom.xml 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-ql/pom.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -28,7 +28,7 @@
<parent>
<groupId>org.apache.ode</groupId>
<artifactId>ode</artifactId>
- <version>1.3.4-SNAPSHOT</version>
+ <version>1.3.4</version>
</parent>
<dependencies>
@@ -48,6 +48,7 @@
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>javacc-maven-plugin</artifactId>
+ <version>2.6</version>
<executions>
<execution>
<goals>
Modified: branches/ODE/ODE-1.x/bpel-runtime/pom.xml
===================================================================
--- branches/ODE/ODE-1.x/bpel-runtime/pom.xml 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-runtime/pom.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -28,7 +28,7 @@
<parent>
<groupId>org.apache.ode</groupId>
<artifactId>ode</artifactId>
- <version>1.3.4-SNAPSHOT</version>
+ <version>1.3.4</version>
</parent>
<dependencies>
Modified: branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelEngineImpl.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelEngineImpl.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelEngineImpl.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -52,7 +52,9 @@
import org.apache.ode.bpel.iapi.MessageExchange.MessageExchangePattern;
import org.apache.ode.bpel.iapi.MessageExchange.Status;
import org.apache.ode.bpel.iapi.MyRoleMessageExchange.CorrelationStatus;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
import org.apache.ode.bpel.iapi.Scheduler.JobInfo;
+import org.apache.ode.bpel.iapi.Scheduler.JobType;
import org.apache.ode.bpel.intercept.InterceptorInvoker;
import org.apache.ode.bpel.intercept.MessageExchangeInterceptor;
import org.apache.ode.bpel.intercept.ProcessCountThrottler;
@@ -370,31 +372,36 @@
if (process == null) return null;
return process.getOProcess();
}
-
- public void onScheduledJob(Scheduler.JobInfo jobInfo) throws Scheduler.JobProcessorException {
- final WorkEvent we = new WorkEvent(jobInfo.jobDetail);
-
- if( __log.isTraceEnabled() ) __log.trace("[JOB] onScheduledJob " + jobInfo + "" + we.getIID());
-
+
+ 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.getIID(), 1, TimeUnit.MICROSECONDS);
+ _instanceLockManager.lock(iid, 1, TimeUnit.MICROSECONDS);
_contexts.scheduler.registerSynchronizer(new Scheduler.Synchronizer() {
public void afterCompletion(boolean success) {
- _instanceLockManager.unlock(we.getIID());
+ _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.getIID() + " 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
@@ -405,11 +412,11 @@
process = _activeProcesses.get(we.getProcessId());
} else {
ProcessInstanceDAO instance;
- if (we.isInMem()) instance = _contexts.inMemDao.getConnection().getInstance(we.getIID());
- else instance = _contexts.dao.getConnection().getInstance(we.getIID());
+ if (we.getInMem()) instance = _contexts.inMemDao.getConnection().getInstance(we.getInstanceId());
+ else instance = _contexts.dao.getConnection().getInstance(we.getInstanceId());
if (instance == null) {
- __log.debug(__msgs.msgScheduledJobReferencesUnknownInstance(we.getIID()));
+ __log.debug(__msgs.msgScheduledJobReferencesUnknownInstance(we.getInstanceId()));
// nothing we can do, this instance is not in the database, it will always fail, not
// exactly an error since can occur in normal course of events.
return;
@@ -427,13 +434,13 @@
ClassLoader cl = Thread.currentThread().getContextClassLoader();
try {
Thread.currentThread().setContextClassLoader(process._classLoader);
- if (we.getType().equals(WorkEvent.Type.INVOKE_CHECK)) {
- if (__log.isDebugEnabled()) __log.debug("handleWorkEvent: InvokeCheck event for mexid " + we.getMexId());
+ if (we.getType().equals(JobType.INVOKE_CHECK)) {
+ if (__log.isDebugEnabled()) __log.debug("handleJobDetails: InvokeCheck event for mexid " + we.getMexId());
sendPartnerRoleFailure(we, MessageExchange.FailureType.COMMUNICATION_ERROR);
return;
- } else if (we.getType().equals(WorkEvent.Type.INVOKE_INTERNAL)) {
- if (__log.isDebugEnabled()) __log.debug("handleWorkEvent: InvokeInternal event for mexid " + we.getMexId());
+ } else if (we.getType().equals(JobType.INVOKE_INTERNAL)) {
+ if (__log.isDebugEnabled()) __log.debug("handleJobDetails: InvokeInternal event for mexid " + we.getMexId());
setMessageExchangeProcess(we.getMexId(), process.getProcessDAO());
MyRoleMessageExchangeImpl mex = (MyRoleMessageExchangeImpl) getMessageExchange(we.getMexId());
@@ -450,33 +457,35 @@
}
}
}
- process.handleWorkEvent(jobInfo.jobDetail);
+ process.handleJobDetails(jobInfo.jobDetail);
debuggingDelay();
} finally {
Thread.currentThread().setContextClassLoader(cl);
}
+ } catch (Scheduler.JobProcessorException e) {
+ throw e;
} catch (BpelEngineException bee) {
- __log.error(__msgs.msgScheduledJobFailed(we.getDetail()), bee);
+ __log.error(__msgs.msgScheduledJobFailed(we), bee);
throw new Scheduler.JobProcessorException(bee, checkRetry(we));
} catch (ContextException ce) {
- __log.error(__msgs.msgScheduledJobFailed(we.getDetail()), ce);
+ __log.error(__msgs.msgScheduledJobFailed(we), ce);
throw new Scheduler.JobProcessorException(ce, checkRetry(we));
} catch (InvalidProcessException ipe) {
- __log.error(__msgs.msgScheduledJobFailed(we.getDetail()), ipe);
+ __log.error(__msgs.msgScheduledJobFailed(we), ipe);
sendMyRoleFault(process, we, ipe.getCauseCode());
} catch (RuntimeException rte) {
- __log.error(__msgs.msgScheduledJobFailed(we.getDetail()), rte);
+ __log.error(__msgs.msgScheduledJobFailed(we), rte);
throw new Scheduler.JobProcessorException(rte, checkRetry(we));
} catch (Throwable t) {
- __log.error(__msgs.msgScheduledJobFailed(we.getDetail()), t);
+ __log.error(__msgs.msgScheduledJobFailed(we), t);
throw new Scheduler.JobProcessorException(t, checkRetry(we));
}
}
- private boolean checkRetry(WorkEvent we) {
+ private boolean checkRetry(JobDetails we) {
// Only retry if the job is NOT in memory. Not that this does not guaranty that a retry will be scheduled.
// Actually events are not retried if not persisted and the scheduler might choose to discard the event if it has been retried too many times.
- return !we.isInMem();
+ return !we.getInMem();
}
/**
@@ -684,7 +693,7 @@
return false;
}
- public void sendMyRoleFault(BpelProcess process, WorkEvent we, int causeCode) {
+ public void sendMyRoleFault(BpelProcess process, JobDetails we, int causeCode) {
MessageExchange mex = (MessageExchange) getMessageExchange(we.getMexId());
if (!(mex instanceof MyRoleMessageExchange)) {
return;
@@ -717,7 +726,7 @@
&& activeProcess.getConf().getType().equals(process.getConf().getType())) {
we.setProcessId(activeProcess._pid);
((MyRoleMessageExchangeImpl) mex)._process = activeProcess;
- process.handleWorkEvent(we.getDetail());
+ process.handleJobDetails(we);
return;
}
}
@@ -733,7 +742,7 @@
}
}
- private void sendPartnerRoleFailure(WorkEvent we, FailureType failureType) {
+ private void sendPartnerRoleFailure(JobDetails we, FailureType failureType) {
MessageExchange mex = (MessageExchange) getMessageExchange(we.getMexId());
if (mex instanceof PartnerRoleMessageExchange) {
if (mex.getStatus() == MessageExchange.Status.ASYNC || mex.getStatus() == MessageExchange.Status.REQUEST) {
Modified: branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -55,6 +55,8 @@
import org.apache.ode.bpel.iapi.ProcessConf;
import org.apache.ode.bpel.iapi.Scheduler;
import org.apache.ode.bpel.iapi.ProcessConf.CLEANUP_CATEGORY;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
+import org.apache.ode.bpel.iapi.Scheduler.JobType;
import org.apache.ode.bpel.intercept.InstanceCountThrottler;
import org.apache.ode.bpel.intercept.InterceptorInvoker;
import org.apache.ode.bpel.intercept.MessageExchangeInterceptor;
@@ -282,6 +284,7 @@
return true;
} else if (routing.messageRoute != null) {
// Found a route, hitting it
+ _engine.acquireInstanceLock(routing.messageRoute.getTargetInstance().getInstanceId());
target.invokeInstance(mex, routing);
return true;
}
@@ -402,20 +405,20 @@
}
/**
- * @see org.apache.ode.bpel.engine.BpelProcess#handleWorkEvent(java.util.Map<java.lang.String,java.lang.Object>)
+ * @see org.apache.ode.bpel.engine.BpelProcess#handleJobDetails(java.util.Map<java.lang.String,java.lang.Object>)
*/
- public void handleWorkEvent(Map<String, Object> jobData) {
+ public void handleJobDetails(JobDetails jobData) {
try {
_hydrationLatch.latch(1);
markused();
if (__log.isDebugEnabled()) {
- __log.debug(ObjectPrinter.stringifyMethodEnter("handleWorkEvent", new Object[] { "jobData", jobData }));
+ __log.debug(ObjectPrinter.stringifyMethodEnter("handleJobDetails", new Object[] { "jobData", jobData }));
}
- WorkEvent we = new WorkEvent(jobData);
+ JobDetails we = jobData;
// Process level events
- if (we.getType().equals(WorkEvent.Type.INVOKE_INTERNAL)) {
+ if (we.getType().equals(JobType.INVOKE_INTERNAL)) {
if (__log.isDebugEnabled()) {
__log.debug("InvokeInternal event for mexid " + we.getMexId());
}
@@ -423,10 +426,10 @@
invokeProcess(mex);
} else {
// Instance level events
- ProcessInstanceDAO procInstance = getProcessDAO().getInstance(we.getIID());
+ ProcessInstanceDAO procInstance = getProcessDAO().getInstance(we.getInstanceId());
if (procInstance == null) {
if (__log.isDebugEnabled()) {
- __log.debug("handleWorkEvent: no ProcessInstance found with iid " + we.getIID() + "; ignoring.");
+ __log.debug("handleJobDetails: no ProcessInstance found with iid " + we.getInstanceId() + "; ignoring.");
}
return;
}
@@ -435,26 +438,26 @@
switch (we.getType()) {
case TIMER:
if (__log.isDebugEnabled()) {
- __log.debug("handleWorkEvent: TimerWork event for process instance " + processInstance);
+ __log.debug("handleJobDetails: TimerWork event for process instance " + processInstance);
}
processInstance.timerEvent(we.getChannel());
break;
case RESUME:
if (__log.isDebugEnabled()) {
- __log.debug("handleWorkEvent: ResumeWork event for iid " + we.getIID());
+ __log.debug("handleJobDetails: ResumeWork event for iid " + we.getInstanceId());
}
processInstance.execute();
break;
case INVOKE_RESPONSE:
if (__log.isDebugEnabled()) {
- __log.debug("InvokeResponse event for iid " + we.getIID());
+ __log.debug("InvokeResponse event for iid " + we.getInstanceId());
}
processInstance.invocationResponse(we.getMexId(), we.getChannel());
processInstance.execute();
break;
case MATCHER:
if (__log.isDebugEnabled()) {
- __log.debug("Matcher event for iid " + we.getIID());
+ __log.debug("Matcher event for iid " + we.getInstanceId());
}
if( procInstance.getState() == ProcessState.STATE_COMPLETED_OK
|| procInstance.getState() == ProcessState.STATE_COMPLETED_WITH_FAULT ) {
Modified: branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -48,6 +48,7 @@
import org.apache.ode.bpel.dao.ProcessDAO;
import org.apache.ode.bpel.dao.ProcessInstanceDAO;
import org.apache.ode.bpel.dao.ScopeDAO;
+import org.apache.ode.bpel.dao.ScopeStateEnum;
import org.apache.ode.bpel.dao.XmlDataDAO;
import org.apache.ode.bpel.evar.ExternalVariableModuleException;
import org.apache.ode.bpel.evar.ExternalVariableModule.Value;
@@ -57,7 +58,10 @@
import org.apache.ode.bpel.evt.ProcessInstanceStateChangeEvent;
import org.apache.ode.bpel.evt.ProcessMessageExchangeEvent;
import org.apache.ode.bpel.evt.ProcessTerminationEvent;
+import org.apache.ode.bpel.evt.ScopeCompletionEvent;
import org.apache.ode.bpel.evt.ScopeEvent;
+import org.apache.ode.bpel.evt.ScopeFaultEvent;
+import org.apache.ode.bpel.evt.ScopeStartEvent;
import org.apache.ode.bpel.iapi.BpelEngineException;
import org.apache.ode.bpel.iapi.ContextException;
import org.apache.ode.bpel.iapi.Endpoint;
@@ -72,6 +76,8 @@
import org.apache.ode.bpel.iapi.MessageExchange.Status;
import org.apache.ode.bpel.iapi.ProcessConf.CLEANUP_CATEGORY;
import org.apache.ode.bpel.iapi.ProcessConf.PartnerRoleConfig;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
+import org.apache.ode.bpel.iapi.Scheduler.JobType;
import org.apache.ode.bpel.intercept.InterceptorInvoker;
import org.apache.ode.bpel.memdao.ProcessInstanceDaoImpl;
import org.apache.ode.bpel.o.OFailureHandling;
@@ -698,29 +704,29 @@
}
public void registerTimer(TimerResponseChannel timerChannel, Date timeToFire) {
- WorkEvent we = new WorkEvent();
- we.setIID(_dao.getInstanceId());
+ JobDetails we = new JobDetails();
+ we.setInstanceId(_dao.getInstanceId());
we.setChannel(timerChannel.export());
- we.setType(WorkEvent.Type.TIMER);
+ we.setType(JobType.TIMER);
we.setInMem(_bpelProcess.isInMemory());
if(_bpelProcess.isInMemory()){
- _bpelProcess._engine._contexts.scheduler.scheduleVolatileJob(true, we.getDetail(), timeToFire);
+ _bpelProcess._engine._contexts.scheduler.scheduleVolatileJob(true, we, timeToFire);
}else{
- _bpelProcess._engine._contexts.scheduler.schedulePersistedJob(we.getDetail(), timeToFire);
+ _bpelProcess._engine._contexts.scheduler.schedulePersistedJob(we, timeToFire);
}
}
private void scheduleCorrelatorMatcher(String correlatorId, CorrelationKeySet keySet) {
- WorkEvent we = new WorkEvent();
- we.setIID(_dao.getInstanceId());
- we.setType(WorkEvent.Type.MATCHER);
+ JobDetails we = new JobDetails();
+ we.setInstanceId(_dao.getInstanceId());
+ we.setType(JobType.MATCHER);
we.setCorrelatorId(correlatorId);
we.setCorrelationKeySet(keySet);
we.setInMem(_bpelProcess.isInMemory());
if(_bpelProcess.isInMemory()){
- _bpelProcess._engine._contexts.scheduler.scheduleVolatileJob(true, we.getDetail());
+ _bpelProcess._engine._contexts.scheduler.scheduleVolatileJob(true, we);
}else{
- _bpelProcess._engine._contexts.scheduler.schedulePersistedJob(we.getDetail(), null);
+ _bpelProcess._engine._contexts.scheduler.schedulePersistedJob(we, null);
}
}
@@ -911,16 +917,16 @@
boolean isTwoWay = mex.getMessageExchangePattern() ==
org.apache.ode.bpel.iapi.MessageExchange.MessageExchangePattern.REQUEST_RESPONSE;
if (!_bpelProcess.isInMemory() && isTwoWay) {
- WorkEvent event = new WorkEvent();
+ JobDetails event = new JobDetails();
event.setMexId(mex.getMessageExchangeId());
event.setProcessId(_bpelProcess.getPID());
event.setInMem(false);
- event.setType(WorkEvent.Type.INVOKE_CHECK);
+ event.setType(JobType.INVOKE_CHECK);
// use a greater timeout to make sure the check job does not get executed while the service invocation is still waiting for a response
long timeout = getBpelProcess().getTimeout(partnerLink, p2p);
if (__log.isDebugEnabled()) __log.debug("Creating invocation check event in "+timeout+"ms for mexid " + mex.getMessageExchangeId());
Date future = new Date(System.currentTimeMillis() + timeout);
- String jobId = _bpelProcess._engine._contexts.scheduler.schedulePersistedJob(event.getDetail(), future);
+ String jobId = _bpelProcess._engine._contexts.scheduler.schedulePersistedJob(event, future);
mex.setProperty("invokeCheckJobId", jobId);
}
}
@@ -977,14 +983,14 @@
if (__log.isDebugEnabled())
__log.debug("MaxTime exceeded for instance # " + _iid);
try {
- WorkEvent we = new WorkEvent();
- we.setIID(_iid);
- we.setType(WorkEvent.Type.RESUME);
+ JobDetails we = new JobDetails();
+ we.setInstanceId(_iid);
+ we.setType(JobType.RESUME);
we.setInMem(_bpelProcess.isInMemory());
if (_bpelProcess.isInMemory())
- _bpelProcess._engine._contexts.scheduler.scheduleVolatileJob(true, we.getDetail());
+ _bpelProcess._engine._contexts.scheduler.scheduleVolatileJob(true, we);
else
- _bpelProcess._engine._contexts.scheduler.schedulePersistedJob(we.getDetail(), new Date());
+ _bpelProcess._engine._contexts.scheduler.schedulePersistedJob(we, new Date());
} catch (ContextException e) {
__log.error("Failed to schedule resume task.", e);
throw new BpelEngineException(e);
@@ -1119,6 +1125,11 @@
sendEvent(evt);
}
+ private void saveScopeState(Long scopeId, ScopeStateEnum scopeState) {
+ ScopeDAO scope = _dao.getScope(scopeId);
+ scope.setState(scopeState);
+ }
+
/**
* @see BpelRuntimeContext#sendEvent(org.apache.ode.bpel.evt.ProcessInstanceEvent)
*/
@@ -1132,7 +1143,17 @@
// filter scopes
List<String> scopeNames = null;
if (event instanceof ScopeEvent) {
- scopeNames = ((ScopeEvent) event).getParentScopesNames();
+ ScopeEvent sevent = (ScopeEvent) event;
+
+ scopeNames = sevent.getParentScopesNames();
+
+ if (sevent instanceof ScopeStartEvent) {
+ saveScopeState(sevent.getScopeId(), ScopeStateEnum.ACTIVE);
+ } else if (sevent instanceof ScopeCompletionEvent) {
+ saveScopeState(sevent.getScopeId(), ScopeStateEnum.COMPLETED);
+ } else if (sevent instanceof ScopeFaultEvent) {
+ saveScopeState(sevent.getScopeId(), ScopeStateEnum.FAULT);
+ }
}
// saving
@@ -1458,31 +1479,29 @@
MessageExchangeDAO mexdao = correlator.dequeueMessage(ckeySet);
if (mexdao != null) {
__log.debug("MatcherEvent handling: found matching message in DB (i.e. message arrived before <receive>)");
-
- if( MessageExchangePattern.REQUEST_RESPONSE.toString().equals(mexdao.getPattern())) {
- __log.warn("A message arrived before a receive is ready for a request/response pattern. This may be processed to success. However, you should consider revising your process since this may cause performance degradataion");
- }
-
- Set<String> groupIds = new HashSet<String>();
+ if( MessageExchangePattern.REQUEST_RESPONSE.toString().equals(mexdao.getPattern())) {
+ __log.warn("A message arrived before a receive is ready for a request/response pattern. This may be processed to success. However, you should consider revising your process since a TCP port and a container thread will be held for a longer time and the process will not scale under heavy load.");
+ }
+
for (MessageRouteDAO mroute : mroutes) {
// We have a match, so we can get rid of the routing entries.
- groupIds.add(mroute.getGroupId());
-
- // Found message matching one of our selectors.
- if (BpelProcess.__log.isDebugEnabled()) {
- BpelProcess.__log.debug("SELECT: " + mroute.getGroupId() + ": matched to MESSAGE " + mexdao
- + " on CKEYSET " + ckeySet);
- }
-
- MyRoleMessageExchangeImpl mex = new MyRoleMessageExchangeImpl(_bpelProcess, _bpelProcess._engine, mexdao);
-
- inputMsgMatch(mroute.getGroupId(), mroute.getIndex(), mex);
- execute();
+ correlator.removeRoutes(mroute.getGroupId(), _dao);
}
- for (String groupId : groupIds) {
- correlator.removeRoutes(groupId, _dao);
+
+ // Selecting first route to proceed, other matching entries are ignored
+ MessageRouteDAO mroute = mroutes.get(0);
+
+ // Found message matching one of our selectors.
+ if (BpelProcess.__log.isDebugEnabled()) {
+ BpelProcess.__log.debug("SELECT: " + mroute.getGroupId() + ": matched to MESSAGE " + mexdao
+ + " on CKEYSET " + ckeySet);
}
+ MyRoleMessageExchangeImpl mex = new MyRoleMessageExchangeImpl(_bpelProcess, _bpelProcess._engine, mexdao);
+
+ inputMsgMatch(mroute.getGroupId(), mroute.getIndex(), mex);
+ execute();
+
// Do not release yet if the process is suspended, the mex will be used again
if (_dao.getState() != ProcessState.STATE_SUSPENDED)
mexdao.releasePremieMessages();
Modified: branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -619,7 +619,7 @@
}
if( statusOfPriorTry == JOB_STATUS.COMPLETED ) {
resultsByJobId.remove(jobInfo.jobName);
- jobInfo.jobDetail.put("runnable_status", JOB_STATUS.COMPLETED);
+ jobInfo.jobDetail.getDetailsExt().put("runnable_status", JOB_STATUS.COMPLETED);
return;
}
if( statusOfPriorTry == JOB_STATUS.PENDING || statusOfPriorTry == JOB_STATUS.FAILED ) {
@@ -633,8 +633,8 @@
_polledRunnableExec.submit(new Runnable() {
public void run() {
try {
- MapSerializableRunnable runnable = (MapSerializableRunnable)jobInfo.jobDetail.get("runnable");
- runnable.restoreFromDetailsMap(jobInfo.jobDetail);
+ MapSerializableRunnable runnable = (MapSerializableRunnable)jobInfo.jobDetail.getDetailsExt().get("runnable");
+ runnable.restoreFromDetails(jobInfo.jobDetail);
if( runnable instanceof ContextsAware ) {
((ContextsAware)runnable).setContexts(_contexts);
}
@@ -653,7 +653,7 @@
});
}
- jobInfo.jobDetail.put("runnable_status", JOB_STATUS.IN_PROGRESS);
+ jobInfo.jobDetail.getDetailsExt().put("runnable_status", JOB_STATUS.IN_PROGRESS);
if( exceptionThrownOnPriorTry != null ) {
throw new Scheduler.JobProcessorException(exceptionThrownOnPriorTry, true);
}
Modified: branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/DebuggerSupport.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/DebuggerSupport.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/DebuggerSupport.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -21,6 +21,8 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.ode.bpel.iapi.DebuggerContext;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
+import org.apache.ode.bpel.iapi.Scheduler.JobType;
import org.apache.ode.bpel.bdi.breaks.Breakpoint;
import org.apache.ode.bpel.common.ProcessState;
import org.apache.ode.bpel.dao.BpelDAOConnection;
@@ -173,10 +175,10 @@
__log.debug("step(" + iid + ") adding step indicator to table.");
_step.add(iid);
- WorkEvent we = new WorkEvent();
- we.setIID(iid);
- we.setType(WorkEvent.Type.RESUME);
- _process._engine._contexts.scheduler.schedulePersistedJob(we.getDetail(), null);
+ JobDetails we = new JobDetails();
+ we.setInstanceId(iid);
+ we.setType(JobType.RESUME);
+ _process._engine._contexts.scheduler.schedulePersistedJob(we, null);
return true;
}
@@ -297,10 +299,10 @@
_process.saveEvent(evt, instance);
onEvent(evt);
- WorkEvent we = new WorkEvent();
- we.setType(WorkEvent.Type.RESUME);
- we.setIID(iid);
- _process._engine._contexts.scheduler.schedulePersistedJob(we.getDetail(), null);
+ JobDetails we = new JobDetails();
+ we.setType(JobType.RESUME);
+ we.setInstanceId(iid);
+ _process._engine._contexts.scheduler.schedulePersistedJob(we, null);
return true;
Modified: branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/Messages.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/Messages.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/Messages.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -18,6 +18,7 @@
*/
package org.apache.ode.bpel.engine;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
import org.apache.ode.utils.msg.MessageBundle;
import javax.xml.namespace.QName;
@@ -186,7 +187,7 @@
return format("Error registering expression language \"" + expressionLanguageUri + "\" with properties " + properties);
}
- public String msgScheduledJobFailed(Map<String, Object> jobDetail) {
+ public String msgScheduledJobFailed(JobDetails jobDetail) {
return format("Scheduled job failed; jobDetail={0}", jobDetail);
}
Modified: branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeImpl.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeImpl.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeImpl.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -40,6 +40,8 @@
import org.apache.ode.bpel.iapi.MyRoleMessageExchange;
import org.apache.ode.bpel.iapi.Scheduler;
import org.apache.ode.bpel.iapi.ProcessConf.CLEANUP_CATEGORY;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
+import org.apache.ode.bpel.iapi.Scheduler.JobType;
import org.apache.ode.bpel.intercept.AbortMessageExchangeException;
import org.apache.ode.bpel.intercept.FaultMessageExchangeException;
import org.apache.ode.bpel.intercept.InterceptorInvoker;
@@ -132,8 +134,8 @@
return null;
} else {
// Schedule a new job for invocation
- WorkEvent we = new WorkEvent();
- we.setType(WorkEvent.Type.INVOKE_INTERNAL);
+ JobDetails we = new JobDetails();
+ we.setType(JobType.INVOKE_INTERNAL);
we.setInMem(target.isInMemory());
we.setProcessId(target.getPID());
we.setMexId(getDAO().getMessageExchangeId());
@@ -147,11 +149,11 @@
Replayer replayer = Replayer.replayer.get();
if (replayer == null) {
if (target.isInMemory())
- _engine._contexts.scheduler.scheduleVolatileJob(true, we.getDetail());
+ _engine._contexts.scheduler.scheduleVolatileJob(true, we);
else
- _engine._contexts.scheduler.schedulePersistedJob(we.getDetail(), null);
+ _engine._contexts.scheduler.schedulePersistedJob(we, null);
} else {
- replayer.scheduler.schedulePersistedJob(we.getDetail(), null);
+ replayer.scheduler.schedulePersistedJob(we, null);
}
return new ResponseFuture(getClientId());
}
Modified: branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerLinkMyRoleImpl.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerLinkMyRoleImpl.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerLinkMyRoleImpl.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -211,14 +211,15 @@
public void invokeInstance(MyRoleMessageExchangeImpl mex, RoutingInfo routing) {
Operation operation = getMyRoleOperation(mex.getOperationName());
if (__log.isDebugEnabled()) {
- __log.debug("INPUTMSG: " + routing.correlator.getCorrelatorId() + ": ROUTING to instance "
+ __log.debug("INPUTMSG: " + routing.correlator.getCorrelatorId() + ": ROUTING to existing instance "
+ routing.messageRoute.getTargetInstance().getInstanceId());
}
ProcessInstanceDAO instanceDao = routing.messageRoute.getTargetInstance();
+ BpelProcess process2 = _process._engine._activeProcesses.get(instanceDao.getProcess().getProcessId());
// Reload process instance for DAO.
- BpelRuntimeContextImpl instance = _process.createRuntimeContext(instanceDao, null, null);
+ BpelRuntimeContextImpl instance = process2.createRuntimeContext(instanceDao, null, null);
instance.inputMsgMatch(routing.messageRoute.getGroupId(), routing.messageRoute.getIndex(), mex);
// Kill the route so some new message does not get routed to
@@ -226,16 +227,16 @@
routing.correlator.removeRoutes(routing.messageRoute.getGroupId(), instanceDao);
// send process instance event
- CorrelationMatchEvent evt = new CorrelationMatchEvent(new QName(_process.getOProcess().targetNamespace,
- _process.getOProcess().getName()), _process.getProcessDAO().getProcessId(),
+ CorrelationMatchEvent evt = new CorrelationMatchEvent(new QName(process2.getOProcess().targetNamespace,
+ process2.getOProcess().getName()), process2.getProcessDAO().getProcessId(),
instanceDao.getInstanceId(), routing.matchedKeySet);
evt.setPortType(mex.getPortType().getQName());
evt.setOperation(operation.getName());
evt.setMexId(mex.getMessageExchangeId());
- _process._debugger.onEvent(evt);
+ process2._debugger.onEvent(evt);
// store event
- _process.saveEvent(evt, instanceDao);
+ process2.saveEvent(evt, instanceDao);
mex.setCorrelationStatus(MyRoleMessageExchange.CorrelationStatus.MATCHED);
mex.getDAO().setInstance(routing.messageRoute.getTargetInstance());
Modified: branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerRoleMessageExchangeImpl.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerRoleMessageExchangeImpl.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerRoleMessageExchangeImpl.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -22,13 +22,14 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.ode.bpel.dao.MessageExchangeDAO;
-import org.apache.ode.bpel.engine.WorkEvent.Type;
import org.apache.ode.bpel.engine.replayer.Replayer;
import org.apache.ode.bpel.iapi.BpelEngineException;
import org.apache.ode.bpel.iapi.EndpointReference;
import org.apache.ode.bpel.iapi.Message;
import org.apache.ode.bpel.iapi.PartnerRoleChannel;
import org.apache.ode.bpel.iapi.PartnerRoleMessageExchange;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
+import org.apache.ode.bpel.iapi.Scheduler.JobType;
import org.apache.ode.utils.DOMUtils;
import org.w3c.dom.Element;
@@ -132,20 +133,20 @@
if (LOG.isDebugEnabled()) {
LOG.debug("create work event for mex=" + getMessageExchangeId());
}
- WorkEvent we = new WorkEvent();
- we.setIID(getDAO().getInstance().getInstanceId());
- we.setType(Type.INVOKE_RESPONSE);
+ JobDetails we = new JobDetails();
+ we.setInstanceId(getDAO().getInstance().getInstanceId());
+ we.setType(JobType.INVOKE_RESPONSE);
we.setInMem(_engine._activeProcesses.get(getDAO().getProcess().getProcessId()).isInMemory());
we.setChannel(getDAO().getChannel());
we.setMexId(getDAO().getMessageExchangeId());
Replayer replayer = Replayer.replayer.get();
if (replayer == null) {
- if (we.isInMem())
- _engine._contexts.scheduler.scheduleVolatileJob(true, we.getDetail());
+ if (we.getInMem())
+ _engine._contexts.scheduler.scheduleVolatileJob(true, we);
else
- _engine._contexts.scheduler.schedulePersistedJob(we.getDetail(), null);
+ _engine._contexts.scheduler.schedulePersistedJob(we, null);
} else {
- replayer.scheduler.schedulePersistedJob(we.getDetail(), null);
+ replayer.scheduler.schedulePersistedJob(we, null);
}
}
Modified: branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -75,6 +75,7 @@
import org.apache.ode.bpel.evt.ScopeEvent;
import org.apache.ode.bpel.evt.ScopeFaultEvent;
import org.apache.ode.bpel.evt.VariableEvent;
+import org.apache.ode.bpel.evt.VariableModificationEvent;
import org.apache.ode.bpel.evtproc.ActivityStateDocumentBuilder;
import org.apache.ode.bpel.iapi.BpelEngineException;
import org.apache.ode.bpel.iapi.BpelServer;
@@ -133,6 +134,7 @@
import org.apache.ode.bpel.pmapi.TVariableInfo;
import org.apache.ode.bpel.pmapi.TVariableRef;
import org.apache.ode.bpel.pmapi.VariableInfoDocument;
+import org.apache.ode.utils.DOMUtils;
import org.apache.ode.utils.ISO8601DateParser;
import org.apache.ode.utils.msg.MessageBundle;
import org.apache.ode.utils.stl.CollectionsX;
@@ -1164,8 +1166,7 @@
info.setMexId(((ProcessMessageExchangeEvent) event).getMessageExchangeId());
}
if (event instanceof ScopeCompletionEvent) {
- info.setSuccess(((ScopeCompletionEvent) event).isSuccess());
- info.setFault(((ScopeCompletionEvent) event).getFault());
+ info.setSuccess(true);
}
if (event instanceof ScopeEvent) {
info.setScopeId(((ScopeEvent) event).getScopeId());
@@ -1183,6 +1184,9 @@
if (event instanceof VariableEvent) {
info.setVariableName(((VariableEvent) event).getVarName());
}
+ if(event instanceof VariableModificationEvent) {
+ info.setNewValue(DOMUtils.domToString(((VariableModificationEvent) event).getNewValue()));
+ }
}
/**
Modified: branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessCleanUpRunnable.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessCleanUpRunnable.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessCleanUpRunnable.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -1,3 +1,21 @@
+/*
+ * 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.bpel.engine;
import java.io.Serializable;
@@ -4,11 +22,14 @@
import java.util.Map;
import java.util.concurrent.Callable;
+import javax.xml.namespace.QName;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.ode.bpel.dao.DeferredProcessInstanceCleanable;
import org.apache.ode.bpel.dao.ProcessDAO;
import org.apache.ode.bpel.engine.BpelServerImpl.ContextsAware;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
import org.apache.ode.bpel.iapi.Scheduler.MapSerializableRunnable;
public class ProcessCleanUpRunnable implements MapSerializableRunnable, ContextsAware {
@@ -28,12 +49,12 @@
_pid = pid;
}
- public void storeToDetailsMap(Map<String, Object> details) {
- details.put("pid", _pid);
+ public void storeToDetails(JobDetails details) {
+ details.getDetailsExt().put("pid", _pid);
}
- public void restoreFromDetailsMap(Map<String, Object> details) {
- _pid = (Serializable)details.get("pid");
+ public void restoreFromDetails(JobDetails details) {
+ _pid = (Serializable) details.getDetailsExt().get("pid");
}
public void setContexts(Contexts contexts) {
@@ -65,4 +86,4 @@
}
if(__log.isInfoEnabled()) __log.info("Deleted runtime data for old process: " + _pid + ".");
}
-}
\ No newline at end of file
+}
Modified: branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessStatusConverter.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessStatusConverter.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessStatusConverter.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -61,11 +61,8 @@
}
__scopeStateMap.put(ScopeStateEnum.ACTIVE, TScopeStatus.ACTIVE);
- __scopeStateMap.put(ScopeStateEnum.COMPENSATED,TScopeStatus.COMPENSATED);
- __scopeStateMap.put(ScopeStateEnum.COMPENSATING,TScopeStatus.COMPENSATING);
__scopeStateMap.put(ScopeStateEnum.COMPLETED,TScopeStatus.COMPLETED);
- __scopeStateMap.put(ScopeStateEnum.FAULTED,TScopeStatus.FAULTED);
- __scopeStateMap.put(ScopeStateEnum.FAULTHANDLER,TScopeStatus.FAULTED);
+ __scopeStateMap.put(ScopeStateEnum.FAULT,TScopeStatus.FAULTED);
}
Modified: branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/CronScheduler.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/CronScheduler.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/CronScheduler.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -1,3 +1,21 @@
+/*
+ * 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.bpel.engine.cron;
import java.util.ArrayList;
@@ -20,6 +38,7 @@
import org.apache.ode.bpel.iapi.ClusterAware;
import org.apache.ode.bpel.iapi.ProcessConf;
import org.apache.ode.bpel.iapi.ProcessConf.CronJob;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
import org.apache.ode.bpel.iapi.Scheduler.MapSerializableRunnable;
import org.apache.ode.utils.CronExpression;
@@ -112,11 +131,11 @@
Runnable runnable = new Runnable() {
public void run() {
if( __log.isDebugEnabled() ) __log.debug("Running cron cleanup with details list size: " + job.getRunnableDetailList().size());
- for( Map<String, Object> details : job.getRunnableDetailList() ) {
+ for( JobDetails details : job.getRunnableDetailList() ) {
try {
// for each clean up for the scheduled time
RuntimeDataCleanupRunnable cleanup = new RuntimeDataCleanupRunnable();
- cleanup.restoreFromDetailsMap(details);
+ cleanup.restoreFromDetails(details);
cleanup.setContexts(_contexts);
cleanup.run();
if( __log.isDebugEnabled() ) __log.debug("Finished running runtime data cleanup from a PROCESS CRON job: " + cleanup);
@@ -168,17 +187,17 @@
// for each different scheduled time
Runnable runnable = new Runnable() {
public void run() {
- for( Map<String, Object> details : job.getRunnableDetailList() ) {
+ for( JobDetails details : job.getRunnableDetailList() ) {
try {
// for now, we have only runtime data cleanup cron job defined
// for each clean up for the scheduled time
RuntimeDataCleanupRunnable cleanup = new RuntimeDataCleanupRunnable();
synchronized( _terminationListenersByPid ) {
if( !_terminationListenersByPid.isEmpty() ) {
- details.put("pidsToExclude", _terminationListenersByPid.keySet());
+ details.getDetailsExt().put("pidsToExclude", _terminationListenersByPid.keySet());
}
}
- cleanup.restoreFromDetailsMap(details);
+ cleanup.restoreFromDetails(details);
cleanup.setContexts(_contexts);
cleanup.run();
if( __log.isDebugEnabled() ) __log.debug("Finished running runtime data cleanup from a SYSTEM CRON job:" + cleanup);
@@ -197,7 +216,7 @@
}
public TerminationListener schedule(final CronExpression cronExpression,
- final Runnable runnable, final Map<String, Object> runnableDetails,
+ final Runnable runnable, final JobDetails runnableDetails,
TerminationListener terminationListener) {
if( _shuttingDown ) {
__log.info("CRON Scheduler is being shut down. This new scheduling request is ignored.");
@@ -250,12 +269,12 @@
private volatile boolean terminated = false;
private Date nextScheduleTime;
private Runnable runnable;
- private Map<String, Object> runnableDetails;
+ private JobDetails runnableDetails;
private CronExpression cronExpression;
private TerminationListener terminationListener;
public CronScheduledJob(Date nextScheduleTime,
- Runnable runnable, Map<String, Object> runnableDetails,
+ Runnable runnable, JobDetails runnableDetails,
CronExpression cronExpression, TerminationListener terminationListener) {
this.nextScheduleTime = nextScheduleTime;
this.runnable = runnable;
@@ -277,7 +296,7 @@
nextScheduleTime.getTime() < System.currentTimeMillis() + TOLERABLE_SCHEDULE_DELAY) {
if( runnableDetails != null &&
runnable instanceof MapSerializableRunnable ) {
- ((MapSerializableRunnable)runnable).restoreFromDetailsMap(runnableDetails);
+ ((MapSerializableRunnable)runnable).restoreFromDetails(runnableDetails);
}
if (runnable instanceof ContextsAware) {
((ContextsAware) runnable).setContexts(_contexts);
@@ -306,4 +325,4 @@
return terminationListener;
}
}
-}
\ No newline at end of file
+}
Modified: branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/RuntimeDataCleanupRunnable.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/RuntimeDataCleanupRunnable.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/RuntimeDataCleanupRunnable.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -1,5 +1,24 @@
+/*
+ * 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.bpel.engine.cron;
+import java.io.Serializable;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.Callable;
@@ -15,6 +34,7 @@
import org.apache.ode.bpel.engine.BpelServerImpl.ContextsAware;
import org.apache.ode.bpel.iapi.ProcessConf.CLEANUP_CATEGORY;
import org.apache.ode.bpel.iapi.ProcessConf.CleanupInfo;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
import org.apache.ode.bpel.iapi.Scheduler.MapSerializableRunnable;
public class RuntimeDataCleanupRunnable implements MapSerializableRunnable, ContextsAware {
@@ -33,14 +53,14 @@
}
@SuppressWarnings("unchecked")
- public void restoreFromDetailsMap(Map<String, Object> details) {
- _cleanupInfo = (CleanupInfo)details.get("cleanupInfo");
- _transactionSize = (Integer)details.get("transactionSize");
- _pid = (QName)details.get("pid");
- _pidsToExclude = (Set<QName>)details.get("pidsToExclude");
+ public void restoreFromDetails(JobDetails details) {
+ _cleanupInfo = (CleanupInfo)details.getDetailsExt().get("cleanupInfo");
+ _transactionSize = (Integer)details.getDetailsExt().get("transactionSize");
+ _pid = (QName) details.getDetailsExt().get("pid");
+ _pidsToExclude = (Set<QName>)details.getDetailsExt().get("pidsToExclude");
}
- public void storeToDetailsMap(Map<String, Object> details) {
+ public void storeToDetails(JobDetails details) {
// we don't serialize
}
Modified: branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/SystemSchedulesConfig.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/SystemSchedulesConfig.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/SystemSchedulesConfig.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -1,3 +1,21 @@
+/*
+ * 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.bpel.engine.cron;
import java.io.File;
@@ -15,6 +33,7 @@
import org.apache.ode.bpel.iapi.ContextException;
import org.apache.ode.bpel.iapi.ProcessConf.CleanupInfo;
import org.apache.ode.bpel.iapi.ProcessConf.CronJob;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
import org.apache.ode.store.ProcessCleanupConfImpl;
import org.apache.ode.utils.CronExpression;
import org.apache.xmlbeans.XmlOptions;
@@ -64,9 +83,10 @@
cleanupInfo.setFilters(aCleanup.getFilterList());
ProcessCleanupConfImpl.processACleanup(cleanupInfo.getCategories(), aCleanup.getCategoryList());
- Map<String, Object> runnableDetails = new HashMap<String, Object>();
- runnableDetails.put("cleanupInfo", cleanupInfo);
- runnableDetails.put("transactionSize", 10);
+ JobDetails runnableDetails = new JobDetails();
+
+ runnableDetails.getDetailsExt().put("cleanupInfo", cleanupInfo);
+ runnableDetails.getDetailsExt().put("transactionSize", 10);
job.getRunnableDetailList().add(runnableDetails);
__log.info("SYSTEM CRON configuration added a runtime data cleanup: " + runnableDetails);
}
@@ -100,4 +120,4 @@
return sd;
}
-}
\ No newline at end of file
+}
Modified: branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/Replayer.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/Replayer.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/Replayer.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -40,13 +40,14 @@
import org.apache.ode.bpel.engine.BpelProcess;
import org.apache.ode.bpel.engine.MyRoleMessageExchangeImpl;
import org.apache.ode.bpel.engine.PartnerLinkMyRoleImpl;
-import org.apache.ode.bpel.engine.WorkEvent;
import org.apache.ode.bpel.engine.PartnerLinkMyRoleImpl.RoutingInfo;
import org.apache.ode.bpel.evt.CorrelationMatchEvent;
import org.apache.ode.bpel.iapi.BpelEngine;
import org.apache.ode.bpel.iapi.MyRoleMessageExchange;
import org.apache.ode.bpel.iapi.MessageExchange.Status;
import org.apache.ode.bpel.iapi.ProcessConf.CLEANUP_CATEGORY;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
+import org.apache.ode.bpel.iapi.Scheduler.JobType;
import org.apache.ode.bpel.pmapi.CommunicationType;
import org.apache.ode.bpel.pmapi.ExchangeType;
import org.apache.ode.bpel.pmapi.FaultType;
@@ -222,10 +223,10 @@
return null;
}
- public void handleWorkEvent(Map<String, Object> jobDetail, final Date when) {
- WorkEvent we = new WorkEvent(jobDetail);
- __log.debug("handleWorkEvent " + jobDetail + " " + when);
- if (we.getType() == WorkEvent.Type.INVOKE_INTERNAL) {
+ public void handleJobDetails(JobDetails jobDetail, final Date when) {
+ JobDetails we = jobDetail;
+ __log.debug("handleJobDetails " + jobDetail + " " + when);
+ if (we.getType() == JobType.INVOKE_INTERNAL) {
final BpelProcess p = engine._activeProcesses.get(we.getProcessId());
final ProcessDAO processDAO = p.getProcessDAO();
final MyRoleMessageExchangeImpl mex = (MyRoleMessageExchangeImpl) engine.getMessageExchange(we.getMexId());
@@ -270,9 +271,9 @@
return false;
}
});
- } else if (we.getType() == WorkEvent.Type.INVOKE_RESPONSE) {
+ } else if (we.getType() == JobType.INVOKE_RESPONSE) {
__log.debug("reply for live communication");
- ReplayerContext ctx = findReplayedInstance(we.getIID());
+ ReplayerContext ctx = findReplayedInstance(we.getInstanceId());
assert ctx != null;
ctx.runtimeContext.invocationResponse(we.getMexId(), we.getChannel());
ctx.runtimeContext.execute();
Modified: branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/ReplayerScheduler.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/ReplayerScheduler.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/ReplayerScheduler.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -129,12 +129,12 @@
return null;
}
- public String schedulePersistedJob(final Map<String, Object> jobDetail, final Date when1) throws ContextException {
+ public String schedulePersistedJob(final JobDetails jobDetail, final Date when1) throws ContextException {
final Date when = when1 == null ? currentTaskElement.get().when : when1;
__log.debug("schedulePersistedJob " + jobDetail + " " + when, new Exception());
scheduleReplayerJob(new Callable<Void>() {
public Void call() throws Exception {
- replayer.handleWorkEvent(jobDetail, when);
+ replayer.handleJobDetails(jobDetail, when);
return null;
}
}, when, null);
@@ -145,13 +145,13 @@
public void setPolledRunnableProcesser(JobProcessor polledRunnableProcessor) {
}
- public String scheduleVolatileJob(boolean transacted, Map<String, Object> jobDetail, Date when) throws ContextException {
+ public String scheduleVolatileJob(boolean transacted, JobDetails jobDetail, Date when) throws ContextException {
// TODO Auto-generated method stub
__log.debug("scheduleVolatileJob");
return null;
}
- public String scheduleVolatileJob(boolean transacted, Map<String, Object> jobDetail) throws ContextException {
+ public String scheduleVolatileJob(boolean transacted, JobDetails jobDetail) throws ContextException {
// TODO Auto-generated method stub
__log.debug("scheduleVolatileJob");
return null;
Modified: branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/extvar/jdbc/DbExternalVariable.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/extvar/jdbc/DbExternalVariable.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/extvar/jdbc/DbExternalVariable.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -142,7 +142,8 @@
sb.append(c.colname);
}
- sb.append(" from " + table);
+ sb.append(" from ");
+ sb.append(schema + "." + table);
if (_keycolumns.size() > 0) {
sb.append(" where ");
first = true;
@@ -166,7 +167,7 @@
private void createUpdate() {
_updcolumns.clear();
StringBuilder sb = new StringBuilder("update ");
- sb.append(table);
+ sb.append(schema + "." + table);
sb.append(" set ");
boolean first = true;
for (Column c : _columns) {
@@ -213,7 +214,7 @@
private void createInsert() {
_inscolumns.clear();
StringBuilder sb = new StringBuilder("insert into ");
- sb.append(table);
+ sb.append(schema + "." + table);
sb.append(" ( ");
boolean first = true;
for (Column c : _columns) {
Modified: branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/ProcessDaoImpl.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/ProcessDaoImpl.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/ProcessDaoImpl.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -242,7 +242,9 @@
Long id = (Long) oldInstances[i];
Long age = _instancesAge.get(id);
if (age != null && now-age > _conn._mexTtl) {
- __log.warn("Discarding in-memory instance "+id+" because it exceeded its time-to-live: "+_instances.get(id));
+ if (_instances.get(id) != null) {
+ __log.warn("Discarding in-memory instance "+id+" because it exceeded its time-to-live: "+_instances.get(id));
+ }
_instances.remove(id);
_instancesAge.remove(id);
}
Modified: branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -432,7 +432,8 @@
rvalue = ((Document)rvalue).getDocumentElement();
}
- if (headerAssign && lvaluePtr.getParentNode().getNodeName().equals("message") && rvalue.getNodeType()==Node.ELEMENT_NODE) {
+ Node parentNode = lvaluePtr.getParentNode();
+ if (headerAssign && parentNode != null && "message".equals(parentNode.getNodeName()) && rvalue.getNodeType()==Node.ELEMENT_NODE ) {
lvalue = copyInto((Element)lvalue, (Element) lvaluePtr, (Element) rvalue);
} else if (rvalue.getNodeType() == Node.ELEMENT_NODE && lvaluePtr.getNodeType() == Node.ELEMENT_NODE) {
lvalue = replaceElement((Element)lvalue, (Element) lvaluePtr, (Element) rvalue,
Modified: branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/SCOPE.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/SCOPE.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/SCOPE.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -30,6 +30,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.ode.bpel.evt.ScopeCompletionEvent;
import org.apache.ode.bpel.evt.ScopeFaultEvent;
import org.apache.ode.bpel.evt.ScopeStartEvent;
import org.apache.ode.bpel.evt.VariableModificationEvent;
@@ -352,6 +353,8 @@
});
}
} else /* completed ok */ {
+ sendEvent(new ScopeCompletionEvent());
+
if (_oscope.compensationHandler != null) {
CompensationHandler compensationHandler = new CompensationHandler(
_scopeFrame,
Modified: branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/WAIT.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/WAIT.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/WAIT.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -57,7 +57,8 @@
} catch (EvaluationException ee) {
String msg = "Unexpected error evaluating wait condition.";
__log.error(msg, ee);
- throw new InvalidProcessException(msg,ee);
+ _self.parent.completed(createFault(_self.o.getOwner().constants.qnSubLanguageExecutionFault, _self.o), CompensationHandler.emptySet());
+ return;
}
Modified: branches/ODE/ODE-1.x/bpel-runtime/src/test/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeImplTest.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-runtime/src/test/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeImplTest.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-runtime/src/test/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeImplTest.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -1,3 +1,21 @@
+/*
+ * 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.bpel.engine;
import java.util.Map;
Modified: branches/ODE/ODE-1.x/bpel-runtime/src/test/java/org/apache/ode/bpel/engine/cron/CronSchedulerTest.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-runtime/src/test/java/org/apache/ode/bpel/engine/cron/CronSchedulerTest.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-runtime/src/test/java/org/apache/ode/bpel/engine/cron/CronSchedulerTest.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -1,3 +1,21 @@
+/*
+ * 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.bpel.engine.cron;
import java.util.HashMap;
@@ -17,6 +35,7 @@
import org.apache.ode.bpel.iapi.Scheduler;
import org.apache.ode.bpel.iapi.ProcessConf.CLEANUP_CATEGORY;
import org.apache.ode.bpel.iapi.ProcessConf.CleanupInfo;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
import org.apache.ode.daohib.bpel.BpelDAOConnectionImpl;
import org.apache.ode.utils.CronExpression;
import org.jmock.Mock;
@@ -71,14 +90,14 @@
CronExpression cronExpr = new CronExpression("* * * * * ?");
RuntimeDataCleanupRunnable runnable = new RuntimeDataCleanupRunnable();
- Map<String, Object> details = new HashMap<String, Object>();
- details.put("pid", new QName("test"));
- details.put("transactionSize", 10);
+ JobDetails details = new JobDetails();
+ details.setProcessId(new QName("test"));
+ details.getDetailsExt().put("transactionSize", 10);
CleanupInfo cleanupInfo = new CleanupInfo();
cleanupInfo.getFilters().add("a=b");
cleanupInfo.getCategories().add(CLEANUP_CATEGORY.CORRELATIONS);
- details.put("cleanupInfo", cleanupInfo);
- runnable.restoreFromDetailsMap(details);
+ details.getDetailsExt().put("cleanupInfo", cleanupInfo);
+ runnable.restoreFromDetails(details);
runnable.setContexts(contexts);
NotifyingTerminationListener listener = new NotifyingTerminationListener();
@@ -89,4 +108,4 @@
}
}
}
-}
\ No newline at end of file
+}
Modified: branches/ODE/ODE-1.x/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -342,10 +342,10 @@
_scheduler.setJobProcessor(server);
}
- public String schedulePersistedJob(Map<String,Object>jobDetail,Date when) throws ContextException {
+ public String schedulePersistedJob(JobDetails jobDetail,Date when) throws ContextException {
String jobId = _scheduler.schedulePersistedJob(jobDetail, when);
// Invocation checks get scheduled much later, we don't want (or need) to wait for them
- if (!"INVOKE_CHECK".equals(jobDetail.get("type")))
+ if (jobDetail.getType() != JobType.INVOKE_CHECK)
_nextSchedule = when == null ? System.currentTimeMillis() : when.getTime();
return jobId;
}
@@ -355,11 +355,11 @@
return new GUID().toString();
}
- public String scheduleVolatileJob(boolean transacted, Map<String,Object> jobDetail) throws ContextException {
+ public String scheduleVolatileJob(boolean transacted, JobDetails jobDetail) throws ContextException {
return scheduleVolatileJob(transacted, jobDetail, null);
}
- public String scheduleVolatileJob(boolean transacted, Map<String, Object> jobDetail, Date when) throws ContextException {
+ public String scheduleVolatileJob(boolean transacted, JobDetails jobDetail, Date when) throws ContextException {
String jobId = _scheduler.scheduleVolatileJob(transacted, jobDetail, when);
_nextSchedule = System.currentTimeMillis();
return jobId;
Modified: branches/ODE/ODE-1.x/bpel-runtime/src/test/resources/log4j.properties
===================================================================
--- branches/ODE/ODE-1.x/bpel-runtime/src/test/resources/log4j.properties 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-runtime/src/test/resources/log4j.properties 2010-05-27 15:55:40 UTC (rev 675)
@@ -22,14 +22,17 @@
# The logging properties used during tests..
#
#log4j.rootLogger=DEBUG, file
-log4j.rootLogger=INFO, file
+log4j.rootLogger=WARN, file
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.category.org.apache.ode=DEBUG
-#log4j.category.org.hibernate.jdbc.AbstractBatcher=DEBUG
-#log4j.category.org.org.hibernate.SQL=DEBUG
+log4j.category.org.hibernate=WARN
+log4j.category.org.apache.ode.bpel=INFO
+log4j.category.org.apache.ode.jacob=INFO
+log4j.category.org.apache.ode.store=INFO
+log4j.category.org.apache.ode.daohib=INFO
+log4j.category.org.apache.ode.utils=INFO
Modified: branches/ODE/ODE-1.x/bpel-runtime/src/test/resources/recovery/failure-to-fault2.bpel
===================================================================
--- branches/ODE/ODE-1.x/bpel-runtime/src/test/resources/recovery/failure-to-fault2.bpel 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-runtime/src/test/resources/recovery/failure-to-fault2.bpel 2010-05-27 15:55:40 UTC (rev 675)
@@ -49,30 +49,19 @@
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>
</invoke>
<invoke name="response"
partnerLink="instantiatingPartnerLink"
portType="tns:ResponsePortType"
operation="respond"
inputVariable="response">
- <targets>
- <target linkName="successfulInvoke"/>
- </targets>
</invoke>
- </flow>
</sequence>
</process>
Modified: branches/ODE/ODE-1.x/bpel-schemas/pom.xml
===================================================================
--- branches/ODE/ODE-1.x/bpel-schemas/pom.xml 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-schemas/pom.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -27,7 +27,7 @@
<parent>
<groupId>org.apache.ode</groupId>
<artifactId>ode</artifactId>
- <version>1.3.4-SNAPSHOT</version>
+ <version>1.3.4</version>
</parent>
<dependencies>
Modified: branches/ODE/ODE-1.x/bpel-schemas/src/main/xsd/pmapi.xsd
===================================================================
--- branches/ODE/ODE-1.x/bpel-schemas/src/main/xsd/pmapi.xsd 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-schemas/src/main/xsd/pmapi.xsd 2010-05-27 15:55:40 UTC (rev 675)
@@ -781,6 +781,7 @@
<element name="activity-failure-reason" type="xs:string" minOccurs="0" maxOccurs="1"/>
<element name="activity-recovery-action" type="xs:string" minOccurs="0" maxOccurs="1"/>
<element name="variable-name" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ <element name="new-value" type="xs:string" minOccurs="0" maxOccurs="1"/>
<element name="port-type" type="xs:QName" minOccurs="0" maxOccurs="1"/>
<element name="operation" type="xs:string" minOccurs="0" maxOccurs="1"/>
<element name="correlation-set" type="xs:string" minOccurs="0" maxOccurs="1"/>
Modified: branches/ODE/ODE-1.x/bpel-scripts/pom.xml
===================================================================
--- branches/ODE/ODE-1.x/bpel-scripts/pom.xml 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-scripts/pom.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -28,6 +28,6 @@
<parent>
<groupId>org.apache.ode</groupId>
<artifactId>ode</artifactId>
- <version>1.3.4-SNAPSHOT</version>
+ <version>1.3.4</version>
</parent>
</project>
Modified: branches/ODE/ODE-1.x/bpel-scripts/src/main/resources/2.0/good/circularReference/CircularReference.bpel
===================================================================
--- branches/ODE/ODE-1.x/bpel-scripts/src/main/resources/2.0/good/circularReference/CircularReference.bpel 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-scripts/src/main/resources/2.0/good/circularReference/CircularReference.bpel 2010-05-27 15:55:40 UTC (rev 675)
@@ -1,4 +1,22 @@
<?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.
+ -->
<bpel:process xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop"
xmlns:pnlk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
@@ -26,4 +44,4 @@
operation="EventStartMessage" variable="start"
createInstance="yes" name="start" partnerLink="pnlk" />
</bpel:sequence>
-</bpel:process>
\ No newline at end of file
+</bpel:process>
Modified: branches/ODE/ODE-1.x/bpel-scripts/src/main/resources/2.0/good/circularReference/CircularReference1.wsdl
===================================================================
--- branches/ODE/ODE-1.x/bpel-scripts/src/main/resources/2.0/good/circularReference/CircularReference1.wsdl 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-scripts/src/main/resources/2.0/good/circularReference/CircularReference1.wsdl 2010-05-27 15:55:40 UTC (rev 675)
@@ -1,4 +1,22 @@
<?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 xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop"
@@ -47,4 +65,4 @@
<soap:address location="http://example.com/hello"/>
</wsdl:port>
</wsdl:service>
-</wsdl:definitions>
\ No newline at end of file
+</wsdl:definitions>
Modified: branches/ODE/ODE-1.x/bpel-scripts/src/main/resources/2.0/good/circularReference/CircularReference2.wsdl
===================================================================
--- branches/ODE/ODE-1.x/bpel-scripts/src/main/resources/2.0/good/circularReference/CircularReference2.wsdl 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-scripts/src/main/resources/2.0/good/circularReference/CircularReference2.wsdl 2010-05-27 15:55:40 UTC (rev 675)
@@ -1,4 +1,22 @@
<?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 xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop"
@@ -44,4 +62,4 @@
<soap:address location="http://example.com/hello"/>
</wsdl:port>
</wsdl:service>
-</wsdl:definitions>
\ No newline at end of file
+</wsdl:definitions>
Modified: branches/ODE/ODE-1.x/bpel-store/pom.xml
===================================================================
--- branches/ODE/ODE-1.x/bpel-store/pom.xml 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-store/pom.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -28,7 +28,7 @@
<parent>
<groupId>org.apache.ode</groupId>
<artifactId>ode</artifactId>
- <version>1.3.4-SNAPSHOT</version>
+ <version>1.3.4</version>
</parent>
<dependencies>
@@ -96,6 +96,11 @@
<groupId>wsdl4j</groupId>
<artifactId>wsdl4j</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring</artifactId>
+ <version>${spring.version}</version>
+ </dependency>
<dependency>
<groupId>commons-collections</groupId>
Modified: branches/ODE/ODE-1.x/bpel-store/src/main/java/org/apache/ode/store/DeploymentUnitDir.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-store/src/main/java/org/apache/ode/store/DeploymentUnitDir.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-store/src/main/java/org/apache/ode/store/DeploymentUnitDir.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -29,6 +29,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Properties;
import java.util.Set;
import javax.wsdl.Definition;
@@ -54,6 +55,17 @@
import org.apache.ode.utils.InternPool.InternableBlock;
import org.apache.ode.utils.fs.FileUtils;
import org.apache.xmlbeans.XmlOptions;
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.BeanFactory;
+import org.springframework.beans.factory.NoSuchBeanDefinitionException;
+import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationEvent;
+import org.springframework.context.MessageSourceResolvable;
+import org.springframework.context.NoSuchMessageException;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+import org.springframework.context.support.FileSystemXmlApplicationContext;
+import org.springframework.core.io.Resource;
import org.w3c.dom.Node;
/**
@@ -70,6 +82,7 @@
private String _name;
private File _duDirectory;
private File _descriptorFile;
+ private Properties _properties = new Properties();
private HashMap<QName, CBPInfo> _processes = new HashMap<QName, CBPInfo>();
private HashMap<QName, TDeployment.Process> _processInfo = new HashMap<QName, TDeployment.Process>();
@@ -114,6 +127,17 @@
if (!_descriptorFile.exists())
throw new IllegalArgumentException("Directory " + dir + " does not contain a deploy.xml file!");
+
+ try {
+ ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
+ _properties = (java.util.Properties) ctx.getBean("properties");
+ if (__log.isDebugEnabled()) {
+ __log.debug("Loaded spring properties from file beans.xml:" + _properties + " for " + _name);
+ }
+ } catch (Exception e) {
+ __log.info("Can't initialize beans.xml application context " + e + " for " + _name);
+ }
+
}
@@ -350,7 +374,7 @@
continue;
if (bpelFile.getName().equals(process.getFileName())) {
- Map<QName, Node> props = ProcessStoreImpl.calcInitialProperties(process);
+ Map<QName, Node> props = ProcessStoreImpl.calcInitialProperties(_properties, process);
Map<String, Object> result = new HashMap<String, Object>();
result.put(BpelC.PROCESS_CUSTOM_PROPERTIES, props);
return result;
@@ -396,4 +420,7 @@
_version = version;
}
+ public Properties getProperties() {
+ return _properties;
+ }
}
Modified: branches/ODE/ODE-1.x/bpel-store/src/main/java/org/apache/ode/store/ProcessConfImpl.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-store/src/main/java/org/apache/ode/store/ProcessConfImpl.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-store/src/main/java/org/apache/ode/store/ProcessConfImpl.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -19,14 +19,23 @@
package org.apache.ode.store;
import java.io.File;
+import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
-import java.io.FileFilter;
import java.net.URI;
import java.text.ParseException;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
import javax.wsdl.Definition;
import javax.xml.namespace.QName;
@@ -46,18 +55,18 @@
import org.apache.ode.bpel.evt.BpelEvent;
import org.apache.ode.bpel.iapi.ContextException;
import org.apache.ode.bpel.iapi.Endpoint;
+import org.apache.ode.bpel.iapi.EndpointReference;
+import org.apache.ode.bpel.iapi.EndpointReferenceContext;
import org.apache.ode.bpel.iapi.ProcessConf;
import org.apache.ode.bpel.iapi.ProcessState;
-import org.apache.ode.bpel.iapi.EndpointReferenceContext;
-import org.apache.ode.bpel.iapi.EndpointReference;
-import org.apache.ode.bpel.iapi.ProcessConf.PartnerRoleConfig;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
import org.apache.ode.bpel.o.OFailureHandling;
import org.apache.ode.store.DeploymentUnitDir.CBPInfo;
+import org.apache.ode.utils.CollectionUtils;
import org.apache.ode.utils.CronExpression;
import org.apache.ode.utils.DOMUtils;
import org.apache.ode.utils.HierarchicalProperties;
import org.apache.ode.utils.WatchDog;
-import org.apache.ode.utils.CollectionUtils;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
@@ -538,10 +547,10 @@
cleanupInfo.setFilters(aCleanup.getFilterList());
ProcessCleanupConfImpl.processACleanup(cleanupInfo.getCategories(), aCleanup.getCategoryList());
- Map<String, Object> runnableDetails = new HashMap<String, Object>();
- runnableDetails.put("cleanupInfo", cleanupInfo);
- runnableDetails.put("pid", _pid);
- runnableDetails.put("transactionSize", 10);
+ JobDetails runnableDetails = new JobDetails();
+ runnableDetails.getDetailsExt().put("cleanupInfo", cleanupInfo);
+ runnableDetails.getDetailsExt().put("pid", _pid);
+ runnableDetails.getDetailsExt().put("transactionSize", 10);
job.getRunnableDetailList().add(runnableDetails);
}
jobs.add(job);
Modified: branches/ODE/ODE-1.x/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -239,7 +239,7 @@
}
ProcessConfImpl pconf = new ProcessConfImpl(pid, processDD.getName(), version, du, processDD, deployDate,
- calcInitialProperties(processDD), calcInitialState(processDD), eprContext, _configDir, generateProcessEventsAll);
+ calcInitialProperties(du.getProperties(), processDD), calcInitialState(processDD), eprContext, _configDir, generateProcessEventsAll);
processes.add(pconf);
}
@@ -625,8 +625,18 @@
* @param dd
* @return
*/
- public static Map<QName, Node> calcInitialProperties(TDeployment.Process dd) {
+ public static Map<QName, Node> calcInitialProperties(Properties properties, TDeployment.Process dd) {
HashMap<QName, Node> ret = new HashMap<QName, Node>();
+
+ for (Object key1 : properties.keySet()) {
+ String key = (String) key1;
+ Document doc = DOMUtils.newDocument();
+ doc.appendChild(doc.createElementNS(null, "temporary-simple-type-wrapper"));
+ doc.getDocumentElement().appendChild(doc.createTextNode(properties.getProperty(key)));
+
+ ret.put(new QName(key), doc.getDocumentElement());
+ }
+
if (dd.getPropertyList().size() > 0) {
for (TDeployment.Process.Property property : dd.getPropertyList()) {
Element elmtContent = DOMUtils.getElementContent(property.getDomNode());
@@ -692,7 +702,7 @@
continue;
}
- Map<QName, Node> props = calcInitialProperties(pinfo);
+ Map<QName, Node> props = calcInitialProperties(dud.getProperties(), pinfo);
// TODO: update the props based on the values in the DB.
ProcessConfImpl pconf = new ProcessConfImpl(p.getPID(), p.getType(), p.getVersion(), dud, pinfo, dudao
Modified: branches/ODE/ODE-1.x/bpel-store/src/main/java/org/apache/ode/store/jpa/DbConfStoreConnectionFactory.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-store/src/main/java/org/apache/ode/store/jpa/DbConfStoreConnectionFactory.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-store/src/main/java/org/apache/ode/store/jpa/DbConfStoreConnectionFactory.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -56,6 +56,7 @@
propMap.put("openjpa.FlushBeforeQueries", "false");
propMap.put("openjpa.FetchBatchSize", 1000);
propMap.put("openjpa.jdbc.TransactionIsolation", "read-committed");
+ propMap.put("javax.persistence.provider", "org.apache.openjpa.persistence.PersistenceProviderImpl");
if (createDatamodel) propMap.put("openjpa.jdbc.SynchronizeMappings", "buildSchema(ForeignKeys=false)");
Modified: branches/ODE/ODE-1.x/bpel-store/src/test/resources/log4j.properties
===================================================================
--- branches/ODE/ODE-1.x/bpel-store/src/test/resources/log4j.properties 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-store/src/test/resources/log4j.properties 2010-05-27 15:55:40 UTC (rev 675)
@@ -23,12 +23,12 @@
log4j.category.org.hibernate.type=WARN
log4j.category.org.objectweb=ERROR
#log4j.category.org.apache.ode.axis2=DEBUG
-log4j.category.org.apache.ode.bpel.engine=DEBUG
+log4j.category.org.apache.ode.bpel.engine=INFO
log4j.category.org.apache.ode.bpel.engine.DebuggerSupport=WARN
log4j.category.org.apache.ode.bpel.runtime.DebuggerSupport=WARN
-log4j.category.org.apache.ode.daohib.bpel.CorrelatorDaoImpl=TRACE
+log4j.category.org.apache.ode.daohib.bpel.CorrelatorDaoImpl=INFO
-log4j.category.com.intalio=DEBUG
+log4j.category.com.intalio=INFO
#log4j.category.org.apache.ode.bpel.epr=INFO
# Console appender
Modified: branches/ODE/ODE-1.x/bpel-test/pom.xml
===================================================================
--- branches/ODE/ODE-1.x/bpel-test/pom.xml 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-test/pom.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -26,7 +26,7 @@
<parent>
<groupId>org.apache.ode</groupId>
<artifactId>ode</artifactId>
- <version>1.3.4-SNAPSHOT</version>
+ <version>1.3.4</version>
</parent>
<dependencies>
Modified: branches/ODE/ODE-1.x/bpel-test/src/main/java/org/apache/ode/test/BPELTestAbstract.java
===================================================================
--- branches/ODE/ODE-1.x/bpel-test/src/main/java/org/apache/ode/test/BPELTestAbstract.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-test/src/main/java/org/apache/ode/test/BPELTestAbstract.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -50,7 +50,6 @@
import org.apache.ode.bpel.iapi.MessageExchange.Status;
import org.apache.ode.bpel.iapi.MyRoleMessageExchange.CorrelationStatus;
import org.apache.ode.bpel.memdao.BpelDAOConnectionFactoryImpl;
-import org.apache.ode.dao.jpa.BPELDAOConnectionFactoryImpl;
import org.apache.ode.il.MockScheduler;
import org.apache.ode.il.config.OdeConfigProperties;
import org.apache.ode.store.ProcessConfImpl;
@@ -105,7 +104,7 @@
if (Boolean.getBoolean("org.apache.ode.test.persistent")) {
emf = Persistence.createEntityManagerFactory("ode-unit-test-embedded");
em = emf.createEntityManager();
- _cf = new BPELDAOConnectionFactoryImpl();
+ _cf = new org.apache.ode.daohib.bpel.BpelDAOConnectionFactoryImpl();
_server.setDaoConnectionFactory(_cf);
scheduler = new MockScheduler() {
@Override
@@ -137,7 +136,7 @@
_server.setBindingContext(new BindingContextImpl());
_server.setMessageExchangeContext(mexContext);
scheduler.setJobProcessor(_server);
- store = new ProcessStoreImpl(null, null, "jpa", new OdeConfigProperties(new Properties(), ""), true);
+ store = new ProcessStoreImpl(null, null, "hibernate", new OdeConfigProperties(new Properties(), ""), true);
store.registerListener(new ProcessStoreListener() {
public void onProcessStoreEvent(ProcessStoreEvent event) {
// bounce the process
@@ -664,7 +663,7 @@
if (mex.getResponse() == null)
failure(_invocation, "Expected response, but got none.", null);
String responseStr = DOMUtils.domToString(mex.getResponse().getMessage());
- System.out.println("=>" + responseStr);
+ //System.out.println("=>" + responseStr);
Matcher matcher = _invocation.expectedResponsePattern.matcher(responseStr);
if (!matcher.matches())
failure(_invocation, "Response does not match expected pattern", _invocation.expectedResponsePattern, responseStr);
Modified: branches/ODE/ODE-1.x/bpel-test/src/test/resources/bpel/2.0/TestWait1/Wait1-2.0.bpel
===================================================================
--- branches/ODE/ODE-1.x/bpel-test/src/test/resources/bpel/2.0/TestWait1/Wait1-2.0.bpel 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-test/src/test/resources/bpel/2.0/TestWait1/Wait1-2.0.bpel 2010-05-27 15:55:40 UTC (rev 675)
@@ -53,6 +53,17 @@
<for>'PT5S'</for>
</wait>
+ <scope>
+ <faultHandlers>
+ <catchAll>
+ <empty/>
+ </catchAll>
+ </faultHandlers>
+ <wait>
+ <for expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0">xsd:double('')</for>
+ </wait>
+ </scope>
+
<reply name="endReply"
operation="testOperation"
partnerLink="testPartnerLink"
Modified: branches/ODE/ODE-1.x/bpel-test/src/test/resources/bpel/2.0/TestXQueryExpression/HelloXQueryWorld.xsl
===================================================================
--- branches/ODE/ODE-1.x/bpel-test/src/test/resources/bpel/2.0/TestXQueryExpression/HelloXQueryWorld.xsl 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-test/src/test/resources/bpel/2.0/TestXQueryExpression/HelloXQueryWorld.xsl 2010-05-27 15:55:40 UTC (rev 675)
@@ -1,3 +1,21 @@
+<!--
+ ~ 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.
+ -->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.example.org/ProcessData"
xmlns:tns="http://www.example.org/ProcessData"
@@ -10,4 +28,4 @@
</root>
</xsl:template>
-</xsl:stylesheet>
\ No newline at end of file
+</xsl:stylesheet>
Modified: branches/ODE/ODE-1.x/bpel-test/src/test/resources/log4j.properties
===================================================================
--- branches/ODE/ODE-1.x/bpel-test/src/test/resources/log4j.properties 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/bpel-test/src/test/resources/log4j.properties 2010-05-27 15:55:40 UTC (rev 675)
@@ -16,20 +16,20 @@
#
# Set root logger level to WARN and its only appender to CONSOLE
-log4j.rootLogger=WARN, CONSOLE, FILE
+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.bpel.engine=DEBUG
+log4j.category.org.apache.ode.axis2=INFO
+log4j.category.org.apache.ode.bpel.engine=INFO
log4j.category.org.apache.ode.bpel.epr=INFO
-log4j.category.org.apache.ode.bpel.extvar.jdbc=DEBUG
-log4j.category.org.apache.ode.bpel.runtime=DEBUG
-log4j.category.org.apache.ode=DEBUG
-log4j.category.org.apache.ode.daohib.bpel.CorrelatorDaoImpl=DEBUG
-log4j.category.org.apache.ode.bpel.engine.OutstandingRequestManager=TRACE
+log4j.category.org.apache.ode.bpel.extvar.jdbc=INFO
+log4j.category.org.apache.ode.bpel.runtime=INFO
+log4j.category.org.apache.ode=INFO
+log4j.category.org.apache.ode.daohib.bpel.CorrelatorDaoImpl=INFO
+log4j.category.org.apache.ode.bpel.engine.OutstandingRequestManager=INFO
# Console appender
#log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
Modified: branches/ODE/ODE-1.x/dao-hibernate/pom.xml
===================================================================
--- branches/ODE/ODE-1.x/dao-hibernate/pom.xml 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/dao-hibernate/pom.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -28,7 +28,7 @@
<parent>
<groupId>org.apache.ode</groupId>
<artifactId>ode</artifactId>
- <version>1.3.4-SNAPSHOT</version>
+ <version>1.3.4</version>
</parent>
<dependencies>
@@ -96,6 +96,7 @@
<!--doclet does not support not-found="ignore" -->
<groupId>org.codehaus.groovy.maven</groupId>
<artifactId>gmaven-plugin</artifactId>
+ <version>1.0</version>
<executions>
<execution>
<phase>process-sources</phase>
@@ -105,7 +106,7 @@
<configuration>
<source>
import java.io.File
- def process_instance_hbm_file = new File('${project.build.outputDirectory}', 'org/apache/ode/daohib/bpel/hobj/HProcessInstance.hbm.xml')
+ def process_instance_hbm_file = new File(project.build.outputDirectory, 'org/apache/ode/daohib/bpel/hobj/HProcessInstance.hbm.xml')
def contents = process_instance_hbm_file.text
if (!contents.contains('not-found="ignore"')) {
process_instance_hbm_file.text = contents.replace('class="org.apache.ode.daohib.bpel.hobj.HProcess"',
Modified: branches/ODE/ODE-1.x/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/CriteriaBuilder.java
===================================================================
--- branches/ODE/ODE-1.x/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/CriteriaBuilder.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/CriteriaBuilder.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -69,7 +69,7 @@
List<String> iids = filter.getIidFilter();
for (int m = 0; m < iids.size(); m++) {
filters.append(" pi.id = :iid").append(m);
- parameters.put("iid" + m, iids.get(m));
+ parameters.put("iid" + m, Long.parseLong(iids.get(m)));
if (m < iids.size() - 1) filters.append(" or");
}
clauses.add(" (" + filters + ")");
@@ -86,7 +86,7 @@
cmp = " = ";
}
for (int m = 0; m < pids.size(); m++) {
- filters.append(" pi.process.id ").append(cmp).append(" :pid").append(m);
+ filters.append(" pi.process.processId ").append(cmp).append(" :pid").append(m);
parameters.put("pid" + m, pids.get(m));
if (m < pids.size() - 1) filters.append(" or");
}
Modified: branches/ODE/ODE-1.x/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ProcessInstanceDaoImpl.java
===================================================================
--- branches/ODE/ODE-1.x/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ProcessInstanceDaoImpl.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ProcessInstanceDaoImpl.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -220,7 +220,7 @@
: null);
scope.setName(name);
scope.setScopeModelId(scopeModelId);
- scope.setState(ScopeStateEnum.ACTIVE.toString());
+ scope.setState(ScopeStateEnum.NEW.toString());
scope.setInstance(_instance);
scope.setCreated(new Date());
// _instance.addScope(scope);
Modified: branches/ODE/ODE-1.x/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ScopeDaoImpl.java
===================================================================
--- branches/ODE/ODE-1.x/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ScopeDaoImpl.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ScopeDaoImpl.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -121,7 +121,7 @@
* @see org.apache.ode.bpel.dao.ScopeDAO#getState()
*/
public ScopeStateEnum getState() {
- return new ScopeStateEnum(_scope.getState());
+ return ScopeStateEnum.valueOf(_scope.getState());
}
/**
* @see org.apache.ode.bpel.dao.ScopeDAO#getName()
Modified: branches/ODE/ODE-1.x/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/XmlDataDaoImpl.java
===================================================================
--- branches/ODE/ODE-1.x/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/XmlDataDaoImpl.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/XmlDataDaoImpl.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -58,7 +58,7 @@
*/
public boolean isNull() {
entering("XmlDataDaoImpl.isNull");
- return (_data.getData() == null || _data.getData().length == 0);
+ return (_data.getSimpleValue() == null && (_data.getData() == null || _data.getData().length == 0));
}
/**
@@ -84,14 +84,26 @@
public void set(Node val) {
entering("XmlDataDaoImpl.set");
_node = val;
- _data.setSimpleType(!(val instanceof Element));
-
- if(_data.isSimpleType()) {
- _data.setData(_node.getNodeValue().getBytes());
+ if (val != null && val.getNamespaceURI() == null && "temporary-simple-type-wrapper".equals(val.getLocalName())) {
+ _data.setSimpleType(true);
+ String value = _node.getTextContent();
+ if (value.length() <= 255) {
+ _data.setSimpleValue(value);
+ _data.setData(null);
+ } else {
+ _data.setData(value.getBytes());
+ _data.setSimpleValue(null);
+ }
+ } else if (val instanceof Element) {
+ _data.setSimpleType(false);
+ _data.setData(DOMUtils.domToString(_node).getBytes());
+ _data.setSimpleValue(null);
} else {
- _data.setData(DOMUtils.domToString(_node).getBytes());
+ _data.setSimpleType(true);
+ _data.setSimpleValue(_node.getNodeValue());
+ _data.setData(null);
}
-
+
getSession().saveOrUpdate(_data);
leaving("XmlDataDaoImpl.set");
}
@@ -143,20 +155,28 @@
}
private Node prepare(){
- if(_data.getData() == null || _data.getData().length == 0)
- return null;
- String data = new String(_data.getData());
- if(_data.isSimpleType()){
+ if(_data.isSimpleType()) {
+ String data;
+ if (_data.getSimpleValue() != null) {
+ data = _data.getSimpleValue();
+ } else {
+ if(_data.getData() == null || _data.getData().length == 0)
+ return null;
+ data = new String(_data.getData());
+ }
Document d = DOMUtils.newDocument();
// we create a dummy wrapper element
// prevents some apps from complaining
// when text node is not actual child of document
- Element e = d.createElement("text-node-wrapper");
+ Element e = d.createElement("temporary-simple-type-wrapper");
Text tnode = d.createTextNode(data);
d.appendChild(e);
e.appendChild(tnode);
return tnode;
- }else{
+ } else {
+ if(_data.getData() == null || _data.getData().length == 0)
+ return null;
+ String data = new String(_data.getData());
try{
return DOMUtils.stringToDOM(data);
}catch(Exception e){
Modified: branches/ODE/ODE-1.x/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HXmlData.java
===================================================================
--- branches/ODE/ODE-1.x/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HXmlData.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HXmlData.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -33,6 +33,7 @@
private byte[] _data;
private Collection<HVariableProperty> _properties = new HashSet<HVariableProperty>();
private String _name;
+ private String _simpleValue;
private HScope _scope;
private HProcessInstance _instance;
@@ -53,7 +54,7 @@
public void setData(byte[] data) {
_data = data;
}
-
+
/**
* @hibernate.property
* column="NAME"
@@ -70,6 +71,21 @@
}
/**
+ * @hibernate.property
+ * column="SIMPLE_VALUE"
+ * type="string"
+ * length="255"
+ * not-null="false"
+ */
+ public String getSimpleValue() {
+ return _simpleValue;
+ }
+
+ public void setSimpleValue(String simpleValue) {
+ _simpleValue = simpleValue;
+ }
+
+ /**
* @hibernate.bag
* lazy="true"
* inverse="true"
Modified: branches/ODE/ODE-1.x/dao-hibernate/src/test/resources/log4j.properties
===================================================================
--- branches/ODE/ODE-1.x/dao-hibernate/src/test/resources/log4j.properties 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/dao-hibernate/src/test/resources/log4j.properties 2010-05-27 15:55:40 UTC (rev 675)
@@ -21,7 +21,7 @@
#
# The logging properties used during tests..
#
-log4j.rootLogger=DEBUG, file
+log4j.rootLogger=INFO, file
#log4j.rootLogger=INFO, file
log4j.appender.file=org.apache.log4j.FileAppender
@@ -29,5 +29,5 @@
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.category.org.apache.ode=DEBUG
+log4j.category.org.apache.ode=INFO
Modified: branches/ODE/ODE-1.x/dao-hibernate-db/build.xml
===================================================================
--- branches/ODE/ODE-1.x/dao-hibernate-db/build.xml 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/dao-hibernate-db/build.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -93,6 +93,7 @@
</fileset>
</schemaexport>
<concat destfile="${db.scripts.dir}/(a){db}.sql">
+ <fileset file="${sql.dir}/common.sql"/>
<fileset file="${sql.dir}/simplesched-(a){db}.sql"/>
<fileset file="${db.scripts.dir}/partial.(a){db}.sql"/>
</concat>
Modified: branches/ODE/ODE-1.x/dao-hibernate-db/pom.xml
===================================================================
--- branches/ODE/ODE-1.x/dao-hibernate-db/pom.xml 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/dao-hibernate-db/pom.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -27,7 +27,7 @@
<parent>
<groupId>org.apache.ode</groupId>
<artifactId>ode</artifactId>
- <version>1.3.4-SNAPSHOT</version>
+ <version>1.3.4</version>
</parent>
<dependencies>
Modified: branches/ODE/ODE-1.x/dao-hibernate-db/src/main/sql/simplesched-derby.sql
===================================================================
--- branches/ODE/ODE-1.x/dao-hibernate-db/src/main/sql/simplesched-derby.sql 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/dao-hibernate-db/src/main/sql/simplesched-derby.sql 2010-05-27 15:55:40 UTC (rev 675)
@@ -10,7 +10,18 @@
nodeid char(64),
scheduled int NOT NULL DEFAULT 0,
transacted int NOT NULL DEFAULT 0,
- details blob(4096),
+
+ instanceId BIGINT,
+ mexId varchar(255),
+ processId varchar(255),
+ type varchar(255),
+ channel varchar(255),
+ correlatorId varchar(255),
+ correlationKeySet varchar(255),
+ retryCount int,
+ inMem int,
+ detailsExt blob(4096),
+
PRIMARY KEY(jobid));
CREATE INDEX IDX_ODE_JOB_TS ON ode_job(ts);
Modified: branches/ODE/ODE-1.x/dao-hibernate-db/src/main/sql/simplesched-firebird.sql
===================================================================
--- branches/ODE/ODE-1.x/dao-hibernate-db/src/main/sql/simplesched-firebird.sql 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/dao-hibernate-db/src/main/sql/simplesched-firebird.sql 2010-05-27 15:55:40 UTC (rev 675)
@@ -10,7 +10,18 @@
nodeid char(64),
scheduled int NOT NULL DEFAULT 0,
transacted int NOT NULL DEFAULT 0,
- details blob(4096),
+
+ instanceId BIGINT,
+ mexId varchar(255),
+ processId varchar(255),
+ type varchar(255),
+ channel varchar(255),
+ correlatorId varchar(255),
+ correlationKeySet varchar(255),
+ retryCount int,
+ inMem int,
+ detailsExt blob(4096),
+
PRIMARY KEY(jobid));
CREATE INDEX IDX_ODE_JOB_TS ON ode_job(ts);
Modified: branches/ODE/ODE-1.x/dao-hibernate-db/src/main/sql/simplesched-hsql.sql
===================================================================
--- branches/ODE/ODE-1.x/dao-hibernate-db/src/main/sql/simplesched-hsql.sql 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/dao-hibernate-db/src/main/sql/simplesched-hsql.sql 2010-05-27 15:55:40 UTC (rev 675)
@@ -10,7 +10,18 @@
nodeid char(64),
scheduled int NOT NULL DEFAULT 0,
transacted int NOT NULL DEFAULT 0,
- details blob(4096),
+
+ instanceId BIGINT,
+ mexId varchar(255),
+ processId varchar(255),
+ type varchar(255),
+ channel varchar(255),
+ correlatorId varchar(255),
+ correlationKeySet varchar(255),
+ retryCount int,
+ inMem int,
+ detailsExt binary(4096),
+
PRIMARY KEY(jobid));
CREATE INDEX IDX_ODE_JOB_TS ON ode_job(ts);
Modified: branches/ODE/ODE-1.x/dao-hibernate-db/src/main/sql/simplesched-mysql.sql
===================================================================
--- branches/ODE/ODE-1.x/dao-hibernate-db/src/main/sql/simplesched-mysql.sql 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/dao-hibernate-db/src/main/sql/simplesched-mysql.sql 2010-05-27 15:55:40 UTC (rev 675)
@@ -11,7 +11,18 @@
nodeid char(64) NULL,
scheduled int NOT NULL DEFAULT 0,
transacted int NOT NULL DEFAULT 0,
- details blob(4096) NULL,
+
+ instanceId BIGINT,
+ mexId varchar(255),
+ processId varchar(255),
+ type varchar(255),
+ channel varchar(255),
+ correlatorId varchar(255),
+ correlationKeySet varchar(255),
+ retryCount int,
+ inMem int,
+ detailsExt blob(4096),
+
PRIMARY KEY(jobid),
INDEX IDX_ODE_JOB_TS(ts),
INDEX IDX_ODE_JOB_NODEID(nodeid)
Modified: branches/ODE/ODE-1.x/dao-hibernate-db/src/main/sql/simplesched-oracle.sql
===================================================================
--- branches/ODE/ODE-1.x/dao-hibernate-db/src/main/sql/simplesched-oracle.sql 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/dao-hibernate-db/src/main/sql/simplesched-oracle.sql 2010-05-27 15:55:40 UTC (rev 675)
@@ -4,13 +4,26 @@
--
--
+DROP TABLE ode_job;
+
CREATE TABLE ode_job (
- jobid CHAR(64) NOT NULL DEFAULT '',
- ts BIGINT NOT NULL DEFAULT 0,
- nodeid char(64),
- scheduled int NOT NULL DEFAULT 0,
- transacted int NOT NULL DEFAULT 0,
- details blob(4096),
+ jobid VARCHAR(64) NOT NULL,
+ ts number(37) NOT NULL,
+ nodeid varchar(64),
+ scheduled int NOT NULL,
+ transacted int NOT NULL,
+
+ instanceId number(37),
+ mexId varchar(255),
+ processId varchar(255),
+ type varchar(255),
+ channel varchar(255),
+ correlatorId varchar(255),
+ correlationKeySet varchar(255),
+ retryCount int,
+ inMem int,
+ detailsExt blob,
+
PRIMARY KEY(jobid));
CREATE INDEX IDX_ODE_JOB_TS ON ode_job(ts);
Modified: branches/ODE/ODE-1.x/dao-hibernate-db/src/main/sql/simplesched-postgres.sql
===================================================================
--- branches/ODE/ODE-1.x/dao-hibernate-db/src/main/sql/simplesched-postgres.sql 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/dao-hibernate-db/src/main/sql/simplesched-postgres.sql 2010-05-27 15:55:40 UTC (rev 675)
@@ -10,7 +10,18 @@
nodeid char(64),
scheduled int NOT NULL DEFAULT 0,
transacted int NOT NULL DEFAULT 0,
- details blob(4096),
+
+ instanceId BIGINT,
+ mexId varchar(255),
+ processId varchar(255),
+ type varchar(255),
+ channel varchar(255),
+ correlatorId varchar(255),
+ correlationKeySet varchar(255),
+ retryCount int,
+ inMem int,
+ detailsExt blob(4096),
+
PRIMARY KEY(jobid));
CREATE INDEX IDX_ODE_JOB_TS ON ode_job(ts);
Modified: branches/ODE/ODE-1.x/dao-hibernate-db/src/main/sql/simplesched-sqlserver.sql
===================================================================
--- branches/ODE/ODE-1.x/dao-hibernate-db/src/main/sql/simplesched-sqlserver.sql 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/dao-hibernate-db/src/main/sql/simplesched-sqlserver.sql 2010-05-27 15:55:40 UTC (rev 675)
@@ -10,7 +10,18 @@
nodeid char(64),
scheduled int NOT NULL DEFAULT 0,
transacted int NOT NULL DEFAULT 0,
- details blob(4096),
+
+ instanceId BIGINT,
+ mexId varchar(255),
+ processId varchar(255),
+ type varchar(255),
+ channel varchar(255),
+ correlatorId varchar(255),
+ correlationKeySet varchar(255),
+ retryCount int,
+ inMem int,
+ detailsExt blob(4096),
+
PRIMARY KEY(jobid));
CREATE INDEX IDX_ODE_JOB_TS ON ode_job(ts);
Modified: branches/ODE/ODE-1.x/dao-jpa/pom.xml
===================================================================
--- branches/ODE/ODE-1.x/dao-jpa/pom.xml 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/dao-jpa/pom.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -26,7 +26,7 @@
<parent>
<groupId>org.apache.ode</groupId>
<artifactId>ode</artifactId>
- <version>1.3.4-SNAPSHOT</version>
+ <version>1.3.4</version>
</parent>
<dependencies>
Modified: branches/ODE/ODE-1.x/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ScopeDAOImpl.java
===================================================================
--- branches/ODE/ODE-1.x/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ScopeDAOImpl.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ScopeDAOImpl.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -163,7 +163,7 @@
}
public ScopeStateEnum getState() {
- return new ScopeStateEnum(_scopeState);
+ return ScopeStateEnum.valueOf(_scopeState);
}
public XmlDataDAO getVariable(String varName) {
Modified: branches/ODE/ODE-1.x/dao-jpa-ojpa-derby/build.xml
===================================================================
--- branches/ODE/ODE-1.x/dao-jpa-ojpa-derby/build.xml 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/dao-jpa-ojpa-derby/build.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -74,6 +74,7 @@
</classpath>
</mappingtool>
<concat destfile="${db.scripts.dir}/(a){db}.sql">
+ <fileset file="${scripts.dir}/common.sql"/>
<fileset file="${scripts.dir}/license-header.sql"/>
<fileset file="${scripts.dir}/simplesched-(a){db}.sql"/>
<fileset file="${db.scripts.dir}/partial.(a){db}.sql"/>
Modified: branches/ODE/ODE-1.x/dao-jpa-ojpa-derby/pom.xml
===================================================================
--- branches/ODE/ODE-1.x/dao-jpa-ojpa-derby/pom.xml 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/dao-jpa-ojpa-derby/pom.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -25,7 +25,7 @@
<parent>
<groupId>org.apache.ode</groupId>
<artifactId>ode</artifactId>
- <version>1.3.4-SNAPSHOT</version>
+ <version>1.3.4</version>
</parent>
<dependencies>
Modified: branches/ODE/ODE-1.x/dao-jpa-ojpa-derby/src/main/scripts/simplesched-derby.sql
===================================================================
--- branches/ODE/ODE-1.x/dao-jpa-ojpa-derby/src/main/scripts/simplesched-derby.sql 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/dao-jpa-ojpa-derby/src/main/scripts/simplesched-derby.sql 2010-05-27 15:55:40 UTC (rev 675)
@@ -10,7 +10,18 @@
nodeid char(64),
scheduled int NOT NULL DEFAULT 0,
transacted int NOT NULL DEFAULT 0,
- details blob(4096),
+
+ instanceId BIGINT,
+ mexId varchar(255),
+ processId varchar(255),
+ type varchar(255),
+ channel varchar(255),
+ correlatorId varchar(255),
+ correlationKeySet varchar(255),
+ retryCount int,
+ inMem int,
+ detailsExt blob(4096),
+
PRIMARY KEY(jobid));
CREATE INDEX IDX_ODE_JOB_TS ON ode_job(ts);
Modified: branches/ODE/ODE-1.x/dao-jpa-ojpa-derby/src/main/scripts/simplesched-mysql.sql
===================================================================
--- branches/ODE/ODE-1.x/dao-jpa-ojpa-derby/src/main/scripts/simplesched-mysql.sql 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/dao-jpa-ojpa-derby/src/main/scripts/simplesched-mysql.sql 2010-05-27 15:55:40 UTC (rev 675)
@@ -11,7 +11,18 @@
nodeid char(64) NULL,
scheduled int NOT NULL DEFAULT 0,
transacted int NOT NULL DEFAULT 0,
- details blob(4096) NULL,
+
+ instanceId BIGINT,
+ mexId varchar(255),
+ processId varchar(255),
+ type varchar(255),
+ channel varchar(255),
+ correlatorId varchar(255),
+ correlationKeySet varchar(255),
+ retryCount int,
+ inMem int,
+ detailsExt blob(4096),
+
PRIMARY KEY(jobid),
INDEX IDX_ODE_JOB_TS(ts),
INDEX IDX_ODE_JOB_NODEID(nodeid)
Modified: branches/ODE/ODE-1.x/dao-jpa-ojpa-derby/src/main/scripts/simplesched-oracle.sql
===================================================================
--- branches/ODE/ODE-1.x/dao-jpa-ojpa-derby/src/main/scripts/simplesched-oracle.sql 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/dao-jpa-ojpa-derby/src/main/scripts/simplesched-oracle.sql 2010-05-27 15:55:40 UTC (rev 675)
@@ -1,5 +1,31 @@
-CREATE TABLE ODE_JOB (jobid varchar2(64 char) DEFAULT '' NOT NULL, ts number(19,0) DEFAULT 0 NOT NULL, nodeid varchar2(64 char) NULL, scheduled number(12,0) DEFAULT 0 NOT NULL, transacted number(12,0) DEFAULT 0 NOT NULL, details BLOB, PRIMARY KEY(jobid));
+-- Apache ODE - SimpleScheduler Database Schema
+--
+-- Apache Derby scripts by Maciej Szefler.
+--
+--
+DROP TABLE ode_job;
+
+CREATE TABLE ode_job (
+ jobid VARCHAR(64) NOT NULL,
+ ts number(37) NOT NULL,
+ nodeid varchar(64),
+ scheduled int NOT NULL,
+ transacted int NOT NULL,
+
+ instanceId number(37),
+ mexId varchar(255),
+ processId varchar(255),
+ type varchar(255),
+ channel varchar(255),
+ correlatorId varchar(255),
+ correlationKeySet varchar(255),
+ retryCount int,
+ inMem int,
+ detailsExt blob,
+
+ PRIMARY KEY(jobid));
+
CREATE INDEX IDX_ODE_JOB_TS ON ode_job(ts);
CREATE INDEX IDX_ODE_JOB_NODEID ON ode_job(nodeid);
Modified: branches/ODE/ODE-1.x/dependencies.rb
===================================================================
--- branches/ODE/ODE-1.x/dependencies.rb 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/dependencies.rb 2010-05-27 15:55:40 UTC (rev 675)
@@ -87,7 +87,7 @@
OPENJPA = ["org.apache.openjpa:openjpa:jar:1.2.1",
"net.sourceforge.serp:serp:jar:1.13.1"]
-SAXON = group("saxon", "saxon-xpath", "saxon-dom", "saxon-xqj", :under=>"net.sf.saxon", :version=>"9.x")
+SAXON = group("saxon", "saxon-xpath", "saxon-dom", "saxon-xqj", :under=>"net.sf.saxon", :version=>"9.1.0.8")
SERVICEMIX = [
group("servicemix-core",
:under=>"org.apache.servicemix", :version=>"3.3"),
Modified: branches/ODE/ODE-1.x/distro/pom.xml
===================================================================
--- branches/ODE/ODE-1.x/distro/pom.xml 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/distro/pom.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -28,7 +28,7 @@
<parent>
<groupId>org.apache.ode</groupId>
<artifactId>ode</artifactId>
- <version>1.3.4-SNAPSHOT</version>
+ <version>1.3.4</version>
</parent>
<properties>
Modified: branches/ODE/ODE-1.x/distro/src/examples-jbi/maven2/ping-pong-osgi/pom.xml
===================================================================
--- branches/ODE/ODE-1.x/distro/src/examples-jbi/maven2/ping-pong-osgi/pom.xml 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/distro/src/examples-jbi/maven2/ping-pong-osgi/pom.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -1,10 +1,29 @@
<?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.
+ -->
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.ode.examples</groupId>
<artifactId>ping-pong-bundle</artifactId>
- <version>1.3.4-SNAPSHOT</version>
+ <name>ODE :: Examples :: Ping Pong OSGi</name>
+ <version>1.3.4</version>
<packaging>bundle</packaging>
<build>
Modified: branches/ODE/ODE-1.x/jacob/pom.xml
===================================================================
--- branches/ODE/ODE-1.x/jacob/pom.xml 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/jacob/pom.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -27,7 +27,7 @@
<parent>
<groupId>org.apache.ode</groupId>
<artifactId>ode</artifactId>
- <version>1.3.4-SNAPSHOT</version>
+ <version>1.3.4</version>
</parent>
<dependencies>
Modified: branches/ODE/ODE-1.x/jacob-ap/pom.xml
===================================================================
--- branches/ODE/ODE-1.x/jacob-ap/pom.xml 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/jacob-ap/pom.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -28,7 +28,7 @@
<parent>
<groupId>org.apache.ode</groupId>
<artifactId>ode</artifactId>
- <version>1.3.4-SNAPSHOT</version>
+ <version>1.3.4</version>
</parent>
<dependencies>
Modified: branches/ODE/ODE-1.x/jbi/pom.xml
===================================================================
--- branches/ODE/ODE-1.x/jbi/pom.xml 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/jbi/pom.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -26,7 +26,7 @@
<parent>
<groupId>org.apache.ode</groupId>
<artifactId>ode</artifactId>
- <version>1.3.4-SNAPSHOT</version>
+ <version>1.3.4</version>
</parent>
<properties>
@@ -231,14 +231,13 @@
<dependency>
<groupId>org.apache.ode</groupId>
<artifactId>ode-dao-hibernate</artifactId>
- <exclusions>
- <exclusion>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
<groupId>org.apache.ode</groupId>
<artifactId>ode-bpel-api-jca</artifactId>
</dependency>
@@ -474,7 +473,7 @@
<goal>copy-resources</goal>
</goals>
<configuration>
- <outputDirectory>${project.build.directory}/test/smx/ode</outputDirectory>
+ <outputDirectory>target/test/smx/ode</outputDirectory>
<resources>
<resource>
<directory>${basedir}/../dao-jpa-ojpa-derby/target/derby</directory>
@@ -485,6 +484,21 @@
</resources>
</configuration>
</execution>
+ <execution>
+ <id>copy-resources2</id>
+ <phase>process-test-resources</phase>
+ <goals>
+ <goal>copy-resources</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>target/test/resources</outputDirectory>
+ <resources>
+ <resource>
+ <directory>src/test/resources</directory>
+ </resource>
+ </resources>
+ </configuration>
+ </execution>
</executions>
</plugin>
</plugins>
@@ -492,20 +506,15 @@
<testResources>
<testResource>
<directory>src/test/resources</directory>
- <targetPath>${project.build.directory}/test/resources</targetPath>
</testResource>
<testResource>
- <directory>src/test/resources</directory>
- <targetPath>${project.build.testOutputDirectory}</targetPath>
- </testResource>
- <testResource>
<directory>src/test/jbi</directory>
- <targetPath>${project.build.directory}/test/smx/ode</targetPath>
+ <targetPath>../test/smx/ode</targetPath>
</testResource>
<testResource>
<directory>src/main/jbi</directory>
<includes><include>hibernate.properties</include></includes>
- <targetPath>${project.build.directory}/test/smx/ode</targetPath>
+ <targetPath>../test/smx/ode</targetPath>
</testResource>
</testResources>
</build>
Modified: branches/ODE/ODE-1.x/jbi/src/main/assembly/bin.xml
===================================================================
--- branches/ODE/ODE-1.x/jbi/src/main/assembly/bin.xml 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/jbi/src/main/assembly/bin.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -91,6 +91,7 @@
<include>commons-dbcp:commons-dbcp</include>
<include>commons-lang:commons-lang</include>
<include>commons-pool:commons-pool</include>
+ <include>commons-beanutils:commons-beanutils</include>
<include>commons-primitives:commons-primitives</include>
<include>org.apache.derby:derby</include>
<include>org.apache.geronimo.specs:geronimo-ejb_2.1_spec</include>
@@ -113,9 +114,13 @@
<include>tranql:tranql-connector</include>
<include>xalan:xalan</include>
<include>org.apache.xmlbeans:xmlbeans</include>
- <include>com.thoughtworks.xstream:xstream</include>
<include>axion:axion</include>
<include>xerces:xercesImpl</include>
+ <include>org.objectweb.howl:howl</include>
+ <include>com.thoughtworks.xstream:xstream</include>
+ <include>xalan:serializer</include>
+ <include>xml-apis:xml-apis</include>
+ <include>org.apache.geronimo.specs:geronimo-jpa_3.0_spec</include>
</includes>
</dependencySet>
Modified: branches/ODE/ODE-1.x/jbi/src/test/java/org/apache/ode/jbi/JbiTestBase.java
===================================================================
--- branches/ODE/ODE-1.x/jbi/src/test/java/org/apache/ode/jbi/JbiTestBase.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/jbi/src/test/java/org/apache/ode/jbi/JbiTestBase.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -107,13 +107,15 @@
protected void enableProcess(String resource, boolean enable) throws Exception {
resource = "target/test/resources/" + resource;
String process = resource.substring(resource.lastIndexOf('/') + 1);
+ String dir = new File(resource).getAbsolutePath();
+ log.debug("enableProcess " + resource + " " + enable + " path: " + dir);
if (enable) {
- odeComponent.getServiceUnitManager().deploy(process, resource);
- odeComponent.getServiceUnitManager().init(process, resource);
+ odeComponent.getServiceUnitManager().deploy(process, dir);
+ odeComponent.getServiceUnitManager().init(process, dir);
odeComponent.getServiceUnitManager().start(process);
} else {
odeComponent.getServiceUnitManager().stop(process);
- odeComponent.getServiceUnitManager().undeploy(process, resource);
+ odeComponent.getServiceUnitManager().undeploy(process, dir);
}
}
@@ -128,86 +130,89 @@
if (!manualDeploy)
enableProcess(getTestName(), true);
- int i = 0;
- boolean loop;
- do {
- String prefix = i == 0 ? "" : "" + i;
- loop = i == 0;
-
- {
- String deploy = testProperties.getProperty(prefix + "deploy");
- if (deploy != null) {
- loop = true;
- enableProcess(getTestName() + "/" + deploy, true);
+ try {
+ int i = 0;
+ boolean loop;
+ do {
+ String prefix = i == 0 ? "" : "" + i;
+ loop = i == 0;
+
+ {
+ String deploy = testProperties.getProperty(prefix + "deploy");
+ if (deploy != null) {
+ loop = true;
+ enableProcess(getTestName() + "/" + deploy, true);
+ }
}
- }
- {
- String undeploy = testProperties.getProperty(prefix + "undeploy");
- if (undeploy != null) {
- loop = true;
- enableProcess(getTestName() + "/" + undeploy, false);
+ {
+ String undeploy = testProperties.getProperty(prefix + "undeploy");
+ if (undeploy != null) {
+ loop = true;
+ enableProcess(getTestName() + "/" + undeploy, false);
+ }
}
- }
-
- String request = testProperties.getProperty(prefix + "request");
- if (request != null && request.startsWith("@")) {
- request = inputStreamToString(getClass().getResourceAsStream("/" + getTestName() + "/" + request.substring(1)));
- }
- String expectedResponse = testProperties.getProperty(prefix + "response");
- {
- String delay = testProperties.getProperty(prefix + "delay");
- if (delay != null) {
- loop = true;
- long d = Long.parseLong(delay);
- log.debug("Sleeping " + d + " ms");
- Thread.sleep(d);
+
+ String request = testProperties.getProperty(prefix + "request");
+ if (request != null && request.startsWith("@")) {
+ request = inputStreamToString(getClass().getResourceAsStream("/" + getTestName() + "/" + request.substring(1)));
}
- }
- {
- String httpUrl = testProperties.getProperty(prefix + "http.url");
- if (httpUrl != null && request != null) {
- loop = true;
- log.debug(getTestName() + " sending http request to " + httpUrl + " request: " + request);
- URLConnection connection = new URL(httpUrl).openConnection();
- connection.setDoOutput(true);
- connection.setDoInput(true);
- //Send request
- OutputStream os = connection.getOutputStream();
- PrintWriter wt = new PrintWriter(os);
- wt.print(request);
- wt.flush();
- wt.close();
- // Read the response.
- String result = inputStreamToString(connection.getInputStream());
-
- log.debug(getTestName() + " have result: " + result);
- matchResponse(expectedResponse, result, true);
- }
- }
- {
- if (testProperties.getProperty(prefix + "nmr.service") != null && request != null) {
- loop = true;
- InOut io = smxClient.createInOutExchange();
- io.setService(QName.valueOf(testProperties.getProperty(prefix + "nmr.service")));
- io.setOperation(QName.valueOf(testProperties.getProperty(prefix + "nmr.operation")));
- io.getInMessage().setContent(new StreamSource(new ByteArrayInputStream(request.getBytes())));
- smxClient.sendSync(io,20000);
- if (io.getStatus() == ExchangeStatus.ACTIVE) {
- assertNotNull(io.getOutMessage());
- String result = new SourceTransformer().contentToString(io.getOutMessage());
- matchResponse(expectedResponse, result, true);
- smxClient.done(io);
- } else {
- matchResponse(expectedResponse, "", false);
+ String expectedResponse = testProperties.getProperty(prefix + "response");
+ {
+ String delay = testProperties.getProperty(prefix + "delay");
+ if (delay != null) {
+ loop = true;
+ long d = Long.parseLong(delay);
+ log.debug("Sleeping " + d + " ms");
+ Thread.sleep(d);
}
- }
- }
-
- i++;
- } while (loop);
-
- if (!manualDeploy)
- enableProcess(getTestName(), false);
+ }
+ {
+ String httpUrl = testProperties.getProperty(prefix + "http.url");
+ if (httpUrl != null && request != null) {
+ loop = true;
+ log.debug(getTestName() + " sending http request to " + httpUrl + " request: " + request);
+ URLConnection connection = new URL(httpUrl).openConnection();
+ connection.setDoOutput(true);
+ connection.setDoInput(true);
+ //Send request
+ OutputStream os = connection.getOutputStream();
+ PrintWriter wt = new PrintWriter(os);
+ wt.print(request);
+ wt.flush();
+ wt.close();
+ // Read the response.
+ String result = inputStreamToString(connection.getInputStream());
+
+ log.debug(getTestName() + " have result: " + result);
+ matchResponse(expectedResponse, result, true);
+ }
+ }
+ {
+ if (testProperties.getProperty(prefix + "nmr.service") != null && request != null) {
+ loop = true;
+ InOut io = smxClient.createInOutExchange();
+ io.setService(QName.valueOf(testProperties.getProperty(prefix + "nmr.service")));
+ io.setOperation(QName.valueOf(testProperties.getProperty(prefix + "nmr.operation")));
+ io.getInMessage().setContent(new StreamSource(new ByteArrayInputStream(request.getBytes())));
+ smxClient.sendSync(io,20000);
+ if (io.getStatus() == ExchangeStatus.ACTIVE) {
+ assertNotNull(io.getOutMessage());
+ String result = new SourceTransformer().contentToString(io.getOutMessage());
+ matchResponse(expectedResponse, result, true);
+ smxClient.done(io);
+ } else {
+ matchResponse(expectedResponse, "", false);
+ }
+ }
+ }
+
+ i++;
+ } while (loop);
+
+ } finally {
+ if (!manualDeploy)
+ enableProcess(getTestName(), false);
+ }
}
protected void matchResponse(String expectedResponse, String result, boolean succeeded) {
Modified: branches/ODE/ODE-1.x/jbi/src/test/java/org/apache/ode/jbi/RetireJbiTest.java
===================================================================
--- branches/ODE/ODE-1.x/jbi/src/test/java/org/apache/ode/jbi/RetireJbiTest.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/jbi/src/test/java/org/apache/ode/jbi/RetireJbiTest.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -1,3 +1,21 @@
+/*
+ * 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.jbi;
public class RetireJbiTest extends JbiTestBase {
Added: branches/ODE/ODE-1.x/jbi/src/test/java/org/apache/ode/jbi/SpringPropertiesJbiTest.java
===================================================================
--- branches/ODE/ODE-1.x/jbi/src/test/java/org/apache/ode/jbi/SpringPropertiesJbiTest.java (rev 0)
+++ branches/ODE/ODE-1.x/jbi/src/test/java/org/apache/ode/jbi/SpringPropertiesJbiTest.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -0,0 +1,23 @@
+/*
+ * 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.jbi;
+
+public class SpringPropertiesJbiTest extends JbiTestBase {
+ public void test() throws Exception {
+ go();
+ }
+}
Modified: branches/ODE/ODE-1.x/jbi/src/test/resources/ReplayerJbiTest/initiateRequest.xml
===================================================================
--- branches/ODE/ODE-1.x/jbi/src/test/resources/ReplayerJbiTest/initiateRequest.xml 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/jbi/src/test/resources/ReplayerJbiTest/initiateRequest.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -1,4 +1,22 @@
<?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.
+ -->
<initiate>
<payload>abc7</payload>
<payload2>abc8</payload2>
Modified: branches/ODE/ODE-1.x/jbi/src/test/resources/ReplayerJbiTest/replayRequest.xml
===================================================================
--- branches/ODE/ODE-1.x/jbi/src/test/resources/ReplayerJbiTest/replayRequest.xml 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/jbi/src/test/resources/ReplayerJbiTest/replayRequest.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -1,4 +1,22 @@
<?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.
+ -->
<pmap:replay xmlns:ns="http://www.apache.org/ode/pmapi/types/2006/08/02/" xmlns:pmap="http://www.apache.org/ode/pmapi">
<replay>
<!--
Modified: branches/ODE/ODE-1.x/jbi/src/test/resources/ReplayerJbiTest/replayXQueryRequest.xml
===================================================================
--- branches/ODE/ODE-1.x/jbi/src/test/resources/ReplayerJbiTest/replayXQueryRequest.xml 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/jbi/src/test/resources/ReplayerJbiTest/replayXQueryRequest.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -1,4 +1,22 @@
<?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.
+ -->
<pmap:replay xmlns:ns="http://www.apache.org/ode/pmapi/types/2006/08/02/" xmlns:pmap="http://www.apache.org/ode/pmapi">
<replay>
<!--
Added: branches/ODE/ODE-1.x/jbi/src/test/resources/SpringPropertiesJbiTest/OnEventCorrelation.bpel
===================================================================
--- branches/ODE/ODE-1.x/jbi/src/test/resources/SpringPropertiesJbiTest/OnEventCorrelation.bpel (rev 0)
+++ branches/ODE/ODE-1.x/jbi/src/test/resources/SpringPropertiesJbiTest/OnEventCorrelation.bpel 2010-05-27 15:55:40 UTC (rev 675)
@@ -0,0 +1,54 @@
+<?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.
+ -->
+<bpws:process xmlns:bpws="http://docs.oasis-open.org/wsbpel/2.0/process/executable" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://sample.bpel.org/bpel/sampleArtifacts" xmlns:tns="http://sample.bpel.org/bpel/sample" exitOnStandardFault="yes" name="OnEventCorrelation" suppressJoinFailure="yes" targetNamespace="http://sample.bpel.org/bpel/sample" expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"
+ xmlns:ode="http://www.apache.org/ode/type/extension"
+ >
+ <bpws:import importType="http://schemas.xmlsoap.org/wsdl/" location="OnEventCorrelation.wsdl" namespace="http://sample.bpel.org/bpel/sample"/>
+ <bpws:import importType="http://schemas.xmlsoap.org/wsdl/" location="OnEventCorrelationArtifacts.wsdl" namespace="http://sample.bpel.org/bpel/sampleArtifacts"/>
+ <bpws:partnerLinks>
+ <bpws:partnerLink myRole="OnEventCorrelationProvider" name="client" partnerLinkType="tns:OnEventCorrelation"/>
+ </bpws:partnerLinks>
+ <bpws:variables>
+ <bpws:variable messageType="tns:OnEventCorrelationMessage" name="input"/>
+ <bpws:variable messageType="tns:OnEventCorrelationMessage" name="output"/>
+ <bpws:variable type="xsd:int" name="i"/>
+ </bpws:variables>
+ <bpws:correlationSets>
+ <bpws:correlationSet name="CorrelationSet" properties="ns:input"/>
+ </bpws:correlationSets>
+ <bpws:sequence name="main">
+ <bpws:scope name="Initialize">
+ <bpws:sequence>
+ <bpws:receive createInstance="yes" operation="initiate" partnerLink="client" portType="tns:OnEventCorrelation" variable="input">
+ <bpws:correlations>
+ <bpws:correlation initiate="yes" set="CorrelationSet"/>
+ </bpws:correlations>
+ </bpws:receive>
+ <bpws:assign>
+ <bpws:copy>
+ <bpws:from>ode:process-property('weirdProp')</bpws:from>
+ <bpws:to>$output.payload</bpws:to>
+ </bpws:copy>
+ </bpws:assign>
+ <bpws:reply operation="initiate" partnerLink="client" variable="output"/>
+ </bpws:sequence>
+ </bpws:scope>
+ </bpws:sequence>
+</bpws:process>
Added: branches/ODE/ODE-1.x/jbi/src/test/resources/SpringPropertiesJbiTest/OnEventCorrelation.wsdl
===================================================================
--- branches/ODE/ODE-1.x/jbi/src/test/resources/SpringPropertiesJbiTest/OnEventCorrelation.wsdl (rev 0)
+++ branches/ODE/ODE-1.x/jbi/src/test/resources/SpringPropertiesJbiTest/OnEventCorrelation.wsdl 2010-05-27 15:55:40 UTC (rev 675)
@@ -0,0 +1,66 @@
+<?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.
+ -->
+<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:tns="http://sample.bpel.org/bpel/sample" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" name="OnEventCorrelation" targetNamespace="http://sample.bpel.org/bpel/sample"
+xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+>
+ <message name="OnEventCorrelationMessage">
+ <part type="xsd:string" name="payload"/>
+ <part type="xsd:string" name="payload2"/>
+ </message>
+ <portType name="OnEventCorrelation">
+ <operation name="initiate">
+ <input message="tns:OnEventCorrelationMessage"/>
+ <output message="tns:OnEventCorrelationMessage"/>
+ </operation>
+ <operation name="complete">
+ <input message="tns:OnEventCorrelationMessage"/>
+ <output message="tns:OnEventCorrelationMessage"/>
+ </operation>
+ </portType>
+ <binding name="OnEventCorrelationBinding" type="tns:OnEventCorrelation">
+ <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
+ <operation name="initiate">
+ <wsdlsoap:operation soapAction="initiate"/>
+ <input>
+ <wsdlsoap:body use="literal"/>
+ </input>
+ <output>
+ <wsdlsoap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="complete">
+ <wsdlsoap:operation soapAction="complete"/>
+ <input>
+ <wsdlsoap:body use="literal"/>
+ </input>
+ <output>
+ <wsdlsoap:body use="literal"/>
+ </output>
+ </operation>
+ </binding>
+ <service name="OnEventCorrelation">
+ <port binding="tns:OnEventCorrelationBinding" name="OnEventCorrelation">
+ <wsdlsoap:address location="http://localhost:8835/ode/processes/OnEventCorrelation/"/>
+ </port>
+ </service>
+ <plnk:partnerLinkType name="OnEventCorrelation">
+ <plnk:role name="OnEventCorrelationProvider" portType="tns:OnEventCorrelation"/>
+ </plnk:partnerLinkType>
+</definitions>
Added: branches/ODE/ODE-1.x/jbi/src/test/resources/SpringPropertiesJbiTest/OnEventCorrelationArtifacts.wsdl
===================================================================
--- branches/ODE/ODE-1.x/jbi/src/test/resources/SpringPropertiesJbiTest/OnEventCorrelationArtifacts.wsdl (rev 0)
+++ branches/ODE/ODE-1.x/jbi/src/test/resources/SpringPropertiesJbiTest/OnEventCorrelationArtifacts.wsdl 2010-05-27 15:55:40 UTC (rev 675)
@@ -0,0 +1,35 @@
+<?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.
+ -->
+<definitions
+ xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype"
+ xmlns:tns="http://sample.bpel.org/bpel/sampleArtifacts"
+ xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:bpel="http://sample.bpel.org/bpel/sample"
+ name="OnEventCorrelationArtifacts"
+ targetNamespace="http://sample.bpel.org/bpel/sampleArtifacts"
+ xmlns="http://schemas.xmlsoap.org/wsdl/"
+ >
+<vprop:property name="input" type="xs:string"/>
+<vprop:propertyAlias messageType="bpel:OnEventCorrelationMessage" part="payload" propertyName="tns:input">
+<!--vprop:query><![CDATA[bpel:input]]></vprop:query-->
+</vprop:propertyAlias>
+<import location="OnEventCorrelation.wsdl" namespace="http://sample.bpel.org/bpel/sample"/>
+</definitions>
Added: branches/ODE/ODE-1.x/jbi/src/test/resources/SpringPropertiesJbiTest/beans.xml
===================================================================
--- branches/ODE/ODE-1.x/jbi/src/test/resources/SpringPropertiesJbiTest/beans.xml (rev 0)
+++ branches/ODE/ODE-1.x/jbi/src/test/resources/SpringPropertiesJbiTest/beans.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -0,0 +1,38 @@
+<?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.
+ -->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:util="http://www.springframework.org/schema/util"
+xmlns:ctx="http://www.springframework.org/schema/context"
+
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
+ http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
+ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
+ http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.5.xsd
+ ">
+
+ <!--
+ <util:properties id="properties" location="/myProcess.properties"/>
+ -->
+ <util:properties id="properties">
+ <prop key="weirdProp">myWeirdPropValue2</prop>
+ </util:properties>
+
+</beans>
Added: branches/ODE/ODE-1.x/jbi/src/test/resources/SpringPropertiesJbiTest/deploy.xml
===================================================================
--- branches/ODE/ODE-1.x/jbi/src/test/resources/SpringPropertiesJbiTest/deploy.xml (rev 0)
+++ branches/ODE/ODE-1.x/jbi/src/test/resources/SpringPropertiesJbiTest/deploy.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -0,0 +1,31 @@
+<?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.
+ -->
+<dd:deploy xmlns:dd="http://www.apache.org/ode/schemas/dd/2007/03"
+ xmlns:bpel="http://sample.bpel.org/bpel/sample"
+ >
+
+ <dd:process
+ name="bpel:OnEventCorrelation" fileName="OnEventCorrelation.bpel">
+ <!--dd:process-events generate="none"/-->
+ <dd:provide partnerLink="client">
+ <dd:service name="bpel:OnEventCorrelation3" port="OnEventCorrelation" />
+ </dd:provide>
+ </dd:process>
+</dd:deploy>
Added: branches/ODE/ODE-1.x/jbi/src/test/resources/SpringPropertiesJbiTest/smx.xml
===================================================================
--- branches/ODE/ODE-1.x/jbi/src/test/resources/SpringPropertiesJbiTest/smx.xml (rev 0)
+++ branches/ODE/ODE-1.x/jbi/src/test/resources/SpringPropertiesJbiTest/smx.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -0,0 +1,60 @@
+<?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.
+
+-->
+<beans xmlns:sm="http://servicemix.apache.org/config/1.0"
+ xmlns:http="http://servicemix.apache.org/http/1.0"
+ xmlns:eip="http://servicemix.apache.org/eip/1.0"
+ xmlns:util="http://www.springframework.org/schema/util"
+ xmlns:jencks="http://jencks.org/2.0"
+ xmlns:mws="http://ode/bpel/unit-test.wsdl"
+ xmlns:bpel="http://sample.bpel.org/bpel/sample"
+ >
+
+ <util:map id="jndiEntries">
+ <entry key="java:comp/env/jdbc/ode" value-ref="odeDS"/>
+ </util:map>
+
+ <sm:container
+ id="jbi"
+ embedded="true"
+ rootDir="target/test/smx"
+ transactionManager="#transactionManager"
+ depends-on="jndi"
+ >
+ <sm:activationSpecs>
+ <sm:activationSpec id="ms-eip">
+ <sm:component>
+ <eip:component>
+ <eip:endpoints>
+ <eip:content-based-router service="bpel:OnEventCorrelation2Fwd" endpoint="OnEventCorrelation2" forwardOperation="true">
+ <eip:rules>
+ <eip:routing-rule>
+ <eip:target>
+ <eip:exchange-target service="bpel:OnEventCorrelation2"/>
+ </eip:target>
+ </eip:routing-rule>
+ </eip:rules>
+ </eip:content-based-router>
+ </eip:endpoints>
+ </eip:component>
+ </sm:component>
+ </sm:activationSpec>
+ </sm:activationSpecs>
+ </sm:container>
+</beans>
Added: branches/ODE/ODE-1.x/jbi/src/test/resources/SpringPropertiesJbiTest/test.properties
===================================================================
--- branches/ODE/ODE-1.x/jbi/src/test/resources/SpringPropertiesJbiTest/test.properties (rev 0)
+++ branches/ODE/ODE-1.x/jbi/src/test/resources/SpringPropertiesJbiTest/test.properties 2010-05-27 15:55:40 UTC (rev 675)
@@ -0,0 +1,21 @@
+#
+# 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.
+#
+
+1nmr.service={http://sample.bpel.org/bpel/sample}OnEventCorrelation3
+1nmr.operation=initiate
+1request=<message><payload>9000</payload><payload2>t2</payload2></message>
+1response=.*myWeirdPropValue2.*
Modified: branches/ODE/ODE-1.x/jbi/src/test/resources/log4j.properties
===================================================================
--- branches/ODE/ODE-1.x/jbi/src/test/resources/log4j.properties 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/jbi/src/test/resources/log4j.properties 2010-05-27 15:55:40 UTC (rev 675)
@@ -33,20 +33,20 @@
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{MM-dd@HH:mm:ss} %-5p (%13F:%L) %3x - %m%n
-log4j.category.org.apache.servicemix.jbi.nmr.flow.seda=DEBUG
+log4j.category.org.apache.servicemix.jbi.nmr.flow.seda=INFO
#log4j.category.org.apache.ode.jbi.msgmap=TRACE
#log4j.category.org.apache.ode.jbi.EndpointReferenceContextImpl=DEBUG
#log4j.category.org.apache.ode.bpel=DEBUG
#log4j.category.org.apache.ode.dao.jpa.CorrelatorDAOImpl=TRACE
#log4j.category.org.apache.ode.dao.jpa.MessageDAOImpl=TRACE
-log4j.category.httpclient=DEBUG
-log4j.category.httpclient.Wire=DEBUG
-log4j.category.org.apache.ode.jbi.JbiTestBase=DEBUG
+log4j.category.httpclient=INFO
+log4j.category.httpclient.Wire=INFO
+log4j.category.org.apache.ode.jbi.JbiTestBase=INFO
#log4j.category.org.apache.ode.bpel.runtime.SCOPE=DEBUG
#log4j.category.org.apache.ode.bpel.runtime.EH_EVENT=DEBUG
#log4j.category.org.apache.ode.bpel.runtime.EH_ALARM=DEBUG
#log4j.category.org.apache.ode.daohib.bpel.CorrelatorDaoImpl=DEBUG
#log4j.category.org.apache.ode.bpel.elang=DEBUG
#log4j.category.org.apache.ode.bpel.compiler=DEBUG
-log4j.category.org.apache.ode.bpel.iapi.BpelEventListener=DEBUG
-log4j.category.org.apache.ode.bpel.engine=DEBUG
+log4j.category.org.apache.ode.bpel.iapi.BpelEventListener=INFO
+log4j.category.org.apache.ode.bpel.engine=INFO
Modified: branches/ODE/ODE-1.x/jbi/src/test/resources/test.wsdl
===================================================================
--- branches/ODE/ODE-1.x/jbi/src/test/resources/test.wsdl 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/jbi/src/test/resources/test.wsdl 2010-05-27 15:55:40 UTC (rev 675)
@@ -1,4 +1,22 @@
<?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 xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.example.org/test/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="test" targetNamespace="http://www.example.org/test/">
<wsdl:types>
<xsd:schema targetNamespace="http://www.example.org/test/">
Modified: branches/ODE/ODE-1.x/jbi-bundle/pom.xml
===================================================================
--- branches/ODE/ODE-1.x/jbi-bundle/pom.xml 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/jbi-bundle/pom.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -33,7 +33,7 @@
<parent>
<groupId>org.apache.ode</groupId>
<artifactId>ode</artifactId>
- <version>1.3.4-SNAPSHOT</version>
+ <version>1.3.4</version>
</parent>
<build>
Modified: branches/ODE/ODE-1.x/jbi-bundle/src/main/resources/META-INF/spring/ode-jbi.xml
===================================================================
--- branches/ODE/ODE-1.x/jbi-bundle/src/main/resources/META-INF/spring/ode-jbi.xml 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/jbi-bundle/src/main/resources/META-INF/spring/ode-jbi.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -61,6 +61,7 @@
<prop key="ode-jbi.db.ext.dataSource">java:comp/env/jdbc/ode</prop>
<prop key="ode-jbi.messageMapper">org.apache.ode.jbi.msgmap.ServiceMixMapper,org.apache.ode.jbi.msgmap.JbiWsdl11WrapperMapper</prop>
<prop key="ode-jbi.jca.port">0</prop>
+ <prop key="javax.persistence.provider">org.apache.openjpa.persistence.PersistenceProviderImpl</prop>
</osgix:cm-properties>
</beans>
Modified: branches/ODE/ODE-1.x/jbi-karaf/pom.xml
===================================================================
--- branches/ODE/ODE-1.x/jbi-karaf/pom.xml 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/jbi-karaf/pom.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -22,7 +22,7 @@
<parent>
<groupId>org.apache.ode</groupId>
<artifactId>ode</artifactId>
- <version>1.3.4-SNAPSHOT</version>
+ <version>1.3.4</version>
</parent>
<artifactId>ode-jbi-karaf</artifactId>
Modified: branches/ODE/ODE-1.x/jca-ra/pom.xml
===================================================================
--- branches/ODE/ODE-1.x/jca-ra/pom.xml 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/jca-ra/pom.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -28,7 +28,7 @@
<parent>
<groupId>org.apache.ode</groupId>
<artifactId>ode</artifactId>
- <version>1.3.4-SNAPSHOT</version>
+ <version>1.3.4</version>
</parent>
<dependencies>
Modified: branches/ODE/ODE-1.x/jca-server/pom.xml
===================================================================
--- branches/ODE/ODE-1.x/jca-server/pom.xml 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/jca-server/pom.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -28,7 +28,7 @@
<parent>
<groupId>org.apache.ode</groupId>
<artifactId>ode</artifactId>
- <version>1.3.4-SNAPSHOT</version>
+ <version>1.3.4</version>
</parent>
<dependencies>
Modified: branches/ODE/ODE-1.x/pom.xml
===================================================================
--- branches/ODE/ODE-1.x/pom.xml 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/pom.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -6,7 +6,7 @@
<packaging>pom</packaging>
<modelVersion>4.0.0</modelVersion>
- <version>1.3.4-SNAPSHOT</version>
+ <version>1.3.4</version>
<url>http://ode.apache.org</url>
<issueManagement>
<system>jira</system>
@@ -36,16 +36,17 @@
</prerequisites>
<properties>
- <ode.version>1.3.4-SNAPSHOT</ode.version>
+ <ode.version>1.3.4</ode.version>
<activation.version>1.1</activation.version>
<annogen.version>0.1.0</annogen.version>
<antlr.version>2.7.7</antlr.version>
<axiom.version>1.2.7</axiom.version>
- <axis2.version>1.4.1</axis2.version>
+ <axis2.version>1.3</axis2.version>
+ <rampart.version>1.3</rampart.version>
<commons.codec.version>1.3</commons.codec.version>
<backport.concurrent.version>3.1</backport.concurrent.version>
<commons.fileupload.version>1.2</commons.fileupload.version>
- <commons.collections.version>3.1</commons.collections.version>
+ <commons.collections.version>3.2.1</commons.collections.version>
<commons.httpclient.version>3.1</commons.httpclient.version>
<commons.io.version>1.4</commons.io.version>
<commons.lang.version>2.4</commons.lang.version>
@@ -185,7 +186,7 @@
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>xmlbeans-maven-plugin</artifactId>
- <version>2.3.3</version>
+ <version>${xmlbeans.version}</version>
</plugin>
<plugin>
@@ -814,7 +815,7 @@
</dependency>
<dependency>
- <groupId>xstream</groupId>
+ <groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>${xstream.version}</version>
</dependency>
Modified: branches/ODE/ODE-1.x/repositories.rb
===================================================================
--- branches/ODE/ODE-1.x/repositories.rb 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/repositories.rb 2010-05-27 15:55:40 UTC (rev 675)
@@ -18,5 +18,6 @@
repositories.remote << "http://repo1.maven.org/maven2"
repositories.remote << "http://people.apache.org/repo/m2-snapshot-repository"
repositories.remote << "http://download.java.net/maven/2"
+repositories.remote << "http://svn.apache.org/repos/asf/servicemix/m2-repo"
repositories.remote << "http://www.aqute.biz/repo"
-repositories.release_to[:url] ||= "sftp://guest@localhost/home/guest"
\ No newline at end of file
+repositories.release_to[:url] ||= "sftp://guest@localhost/home/guest"
Modified: branches/ODE/ODE-1.x/scheduler-simple/pom.xml
===================================================================
--- branches/ODE/ODE-1.x/scheduler-simple/pom.xml 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/scheduler-simple/pom.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -26,7 +26,7 @@
<parent>
<groupId>org.apache.ode</groupId>
<artifactId>ode</artifactId>
- <version>1.3.4-SNAPSHOT</version>
+ <version>1.3.4</version>
</parent>
<dependencies>
Modified: branches/ODE/ODE-1.x/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/DatabaseDelegate.java
===================================================================
--- branches/ODE/ODE-1.x/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/DatabaseDelegate.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/DatabaseDelegate.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -38,7 +38,7 @@
boolean insertJob(Job job, String nodeId, boolean loaded) throws DatabaseException ;
/**
- * Update the job in the database (only updates timestamp and details)
+ * Update the job in the database (only updates timestamp and retryCount)
*
* @param job the job
* @throws DatabaseException in case of error
Modified: branches/ODE/ODE-1.x/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/JdbcDelegate.java
===================================================================
--- branches/ODE/ODE-1.x/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/JdbcDelegate.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/JdbcDelegate.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -27,12 +27,20 @@
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
+import java.sql.Types;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.math.BigDecimal;
import javax.sql.DataSource;
+import javax.xml.namespace.QName;
+import org.apache.ode.bpel.iapi.Scheduler;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
+import org.apache.ode.utils.DbIsolation;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.ode.utils.DbIsolation;
@@ -52,7 +60,7 @@
private static final String UPDATE_REASSIGN = "update ODE_JOB set nodeid = ?, scheduled = 0 where nodeid = ?";
- private static final String UPDATE_JOB = "update ODE_JOB set ts = ?, details = ? where jobid = ?";
+ private static final String UPDATE_JOB = "update ODE_JOB set ts = ?, retryCount = ? where jobid = ?";
private static final String UPGRADE_JOB_DEFAULT = "update ODE_JOB set nodeid = ? where nodeid is null "
+ "and mod(ts,?) = ? and ts < ?";
@@ -70,13 +78,61 @@
+ "and -1 <> ? and -1 <> ? and ts < ?";
private static final String SAVE_JOB = "insert into ODE_JOB "
- + " (jobid, nodeid, ts, scheduled, transacted, details) values(?, ?, ?, ?, ?, ?)";
+ + " (jobid, nodeid, ts, scheduled, transacted, "
+ + "instanceId,"
+ + "mexId,"
+ + "processId,"
+ + "type,"
+ + "channel,"
+ + "correlatorId,"
+ + "correlationKeySet,"
+ + "retryCount,"
+ + "inMem,"
+ + "detailsExt"
+ + ") values(?, ?, ?, ?, ?,"
+ + "?,"
+ + "?,"
+ + "?,"
+ + "?,"
+ + "?,"
+ + "?,"
+ + "?,"
+ + "?,"
+ + "?,"
+ + "?"
+ + ")";
private static final String GET_NODEIDS = "select distinct nodeid from ODE_JOB";
- private static final String SCHEDULE_IMMEDIATE = "select jobid, ts, transacted, scheduled, details from ODE_JOB "
+ private static final String SCHEDULE_IMMEDIATE = "select jobid, ts, transacted, scheduled, "
+ + "instanceId,"
+ + "mexId,"
+ + "processId,"
+ + "type,"
+ + "channel,"
+ + "correlatorId,"
+ + "correlationKeySet,"
+ + "retryCount,"
+ + "inMem,"
+ + "detailsExt"
+ + " from ODE_JOB "
+ "where nodeid = ? and ts < ? order by ts";
+// public Long instanceId;
+// public String mexId;
+// public String processId;
+// public String type;
+// public String channel;
+// public String correlatorId;
+// public String correlationKeySet;
+// public Integer retryCount;
+// public Boolean inMem;
+// public Map<String, Object> detailsExt = new HashMap<String, Object>();
+
+ private static final String UPDATE_SCHEDULED = "update ODE_JOB set scheduled = 1 where jobid in (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
+
+ private static final int UPDATE_SCHEDULED_SLOTS = 10;
+
private DataSource _ds;
private Dialect _dialect;
@@ -137,21 +193,39 @@
Connection con = null;
PreparedStatement ps = null;
try {
+ int i = 1;
con = getConnection();
ps = con.prepareStatement(SAVE_JOB);
- ps.setString(1, job.jobId);
- ps.setString(2, nodeId);
- ps.setLong(3, job.schedDate);
- ps.setInt(4, asInteger(loaded));
- ps.setInt(5, asInteger(job.transacted));
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- try {
- StreamUtils.write(bos, (Serializable) job.detail);
- } catch (Exception ex) {
- __log.error("Error serializing job detail: " + job.detail);
- throw new DatabaseException(ex);
+ ps.setString(i++, job.jobId);
+ ps.setString(i++, nodeId);
+ ps.setLong(i++, job.schedDate);
+ ps.setInt(i++, asInteger(loaded));
+ ps.setInt(i++, asInteger(job.transacted));
+
+ JobDetails details = job.detail;
+ ps.setObject(i++, details.instanceId, Types.BIGINT);
+ ps.setObject(i++, details.mexId, Types.VARCHAR);
+ ps.setObject(i++, details.processId, Types.VARCHAR);
+ ps.setObject(i++, details.type, Types.VARCHAR);
+ ps.setObject(i++, details.channel, Types.VARCHAR);
+ ps.setObject(i++, details.correlatorId, Types.VARCHAR);
+ ps.setObject(i++, details.correlationKeySet, Types.VARCHAR);
+ ps.setObject(i++, details.retryCount, Types.INTEGER);
+ ps.setObject(i++, details.inMem, Types.INTEGER);
+
+ if (details.detailsExt == null || details.detailsExt.size() == 0) {
+ ps.setObject(i++, null, Types.BLOB);
+ } else {
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ try {
+ StreamUtils.write(bos, (Serializable) details.detailsExt);
+ } catch (Exception ex) {
+ __log.error("Error serializing job detail: " + job.detail);
+ throw new DatabaseException(ex);
+ }
+ ps.setBytes(i++, bos.toByteArray());
}
- ps.setBytes(6, bos.toByteArray());
+
return ps.executeUpdate() == 1;
} catch (SQLException se) {
throw new DatabaseException(se);
@@ -163,7 +237,7 @@
public boolean updateJob(Job job) throws DatabaseException {
if (__log.isDebugEnabled())
- __log.debug("updateJob " + job.jobId + " details=" + job);
+ __log.debug("updateJob " + job.jobId + " retryCount=" + job.detail.getRetryCount());
Connection con = null;
PreparedStatement ps = null;
@@ -171,14 +245,7 @@
con = getConnection();
ps = con.prepareStatement(UPDATE_JOB);
ps.setLong(1, job.schedDate);
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- try {
- StreamUtils.write(bos, (Serializable) job.detail);
- } catch (Exception ex) {
- __log.error("Error serializing job detail: " + job.detail);
- throw new DatabaseException(ex);
- }
- ps.setBytes(2, bos.toByteArray());
+ ps.setInt(2, job.detail.getRetryCount());
ps.setString(3, job.jobId);
return ps.executeUpdate() == 1;
} catch (SQLException se) {
@@ -189,6 +256,21 @@
}
}
+ private Long asLong(Object o) {
+ if (o == null) return null;
+ else if (o instanceof BigDecimal) return ((BigDecimal) o).longValue();
+ else if (o instanceof Long) return (Long) o;
+ else if (o instanceof Integer) return ((Integer) o).longValue();
+ else throw new IllegalStateException("Can't convert to long " + o.getClass());
+ }
+
+ private Integer asInteger(Object o) {
+ if (o == null) return null;
+ else if (o instanceof BigDecimal) return ((BigDecimal) o).intValue();
+ else if (o instanceof Integer) return (Integer) o;
+ else throw new IllegalStateException("Can't convert to integer " + o.getClass());
+ }
+
@SuppressWarnings("unchecked")
public List<Job> dequeueImmediate(String nodeId, long maxtime, int maxjobs) throws DatabaseException {
ArrayList<Job> ret = new ArrayList<Job>(maxjobs);
@@ -200,17 +282,65 @@
ps.setString(1, nodeId);
ps.setLong(2, maxtime);
ps.setMaxRows(maxjobs);
+
ResultSet rs = ps.executeQuery();
while (rs.next()) {
- Map<String, Object> details;
- try {
- ObjectInputStream is = new ObjectInputStream(rs.getBinaryStream(5));
- details = (Map<String, Object>) is.readObject();
- is.close();
- } catch (Exception e) {
- throw new DatabaseException("Error deserializing job details", e);
+ Scheduler.JobDetails details = new Scheduler.JobDetails();
+ details.instanceId = asLong(rs.getObject("instanceId"));
+ details.mexId = (String) rs.getObject("mexId");
+ details.processId = (String) rs.getObject("processId");
+ details.type = (String) rs.getObject("type");
+ details.channel = (String) rs.getObject("channel");
+ details.correlatorId = (String) rs.getObject("correlatorId");
+ details.correlationKeySet = (String) rs.getObject("correlationKeySet");
+ details.retryCount = asInteger(rs.getObject("retryCount"));
+ details.inMem = asBoolean(rs.getInt("inMem"));
+ if (rs.getObject("detailsExt") != null) {
+ try {
+ ObjectInputStream is = new ObjectInputStream(rs.getBinaryStream("detailsExt"));
+ details.detailsExt = (Map<String, Object>) is.readObject();
+ is.close();
+ } catch (Exception e) {
+ throw new DatabaseException("Error deserializing job detailsExt", e);
+ }
}
- Job job = new Job(rs.getLong(2), rs.getString(1), asBoolean(rs.getInt(3)), details);
+
+ {
+ //For compatibility reasons, we check whether there are entries inside
+ //jobDetailsExt blob, which correspond to extracted entries. If so, we
+ //use them.
+
+ Map<String, Object> detailsExt = details.getDetailsExt();
+ if (detailsExt.get("type") != null) {
+ details.type = (String) detailsExt.get("type");
+ }
+ if (detailsExt.get("iid") != null) {
+ details.instanceId = (Long) detailsExt.get("iid");
+ }
+ if (detailsExt.get("pid") != null) {
+ details.processId = (String) detailsExt.get("pid");
+ }
+ if (detailsExt.get("inmem") != null) {
+ details.inMem = (Boolean) detailsExt.get("inmem");
+ }
+ if (detailsExt.get("ckey") != null) {
+ details.correlationKeySet = (String) detailsExt.get("ckey");
+ }
+ if (detailsExt.get("channel") != null) {
+ details.channel = (String) detailsExt.get("channel");
+ }
+ if (detailsExt.get("mexid") != null) {
+ details.mexId = (String) detailsExt.get("mexid");
+ }
+ if (detailsExt.get("correlatorId") != null) {
+ details.correlatorId = (String) detailsExt.get("correlatorId");
+ }
+ if (detailsExt.get("retryCount") != null) {
+ details.retryCount = Integer.parseInt((String) detailsExt.get("retryCount"));
+ }
+ }
+
+ Job job = new Job(rs.getLong("ts"), rs.getString("jobid"), asBoolean(rs.getInt("transacted")), details);
ret.add(job);
}
rs.close();
Modified: branches/ODE/ODE-1.x/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/Job.java
===================================================================
--- branches/ODE/ODE-1.x/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/Job.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/Job.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -22,6 +22,7 @@
import java.util.Map;
import java.text.SimpleDateFormat;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
import org.apache.ode.utils.GUID;
/**
@@ -34,14 +35,14 @@
String jobId;
boolean transacted;
- Map<String,Object> detail;
+ JobDetails detail;
boolean persisted = true;
- public Job(long when, boolean transacted, Map<String, Object> jobDetail) {
+ public Job(long when, boolean transacted, JobDetails jobDetail) {
this(when, new GUID().toString(),transacted,jobDetail);
}
-
- public Job(long when, String jobId, boolean transacted,Map<String, Object> jobDetail) {
+
+ public Job(long when, String jobId, boolean transacted, JobDetails jobDetail) {
super(when);
this.jobId = jobId;
this.detail = jobDetail;
Modified: branches/ODE/ODE-1.x/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SimpleScheduler.java
===================================================================
--- branches/ODE/ODE-1.x/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SimpleScheduler.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SimpleScheduler.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -33,12 +33,15 @@
import javax.transaction.SystemException;
import javax.transaction.Transaction;
import javax.transaction.TransactionManager;
+import javax.xml.namespace.QName;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.ode.bpel.common.CorrelationKey;
import org.apache.ode.bpel.iapi.ContextException;
import org.apache.ode.bpel.iapi.Scheduler;
import org.apache.log4j.helpers.AbsoluteTimeDateFormat;
+import org.apache.ode.bpel.iapi.Scheduler.JobType;
/**
* A reliable and relatively simple scheduler that uses a database to persist information about
@@ -340,7 +343,7 @@
}
}
- public String schedulePersistedJob(final Map<String, Object> jobDetail, Date when) throws ContextException {
+ public String schedulePersistedJob(final JobDetails jobDetail, Date when) throws ContextException {
long ctime = System.currentTimeMillis();
if (when == null)
when = new Date(ctime);
@@ -356,10 +359,10 @@
if (when == null)
when = new Date(ctime);
- Map<String, Object> jobDetails = new HashMap<String, Object>();
- jobDetails.put("runnable", runnable);
- runnable.storeToDetailsMap(jobDetails);
-
+ JobDetails jobDetails = new JobDetails();
+ jobDetails.getDetailsExt().put("runnable", runnable);
+ runnable.storeToDetails(jobDetails);
+
if (__log.isDebugEnabled())
__log.debug("scheduling " + jobDetails + " for " + when);
@@ -396,11 +399,11 @@
return job.jobId;
}
- public String scheduleVolatileJob(boolean transacted, Map<String, Object> jobDetail) throws ContextException {
+ public String scheduleVolatileJob(boolean transacted, JobDetails jobDetail) throws ContextException {
return scheduleVolatileJob(transacted, jobDetail, null);
}
- public String scheduleVolatileJob(boolean transacted, Map<String, Object> jobDetail, Date when) throws ContextException {
+ public String scheduleVolatileJob(boolean transacted, JobDetails jobDetail, Date when) throws ContextException {
long ctime = System.currentTimeMillis();
if (when == null)
when = new Date(ctime);
@@ -502,7 +505,7 @@
public Void call() throws Exception {
try {
final Scheduler.JobInfo jobInfo = new Scheduler.JobInfo(job.jobId, job.detail,
- (Integer) (job.detail.get("retry") != null ? job.detail.get("retry") : 0));
+ job.detail.getRetryCount());
if (job.transacted) {
final boolean[] needRetry = new boolean[]{true};
try {
@@ -514,7 +517,7 @@
try {
processor.onScheduledJob(jobInfo);
// If the job is a "runnable" job, schedule the next job occurence
- if (job.detail.get("runnable") != null && !"COMPLETED".equals(String.valueOf(jobInfo.jobDetail.get("runnable_status")))) {
+ if (job.detail.getDetailsExt().get("runnable") != null && !"COMPLETED".equals(String.valueOf(jobInfo.jobDetail.getDetailsExt().get("runnable_status")))) {
// the runnable is still in progress, schedule checker to 10 mins later
if (_pollIntervalForPolledRunnable < 0) {
if (__log.isWarnEnabled())
@@ -547,9 +550,9 @@
execTransaction(new Callable<Void>() {
public Void call() throws Exception {
if (needRetry[0]) {
- int retry = job.detail.get("retry") != null ? (((Integer) job.detail.get("retry")) + 1) : 0;
+ int retry = job.detail.getRetryCount() + 1;
if (retry <= 10) {
- job.detail.put("retry", retry);
+ job.detail.setRetryCount(retry);
long delay = (long)(Math.pow(5, retry));
job.schedDate = System.currentTimeMillis() + delay*1000;
_db.updateJob(job);
@@ -643,7 +646,7 @@
public void runTask(final Task task) {
if (task instanceof Job) {
Job job = (Job)task;
- if( job.detail.get("runnable") != null ) {
+ if( job.detail.getDetailsExt().get("runnable") != null ) {
runPolledRunnable(job);
} else {
runJob(job);
@@ -811,9 +814,17 @@
} finally {
__log.debug("node recovery complete");
}
-
}
+// private long doRetry(Job job) throws DatabaseException {
+// int retry = job.detail.getRetryCount() + 1;
+// job.detail.setRetryCount(retry);
+// long delay = (long)(Math.pow(5, retry - 1));
+// Job jobRetry = new Job(System.currentTimeMillis() + delay*1000, true, job.detail);
+// _db.insertJob(jobRetry, _nodeId, false);
+// return delay;
+// }
+
private abstract class SchedulerTask extends Task implements Runnable {
SchedulerTask(long schedDate) {
super(schedDate);
Modified: branches/ODE/ODE-1.x/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/DelegateSupport.java
===================================================================
--- branches/ODE/ODE-1.x/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/DelegateSupport.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/DelegateSupport.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -19,6 +19,7 @@
package org.apache.ode.scheduler.simple;
+import java.io.InputStream;
import java.sql.Connection;
import javax.sql.DataSource;
@@ -64,9 +65,18 @@
public void setup() throws Exception {
Connection c = _ds.getConnection();
try {
+ StringBuffer sql = new StringBuffer();
+
+ {
+ InputStream in = getClass().getResourceAsStream("/simplesched-hsql.sql");
+ int v;
+ while ((v = in.read()) != -1) {
+ sql.append((char) v);
+ }
+ }
+
c.createStatement().executeUpdate("CREATE ALIAS MOD FOR \"org.apache.ode.scheduler.simple.DelegateSupport.mod\";");
- String sql = "CREATE TABLE \"ODE_JOB\" (\"JOBID\" CHAR(64) NOT NULL, \"TS\" NUMERIC NOT NULL, \"NODEID\" char(64) NULL, \"SCHEDULED\" int NOT NULL, \"TRANSACTED\" int NOT NULL, \"DETAILS\" BINARY(4096) NULL, PRIMARY KEY(\"JOBID\"));";
- c.createStatement().executeUpdate(sql);
+ c.createStatement().executeUpdate(sql.toString());
} finally {
c.close();
}
Modified: branches/ODE/ODE-1.x/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/GeronimoDelegateSupport.java
===================================================================
--- branches/ODE/ODE-1.x/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/GeronimoDelegateSupport.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/GeronimoDelegateSupport.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -1,3 +1,21 @@
+/*
+ * 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.scheduler.simple;
import javax.sql.DataSource;
Modified: branches/ODE/ODE-1.x/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/JdbcDelegateTest.java
===================================================================
--- branches/ODE/ODE-1.x/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/JdbcDelegateTest.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/JdbcDelegateTest.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -22,6 +22,10 @@
import java.util.HashMap;
import java.util.List;
+import javax.xml.namespace.QName;
+
+import org.apache.ode.bpel.iapi.Scheduler;
+import org.apache.ode.bpel.iapi.Scheduler.JobType;
import org.apache.ode.scheduler.simple.DatabaseDelegate;
import org.apache.ode.scheduler.simple.Job;
@@ -52,19 +56,19 @@
assertEquals(0, nids.size());
// try for one nodeid
- _del.insertJob(new Job(0L,true,new HashMap<String, Object>()), "abc", true);
+ _del.insertJob(new Job(0L,true,new Scheduler.JobDetails()), "abc", true);
nids = _del.getNodeIds();
assertEquals(1, nids.size());
assertTrue(nids.contains("abc"));
// check that dups are ignored.
- _del.insertJob(new Job(0L,true,new HashMap<String, Object>()), "abc", true);
+ _del.insertJob(new Job(0L,true,new Scheduler.JobDetails()), "abc", true);
nids = _del.getNodeIds();
assertEquals(1, nids.size());
assertTrue(nids.contains("abc"));
// add another nodeid,
- _del.insertJob(new Job(0L,true,new HashMap<String, Object>()), "123", true);
+ _del.insertJob(new Job(0L,true,new Scheduler.JobDetails()), "123", true);
nids = _del.getNodeIds();
assertEquals(2, nids.size());
assertTrue(nids.contains("abc"));
@@ -72,8 +76,8 @@
}
public void testReassign() throws Exception {
- _del.insertJob(new Job(100L,"j1",true,new HashMap<String, Object>()), "n1", false);
- _del.insertJob(new Job(200L,"j2",true,new HashMap<String, Object>()), "n2", false);
+ _del.insertJob(new Job(100L,"j1",true,new Scheduler.JobDetails()), "n1", false);
+ _del.insertJob(new Job(200L,"j2",true,new Scheduler.JobDetails()), "n2", false);
assertEquals(1,_del.updateReassign("n1","n2"));
List<Job> jobs = _del.dequeueImmediate("n2", 400L, 1000);
@@ -81,8 +85,8 @@
}
public void testScheduleImmediateTimeFilter() throws Exception {
- _del.insertJob(new Job(100L,"j1",true,new HashMap<String, Object>()), "n1", false);
- _del.insertJob(new Job(200L,"j2",true,new HashMap<String, Object>()), "n1", false);
+ _del.insertJob(new Job(100L,"j1",true,new Scheduler.JobDetails()), "n1", false);
+ _del.insertJob(new Job(200L,"j2",true,new Scheduler.JobDetails()), "n1", false);
List<Job> jobs = _del.dequeueImmediate("n1", 150L, 1000);
@@ -97,8 +101,8 @@
}
public void testScheduleImmediateMaxRows() throws Exception {
- _del.insertJob(new Job(100L,"j1",true,new HashMap<String, Object>()), "n1", false);
- _del.insertJob(new Job(200L,"j2",true,new HashMap<String, Object>()), "n1", false);
+ _del.insertJob(new Job(100L,"j1",true,new Scheduler.JobDetails()), "n1", false);
+ _del.insertJob(new Job(200L,"j2",true,new Scheduler.JobDetails()), "n1", false);
List<Job> jobs = _del.dequeueImmediate("n1", 201L, 1);
assertNotNull(jobs);
@@ -107,8 +111,8 @@
}
public void testScheduleImmediateNodeFilter() throws Exception {
- _del.insertJob(new Job(100L,"j1",true,new HashMap<String, Object>()), "n1", false);
- _del.insertJob(new Job(200L,"j2",true,new HashMap<String, Object>()), "n2", false);
+ _del.insertJob(new Job(100L,"j1",true,new Scheduler.JobDetails()), "n1", false);
+ _del.insertJob(new Job(200L,"j2",true,new Scheduler.JobDetails()), "n2", false);
List<Job> jobs = _del.dequeueImmediate("n2", 300L, 1000);
assertNotNull(jobs);
@@ -117,8 +121,8 @@
}
public void testDeleteJob() throws Exception {
- _del.insertJob(new Job(100L,"j1",true,new HashMap<String, Object>()), "n1", false);
- _del.insertJob(new Job(200L,"j2",true,new HashMap<String, Object>()), "n2", false);
+ _del.insertJob(new Job(100L,"j1",true,new Scheduler.JobDetails()), "n1", false);
+ _del.insertJob(new Job(200L,"j2",true,new Scheduler.JobDetails()), "n2", false);
// try deleting, wrong jobid -- del should fail
assertFalse(_del.deleteJob("j1x", "n1"));
@@ -135,7 +139,7 @@
public void testUpgrade() throws Exception {
for (int i = 0; i < 200; ++i)
- _del.insertJob(new Job(i ,"j" +i,true,new HashMap<String, Object>()), null, false);
+ _del.insertJob(new Job(i ,"j" +i,true,new Scheduler.JobDetails()), null, false);
int n1 = _del.updateAssignToNode("n1", 0, 3, 100);
int n2 = _del.updateAssignToNode("n2", 1, 3, 100);
@@ -149,4 +153,30 @@
assertEquals(n3,_del.dequeueImmediate("n3", 10000L, 1000).size());
}
+ public void testMigration() throws Exception {
+ Scheduler.JobDetails j1 = new Scheduler.JobDetails();
+ j1.getDetailsExt().put("type", "MATCHER");
+ j1.getDetailsExt().put("iid", 1234L);
+ j1.getDetailsExt().put("pid", new QName("http://test1", "test2").toString());
+ j1.getDetailsExt().put("inmem", true);
+ j1.getDetailsExt().put("ckey", "@2[some~001~002]");
+ j1.getDetailsExt().put("channel", "123");
+ j1.getDetailsExt().put("mexid", "mexid123");
+ j1.getDetailsExt().put("correlatorId", "cid123");
+ j1.getDetailsExt().put("retryCount", "15");
+
+ _del.insertJob(new Job(0 ,"migration",true,j1), null, false);
+ _del.updateAssignToNode("m", 0, 3, 100);
+ Scheduler.JobDetails j2 = _del.dequeueImmediate("m", 10000L, 1000).get(0).detail;
+
+ assertEquals(j2.getType(), JobType.MATCHER);
+ assertEquals(j2.getInstanceId(), (Object) 1234L);
+ assertEquals(j2.getProcessId(), new QName("http://test1", "test2"));
+ assertEquals(j2.getInMem(), (Object) true);
+ assertEquals(j2.getCorrelationKeySet().toCanonicalString(), (Object) "@2[some~001~002]");
+ assertEquals(j2.getChannel(), (Object) "123");
+ assertEquals(j2.getMexId(), (Object) "mexid123");
+ assertEquals(j2.getCorrelatorId(), (Object) "cid123");
+ assertEquals(j2.getRetryCount(), (Object) 15);
+ }
}
Modified: branches/ODE/ODE-1.x/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/RetriesTest.java
===================================================================
--- branches/ODE/ODE-1.x/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/RetriesTest.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/RetriesTest.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -20,6 +20,8 @@
package org.apache.ode.scheduler.simple;
import org.apache.ode.bpel.iapi.Scheduler;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.apache.geronimo.transaction.manager.GeronimoTransactionManager;
import javax.transaction.TransactionManager;
@@ -32,6 +34,8 @@
* @author Matthieu Riou <mriou(a)apache.org>
*/
public class RetriesTest extends TestCase implements Scheduler.JobProcessor {
+ private static final Log __log = LogFactory.getLog(RetriesTest.class);
+
DelegateSupport _ds;
SimpleScheduler _scheduler;
ArrayList<Scheduler.JobInfo> _jobs;
@@ -66,7 +70,7 @@
}
Thread.sleep(10000);
- assertEquals(8, _tried);
+ assertEquals(6, _tried);
}
public void testExecTransaction() throws Exception {
@@ -95,10 +99,10 @@
throw new Scheduler.JobProcessorException(jobInfo.retryCount < 1);
}
- Map<String, Object> newDetail(String x) {
- HashMap<String, Object> det = new HashMap<String, Object>();
- det.put("foo", x);
- return det;
+ Scheduler.JobDetails newDetail(String x) {
+ Scheduler.JobDetails jd = new Scheduler.JobDetails();
+ jd.getDetailsExt().put("foo", x);
+ return jd;
}
private SimpleScheduler newScheduler(String nodeId) {
Modified: branches/ODE/ODE-1.x/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/SimpleSchedulerTest.java
===================================================================
--- branches/ODE/ODE-1.x/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/SimpleSchedulerTest.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/SimpleSchedulerTest.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -29,6 +29,8 @@
import junit.framework.TestCase;
+import org.apache.geronimo.transaction.manager.GeronimoTransactionManager;
+import org.apache.ode.bpel.iapi.Scheduler;
import org.apache.ode.bpel.iapi.Scheduler.JobInfo;
import org.apache.ode.bpel.iapi.Scheduler.JobProcessor;
import org.apache.ode.bpel.iapi.Scheduler.JobProcessorException;
@@ -238,10 +240,10 @@
}
- Map<String, Object> newDetail(String x) {
- HashMap<String, Object> det = new HashMap<String, Object>();
- det.put("foo", x);
- return det;
+ Scheduler.JobDetails newDetail(String x) {
+ Scheduler.JobDetails jd = new Scheduler.JobDetails();
+ jd.getDetailsExt().put("foo", x);
+ return jd;
}
private SimpleScheduler newScheduler(String nodeId) {
Added: branches/ODE/ODE-1.x/scheduler-simple/src/test/resources/log4j.properties
===================================================================
--- branches/ODE/ODE-1.x/scheduler-simple/src/test/resources/log4j.properties (rev 0)
+++ branches/ODE/ODE-1.x/scheduler-simple/src/test/resources/log4j.properties 2010-05-27 15:55:40 UTC (rev 675)
@@ -0,0 +1,28 @@
+#
+# 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.
+#
+
+# Set root logger level to WARN and its only appender to CONSOLE
+log4j.rootLogger=WARN, CONSOLE
+
+# log4j properties to work with commandline tools.
+log4j.category.org.apache.ode.scheduler.simple.RetriesTest=DEBUG
+log4j.category.org.apache.ode.bpel.engine=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
Added: branches/ODE/ODE-1.x/scheduler-simple/src/test/resources/simplesched-hsql.sql
===================================================================
--- branches/ODE/ODE-1.x/scheduler-simple/src/test/resources/simplesched-hsql.sql (rev 0)
+++ branches/ODE/ODE-1.x/scheduler-simple/src/test/resources/simplesched-hsql.sql 2010-05-27 15:55:40 UTC (rev 675)
@@ -0,0 +1,20 @@
+CREATE TABLE ode_job (
+ jobid CHAR(64) NOT NULL,
+ ts BIGINT NOT NULL,
+ nodeid char(64),
+ scheduled int NOT NULL,
+ transacted int NOT NULL,
+
+ instanceId BIGINT,
+ mexId varchar(255),
+ processId varchar(255),
+ type varchar(255),
+ channel varchar(255),
+ correlatorId varchar(255),
+ correlationKeySet varchar(255),
+ retryCount int,
+ inMem int,
+ detailsExt binary(4096),
+
+ PRIMARY KEY(jobid));
+
Added: branches/ODE/ODE-1.x/schema-updates/update01.sql
===================================================================
--- branches/ODE/ODE-1.x/schema-updates/update01.sql (rev 0)
+++ branches/ODE/ODE-1.x/schema-updates/update01.sql 2010-05-27 15:55:40 UTC (rev 675)
@@ -0,0 +1,7 @@
+alter table BPEL_XML_DATA add DATA blob;
+
+update BPEL_XML_DATA bxd set DATA=(select BIN_DATA from LARGE_DATA where id = bxd.ldata_id);
+delete from LARGE_DATA ld where ld.id in (select ldata_id from BPEL_XML_DATA);
+alter table BPEL_XML_DATA drop column ldata_id;
+
+alter table BPEL_XML_DATA add SIMPLE_VALUE varchar2(255);
Added: branches/ODE/ODE-1.x/schema-updates/update02.sql
===================================================================
--- branches/ODE/ODE-1.x/schema-updates/update02.sql (rev 0)
+++ branches/ODE/ODE-1.x/schema-updates/update02.sql 2010-05-27 15:55:40 UTC (rev 675)
@@ -0,0 +1,14 @@
+create table ODE_JOB_BAK as select * from ODE_JOB;
+alter table ODE_JOB add instanceId number(37);
+alter table ODE_JOB add mexId varchar(255);
+alter table ODE_JOB add processId varchar(255);
+alter table ODE_JOB add type varchar(255);
+alter table ODE_JOB add channel varchar(255);
+alter table ODE_JOB add correlatorId varchar(255);
+alter table ODE_JOB add correlationKeySet varchar(255);
+alter table ODE_JOB add retryCount int;
+alter table ODE_JOB add inMem int;
+alter table ODE_JOB add priority int;
+alter table ODE_JOB add detailsExt blob;
+update ODE_JOB oj set detailsExt = (select details from ODE_JOB where jobid = oj.jobid);
+alter table ODE_JOB drop column details;
Modified: branches/ODE/ODE-1.x/tools/pom.xml
===================================================================
--- branches/ODE/ODE-1.x/tools/pom.xml 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/tools/pom.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -27,7 +27,7 @@
<parent>
<groupId>org.apache.ode</groupId>
<artifactId>ode</artifactId>
- <version>1.3.4-SNAPSHOT</version>
+ <version>1.3.4</version>
</parent>
<dependencies>
Modified: branches/ODE/ODE-1.x/tools/src/main/java/org/apache/ode/tools/sendsoap/cline/HttpSoapSender.java
===================================================================
--- branches/ODE/ODE-1.x/tools/src/main/java/org/apache/ode/tools/sendsoap/cline/HttpSoapSender.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/tools/src/main/java/org/apache/ode/tools/sendsoap/cline/HttpSoapSender.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -19,6 +19,8 @@
package org.apache.ode.tools.sendsoap.cline;
import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.HttpConnectionManager;
+import org.apache.commons.httpclient.SimpleHttpConnectionManager;
import org.apache.commons.httpclient.UsernamePasswordCredentials;
import org.apache.commons.httpclient.auth.AuthScope;
import org.apache.commons.httpclient.methods.PostMethod;
@@ -105,7 +107,10 @@
m.appendReplacement(sb, now + "-" + c++);
}
m.appendTail(sb);
- HttpClient httpClient = new HttpClient();
+ SimpleHttpConnectionManager mgr = new SimpleHttpConnectionManager();
+ mgr.getParams().setConnectionTimeout(60000);
+ mgr.getParams().setSoTimeout(60000);
+ HttpClient httpClient = new HttpClient(mgr);
PostMethod httpPostMethod = new PostMethod(u.toExternalForm());
if (proxyServer != null && proxyServer.length() > 0) {
httpClient.getState().setCredentials(new AuthScope(proxyServer, proxyPort),
Modified: branches/ODE/ODE-1.x/utils/pom.xml
===================================================================
--- branches/ODE/ODE-1.x/utils/pom.xml 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/utils/pom.xml 2010-05-27 15:55:40 UTC (rev 675)
@@ -28,7 +28,7 @@
<parent>
<groupId>org.apache.ode</groupId>
<artifactId>ode</artifactId>
- <version>1.3.4-SNAPSHOT</version>
+ <version>1.3.4</version>
</parent>
<dependencies>
@@ -65,7 +65,7 @@
<artifactId>log4j</artifactId>
</dependency>
<dependency>
- <groupId>xstream</groupId>
+ <groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
</dependency>
<dependency>
@@ -90,17 +90,9 @@
</dependency>
<dependency>
<groupId>org.apache.axis2</groupId>
- <artifactId>axis2-jibx</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.axis2</groupId>
<artifactId>axis2-saaj</artifactId>
</dependency>
<dependency>
- <groupId>org.apache.axis2</groupId>
- <artifactId>axis2-xmlbeans</artifactId>
- </dependency>
- <dependency>
<groupId>net.sf.saxon</groupId>
<artifactId>saxon</artifactId>
</dependency>
Modified: branches/ODE/ODE-1.x/utils/src/main/java/org/apache/ode/utils/CronExpression.java
===================================================================
--- branches/ODE/ODE-1.x/utils/src/main/java/org/apache/ode/utils/CronExpression.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/utils/src/main/java/org/apache/ode/utils/CronExpression.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -1,3 +1,21 @@
+/*
+ * 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.utils;
import java.io.Serializable;
Modified: branches/ODE/ODE-1.x/utils/src/main/java/org/apache/ode/utils/RelativeDateParser.java
===================================================================
--- branches/ODE/ODE-1.x/utils/src/main/java/org/apache/ode/utils/RelativeDateParser.java 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/utils/src/main/java/org/apache/ode/utils/RelativeDateParser.java 2010-05-27 15:55:40 UTC (rev 675)
@@ -1,3 +1,21 @@
+/*
+ * 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.utils;
import java.text.ParseException;
Modified: branches/ODE/ODE-1.x/utils/src/test/resources/log4j.properties
===================================================================
--- branches/ODE/ODE-1.x/utils/src/test/resources/log4j.properties 2010-05-26 21:58:07 UTC (rev 674)
+++ branches/ODE/ODE-1.x/utils/src/test/resources/log4j.properties 2010-05-27 15:55:40 UTC (rev 675)
@@ -19,7 +19,7 @@
log4j.rootLogger=WARN, FILE
# log4j properties to work with commandline tools.
-log4j.category.org.apache.ode=DEBUG
+log4j.category.org.apache.ode=INFO
# Console appender
#log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
15 years, 4 months
riftsaw SVN: r674 - in trunk: runtime/engine/src/main/java/org/jboss/soa/bpel/runtime/engine/ode and 19 other directories.
by riftsaw-commits@lists.jboss.org
Author: bbrodt
Date: 2010-05-26 17:58:07 -0400 (Wed, 26 May 2010)
New Revision: 674
Added:
trunk/stress-tests/
trunk/stress-tests/.classpath
trunk/stress-tests/.project
trunk/stress-tests/.settings/
trunk/stress-tests/.settings/org.eclipse.jdt.core.prefs
trunk/stress-tests/.settings/org.maven.ide.eclipse.prefs
trunk/stress-tests/build.xml
trunk/stress-tests/pom.xml
trunk/stress-tests/src/
trunk/stress-tests/src/test/
trunk/stress-tests/src/test/java/
trunk/stress-tests/src/test/java/org/
trunk/stress-tests/src/test/java/org/jboss/
trunk/stress-tests/src/test/java/org/jboss/soa/
trunk/stress-tests/src/test/java/org/jboss/soa/bpel/
trunk/stress-tests/src/test/java/org/jboss/soa/bpel/tests/
trunk/stress-tests/src/test/java/org/jboss/soa/bpel/tests/RiftSawTest.java
trunk/stress-tests/src/test/java/org/jboss/soa/bpel/tests/RiftSawTestHelper.java
trunk/stress-tests/src/test/java/org/jboss/soa/bpel/tests/RiftSawTestSetup.java
trunk/stress-tests/src/test/java/org/jboss/soa/bpel/tests/TestDeployer.java
trunk/stress-tests/src/test/java/org/jboss/soa/bpel/tests/TestDeployerJBoss.java
trunk/stress-tests/src/test/java/org/jboss/soa/bpel/tests/testcases/
trunk/stress-tests/src/test/java/org/jboss/soa/bpel/tests/testcases/RiftSaw155TestCase.java
trunk/stress-tests/src/test/resources/
trunk/stress-tests/src/test/resources/testcases/
trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/
trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/
trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version1/
trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version1/bpel-deploy.xml
trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version1/goodbye.bpel
trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version1/goodbye.bpelex
trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version1/goodbyeArtifacts.wsdl
trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version1/hello.bpel
trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version1/hello.bpelex
trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version1/helloArtifacts.wsdl
trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version2/
trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version2/bpel-deploy.xml
trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version2/goodbye.bpel
trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version2/goodbye.bpelex
trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version2/goodbyeArtifacts.wsdl
trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version2/hello.bpel
trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version2/hello.bpelex
trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version2/helloArtifacts.wsdl
trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version3/
trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version3/bpel-deploy.xml
trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version3/goodbye.bpel
trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version3/goodbye.bpelex
trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version3/goodbyeArtifacts.wsdl
trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version3/hello.bpel
trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version3/hello.bpelex
trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version3/helloArtifacts.wsdl
trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/build.xml
trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/messages/
trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/messages/goodbye_request1.xml
trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/messages/goodbye_response3.xml
trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/messages/hello_fail_response1.xml
trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/messages/hello_request1.xml
trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/messages/hello_response1.xml
trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/messages/hello_response2.xml
trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/messages/hello_response3.xml
Modified:
trunk/pom.xml
trunk/runtime/engine/src/main/java/org/jboss/soa/bpel/runtime/engine/ode/BPELEngineImpl.java
Log:
https://jira.jboss.org/browse/RIFTSAW-182
RiftSaw stress-tests
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2010-05-26 17:34:39 UTC (rev 673)
+++ trunk/pom.xml 2010-05-26 21:58:07 UTC (rev 674)
@@ -63,6 +63,12 @@
<module>integration-tests</module>
</modules>
</profile>
+ <profile>
+ <id>stress</id>
+ <modules>
+ <module>stress-tests</module>
+ </modules>
+ </profile>
</profiles>
<properties>
Modified: trunk/runtime/engine/src/main/java/org/jboss/soa/bpel/runtime/engine/ode/BPELEngineImpl.java
===================================================================
--- trunk/runtime/engine/src/main/java/org/jboss/soa/bpel/runtime/engine/ode/BPELEngineImpl.java 2010-05-26 17:34:39 UTC (rev 673)
+++ trunk/runtime/engine/src/main/java/org/jboss/soa/bpel/runtime/engine/ode/BPELEngineImpl.java 2010-05-26 21:58:07 UTC (rev 674)
@@ -569,9 +569,7 @@
case ACTVIATED:
// bounce the process
_bpelServer.unregister(pse.pid);
- if (pconf != null && ProcessState.ACTIVE.equals(pconf.getState())) {
- // https://jira.jboss.org/browse/RIFTSAW-155
- // only re-register if this process is still active
+ if (pconf != null) {
_bpelServer.register(pconf);
} else {
__log.debug("slighly odd: recevied event " +
@@ -584,9 +582,7 @@
// remove the process
_bpelServer.unregister(pse.pid);
// bounce the process if necessary
- if (instantiated && pconf!=null && ProcessState.ACTIVE.equals(pconf.getState())) {
- // https://jira.jboss.org/browse/RIFTSAW-155
- // only re-register if this process is still active
+ if (instantiated) {
if (pconf != null) {
_bpelServer.register(pconf);
} else {
Added: trunk/stress-tests/.classpath
===================================================================
--- trunk/stress-tests/.classpath (rev 0)
+++ trunk/stress-tests/.classpath 2010-05-26 21:58:07 UTC (rev 674)
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src/test/java"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/java-1.6.0-openjdk-1.6.0.0"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/3"/>
+ <classpathentry kind="lib" path="/home/bbrodt/.m2/repository/commons-httpclient/commons-httpclient/3.1/commons-httpclient-3.1.jar"/>
+ <classpathentry kind="lib" path="/home/bbrodt/.m2/repository/org/jboss/logging/jboss-logging-spi/2.1.0.GA/jboss-logging-spi-2.1.0.GA.jar"/>
+ <classpathentry kind="lib" path="/home/bbrodt/.m2/repository/org/jboss/soa/bpel/dependencies/esb/jbossesb-rosetta/4.7/jbossesb-rosetta-4.7.jar"/>
+ <classpathentry kind="lib" path="/home/bbrodt/.m2/repository/org/mortbay/jetty/jetty-util/6.1.12rc1/jetty-util-6.1.12rc1.jar" sourcepath="/home/bbrodt/.m2/repository/org/mortbay/jetty/jetty-util/6.1.12rc1/jetty-util-6.1.12rc1-sources.jar">
+ <attributes>
+ <attribute name="maven.groupId" value="org.mortbay.jetty"/>
+ <attribute name="maven.artifactId" value="jetty-util"/>
+ <attribute name="maven.version" value="6.1.12rc1"/>
+ <attribute name="maven.scope" value="test"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
Added: trunk/stress-tests/.project
===================================================================
--- trunk/stress-tests/.project (rev 0)
+++ trunk/stress-tests/.project 2010-05-26 21:58:07 UTC (rev 674)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>stress-tests</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.maven.ide.eclipse.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.maven.ide.eclipse.maven2Nature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
Added: trunk/stress-tests/.settings/org.eclipse.jdt.core.prefs
===================================================================
--- trunk/stress-tests/.settings/org.eclipse.jdt.core.prefs (rev 0)
+++ trunk/stress-tests/.settings/org.eclipse.jdt.core.prefs 2010-05-26 21:58:07 UTC (rev 674)
@@ -0,0 +1,12 @@
+#Mon May 17 14:29:08 MDT 2010
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
Added: trunk/stress-tests/.settings/org.maven.ide.eclipse.prefs
===================================================================
--- trunk/stress-tests/.settings/org.maven.ide.eclipse.prefs (rev 0)
+++ trunk/stress-tests/.settings/org.maven.ide.eclipse.prefs 2010-05-26 21:58:07 UTC (rev 674)
@@ -0,0 +1,9 @@
+#Wed May 26 12:36:50 MDT 2010
+activeProfiles=
+eclipse.preferences.version=1
+fullBuildGoals=process-test-resources
+includeModules=false
+resolveWorkspaceProjects=true
+resourceFilterGoals=process-resources resources\:testResources
+skipCompilerPlugin=true
+version=1
Added: trunk/stress-tests/build.xml
===================================================================
--- trunk/stress-tests/build.xml (rev 0)
+++ trunk/stress-tests/build.xml 2010-05-26 21:58:07 UTC (rev 674)
@@ -0,0 +1,129 @@
+<project name="stress-tests" basedir=".">
+
+ <property environment="env" />
+ <property name="replace.qa.jdbc" value="true" />
+ <property name="startup.time" value="1" />
+
+ <property file="${riftsaw.test.deployment.properties}" />
+
+ <condition property="is.ojdbc.available">
+ <available file="${basedir}/../distribution/target/libs/ojdbc14.jar" />
+ </condition>
+
+ <condition property="is.replace.qa.jdbc">
+ <equals arg1="true" arg2="${replace.qa.jdbc}" />
+ </condition>
+
+ <target name="copy.ojdbc" if="is.ojdbc.available">
+ <copy file="${basedir}/../distribution/target/libs/ojdbc14.jar"
+ todir="${basedir}/../distribution/target/dist/riftsaw-${riftsaw.engine.version}/db/drivers"/>
+ </target>
+
+ <target name="copy.rosetta.aop">
+ <copy file="${dependency.rosetta.aop}"
+ tofile="${basedir}/target/rosetta.aop" />
+ </target>
+
+ <target name="replace.jdbc.files" if="is.replace.qa.jdbc">
+ <echo>Replacing the QA's Lab jdbc files</echo>
+ <copy todir="${basedir}/../distribution/target/dist/riftsaw-${riftsaw.engine.version}/db/jdbc" overwrite="true">
+ <fileset dir="${basedir}/../qa/jdbc">
+ <include name="*.properties" />
+ </fileset>
+ </copy>
+ </target>
+
+ <target name="unpack-distribution">
+ <mkdir dir="${basedir}/../distribution/target/dist"/>
+ <unzip dest="${basedir}/../distribution/target/dist" src="${basedir}/../distribution/target/riftsaw-${riftsaw.engine.version}.zip"/>
+
+ <antcall target="copy.ojdbc" />
+ </target>
+
+ <target name="deploy-riftsaw" >
+ <antcall target="replace.jdbc.files" />
+ <ant antfile="build.xml"
+ target="deploy"
+ dir="${basedir}/../distribution/target/dist/riftsaw-${riftsaw.engine.version}/install">
+ <property name="org.jboss.as.home" value="${org.jboss.as.home}" />
+ <property name="org.jboss.as.config" value="${org.jboss.as.config}" />
+ <property name="org.jboss.esb.home" value="${org.jboss.esb.home}" />
+ <property name="database" value="${database}" />
+ </ant>
+ </target>
+
+ <target name="undeploy-riftsaw" >
+ <ant antfile="build.xml"
+ target="undeploy"
+ dir="${basedir}/../distribution/target/dist/riftsaw-${riftsaw.engine.version}/install">
+ <property name="org.jboss.as.home" value="${org.jboss.as.home}" />
+ <property name="org.jboss.as.config" value="${org.jboss.as.config}" />
+ <property name="org.jboss.esb.home" value="${org.jboss.esb.home}" />
+ <property name="database" value="${database}" />
+ </ant>
+ </target>
+
+ <target name="start-server" >
+
+ <java classname="org.jboss.Main"
+ fork="true" spawn="true"
+ dir="${org.jboss.as.home}/server/default" >
+ <arg line="-c default"/>
+ <jvmarg value="-Djava.endorsed.dirs=${org.jboss.as.home}/lib/endorsed"/>
+ <jvmarg value="-Xms128m"/>
+ <jvmarg value="-Xmx512m"/>
+ <jvmarg value="-XX:MaxPermSize=256m"/>
+ <classpath>
+ <pathelement path="${org.jboss.as.home}/bin/run.jar"/>
+ <pathelement path="${JAVA_HOME}/lib/tools.jar"/>
+ </classpath>
+ </java>
+
+ <echo>Starting the server</echo>
+
+ <waitfor maxwait="4" maxwaitunit="minute">
+ <socket server="localhost" port="1099"/>
+ </waitfor>
+
+ <echo>JNP port detected, just waiting for ${startup.time} min 30 secs to ensure server started</echo>
+
+ <sleep minutes="${startup.time}" seconds="30" />
+
+ <echo>Server has started</echo>
+
+ </target>
+
+ <target name="stop-server" >
+ <echo>Stopping the server</echo>
+ <echo>Server is at ${org.jboss.as.home}</echo>
+
+ <java classname="org.jboss.Shutdown" fork="true" failonerror="false" resultproperty="shutdown.rc">
+ <arg line="-s jnp://localhost:1099 --shutdown"/>
+ <classpath>
+ <pathelement path="${org.jboss.as.home}/bin/shutdown.jar"/>
+ <pathelement path="${org.jboss.as.home}/client/jbossall-client.jar"/>
+ <pathelement path="${JAVA_HOME}/lib/tools.jar"/>
+ </classpath>
+ </java>
+ <echo>Shutdown rc = ${shutdown.rc}</echo>
+ <condition property="shutdown.okay">
+ <equals arg1="${shutdown.rc}" arg2="0"/>
+ </condition>
+ <fail unless="shutdown.okay" message="Unable to shut down JBoss (maybe it hasn't fully started yet?)."/>
+ <echo>Waiting for JNP to stop listening...</echo>
+ <waitfor maxwait="2" maxwaitunit="minute">
+ <not>
+ <socket server="localhost" port="1099"/>
+ </not>
+ </waitfor>
+ </target>
+
+ <target name="package-tests" >
+ <echo>Package tests...</echo>
+ <antcall target="copy.rosetta.aop" />
+ <mkdir dir="target/tests"/>
+
+ <ant antfile="src/test/resources/testcases/RiftSaw_155/build.xml" />
+
+ </target>
+</project>
Added: trunk/stress-tests/pom.xml
===================================================================
--- trunk/stress-tests/pom.xml (rev 0)
+++ trunk/stress-tests/pom.xml 2010-05-26 21:58:07 UTC (rev 674)
@@ -0,0 +1,303 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.jboss.soa.bpel</groupId>
+ <artifactId>stress-tests</artifactId>
+ <packaging>pom</packaging>
+ <version>2.0.1-SNAPSHOT</version>
+ <name>RiftSaw::Stress-Tests</name>
+ <parent>
+ <groupId>org.jboss.soa</groupId>
+ <artifactId>bpel</artifactId>
+ <version>2.0.1-SNAPSHOT</version>
+ </parent>
+ <properties>
+ <jboss.jbosssx.version>2.0.2.SP3</jboss.jbosssx.version>
+ <jboss.common.version>1.2.1.GA</jboss.common.version>
+ <jboss.version>5.1.0.GA</jboss.version>
+ </properties>
+ <dependencies>
+ <dependency>
+ <groupId>woodstox</groupId>
+ <artifactId>wstx-asl</artifactId>
+ <version>3.2.6</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>commons-httpclient</groupId>
+ <artifactId>commons-httpclient</artifactId>
+ <version>3.1</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.soa.bpel.dependencies.esb</groupId>
+ <artifactId>jbossesb-rosetta</artifactId>
+ <version>${jbossesb.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.soa.bpel.dependencies.esb</groupId>
+ <artifactId>jbossesb-config-model</artifactId>
+ <version>1.2.0</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.soa.bpel.dependencies.esb</groupId>
+ <artifactId>jbossts-common</artifactId>
+ <version>${jbossesb.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.jbossas</groupId>
+ <artifactId>jboss-as-client</artifactId>
+ <version>${jboss.version}</version>
+ <type>pom</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.jbossas</groupId>
+ <artifactId>jboss-as-aspects</artifactId>
+ <version>${jboss.version}</version>
+ <classifier>jboss-aop-jboss5</classifier>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.jbossas</groupId>
+ <artifactId>jboss-as-aspects</artifactId>
+ <version>${jboss.version}</version>
+ <classifier>jboss-aspect-library</classifier>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.jbossas</groupId>
+ <artifactId>jboss-as-aspects</artifactId>
+ <version>${jboss.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ <version>${xmlbeans.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <!--
+ we use the aop fixes for now <dependency>
+ <groupId>org.apache.ws.scout</groupId> <artifactId>scout</artifactId>
+ <version>1.2</version> <scope>test</scope> <exclusions> <exclusion>
+ <groupId>com.sun.xml.bind</groupId>
+ <artifactId>jaxb-impl</artifactId> </exclusion> </exclusions>
+ </dependency>
+ -->
+ <dependency>
+ <groupId>org.jboss.soa.bpel.dependencies.esb</groupId>
+ <artifactId>scout</artifactId>
+ <version>1.2</version>
+ <classifier>aop</classifier>
+ <type>jar</type>
+ </dependency>
+ <!--
+ we use the aop fixes for now <dependency>
+ <groupId>org.apache.juddi</groupId>
+ <artifactId>juddi-client</artifactId> <version>3.0.0</version>
+ <scope>test</scope> </dependency>
+ -->
+ <dependency>
+ <groupId>org.jboss.soa.bpel.dependencies.esb</groupId>
+ <artifactId>juddi-client</artifactId>
+ <version>3.0.0</version>
+ <classifier>aop</classifier>
+ <type>jar</type>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.soa.bpel.dependencies.esb</groupId>
+ <artifactId>juddi-core</artifactId>
+ <version>3.0.0</version>
+ <classifier>aop</classifier>
+ <type>jar</type>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.soa.bpel.dependencies.esb.aop</groupId>
+ <artifactId>rosetta</artifactId>
+ <version>4.7</version>
+ <type>aop</type>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.juddi</groupId>
+ <artifactId>uddi-ws</artifactId>
+ <version>3.0.0</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.mortbay.jetty</groupId>
+ <artifactId>jetty-util</artifactId>
+ <version>6.1.12rc1</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>commons-configuration</groupId>
+ <artifactId>commons-configuration</artifactId>
+ <version>1.5</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>commons-collections</groupId>
+ <artifactId>commons-collections</artifactId>
+ <version>3.2.1</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>1.2.13</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <version>1.3</version>
+ <executions>
+ <execution>
+ <id>deploy-riftsaw</id>
+ <phase>pre-integration-test</phase>
+ <configuration>
+ <tasks>
+ <property name="compile_classpath" refid="maven.compile.classpath" />
+ <property name="runtime_classpath" refid="maven.runtime.classpath" />
+ <property name="test_classpath" refid="maven.test.classpath" />
+ <property name="plugin_classpath" refid="maven.plugin.classpath" />
+ <property name="project.version" value="${project.version}" />
+ <property name="riftsaw.engine.version" value="${riftsaw.engine.version}" />
+ <property name="dependency.bpel.deployer"
+ value="${maven.dependency.org.jboss.soa.bpel.runtime.deployer.jar.path}" />
+ <property name="dependency.bpel.engine"
+ value="${maven.dependency.org.jboss.soa.bpel.runtime.engine.jar.path}" />
+ <property name="dependency.bpel.jb-bpel-store"
+ value="${maven.dependency.org.jboss.soa.bpel.runtime.jb-bpel-store.jar.path}" />
+ <property name="dependency.rosetta.aop"
+ value="${maven.dependency.org.jboss.soa.bpel.dependencies.esb.aop.rosetta.aop.path}" />
+ <ant antfile="${basedir}/build.xml">
+ <target name="unpack-distribution" />
+ </ant>
+ <ant antfile="${basedir}/build.xml">
+ <target name="package-tests" />
+ </ant>
+ <ant antfile="${basedir}/build.xml">
+ <target name="deploy-riftsaw" />
+ </ant>
+ <ant antfile="${basedir}/build.xml">
+ <target name="start-server" />
+ </ant>
+ </tasks>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>undeploy-riftsaw</id>
+ <phase>post-integration-test</phase>
+ <configuration>
+ <tasks>
+ <property name="compile_classpath" refid="maven.compile.classpath" />
+ <property name="runtime_classpath" refid="maven.runtime.classpath" />
+ <property name="test_classpath" refid="maven.test.classpath" />
+ <property name="plugin_classpath" refid="maven.plugin.classpath" />
+ <property name="project.version" value="${project.version}" />
+ <property name="riftsaw.engine.version" value="${riftsaw.engine.version}" />
+ <property name="dependency.bpel.deployer"
+ value="${maven.dependency.org.jboss.soa.bpel.runtime.deployer.jar.path}" />
+ <property name="dependency.bpel.engine"
+ value="${maven.dependency.org.jboss.soa.bpel.runtime.engine.jar.path}" />
+ <property name="dependency.bpel.jb-bpel-store"
+ value="${maven.dependency.org.jboss.soa.bpel.runtime.jb-bpel-store.jar.path}" />
+ <ant antfile="${basedir}/build.xml">
+ <target name="stop-server" />
+ </ant>
+ <ant antfile="${basedir}/build.xml">
+ <target name="undeploy-riftsaw" />
+ </ant>
+ </tasks>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>compiler-it</id>
+ <phase>pre-integration-test</phase>
+ <goals>
+ <goal>testCompile</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <additionalClasspathElements>
+ <additionalClasspathElement>${basedir}/src/test/resources/conf</additionalClasspathElement>
+ <additionalClasspathElement>${basedir}/target/rosetta.aop</additionalClasspathElement>
+ </additionalClasspathElements>
+ <systemProperties>
+ <property>
+ <name>test.dir</name>
+ <value>${basedir}/target/tests</value>
+ </property>
+ <property>
+ <name>java.naming.factory.initial</name>
+ <value>org.jnp.interfaces.NamingContextFactory</value>
+ </property>
+ <property>
+ <name>java.naming.factory.url.pkgs</name>
+ <value>org.jboss.naming:org.jnp.interfaces</value>
+ </property>
+ <property>
+ <name>java.naming.provider.url</name>
+ <value>jnp://localhost:1099</value>
+ </property>
+ <property>
+ <name>java.rmi.server.ignoreStubClasses</name>
+ <value>true</value>
+ </property>
+ </systemProperties>
+ <testFailureIgnore>true</testFailureIgnore>
+ <includes>
+ <include>**/*TestCase.java</include>
+ <include>**/*Test.java</include>
+ </includes>
+ </configuration>
+ <executions>
+ <execution>
+ <id>test-riftsaw</id>
+ <phase>integration-test</phase>
+ <goals>
+ <goal>test</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ <reporting>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-report-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </reporting>
+</project>
Added: trunk/stress-tests/src/test/java/org/jboss/soa/bpel/tests/RiftSawTest.java
===================================================================
--- trunk/stress-tests/src/test/java/org/jboss/soa/bpel/tests/RiftSawTest.java (rev 0)
+++ trunk/stress-tests/src/test/java/org/jboss/soa/bpel/tests/RiftSawTest.java 2010-05-26 21:58:07 UTC (rev 674)
@@ -0,0 +1,186 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.soa.bpel.tests;
+
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import javax.management.MBeanServerConnection;
+import javax.naming.NamingException;
+
+import junit.framework.TestCase;
+
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.methods.GetMethod;
+import org.apache.commons.httpclient.methods.PostMethod;
+import org.apache.commons.httpclient.methods.StringRequestEntity;
+import org.jboss.logging.Logger;
+import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.message.format.MessageFactory;
+import org.jboss.soa.esb.client.ServiceInvoker;
+
+/**
+ * Base class for RiftSaw test cases. Based on
+ * equivalent class in JBossWS written by
+ * Thomas Diesler and Richard Opalka.
+ *
+ */
+public abstract class RiftSawTest extends TestCase {
+
+ protected static Logger log = Logger.getLogger(RiftSawTest.class.getName());
+ private RiftSawTestHelper delegate = new RiftSawTestHelper();
+
+ private String m_testSuiteName=null;
+
+ public RiftSawTest(String name) {
+ super(name);
+
+ m_testSuiteName = name;
+ }
+
+ public String getTestSuiteName() {
+ return(m_testSuiteName);
+ }
+
+ public MBeanServerConnection getServer() throws NamingException {
+ return RiftSawTestHelper.getServer();
+ }
+
+ /** Deploy the given archive
+ */
+ public void deploy(String archive) throws Exception {
+ delegate.deploy(getTestSuiteName(), archive);
+ }
+
+ /** Undeploy the given archive
+ */
+ public void undeploy(String archive) throws Exception {
+ delegate.undeploy(getTestSuiteName(), archive);
+ }
+
+ public File getTestFile(String filename) {
+ return delegate.getTestFile(getTestSuiteName(), filename);
+ }
+
+ public URL getTestFileURL(String filename) throws MalformedURLException {
+ return delegate.getTestFileURL(getTestSuiteName(), filename);
+ }
+
+ protected void assertMessageFromFile(String message, String mesgFile) throws Exception {
+ String mesgpath=System.getProperty("test.dir")+java.io.File.separator+getTestSuiteName()+
+ java.io.File.separator+mesgFile;
+
+ java.io.FileInputStream is=new java.io.FileInputStream(mesgpath);
+ byte[] b=new byte[is.available()];
+ is.read(b);
+ is.close();
+
+ String comparison=new String(b).trim();
+ message = message.trim();
+
+ if (!comparison.equals(message)) {
+ fail("Message in file '"+mesgFile+"' has content ["+comparison+
+ "] which is not the same as ["+message+"], lengths "+comparison.length()+" to "+message.length());
+ }
+ }
+
+ protected void assertMessage(String message, String comparison) throws Exception {
+ message = message.trim();
+
+ if (!comparison.equals(message)) {
+ fail("Expected message has content ["+comparison+
+ "] which is not the same as ["+message+"], lengths "+comparison.length()+" to "+message.length());
+ }
+ }
+
+ protected String sendSOAPMessage(String mesgFile, String url) throws Exception {
+ String mesgpath=System.getProperty("test.dir")+java.io.File.separator+getTestSuiteName()+
+ java.io.File.separator+mesgFile;
+
+ java.io.FileInputStream is=new java.io.FileInputStream(mesgpath);
+ byte[] b=new byte[is.available()];
+ is.read(b);
+ is.close();
+
+ java.net.URL u=new java.net.URL(url);
+ String soapAction="";
+ String request=new String(b);
+
+ HttpClient httpClient = new HttpClient();
+ PostMethod httpPostMethod = new PostMethod(u.toExternalForm());
+ httpPostMethod.setRequestHeader("SOAPAction", "\"" + soapAction + "\"");
+ httpPostMethod.setRequestHeader("Content-Type", "text/xml");
+ httpPostMethod.setRequestEntity(new StringRequestEntity(request));
+ httpClient.executeMethod(httpPostMethod);
+ String result=httpPostMethod.getResponseBodyAsString();
+
+ return(result);
+ }
+
+ protected String sendHttpPOSTMessage(String url) throws Exception {
+
+ java.net.URL u=new java.net.URL(url);
+ HttpClient httpClient = new HttpClient();
+ PostMethod httpPostMethod = new PostMethod(u.toExternalForm());
+ httpClient.executeMethod(httpPostMethod);
+ String result=httpPostMethod.getResponseBodyAsString();
+ httpPostMethod.releaseConnection();
+
+ return(result);
+ }
+
+ protected String sendHttpGETMessage(String url) throws Exception {
+
+ java.net.URL u=new java.net.URL(url);
+ HttpClient httpClient = new HttpClient();
+ GetMethod httpGetMethod = new GetMethod(u.toExternalForm());
+ httpClient.executeMethod(httpGetMethod);
+ String result=httpGetMethod.getResponseBodyAsString();
+ httpGetMethod.releaseConnection();
+
+ return(result);
+ }
+
+ protected String sendESBMessage(String message, String serviceCategory, String serviceName)
+ throws Exception {
+ return(sendESBMessage(message, serviceCategory, serviceName, 10000));
+ }
+
+ protected String sendESBMessage(String message, String serviceCategory, String serviceName, long timeout)
+ throws Exception {
+ String result=null;
+
+ System.setProperty("javax.xml.registry.ConnectionFactoryClass",
+ "org.apache.ws.scout.registry.ConnectionFactoryImpl");
+
+ Message esbMessage = MessageFactory.getInstance().getMessage();
+
+ esbMessage.getBody().add(message);
+
+ Message respMessage = new ServiceInvoker(serviceCategory, serviceName).deliverSync(esbMessage, timeout);
+
+ result = (String)respMessage.getBody().get();
+
+ return(result);
+ }
+}
Added: trunk/stress-tests/src/test/java/org/jboss/soa/bpel/tests/RiftSawTestHelper.java
===================================================================
--- trunk/stress-tests/src/test/java/org/jboss/soa/bpel/tests/RiftSawTestHelper.java (rev 0)
+++ trunk/stress-tests/src/test/java/org/jboss/soa/bpel/tests/RiftSawTestHelper.java 2010-05-26 21:58:07 UTC (rev 674)
@@ -0,0 +1,109 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.soa.bpel.tests;
+
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Hashtable;
+
+import javax.management.MBeanServerConnection;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+
+/**
+ * A RiftSaw test helper that deals with test deployment/undeployment, etc.
+ * Based on JBossWS equivalent class by Thomas Diesler and Richard Opalka.
+ *
+ */
+public class RiftSawTestHelper {
+ private static final String SYSPROP_TEST_ARCHIVE_DIRECTORY = "test.dir";
+
+ private static MBeanServerConnection server;
+ private static String testArchiveDir;
+
+ /** Deploy the given archive
+ */
+ public void deploy(String testName, String archive) throws Exception {
+ URL archiveURL = getTestFile(testName, archive).toURL();
+ getDeployer().deploy(archiveURL);
+ }
+
+ /** Undeploy the given archive
+ */
+ public void undeploy(String testName, String archive) throws Exception {
+ URL archiveURL = getTestFile(testName, archive).toURL();
+ getDeployer().undeploy(archiveURL);
+ }
+
+ public void undeploy(String testName, URL archiveURL) throws Exception {
+ getDeployer().undeploy(archiveURL);
+ }
+
+ @SuppressWarnings("unchecked")
+ public static MBeanServerConnection getServer() {
+ if (server == null)
+ {
+ Hashtable jndiEnv = null;
+ try
+ {
+ InitialContext iniCtx = new InitialContext();
+ jndiEnv = iniCtx.getEnvironment();
+ server = (MBeanServerConnection)iniCtx.lookup("jmx/invoker/RMIAdaptor");
+ }
+ catch (NamingException ex)
+ {
+ throw new RuntimeException("Cannot obtain MBeanServerConnection using jndi props: " + jndiEnv, ex);
+ }
+ }
+ return server;
+ }
+
+ private TestDeployer getDeployer() {
+ return new TestDeployerJBoss(getServer());
+ }
+
+ /** Try to discover the URL for the deployment archive */
+ public URL getTestFileURL(String testName, String archive) throws MalformedURLException
+ {
+ return getTestFile(testName, archive).toURL();
+ }
+
+ /** Try to discover the File for the deployment archive */
+ public File getTestFile(String testName, String archive) {
+ File file = new File(getTestArchiveDir() + java.io.File.separator+
+ testName+ java.io.File.separator + archive);
+ if (file.exists())
+ return file;
+
+ String notSet = (getTestArchiveDir() == null ? " System property '" + SYSPROP_TEST_ARCHIVE_DIRECTORY + "' not set." : "");
+ throw new IllegalArgumentException("Cannot obtain '" + file + "'." + notSet);
+ }
+
+ public static String getTestArchiveDir() {
+ if (testArchiveDir == null)
+ testArchiveDir = System.getProperty(SYSPROP_TEST_ARCHIVE_DIRECTORY);
+
+ return testArchiveDir;
+ }
+
+}
Added: trunk/stress-tests/src/test/java/org/jboss/soa/bpel/tests/RiftSawTestSetup.java
===================================================================
--- trunk/stress-tests/src/test/java/org/jboss/soa/bpel/tests/RiftSawTestSetup.java (rev 0)
+++ trunk/stress-tests/src/test/java/org/jboss/soa/bpel/tests/RiftSawTestSetup.java 2010-05-26 21:58:07 UTC (rev 674)
@@ -0,0 +1,195 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.soa.bpel.tests;
+
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.StringTokenizer;
+
+import javax.management.MBeanServerConnection;
+import javax.naming.NamingException;
+
+import junit.extensions.TestSetup;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.jboss.logging.Logger;
+
+/**
+ * A test setup that deploys/undeploys archives
+ *
+ * @author Thomas.Diesler(a)jboss.org
+ * @since 14-Oct-2004
+ */
+public class RiftSawTestSetup extends TestSetup
+{
+ // provide logging
+ private static Logger log = Logger.getLogger(RiftSawTestSetup.class);
+
+ protected RiftSawTestHelper delegate = new RiftSawTestHelper();
+ private String[] archives = new String[0];
+ private ClassLoader originalClassLoader;
+ private String m_testName=null;
+
+ public RiftSawTestSetup(Class<?> testClass, String testName, String archiveList) {
+ super(new TestSuite(testClass));
+ getArchiveArray(archiveList);
+ m_testName = testName;
+ }
+
+ public RiftSawTestSetup(Test test, String archiveList)
+ {
+ super(test);
+ getArchiveArray(archiveList);
+ }
+
+ public RiftSawTestSetup(Test test)
+ {
+ super(test);
+ }
+
+ public File getArchiveFile(String archive)
+ {
+ return delegate.getTestFile(m_testName, archive);
+ }
+
+ public URL getArchiveURL(String archive) throws MalformedURLException
+ {
+ return delegate.getTestFile(m_testName, archive).toURL();
+ }
+
+ private void getArchiveArray(String archiveList)
+ {
+ if (archiveList != null)
+ {
+ StringTokenizer st = new StringTokenizer(archiveList, ", ");
+ archives = new String[st.countTokens()];
+
+ for (int i = 0; i < archives.length; i++)
+ archives[i] = st.nextToken();
+ }
+ }
+
+ protected void setUp() throws Exception {
+
+ List<URL> clientJars = new ArrayList<URL>();
+ for (int i = 0; i < archives.length; i++)
+ {
+ String archive = archives[i];
+ try
+ {
+ delegate.deploy(m_testName, archive);
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ delegate.undeploy(m_testName, archive);
+ }
+
+ if (archive.endsWith("-client.jar"))
+ {
+ URL archiveURL = getArchiveURL(archive);
+ clientJars.add(archiveURL);
+ }
+ }
+
+ ClassLoader parent = Thread.currentThread().getContextClassLoader();
+ originalClassLoader = parent;
+ // add client jars to the class loader
+ if (!clientJars.isEmpty())
+ {
+ URL[] urls = new URL[clientJars.size()];
+ for (int i = 0; i < clientJars.size(); i++)
+ {
+ urls[i] = clientJars.get(i);
+ }
+ URLClassLoader cl = new URLClassLoader(urls, parent);
+ Thread.currentThread().setContextClassLoader(cl);
+ }
+
+ // Temporary wait until able to sync detect deployed ok
+ try {
+ synchronized(this) {
+ wait(10000);
+ }
+ } catch(Exception e) {
+ e.printStackTrace();
+ }
+
+ }
+
+ protected void tearDown() throws Exception
+ {
+
+ // Temporarily move the deployed files - this is to ensure the server actually undeploys
+ // the archive
+ java.util.Map<java.io.File, java.io.File> mapping=new java.util.HashMap<java.io.File, java.io.File>();
+
+ try
+ {
+ for (int i = 0; i < archives.length; i++)
+ {
+ String archive = archives[archives.length - i - 1];
+
+ java.io.File file=delegate.getTestFile(m_testName, archive);
+
+ URL archiveURL = file.toURL();
+
+ java.io.File newfile=new java.io.File(file.getParentFile(), "_"+file.getName());
+ file.renameTo(newfile);
+
+ mapping.put(newfile, file);
+
+ delegate.undeploy(m_testName, archiveURL);
+
+ }
+ }
+ finally
+ {
+ Thread.currentThread().setContextClassLoader(originalClassLoader);
+ }
+
+ // Temporary wait until able to sync detect deployed ok
+ try {
+ synchronized(this) {
+ wait(3000);
+ }
+ } catch(Exception e) {
+ e.printStackTrace();
+ }
+
+ // Move files back to original location
+ for (java.io.File file : mapping.keySet()) {
+ java.io.File newfile=mapping.get(file);
+ file.renameTo(newfile);
+ }
+ }
+
+ public MBeanServerConnection getServer() throws NamingException
+ {
+ return RiftSawTestHelper.getServer();
+ }
+}
Added: trunk/stress-tests/src/test/java/org/jboss/soa/bpel/tests/TestDeployer.java
===================================================================
--- trunk/stress-tests/src/test/java/org/jboss/soa/bpel/tests/TestDeployer.java (rev 0)
+++ trunk/stress-tests/src/test/java/org/jboss/soa/bpel/tests/TestDeployer.java 2010-05-26 21:58:07 UTC (rev 674)
@@ -0,0 +1,41 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.soa.bpel.tests;
+
+import java.net.URL;
+
+/**
+ * RiftSaw test deployer
+ *
+ * @author Thomas.Diesler(a)jboss.org
+ * @since 16-May-2006
+ */
+public interface TestDeployer {
+
+ /** Deploy the given archive
+ */
+ void deploy(URL archive) throws Exception;
+
+ /** Undeploy the given archive
+ */
+ void undeploy(URL archive) throws Exception;
+}
Added: trunk/stress-tests/src/test/java/org/jboss/soa/bpel/tests/TestDeployerJBoss.java
===================================================================
--- trunk/stress-tests/src/test/java/org/jboss/soa/bpel/tests/TestDeployerJBoss.java (rev 0)
+++ trunk/stress-tests/src/test/java/org/jboss/soa/bpel/tests/TestDeployerJBoss.java 2010-05-26 21:58:07 UTC (rev 674)
@@ -0,0 +1,67 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.soa.bpel.tests;
+
+import java.io.Serializable;
+import java.net.URL;
+import java.security.Principal;
+
+import javax.management.MBeanServerConnection;
+import javax.management.ObjectName;
+
+/*
+import org.jboss.wsf.spi.invocation.SecurityAdaptor;
+import org.jboss.wsf.spi.invocation.SecurityAdaptorFactory;
+import org.jboss.wsf.spi.SPIProvider;
+import org.jboss.wsf.spi.SPIProviderResolver;
+*/
+
+/**
+ * A JBossWS test helper that deals with test deployment/undeployment, etc.
+ *
+ * @author Thomas.Diesler(a)jboss.org
+ * @since 14-Oct-2004
+ */
+public class TestDeployerJBoss implements TestDeployer {
+ private static final String MAIN_DEPLOYER = "jboss.system:service=MainDeployer";
+
+ private MBeanServerConnection server;
+
+ public TestDeployerJBoss(MBeanServerConnection server) {
+ this.server = server;
+ }
+
+ public void deploy(URL url) throws Exception
+ {
+ invokeMainDeployer("deploy", url);
+ }
+
+ public void undeploy(URL url) throws Exception
+ {
+ invokeMainDeployer("undeploy", url);
+ }
+
+ private void invokeMainDeployer(String methodName, URL url) throws Exception {
+ //System.out.println("INVOKE MAIN DEPLOYER: "+methodName+" URL="+url);
+ server.invoke(new ObjectName(MAIN_DEPLOYER), methodName, new Object[] { url }, new String[] { "java.net.URL" });
+ }
+}
Added: trunk/stress-tests/src/test/java/org/jboss/soa/bpel/tests/testcases/RiftSaw155TestCase.java
===================================================================
--- trunk/stress-tests/src/test/java/org/jboss/soa/bpel/tests/testcases/RiftSaw155TestCase.java (rev 0)
+++ trunk/stress-tests/src/test/java/org/jboss/soa/bpel/tests/testcases/RiftSaw155TestCase.java 2010-05-26 21:58:07 UTC (rev 674)
@@ -0,0 +1,222 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.soa.bpel.tests.testcases;
+
+import java.util.Comparator;
+import java.util.Map;
+import java.util.TreeMap;
+import java.util.Map.Entry;
+
+import junit.framework.Test;
+
+import org.jboss.soa.bpel.tests.RiftSawTest;
+import org.jboss.soa.bpel.tests.RiftSawTestSetup;
+import org.mortbay.util.ajax.JSON;
+
+/**
+ * Test case for running the RiftSaw_10_doclit testcase.
+ */
+public class RiftSaw155TestCase extends RiftSawTest {
+
+ private static final String TEST_NAME = "RiftSaw_155";
+
+ public RiftSaw155TestCase() {
+ super(TEST_NAME);
+ }
+
+ public static Test suite() {
+// String test_dir = System.getProperty("test.dir");
+// System.setProperty("test.dir", "/home/bbrodt/workspace/test/target/tests");
+// System.setProperty("riftsaw.test.deployment.properties", "/home/bbrodt/jboss/riftsaw-2.0.1-SNAPSHOT/install/deployment.properties");
+// System.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
+// System.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces");
+// System.setProperty("java.naming.provider.url", "jnp://localhost:1099");
+// System.setProperty("java.rmi.server.ignoreStubClasses", "true");
+
+ return(new RiftSawTestSetup(RiftSaw155TestCase.class,
+ TEST_NAME, "RiftSaw_155-1.jar RiftSaw_155-2.jar RiftSaw_155-3.jar"));
+ }
+
+ private static class ProcInfo {
+ public ProcInfo(String name,String id,boolean suspended)
+ {
+ this.name = name;
+ this.id = id;
+ this.suspended = suspended;
+ }
+ public String name;
+ public String id;
+ public boolean suspended;
+ }
+
+ private class ProcNameCompare implements Comparator
+ {
+ @Override
+ public int compare(Object arg1, Object arg2) {
+ String name1 = arg1.toString();
+ String name2 = arg2.toString();
+ String namepart1 = name1.substring(0, name1.indexOf("-"));
+ String namepart2 = name2.substring(0, name2.indexOf("-"));
+ Integer versionpart1 = Integer.parseInt( name1.substring(name1.indexOf("-")+1) );
+ Integer versionpart2 = Integer.parseInt( name2.substring(name2.indexOf("-")+1) );
+ if ( namepart1.equals(namepart2) )
+ return versionpart1.compareTo(versionpart2);
+ return namepart1.compareTo(namepart2);
+ }
+ }
+
+ public void testSendHello() throws Exception {
+ try
+ {
+ String result = null;
+ Entry<String,ProcInfo> e;
+
+ // we should have 3 versions each of "hello" and "goodbye" services
+ // which were deployed in order. send an initial test message to check
+ // that version 3 is the active one
+ result = sendAndValidate("http://localhost:8080/hello", "hello_request1.xml", "hello_response3.xml");
+
+ TreeMap<String,ProcInfo> helloProcs = getProcesses("hello");
+ TreeMap<String,ProcInfo> goodbyeProcs = getProcesses("goodbye");
+
+ // make sure there is only one active version of each process
+ validateActiveProcesses(helloProcs,1);
+ validateActiveProcesses(goodbyeProcs,1);
+
+ // retire only version 3 of the "hello" process which should make version 2 active
+ // NOTE: version 3 is the last entry in the sorted TreeMap
+ e = helloProcs.lastEntry();
+ retireProcess(e.getValue().id);
+
+ // at this point there should be NO active versions of "hello"
+ result = sendAndValidate("http://localhost:8080/hello", "hello_request1.xml", "hello_fail_response1.xml");
+
+ // activate "hello" version 1
+ // NOTE: this is the first entry in the TreeMap
+ e = helloProcs.firstEntry();
+ activateProcess(e.getValue().id);
+
+ // check that version 1 of "hello" is active
+ result = sendAndValidate("http://localhost:8080/hello", "hello_request1.xml", "hello_response1.xml");
+ // and that there is only one version of each process
+ validateActiveProcesses(helloProcs,1);
+ validateActiveProcesses(goodbyeProcs,1);
+
+ // make sure we still have version 3 of "goodbye"
+ result = sendAndValidate("http://localhost:8080/goodbye", "goodbye_request1.xml", "goodbye_response3.xml");
+
+ // undeploy version 1 of "hello" - there should be NO active versions of this process
+ undeploy("RiftSaw_155-1.jar");
+ validateActiveProcesses(helloProcs,0);
+ validateActiveProcesses(goodbyeProcs,1);
+ // also remove it from our TreeMap
+ helloProcs.remove(helloProcs.firstKey());
+
+ // but "goodbye" should still be active
+ result = sendAndValidate("http://localhost:8080/goodbye", "goodbye_request1.xml", "goodbye_response3.xml");
+
+ // activate version 2 of "hello"
+ // NOTE: this is the first entry in the TreeMap
+ e = helloProcs.firstEntry();
+ activateProcess(e.getValue().id);
+
+ // check that version 2 of "hello" is active
+ result = sendAndValidate("http://localhost:8080/hello", "hello_request1.xml", "hello_response2.xml");
+ // and that there is only one version of each process
+ validateActiveProcesses(helloProcs,1);
+ validateActiveProcesses(goodbyeProcs,1);
+
+ // THE END!
+ }
+ catch(Exception ex)
+ {
+ fail(ex.getMessage());
+ }
+ }
+
+ private String sendAndValidate(String service, String request, String response) throws Exception
+ {
+ String result=sendSOAPMessage(request, service);
+
+ // If testing against cxf, then result is presented slightly differently
+ if (result.indexOf("SOAP-ENV") != -1) {
+ result = result.replaceAll("SOAP-ENV", "env");
+ result = result.replaceAll(" xmlns=\"\"","");
+ result = result.replaceAll("\"","'");
+ result = result.replaceAll("<env:Header />","<env:Header></env:Header>");
+ }
+
+ assertMessageFromFile(result, response);
+ return result;
+ }
+
+ private TreeMap<String,ProcInfo> getProcesses(String name) throws Exception
+ {
+ TreeMap<String,ProcInfo> procs = new TreeMap<String,ProcInfo>();
+
+ // request the processes currently deployed - should only be "hello" and "goodbye"
+ String result = sendHttpGETMessage("http://localhost:8080/gwt-console-server/rs/engine/deployments");
+ Map root = (Map)JSON.parse(result);
+ Object[] deployments = (Object[])root.get("deployments");
+ for ( Object item : deployments)
+ {
+ Map dep = (Map)item;
+ ProcInfo proc = new ProcInfo(
+ dep.get("name").toString(),
+ dep.get("id").toString(),
+ (Boolean)dep.get("suspended")
+ );
+ if (proc.name.contains(name))
+ procs.put(proc.name,proc);
+ }
+ return procs;
+ }
+
+ private void validateActiveProcesses(TreeMap<String,ProcInfo> procs, int expected)
+ {
+ // make sure there is only one active version of each process
+ String name = "unknown";
+ int count = 0;
+ for ( Entry<String, ProcInfo> p : procs.entrySet() )
+ {
+ name = p.getKey();
+ if (p.getValue().suspended == false)
+ ++count;
+ }
+ if ( count!=expected )
+ fail("The number of active '"+name+"' processes is "+count+" instead of "+expected);
+ }
+
+ private void retireProcess(String pid) throws Exception
+ {
+ sendHttpPOSTMessage("http://localhost:8080/gwt-console-server/rs/engine/deployment/" +
+ pid +
+ "/suspend");
+ }
+
+ private void activateProcess(String pid) throws Exception
+ {
+ sendHttpPOSTMessage("http://localhost:8080/gwt-console-server/rs/engine/deployment/" +
+ pid +
+ "/resume");
+ }
+}
\ No newline at end of file
Added: trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version1/bpel-deploy.xml
===================================================================
--- trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version1/bpel-deploy.xml (rev 0)
+++ trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version1/bpel-deploy.xml 2010-05-26 21:58:07 UTC (rev 674)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<deploy xmlns="http://www.apache.org/ode/schemas/dd/2007/03" xmlns:sample="http://eclipse.org/bpel/sample">
+ <process name="sample:hello">
+ <active>true</active>
+ <retired>false</retired>
+ <process-events generate="all"/>
+ <provide partnerLink="client">
+ <service name="sample:hello" port="helloPort"/>
+ </provide>
+ </process>
+ <process name="sample:goodbye">
+ <process-events generate="all"/>
+ <provide partnerLink="client">
+ <service name="sample:goodbye" port="goodbyePort"/>
+ </provide>
+ </process>
+</deploy>
\ No newline at end of file
Added: trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version1/goodbye.bpel
===================================================================
--- trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version1/goodbye.bpel (rev 0)
+++ trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version1/goodbye.bpel 2010-05-26 21:58:07 UTC (rev 674)
@@ -0,0 +1,84 @@
+<!-- goodbye BPEL Process [Generated by the Eclipse BPEL Designer] -->
+<bpel:process name="goodbye"
+ targetNamespace="http://eclipse.org/bpel/sample"
+ suppressJoinFailure="yes"
+ xmlns:tns="http://eclipse.org/bpel/sample"
+ xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
+ >
+
+ <!-- Import the client WSDL -->
+ <bpel:import location="goodbyeArtifacts.wsdl" namespace="http://eclipse.org/bpel/sample"
+ importType="http://schemas.xmlsoap.org/wsdl/" />
+
+ <!-- ================================================================= -->
+ <!-- PARTNERLINKS -->
+ <!-- List of services participating in this BPEL process -->
+ <!-- ================================================================= -->
+ <bpel:partnerLinks>
+ <!-- The 'client' role represents the requester of this service. -->
+ <bpel:partnerLink name="client"
+ partnerLinkType="tns:goodbye"
+ myRole="goodbyeProvider"
+ />
+ </bpel:partnerLinks>
+
+ <!-- ================================================================= -->
+ <!-- VARIABLES -->
+ <!-- List of messages and XML documents used within this BPEL process -->
+ <!-- ================================================================= -->
+ <bpel:variables>
+ <!-- Reference to the message passed as input during initiation -->
+ <bpel:variable name="input"
+ messageType="tns:goodbyeRequestMessage"/>
+
+ <!--
+ Reference to the message that will be returned to the requester
+ -->
+ <bpel:variable name="output"
+ messageType="tns:goodbyeResponseMessage"/>
+ </bpel:variables>
+
+ <!-- ================================================================= -->
+ <!-- ORCHESTRATION LOGIC -->
+ <!-- Set of activities coordinating the flow of messages across the -->
+ <!-- services integrated within this business process -->
+ <!-- ================================================================= -->
+ <bpel:sequence name="main">
+
+ <!-- Receive input from requester.
+ Note: This maps to operation defined in goodbye.wsdl
+ -->
+ <bpel:receive name="receiveInput" partnerLink="client"
+ portType="tns:goodbye"
+ operation="process" variable="input"
+ createInstance="yes"/>
+
+ <!-- Generate reply to synchronous request -->
+ <bpel:assign validate="no" name="Assign">
+ <bpel:copy>
+ <bpel:from><bpel:literal><tns:goodbyeResponse xmlns:tns="http://eclipse.org/bpel/sample" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <tns:result></tns:result>
+</tns:goodbyeResponse>
+</bpel:literal></bpel:from>
+ <bpel:to variable="output" part="payload"></bpel:to>
+ </bpel:copy>
+ <bpel:copy>
+ <bpel:from>
+
+
+ <![CDATA[concat("goodbye ",$input.payload/tns:input," this is version 1")]]>
+ </bpel:from>
+ <bpel:to part="payload" variable="output">
+ <bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0"><![CDATA[tns:result]]></bpel:query>
+ </bpel:to>
+ </bpel:copy>
+ </bpel:assign>
+ <bpel:reply name="replyOutput"
+ partnerLink="client"
+ portType="tns:goodbye"
+ operation="process"
+ variable="output"
+ />
+ </bpel:sequence>
+</bpel:process>
+
Added: trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version1/goodbye.bpelex
===================================================================
--- trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version1/goodbye.bpelex (rev 0)
+++ trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version1/goodbye.bpelex 2010-05-26 21:58:07 UTC (rev 674)
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="ASCII"?>
+<extensionmodel:ExtensionMap xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:extensionmodel="http:///extensionmodel.ecore" xmlns:org.eclipse.bpel.ui.uiextensionmodel="http:///org/eclipse/bpel/ui/uiextensionmodel.ecore" namespace="http://org.eclipse.bpel.ui/">
+ <extensions>
+ <extendedObject href="goodbye.bpel#//@variables/(a)children.0"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:VariableExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="goodbye.bpel#//@variables/(a)children.1"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:VariableExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="goodbye.bpel#//@activity"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:ActivityExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="goodbye.bpel#//@activity/(a)activities.0"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:ActivityExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="goodbye.bpel#//@activity/(a)activities.2"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:ActivityExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="goodbye.bpel#/"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:ProcessExtension" modificationStamp="1274446812000"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="goodbye.bpel#//@activity/(a)activities.1"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:ActivityExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="goodbye.bpel#//@activity/@activities.1/(a)copy.1"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:CopyExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="goodbye.bpel#//@activity/@activities.1/(a)copy.0"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:CopyExtension"/>
+ </extensions>
+</extensionmodel:ExtensionMap>
Added: trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version1/goodbyeArtifacts.wsdl
===================================================================
--- trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version1/goodbyeArtifacts.wsdl (rev 0)
+++ trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version1/goodbyeArtifacts.wsdl 2010-05-26 21:58:07 UTC (rev 674)
@@ -0,0 +1,90 @@
+<?xml version="1.0"?>
+<definitions name="goodbye"
+ targetNamespace="http://eclipse.org/bpel/sample"
+ xmlns:tns="http://eclipse.org/bpel/sample"
+ xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype"
+ xmlns="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
+
+<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ TYPE DEFINITION - List of types participating in this BPEL process
+ The BPEL Designer will generate default request and response types
+ but you can define or import any XML Schema type and use them as part
+ of the message types.
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <types>
+ <schema attributeFormDefault="unqualified" elementFormDefault="qualified"
+ targetNamespace="http://eclipse.org/bpel/sample"
+ xmlns="http://www.w3.org/2001/XMLSchema">
+
+ <element name="goodbyeRequest">
+ <complexType>
+ <sequence>
+ <element name="input" type="string"/>
+ </sequence>
+ </complexType>
+ </element>
+
+ <element name="goodbyeResponse">
+ <complexType>
+ <sequence>
+ <element name="result" type="string"/>
+ </sequence>
+ </complexType>
+ </element>
+ </schema>
+ </types>
+
+
+<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ MESSAGE TYPE DEFINITION - Definition of the message types used as
+ part of the port type defintions
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <message name="goodbyeRequestMessage">
+ <part name="payload" element="tns:goodbyeRequest"/>
+ </message>
+ <message name="goodbyeResponseMessage">
+ <part name="payload" element="tns:goodbyeResponse"/>
+ </message>
+
+<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ PORT TYPE DEFINITION - A port type groups a set of operations into
+ a logical service unit.
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+
+ <!-- portType implemented by the goodbye BPEL process -->
+ <portType name="goodbye">
+ <operation name="process">
+ <input message="tns:goodbyeRequestMessage" />
+ <output message="tns:goodbyeResponseMessage"/>
+ </operation>
+ </portType>
+
+
+<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ PARTNER LINK TYPE DEFINITION
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <plnk:partnerLinkType name="goodbye">
+ <plnk:role name="goodbyeProvider" portType="tns:goodbye"/>
+ </plnk:partnerLinkType>
+
+ <binding name="goodbyeBinding" type="tns:goodbye">
+ <soap:binding style="document"
+ transport="http://schemas.xmlsoap.org/soap/http" />
+ <operation name="process">
+ <soap:operation
+ soapAction="http://eclipse.org/bpel/sample/process" />
+ <input>
+ <soap:body use="literal" />
+ </input>
+ <output>
+ <soap:body use="literal" />
+ </output>
+ </operation>
+ </binding>
+ <service name="goodbye">
+ <port name="goodbyePort" binding="tns:goodbyeBinding">
+ <soap:address location="http://localhost:8080/goodbye" />
+ </port>
+ </service>
+</definitions>
Added: trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version1/hello.bpel
===================================================================
--- trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version1/hello.bpel (rev 0)
+++ trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version1/hello.bpel 2010-05-26 21:58:07 UTC (rev 674)
@@ -0,0 +1,89 @@
+<!-- hello BPEL Process [Generated by the Eclipse BPEL Designer] -->
+<bpel:process name="hello"
+ targetNamespace="http://eclipse.org/bpel/sample"
+ suppressJoinFailure="yes"
+ xmlns:tns="http://eclipse.org/bpel/sample"
+ xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
+ >
+
+ <!-- Import the client WSDL -->
+ <bpel:import location="helloArtifacts.wsdl" namespace="http://eclipse.org/bpel/sample"
+ importType="http://schemas.xmlsoap.org/wsdl/" />
+
+ <!-- ================================================================= -->
+ <!-- PARTNERLINKS -->
+ <!-- List of services participating in this BPEL process -->
+ <!-- ================================================================= -->
+ <bpel:partnerLinks>
+ <!-- The 'client' role represents the requester of this service. -->
+ <bpel:partnerLink name="client"
+ partnerLinkType="tns:hello"
+ myRole="helloProvider"
+ />
+ </bpel:partnerLinks>
+
+ <!-- ================================================================= -->
+ <!-- VARIABLES -->
+ <!-- List of messages and XML documents used within this BPEL process -->
+ <!-- ================================================================= -->
+ <bpel:variables>
+ <!-- Reference to the message passed as input during initiation -->
+ <bpel:variable name="input"
+ messageType="tns:helloRequestMessage"/>
+
+ <!--
+ Reference to the message that will be returned to the requester
+ -->
+ <bpel:variable name="output"
+ messageType="tns:helloResponseMessage"/>
+ </bpel:variables>
+
+ <!-- ================================================================= -->
+ <!-- ORCHESTRATION LOGIC -->
+ <!-- Set of activities coordinating the flow of messages across the -->
+ <!-- services integrated within this business process -->
+ <!-- ================================================================= -->
+ <bpel:sequence name="main">
+
+ <!-- Receive input from requester.
+ Note: This maps to operation defined in hello.wsdl
+ -->
+ <bpel:receive name="receiveInput" partnerLink="client"
+ portType="tns:hello"
+ operation="process" variable="input"
+ createInstance="yes"/>
+
+
+
+ <!-- Generate reply to synchronous request -->
+ <bpel:assign validate="no" name="Assign">
+ <bpel:copy>
+ <bpel:from><bpel:literal><tns:helloResponse xmlns:tns="http://eclipse.org/bpel/sample" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <tns:result></tns:result>
+</tns:helloResponse>
+</bpel:literal></bpel:from>
+ <bpel:to variable="output" part="payload"></bpel:to>
+ </bpel:copy>
+ <bpel:copy>
+ <bpel:from>
+
+
+
+
+
+ <![CDATA[concat("hello ",$input.payload/tns:input," this is version 1")]]>
+ </bpel:from>
+ <bpel:to part="payload" variable="output">
+ <bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0"><![CDATA[tns:result]]></bpel:query>
+ </bpel:to>
+ </bpel:copy>
+ </bpel:assign>
+ <bpel:reply name="replyOutput"
+ partnerLink="client"
+ portType="tns:hello"
+ operation="process"
+ variable="output"
+ />
+ </bpel:sequence>
+</bpel:process>
+
Added: trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version1/hello.bpelex
===================================================================
--- trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version1/hello.bpelex (rev 0)
+++ trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version1/hello.bpelex 2010-05-26 21:58:07 UTC (rev 674)
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="ASCII"?>
+<extensionmodel:ExtensionMap xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:extensionmodel="http:///extensionmodel.ecore" xmlns:org.eclipse.bpel.ui.uiextensionmodel="http:///org/eclipse/bpel/ui/uiextensionmodel.ecore" namespace="http://org.eclipse.bpel.ui/">
+ <extensions>
+ <extendedObject href="hello.bpel#//@variables/(a)children.0"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:VariableExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="hello.bpel#//@variables/(a)children.1"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:VariableExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="hello.bpel#//@activity"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:ActivityExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="hello.bpel#//@activity/(a)activities.0"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:ActivityExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="hello.bpel#//@activity/(a)activities.2"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:ActivityExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="hello.bpel#/"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:ProcessExtension" modificationStamp="1274446788000"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="hello.bpel#//@activity/(a)activities.1"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:ActivityExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="hello.bpel#//@activity/@activities.1/(a)copy.1"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:CopyExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="hello.bpel#//@activity/@activities.1/(a)copy.0"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:CopyExtension"/>
+ </extensions>
+</extensionmodel:ExtensionMap>
Added: trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version1/helloArtifacts.wsdl
===================================================================
--- trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version1/helloArtifacts.wsdl (rev 0)
+++ trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version1/helloArtifacts.wsdl 2010-05-26 21:58:07 UTC (rev 674)
@@ -0,0 +1,99 @@
+<?xml version="1.0"?>
+<definitions name="hello"
+ targetNamespace="http://eclipse.org/bpel/sample"
+ xmlns:tns="http://eclipse.org/bpel/sample"
+ xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype"
+ xmlns="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ >
+
+<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ TYPE DEFINITION - List of types participating in this BPEL process
+ The BPEL Designer will generate default request and response types
+ but you can define or import any XML Schema type and use them as part
+ of the message types.
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <types>
+ <schema attributeFormDefault="unqualified" elementFormDefault="qualified"
+ targetNamespace="http://eclipse.org/bpel/sample"
+ xmlns="http://www.w3.org/2001/XMLSchema">
+
+ <element name="helloRequest">
+ <complexType>
+ <sequence>
+ <element name="input" type="string"/>
+ </sequence>
+ </complexType>
+ </element>
+
+ <element name="helloResponse">
+ <complexType>
+ <sequence>
+ <element name="result" type="string"/>
+ </sequence>
+ </complexType>
+ </element>
+ </schema>
+ </types>
+
+
+<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ MESSAGE TYPE DEFINITION - Definition of the message types used as
+ part of the port type defintions
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <message name="helloRequestMessage">
+ <part name="payload" element="tns:helloRequest"/>
+ </message>
+ <message name="helloResponseMessage">
+ <part name="payload" element="tns:helloResponse"/>
+ </message>
+
+<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ PORT TYPE DEFINITION - A port type groups a set of operations into
+ a logical service unit.
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+
+ <!-- portType implemented by the hello BPEL process -->
+ <portType name="hello">
+ <operation name="process">
+ <input message="tns:helloRequestMessage" />
+ <output message="tns:helloResponseMessage"/>
+ </operation>
+ </portType>
+<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ PARTNER LINK TYPE DEFINITION
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <plnk:partnerLinkType name="hello">
+ <plnk:role name="helloProvider" portType="tns:hello"/>
+ </plnk:partnerLinkType>
+
+
+<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ BINDING DEFINITION - Defines the message format and protocol details
+ for a web service.
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <binding name="helloBinding" type="tns:hello">
+ <soap:binding style="document"
+ transport="http://schemas.xmlsoap.org/soap/http" />
+ <operation name="process">
+ <soap:operation
+ soapAction="http://eclipse.org/bpel/sample/process" />
+ <input>
+ <soap:body use="literal" />
+ </input>
+ <output>
+ <soap:body use="literal" />
+ </output>
+ </operation>
+ </binding>
+
+<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ SERVICE DEFINITION - A service groups a set of port into
+ a service unit.
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <service name="hello">
+ <port name="helloPort" binding="tns:helloBinding">
+ <soap:address location="http://localhost:8080/hello" />
+ </port>
+ </service>
+</definitions>
\ No newline at end of file
Added: trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version2/bpel-deploy.xml
===================================================================
--- trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version2/bpel-deploy.xml (rev 0)
+++ trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version2/bpel-deploy.xml 2010-05-26 21:58:07 UTC (rev 674)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<deploy xmlns="http://www.apache.org/ode/schemas/dd/2007/03" xmlns:sample="http://eclipse.org/bpel/sample">
+ <process name="sample:hello">
+ <active>true</active>
+ <retired>false</retired>
+ <process-events generate="all"/>
+ <provide partnerLink="client">
+ <service name="sample:hello" port="helloPort"/>
+ </provide>
+ </process>
+ <process name="sample:goodbye">
+ <process-events generate="all"/>
+ <provide partnerLink="client">
+ <service name="sample:goodbye" port="goodbyePort"/>
+ </provide>
+ </process>
+</deploy>
\ No newline at end of file
Added: trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version2/goodbye.bpel
===================================================================
--- trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version2/goodbye.bpel (rev 0)
+++ trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version2/goodbye.bpel 2010-05-26 21:58:07 UTC (rev 674)
@@ -0,0 +1,84 @@
+<!-- goodbye BPEL Process [Generated by the Eclipse BPEL Designer] -->
+<bpel:process name="goodbye"
+ targetNamespace="http://eclipse.org/bpel/sample"
+ suppressJoinFailure="yes"
+ xmlns:tns="http://eclipse.org/bpel/sample"
+ xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
+ >
+
+ <!-- Import the client WSDL -->
+ <bpel:import location="goodbyeArtifacts.wsdl" namespace="http://eclipse.org/bpel/sample"
+ importType="http://schemas.xmlsoap.org/wsdl/" />
+
+ <!-- ================================================================= -->
+ <!-- PARTNERLINKS -->
+ <!-- List of services participating in this BPEL process -->
+ <!-- ================================================================= -->
+ <bpel:partnerLinks>
+ <!-- The 'client' role represents the requester of this service. -->
+ <bpel:partnerLink name="client"
+ partnerLinkType="tns:goodbye"
+ myRole="goodbyeProvider"
+ />
+ </bpel:partnerLinks>
+
+ <!-- ================================================================= -->
+ <!-- VARIABLES -->
+ <!-- List of messages and XML documents used within this BPEL process -->
+ <!-- ================================================================= -->
+ <bpel:variables>
+ <!-- Reference to the message passed as input during initiation -->
+ <bpel:variable name="input"
+ messageType="tns:goodbyeRequestMessage"/>
+
+ <!--
+ Reference to the message that will be returned to the requester
+ -->
+ <bpel:variable name="output"
+ messageType="tns:goodbyeResponseMessage"/>
+ </bpel:variables>
+
+ <!-- ================================================================= -->
+ <!-- ORCHESTRATION LOGIC -->
+ <!-- Set of activities coordinating the flow of messages across the -->
+ <!-- services integrated within this business process -->
+ <!-- ================================================================= -->
+ <bpel:sequence name="main">
+
+ <!-- Receive input from requester.
+ Note: This maps to operation defined in goodbye.wsdl
+ -->
+ <bpel:receive name="receiveInput" partnerLink="client"
+ portType="tns:goodbye"
+ operation="process" variable="input"
+ createInstance="yes"/>
+
+ <!-- Generate reply to synchronous request -->
+ <bpel:assign validate="no" name="Assign">
+ <bpel:copy>
+ <bpel:from><bpel:literal><tns:goodbyeResponse xmlns:tns="http://eclipse.org/bpel/sample" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <tns:result></tns:result>
+</tns:goodbyeResponse>
+</bpel:literal></bpel:from>
+ <bpel:to variable="output" part="payload"></bpel:to>
+ </bpel:copy>
+ <bpel:copy>
+ <bpel:from>
+
+
+ <![CDATA[concat("goodbye ",$input.payload/tns:input," this is version 2")]]>
+ </bpel:from>
+ <bpel:to part="payload" variable="output">
+ <bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0"><![CDATA[tns:result]]></bpel:query>
+ </bpel:to>
+ </bpel:copy>
+ </bpel:assign>
+ <bpel:reply name="replyOutput"
+ partnerLink="client"
+ portType="tns:goodbye"
+ operation="process"
+ variable="output"
+ />
+ </bpel:sequence>
+</bpel:process>
+
Added: trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version2/goodbye.bpelex
===================================================================
--- trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version2/goodbye.bpelex (rev 0)
+++ trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version2/goodbye.bpelex 2010-05-26 21:58:07 UTC (rev 674)
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="ASCII"?>
+<extensionmodel:ExtensionMap xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:extensionmodel="http:///extensionmodel.ecore" xmlns:org.eclipse.bpel.ui.uiextensionmodel="http:///org/eclipse/bpel/ui/uiextensionmodel.ecore" namespace="http://org.eclipse.bpel.ui/">
+ <extensions>
+ <extendedObject href="goodbye.bpel#//@variables/(a)children.0"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:VariableExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="goodbye.bpel#//@variables/(a)children.1"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:VariableExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="goodbye.bpel#//@activity"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:ActivityExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="goodbye.bpel#//@activity/(a)activities.0"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:ActivityExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="goodbye.bpel#//@activity/(a)activities.2"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:ActivityExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="goodbye.bpel#/"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:ProcessExtension" modificationStamp="1274447573000"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="goodbye.bpel#//@activity/(a)activities.1"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:ActivityExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="goodbye.bpel#//@activity/@activities.1/(a)copy.1"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:CopyExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="goodbye.bpel#//@activity/@activities.1/(a)copy.0"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:CopyExtension"/>
+ </extensions>
+</extensionmodel:ExtensionMap>
Added: trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version2/goodbyeArtifacts.wsdl
===================================================================
--- trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version2/goodbyeArtifacts.wsdl (rev 0)
+++ trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version2/goodbyeArtifacts.wsdl 2010-05-26 21:58:07 UTC (rev 674)
@@ -0,0 +1,90 @@
+<?xml version="1.0"?>
+<definitions name="goodbye"
+ targetNamespace="http://eclipse.org/bpel/sample"
+ xmlns:tns="http://eclipse.org/bpel/sample"
+ xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype"
+ xmlns="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
+
+<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ TYPE DEFINITION - List of types participating in this BPEL process
+ The BPEL Designer will generate default request and response types
+ but you can define or import any XML Schema type and use them as part
+ of the message types.
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <types>
+ <schema attributeFormDefault="unqualified" elementFormDefault="qualified"
+ targetNamespace="http://eclipse.org/bpel/sample"
+ xmlns="http://www.w3.org/2001/XMLSchema">
+
+ <element name="goodbyeRequest">
+ <complexType>
+ <sequence>
+ <element name="input" type="string"/>
+ </sequence>
+ </complexType>
+ </element>
+
+ <element name="goodbyeResponse">
+ <complexType>
+ <sequence>
+ <element name="result" type="string"/>
+ </sequence>
+ </complexType>
+ </element>
+ </schema>
+ </types>
+
+
+<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ MESSAGE TYPE DEFINITION - Definition of the message types used as
+ part of the port type defintions
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <message name="goodbyeRequestMessage">
+ <part name="payload" element="tns:goodbyeRequest"/>
+ </message>
+ <message name="goodbyeResponseMessage">
+ <part name="payload" element="tns:goodbyeResponse"/>
+ </message>
+
+<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ PORT TYPE DEFINITION - A port type groups a set of operations into
+ a logical service unit.
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+
+ <!-- portType implemented by the goodbye BPEL process -->
+ <portType name="goodbye">
+ <operation name="process">
+ <input message="tns:goodbyeRequestMessage" />
+ <output message="tns:goodbyeResponseMessage"/>
+ </operation>
+ </portType>
+
+
+<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ PARTNER LINK TYPE DEFINITION
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <plnk:partnerLinkType name="goodbye">
+ <plnk:role name="goodbyeProvider" portType="tns:goodbye"/>
+ </plnk:partnerLinkType>
+
+ <binding name="goodbyeBinding" type="tns:goodbye">
+ <soap:binding style="document"
+ transport="http://schemas.xmlsoap.org/soap/http" />
+ <operation name="process">
+ <soap:operation
+ soapAction="http://eclipse.org/bpel/sample/process" />
+ <input>
+ <soap:body use="literal" />
+ </input>
+ <output>
+ <soap:body use="literal" />
+ </output>
+ </operation>
+ </binding>
+ <service name="goodbye">
+ <port name="goodbyePort" binding="tns:goodbyeBinding">
+ <soap:address location="http://localhost:8080/goodbye" />
+ </port>
+ </service>
+</definitions>
Added: trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version2/hello.bpel
===================================================================
--- trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version2/hello.bpel (rev 0)
+++ trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version2/hello.bpel 2010-05-26 21:58:07 UTC (rev 674)
@@ -0,0 +1,89 @@
+<!-- hello BPEL Process [Generated by the Eclipse BPEL Designer] -->
+<bpel:process name="hello"
+ targetNamespace="http://eclipse.org/bpel/sample"
+ suppressJoinFailure="yes"
+ xmlns:tns="http://eclipse.org/bpel/sample"
+ xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
+ >
+
+ <!-- Import the client WSDL -->
+ <bpel:import location="helloArtifacts.wsdl" namespace="http://eclipse.org/bpel/sample"
+ importType="http://schemas.xmlsoap.org/wsdl/" />
+
+ <!-- ================================================================= -->
+ <!-- PARTNERLINKS -->
+ <!-- List of services participating in this BPEL process -->
+ <!-- ================================================================= -->
+ <bpel:partnerLinks>
+ <!-- The 'client' role represents the requester of this service. -->
+ <bpel:partnerLink name="client"
+ partnerLinkType="tns:hello"
+ myRole="helloProvider"
+ />
+ </bpel:partnerLinks>
+
+ <!-- ================================================================= -->
+ <!-- VARIABLES -->
+ <!-- List of messages and XML documents used within this BPEL process -->
+ <!-- ================================================================= -->
+ <bpel:variables>
+ <!-- Reference to the message passed as input during initiation -->
+ <bpel:variable name="input"
+ messageType="tns:helloRequestMessage"/>
+
+ <!--
+ Reference to the message that will be returned to the requester
+ -->
+ <bpel:variable name="output"
+ messageType="tns:helloResponseMessage"/>
+ </bpel:variables>
+
+ <!-- ================================================================= -->
+ <!-- ORCHESTRATION LOGIC -->
+ <!-- Set of activities coordinating the flow of messages across the -->
+ <!-- services integrated within this business process -->
+ <!-- ================================================================= -->
+ <bpel:sequence name="main">
+
+ <!-- Receive input from requester.
+ Note: This maps to operation defined in hello.wsdl
+ -->
+ <bpel:receive name="receiveInput" partnerLink="client"
+ portType="tns:hello"
+ operation="process" variable="input"
+ createInstance="yes"/>
+
+
+
+ <!-- Generate reply to synchronous request -->
+ <bpel:assign validate="no" name="Assign">
+ <bpel:copy>
+ <bpel:from><bpel:literal><tns:helloResponse xmlns:tns="http://eclipse.org/bpel/sample" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <tns:result></tns:result>
+</tns:helloResponse>
+</bpel:literal></bpel:from>
+ <bpel:to variable="output" part="payload"></bpel:to>
+ </bpel:copy>
+ <bpel:copy>
+ <bpel:from>
+
+
+
+
+
+ <![CDATA[concat("hello ",$input.payload/tns:input," this is version 2")]]>
+ </bpel:from>
+ <bpel:to part="payload" variable="output">
+ <bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0"><![CDATA[tns:result]]></bpel:query>
+ </bpel:to>
+ </bpel:copy>
+ </bpel:assign>
+ <bpel:reply name="replyOutput"
+ partnerLink="client"
+ portType="tns:hello"
+ operation="process"
+ variable="output"
+ />
+ </bpel:sequence>
+</bpel:process>
+
Added: trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version2/hello.bpelex
===================================================================
--- trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version2/hello.bpelex (rev 0)
+++ trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version2/hello.bpelex 2010-05-26 21:58:07 UTC (rev 674)
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="ASCII"?>
+<extensionmodel:ExtensionMap xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:extensionmodel="http:///extensionmodel.ecore" xmlns:org.eclipse.bpel.ui.uiextensionmodel="http:///org/eclipse/bpel/ui/uiextensionmodel.ecore" namespace="http://org.eclipse.bpel.ui/">
+ <extensions>
+ <extendedObject href="hello.bpel#//@variables/(a)children.0"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:VariableExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="hello.bpel#//@variables/(a)children.1"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:VariableExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="hello.bpel#//@activity"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:ActivityExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="hello.bpel#//@activity/(a)activities.0"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:ActivityExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="hello.bpel#//@activity/(a)activities.2"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:ActivityExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="hello.bpel#/"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:ProcessExtension" modificationStamp="1274447582000"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="hello.bpel#//@activity/(a)activities.1"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:ActivityExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="hello.bpel#//@activity/@activities.1/(a)copy.1"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:CopyExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="hello.bpel#//@activity/@activities.1/(a)copy.0"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:CopyExtension"/>
+ </extensions>
+</extensionmodel:ExtensionMap>
Added: trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version2/helloArtifacts.wsdl
===================================================================
--- trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version2/helloArtifacts.wsdl (rev 0)
+++ trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version2/helloArtifacts.wsdl 2010-05-26 21:58:07 UTC (rev 674)
@@ -0,0 +1,99 @@
+<?xml version="1.0"?>
+<definitions name="hello"
+ targetNamespace="http://eclipse.org/bpel/sample"
+ xmlns:tns="http://eclipse.org/bpel/sample"
+ xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype"
+ xmlns="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ >
+
+<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ TYPE DEFINITION - List of types participating in this BPEL process
+ The BPEL Designer will generate default request and response types
+ but you can define or import any XML Schema type and use them as part
+ of the message types.
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <types>
+ <schema attributeFormDefault="unqualified" elementFormDefault="qualified"
+ targetNamespace="http://eclipse.org/bpel/sample"
+ xmlns="http://www.w3.org/2001/XMLSchema">
+
+ <element name="helloRequest">
+ <complexType>
+ <sequence>
+ <element name="input" type="string"/>
+ </sequence>
+ </complexType>
+ </element>
+
+ <element name="helloResponse">
+ <complexType>
+ <sequence>
+ <element name="result" type="string"/>
+ </sequence>
+ </complexType>
+ </element>
+ </schema>
+ </types>
+
+
+<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ MESSAGE TYPE DEFINITION - Definition of the message types used as
+ part of the port type defintions
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <message name="helloRequestMessage">
+ <part name="payload" element="tns:helloRequest"/>
+ </message>
+ <message name="helloResponseMessage">
+ <part name="payload" element="tns:helloResponse"/>
+ </message>
+
+<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ PORT TYPE DEFINITION - A port type groups a set of operations into
+ a logical service unit.
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+
+ <!-- portType implemented by the hello BPEL process -->
+ <portType name="hello">
+ <operation name="process">
+ <input message="tns:helloRequestMessage" />
+ <output message="tns:helloResponseMessage"/>
+ </operation>
+ </portType>
+<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ PARTNER LINK TYPE DEFINITION
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <plnk:partnerLinkType name="hello">
+ <plnk:role name="helloProvider" portType="tns:hello"/>
+ </plnk:partnerLinkType>
+
+
+<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ BINDING DEFINITION - Defines the message format and protocol details
+ for a web service.
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <binding name="helloBinding" type="tns:hello">
+ <soap:binding style="document"
+ transport="http://schemas.xmlsoap.org/soap/http" />
+ <operation name="process">
+ <soap:operation
+ soapAction="http://eclipse.org/bpel/sample/process" />
+ <input>
+ <soap:body use="literal" />
+ </input>
+ <output>
+ <soap:body use="literal" />
+ </output>
+ </operation>
+ </binding>
+
+<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ SERVICE DEFINITION - A service groups a set of port into
+ a service unit.
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <service name="hello">
+ <port name="helloPort" binding="tns:helloBinding">
+ <soap:address location="http://localhost:8080/hello" />
+ </port>
+ </service>
+</definitions>
\ No newline at end of file
Added: trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version3/bpel-deploy.xml
===================================================================
--- trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version3/bpel-deploy.xml (rev 0)
+++ trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version3/bpel-deploy.xml 2010-05-26 21:58:07 UTC (rev 674)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<deploy xmlns="http://www.apache.org/ode/schemas/dd/2007/03" xmlns:sample="http://eclipse.org/bpel/sample">
+ <process name="sample:hello">
+ <active>true</active>
+ <retired>false</retired>
+ <process-events generate="all"/>
+ <provide partnerLink="client">
+ <service name="sample:hello" port="helloPort"/>
+ </provide>
+ </process>
+ <process name="sample:goodbye">
+ <process-events generate="all"/>
+ <provide partnerLink="client">
+ <service name="sample:goodbye" port="goodbyePort"/>
+ </provide>
+ </process>
+</deploy>
\ No newline at end of file
Added: trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version3/goodbye.bpel
===================================================================
--- trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version3/goodbye.bpel (rev 0)
+++ trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version3/goodbye.bpel 2010-05-26 21:58:07 UTC (rev 674)
@@ -0,0 +1,84 @@
+<!-- goodbye BPEL Process [Generated by the Eclipse BPEL Designer] -->
+<bpel:process name="goodbye"
+ targetNamespace="http://eclipse.org/bpel/sample"
+ suppressJoinFailure="yes"
+ xmlns:tns="http://eclipse.org/bpel/sample"
+ xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
+ >
+
+ <!-- Import the client WSDL -->
+ <bpel:import location="goodbyeArtifacts.wsdl" namespace="http://eclipse.org/bpel/sample"
+ importType="http://schemas.xmlsoap.org/wsdl/" />
+
+ <!-- ================================================================= -->
+ <!-- PARTNERLINKS -->
+ <!-- List of services participating in this BPEL process -->
+ <!-- ================================================================= -->
+ <bpel:partnerLinks>
+ <!-- The 'client' role represents the requester of this service. -->
+ <bpel:partnerLink name="client"
+ partnerLinkType="tns:goodbye"
+ myRole="goodbyeProvider"
+ />
+ </bpel:partnerLinks>
+
+ <!-- ================================================================= -->
+ <!-- VARIABLES -->
+ <!-- List of messages and XML documents used within this BPEL process -->
+ <!-- ================================================================= -->
+ <bpel:variables>
+ <!-- Reference to the message passed as input during initiation -->
+ <bpel:variable name="input"
+ messageType="tns:goodbyeRequestMessage"/>
+
+ <!--
+ Reference to the message that will be returned to the requester
+ -->
+ <bpel:variable name="output"
+ messageType="tns:goodbyeResponseMessage"/>
+ </bpel:variables>
+
+ <!-- ================================================================= -->
+ <!-- ORCHESTRATION LOGIC -->
+ <!-- Set of activities coordinating the flow of messages across the -->
+ <!-- services integrated within this business process -->
+ <!-- ================================================================= -->
+ <bpel:sequence name="main">
+
+ <!-- Receive input from requester.
+ Note: This maps to operation defined in goodbye.wsdl
+ -->
+ <bpel:receive name="receiveInput" partnerLink="client"
+ portType="tns:goodbye"
+ operation="process" variable="input"
+ createInstance="yes"/>
+
+ <!-- Generate reply to synchronous request -->
+ <bpel:assign validate="no" name="Assign">
+ <bpel:copy>
+ <bpel:from><bpel:literal><tns:goodbyeResponse xmlns:tns="http://eclipse.org/bpel/sample" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <tns:result></tns:result>
+</tns:goodbyeResponse>
+</bpel:literal></bpel:from>
+ <bpel:to variable="output" part="payload"></bpel:to>
+ </bpel:copy>
+ <bpel:copy>
+ <bpel:from>
+
+
+ <![CDATA[concat("goodbye ",$input.payload/tns:input," this is version 3")]]>
+ </bpel:from>
+ <bpel:to part="payload" variable="output">
+ <bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0"><![CDATA[tns:result]]></bpel:query>
+ </bpel:to>
+ </bpel:copy>
+ </bpel:assign>
+ <bpel:reply name="replyOutput"
+ partnerLink="client"
+ portType="tns:goodbye"
+ operation="process"
+ variable="output"
+ />
+ </bpel:sequence>
+</bpel:process>
+
Added: trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version3/goodbye.bpelex
===================================================================
--- trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version3/goodbye.bpelex (rev 0)
+++ trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version3/goodbye.bpelex 2010-05-26 21:58:07 UTC (rev 674)
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="ASCII"?>
+<extensionmodel:ExtensionMap xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:extensionmodel="http:///extensionmodel.ecore" xmlns:org.eclipse.bpel.ui.uiextensionmodel="http:///org/eclipse/bpel/ui/uiextensionmodel.ecore" namespace="http://org.eclipse.bpel.ui/">
+ <extensions>
+ <extendedObject href="goodbye.bpel#//@variables/(a)children.0"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:VariableExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="goodbye.bpel#//@variables/(a)children.1"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:VariableExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="goodbye.bpel#//@activity"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:ActivityExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="goodbye.bpel#//@activity/(a)activities.0"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:ActivityExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="goodbye.bpel#//@activity/(a)activities.2"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:ActivityExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="goodbye.bpel#/"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:ProcessExtension" modificationStamp="1274447603000"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="goodbye.bpel#//@activity/(a)activities.1"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:ActivityExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="goodbye.bpel#//@activity/@activities.1/(a)copy.1"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:CopyExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="goodbye.bpel#//@activity/@activities.1/(a)copy.0"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:CopyExtension"/>
+ </extensions>
+</extensionmodel:ExtensionMap>
Added: trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version3/goodbyeArtifacts.wsdl
===================================================================
--- trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version3/goodbyeArtifacts.wsdl (rev 0)
+++ trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version3/goodbyeArtifacts.wsdl 2010-05-26 21:58:07 UTC (rev 674)
@@ -0,0 +1,90 @@
+<?xml version="1.0"?>
+<definitions name="goodbye"
+ targetNamespace="http://eclipse.org/bpel/sample"
+ xmlns:tns="http://eclipse.org/bpel/sample"
+ xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype"
+ xmlns="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
+
+<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ TYPE DEFINITION - List of types participating in this BPEL process
+ The BPEL Designer will generate default request and response types
+ but you can define or import any XML Schema type and use them as part
+ of the message types.
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <types>
+ <schema attributeFormDefault="unqualified" elementFormDefault="qualified"
+ targetNamespace="http://eclipse.org/bpel/sample"
+ xmlns="http://www.w3.org/2001/XMLSchema">
+
+ <element name="goodbyeRequest">
+ <complexType>
+ <sequence>
+ <element name="input" type="string"/>
+ </sequence>
+ </complexType>
+ </element>
+
+ <element name="goodbyeResponse">
+ <complexType>
+ <sequence>
+ <element name="result" type="string"/>
+ </sequence>
+ </complexType>
+ </element>
+ </schema>
+ </types>
+
+
+<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ MESSAGE TYPE DEFINITION - Definition of the message types used as
+ part of the port type defintions
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <message name="goodbyeRequestMessage">
+ <part name="payload" element="tns:goodbyeRequest"/>
+ </message>
+ <message name="goodbyeResponseMessage">
+ <part name="payload" element="tns:goodbyeResponse"/>
+ </message>
+
+<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ PORT TYPE DEFINITION - A port type groups a set of operations into
+ a logical service unit.
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+
+ <!-- portType implemented by the goodbye BPEL process -->
+ <portType name="goodbye">
+ <operation name="process">
+ <input message="tns:goodbyeRequestMessage" />
+ <output message="tns:goodbyeResponseMessage"/>
+ </operation>
+ </portType>
+
+
+<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ PARTNER LINK TYPE DEFINITION
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <plnk:partnerLinkType name="goodbye">
+ <plnk:role name="goodbyeProvider" portType="tns:goodbye"/>
+ </plnk:partnerLinkType>
+
+ <binding name="goodbyeBinding" type="tns:goodbye">
+ <soap:binding style="document"
+ transport="http://schemas.xmlsoap.org/soap/http" />
+ <operation name="process">
+ <soap:operation
+ soapAction="http://eclipse.org/bpel/sample/process" />
+ <input>
+ <soap:body use="literal" />
+ </input>
+ <output>
+ <soap:body use="literal" />
+ </output>
+ </operation>
+ </binding>
+ <service name="goodbye">
+ <port name="goodbyePort" binding="tns:goodbyeBinding">
+ <soap:address location="http://localhost:8080/goodbye" />
+ </port>
+ </service>
+</definitions>
Added: trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version3/hello.bpel
===================================================================
--- trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version3/hello.bpel (rev 0)
+++ trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version3/hello.bpel 2010-05-26 21:58:07 UTC (rev 674)
@@ -0,0 +1,89 @@
+<!-- hello BPEL Process [Generated by the Eclipse BPEL Designer] -->
+<bpel:process name="hello"
+ targetNamespace="http://eclipse.org/bpel/sample"
+ suppressJoinFailure="yes"
+ xmlns:tns="http://eclipse.org/bpel/sample"
+ xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
+ >
+
+ <!-- Import the client WSDL -->
+ <bpel:import location="helloArtifacts.wsdl" namespace="http://eclipse.org/bpel/sample"
+ importType="http://schemas.xmlsoap.org/wsdl/" />
+
+ <!-- ================================================================= -->
+ <!-- PARTNERLINKS -->
+ <!-- List of services participating in this BPEL process -->
+ <!-- ================================================================= -->
+ <bpel:partnerLinks>
+ <!-- The 'client' role represents the requester of this service. -->
+ <bpel:partnerLink name="client"
+ partnerLinkType="tns:hello"
+ myRole="helloProvider"
+ />
+ </bpel:partnerLinks>
+
+ <!-- ================================================================= -->
+ <!-- VARIABLES -->
+ <!-- List of messages and XML documents used within this BPEL process -->
+ <!-- ================================================================= -->
+ <bpel:variables>
+ <!-- Reference to the message passed as input during initiation -->
+ <bpel:variable name="input"
+ messageType="tns:helloRequestMessage"/>
+
+ <!--
+ Reference to the message that will be returned to the requester
+ -->
+ <bpel:variable name="output"
+ messageType="tns:helloResponseMessage"/>
+ </bpel:variables>
+
+ <!-- ================================================================= -->
+ <!-- ORCHESTRATION LOGIC -->
+ <!-- Set of activities coordinating the flow of messages across the -->
+ <!-- services integrated within this business process -->
+ <!-- ================================================================= -->
+ <bpel:sequence name="main">
+
+ <!-- Receive input from requester.
+ Note: This maps to operation defined in hello.wsdl
+ -->
+ <bpel:receive name="receiveInput" partnerLink="client"
+ portType="tns:hello"
+ operation="process" variable="input"
+ createInstance="yes"/>
+
+
+
+ <!-- Generate reply to synchronous request -->
+ <bpel:assign validate="no" name="Assign">
+ <bpel:copy>
+ <bpel:from><bpel:literal><tns:helloResponse xmlns:tns="http://eclipse.org/bpel/sample" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <tns:result></tns:result>
+</tns:helloResponse>
+</bpel:literal></bpel:from>
+ <bpel:to variable="output" part="payload"></bpel:to>
+ </bpel:copy>
+ <bpel:copy>
+ <bpel:from>
+
+
+
+
+
+ <![CDATA[concat("hello ",$input.payload/tns:input," this is version 3")]]>
+ </bpel:from>
+ <bpel:to part="payload" variable="output">
+ <bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0"><![CDATA[tns:result]]></bpel:query>
+ </bpel:to>
+ </bpel:copy>
+ </bpel:assign>
+ <bpel:reply name="replyOutput"
+ partnerLink="client"
+ portType="tns:hello"
+ operation="process"
+ variable="output"
+ />
+ </bpel:sequence>
+</bpel:process>
+
Added: trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version3/hello.bpelex
===================================================================
--- trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version3/hello.bpelex (rev 0)
+++ trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version3/hello.bpelex 2010-05-26 21:58:07 UTC (rev 674)
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="ASCII"?>
+<extensionmodel:ExtensionMap xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:extensionmodel="http:///extensionmodel.ecore" xmlns:org.eclipse.bpel.ui.uiextensionmodel="http:///org/eclipse/bpel/ui/uiextensionmodel.ecore" namespace="http://org.eclipse.bpel.ui/">
+ <extensions>
+ <extendedObject href="hello.bpel#//@variables/(a)children.0"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:VariableExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="hello.bpel#//@variables/(a)children.1"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:VariableExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="hello.bpel#//@activity"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:ActivityExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="hello.bpel#//@activity/(a)activities.0"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:ActivityExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="hello.bpel#//@activity/(a)activities.2"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:ActivityExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="hello.bpel#/"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:ProcessExtension" modificationStamp="1274447613000"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="hello.bpel#//@activity/(a)activities.1"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:ActivityExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="hello.bpel#//@activity/@activities.1/(a)copy.1"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:CopyExtension"/>
+ </extensions>
+ <extensions>
+ <extendedObject href="hello.bpel#//@activity/@activities.1/(a)copy.0"/>
+ <extensionObject xsi:type="org.eclipse.bpel.ui.uiextensionmodel:CopyExtension"/>
+ </extensions>
+</extensionmodel:ExtensionMap>
Added: trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version3/helloArtifacts.wsdl
===================================================================
--- trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version3/helloArtifacts.wsdl (rev 0)
+++ trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/bpel/version3/helloArtifacts.wsdl 2010-05-26 21:58:07 UTC (rev 674)
@@ -0,0 +1,99 @@
+<?xml version="1.0"?>
+<definitions name="hello"
+ targetNamespace="http://eclipse.org/bpel/sample"
+ xmlns:tns="http://eclipse.org/bpel/sample"
+ xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype"
+ xmlns="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ >
+
+<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ TYPE DEFINITION - List of types participating in this BPEL process
+ The BPEL Designer will generate default request and response types
+ but you can define or import any XML Schema type and use them as part
+ of the message types.
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <types>
+ <schema attributeFormDefault="unqualified" elementFormDefault="qualified"
+ targetNamespace="http://eclipse.org/bpel/sample"
+ xmlns="http://www.w3.org/2001/XMLSchema">
+
+ <element name="helloRequest">
+ <complexType>
+ <sequence>
+ <element name="input" type="string"/>
+ </sequence>
+ </complexType>
+ </element>
+
+ <element name="helloResponse">
+ <complexType>
+ <sequence>
+ <element name="result" type="string"/>
+ </sequence>
+ </complexType>
+ </element>
+ </schema>
+ </types>
+
+
+<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ MESSAGE TYPE DEFINITION - Definition of the message types used as
+ part of the port type defintions
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <message name="helloRequestMessage">
+ <part name="payload" element="tns:helloRequest"/>
+ </message>
+ <message name="helloResponseMessage">
+ <part name="payload" element="tns:helloResponse"/>
+ </message>
+
+<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ PORT TYPE DEFINITION - A port type groups a set of operations into
+ a logical service unit.
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+
+ <!-- portType implemented by the hello BPEL process -->
+ <portType name="hello">
+ <operation name="process">
+ <input message="tns:helloRequestMessage" />
+ <output message="tns:helloResponseMessage"/>
+ </operation>
+ </portType>
+<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ PARTNER LINK TYPE DEFINITION
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <plnk:partnerLinkType name="hello">
+ <plnk:role name="helloProvider" portType="tns:hello"/>
+ </plnk:partnerLinkType>
+
+
+<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ BINDING DEFINITION - Defines the message format and protocol details
+ for a web service.
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <binding name="helloBinding" type="tns:hello">
+ <soap:binding style="document"
+ transport="http://schemas.xmlsoap.org/soap/http" />
+ <operation name="process">
+ <soap:operation
+ soapAction="http://eclipse.org/bpel/sample/process" />
+ <input>
+ <soap:body use="literal" />
+ </input>
+ <output>
+ <soap:body use="literal" />
+ </output>
+ </operation>
+ </binding>
+
+<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ SERVICE DEFINITION - A service groups a set of port into
+ a service unit.
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <service name="hello">
+ <port name="helloPort" binding="tns:helloBinding">
+ <soap:address location="http://localhost:8080/hello" />
+ </port>
+ </service>
+</definitions>
\ No newline at end of file
Added: trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/build.xml
===================================================================
--- trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/build.xml (rev 0)
+++ trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/build.xml 2010-05-26 21:58:07 UTC (rev 674)
@@ -0,0 +1,34 @@
+<project name="RiftSaw_155" default="deploy" basedir="/home/bbrodt/workspace/test">
+
+ <description>
+ ${ant.project.name}
+ ${line.separator}
+ </description>
+
+ <property name="deploy.dir" value="${basedir}/target/tests"/>
+ <property name="test.dir" value="${basedir}/src/test/resources/testcases/${ant.project.name}" />
+
+ <property name="jar1.name" value="${ant.project.name}-1.jar" />
+ <property name="jar2.name" value="${ant.project.name}-2.jar" />
+ <property name="jar3.name" value="${ant.project.name}-3.jar" />
+
+ <target name="deploy">
+ <echo>Deploy ${ant.project.name}</echo>
+ <mkdir dir="${deploy.dir}/${ant.project.name}" />
+ <jar basedir="${test.dir}/bpel/version1" destfile="${deploy.dir}/${ant.project.name}/${jar1.name}" />
+ <jar basedir="${test.dir}/bpel/version2" destfile="${deploy.dir}/${ant.project.name}/${jar2.name}" />
+ <jar basedir="${test.dir}/bpel/version3" destfile="${deploy.dir}/${ant.project.name}/${jar3.name}" />
+
+ <copy todir="${deploy.dir}/${ant.project.name}">
+ <fileset dir="${test.dir}/messages"/>
+ </copy>
+ </target>
+
+ <target name="undeploy">
+ <echo>Undeploy ${ant.project.name}</echo>
+ <delete file="${deploy.dir}/${jar1.name}" />
+ <delete file="${deploy.dir}/${jar2.name}" />
+ <delete file="${deploy.dir}/${jar3.name}" />
+ </target>
+
+</project>
Added: trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/messages/goodbye_request1.xml
===================================================================
--- trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/messages/goodbye_request1.xml (rev 0)
+++ trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/messages/goodbye_request1.xml 2010-05-26 21:58:07 UTC (rev 674)
@@ -0,0 +1,8 @@
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sam="http://eclipse.org/bpel/sample">
+ <soapenv:Header/>
+ <soapenv:Body>
+ <sam:goodbyeRequest>
+ <sam:input>World</sam:input>
+ </sam:goodbyeRequest>
+ </soapenv:Body>
+</soapenv:Envelope>
\ No newline at end of file
Added: trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/messages/goodbye_response3.xml
===================================================================
--- trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/messages/goodbye_response3.xml (rev 0)
+++ trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/messages/goodbye_response3.xml 2010-05-26 21:58:07 UTC (rev 674)
@@ -0,0 +1,3 @@
+<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'><env:Header></env:Header><env:Body><goodbyeResponse xmlns='http://eclipse.org/bpel/sample'>
+ <tns:result xmlns:tns='http://eclipse.org/bpel/sample'>goodbye World this is version 3</tns:result>
+</goodbyeResponse></env:Body></env:Envelope>
\ No newline at end of file
Added: trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/messages/hello_fail_response1.xml
===================================================================
--- trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/messages/hello_fail_response1.xml (rev 0)
+++ trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/messages/hello_fail_response1.xml 2010-05-26 21:58:07 UTC (rev 674)
@@ -0,0 +1 @@
+<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'><env:Header></env:Header><env:Body><env:Fault xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'><faultcode>env:Server</faultcode><faultstring>Failed to invoke BPEL process: NoSuchService: {http://eclipse.org/bpel/sample}hello</faultstring></env:Fault></env:Body></env:Envelope>
\ No newline at end of file
Added: trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/messages/hello_request1.xml
===================================================================
--- trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/messages/hello_request1.xml (rev 0)
+++ trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/messages/hello_request1.xml 2010-05-26 21:58:07 UTC (rev 674)
@@ -0,0 +1,8 @@
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sam="http://eclipse.org/bpel/sample">
+ <soapenv:Header/>
+ <soapenv:Body>
+ <sam:helloRequest>
+ <sam:input>World</sam:input>
+ </sam:helloRequest>
+ </soapenv:Body>
+</soapenv:Envelope>
\ No newline at end of file
Added: trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/messages/hello_response1.xml
===================================================================
--- trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/messages/hello_response1.xml (rev 0)
+++ trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/messages/hello_response1.xml 2010-05-26 21:58:07 UTC (rev 674)
@@ -0,0 +1,3 @@
+<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'><env:Header></env:Header><env:Body><helloResponse xmlns='http://eclipse.org/bpel/sample'>
+ <tns:result xmlns:tns='http://eclipse.org/bpel/sample'>hello World this is version 1</tns:result>
+</helloResponse></env:Body></env:Envelope>
\ No newline at end of file
Added: trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/messages/hello_response2.xml
===================================================================
--- trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/messages/hello_response2.xml (rev 0)
+++ trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/messages/hello_response2.xml 2010-05-26 21:58:07 UTC (rev 674)
@@ -0,0 +1,3 @@
+<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'><env:Header></env:Header><env:Body><helloResponse xmlns='http://eclipse.org/bpel/sample'>
+ <tns:result xmlns:tns='http://eclipse.org/bpel/sample'>hello World this is version 2</tns:result>
+</helloResponse></env:Body></env:Envelope>
\ No newline at end of file
Added: trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/messages/hello_response3.xml
===================================================================
--- trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/messages/hello_response3.xml (rev 0)
+++ trunk/stress-tests/src/test/resources/testcases/RiftSaw_155/messages/hello_response3.xml 2010-05-26 21:58:07 UTC (rev 674)
@@ -0,0 +1,3 @@
+<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'><env:Header></env:Header><env:Body><helloResponse xmlns='http://eclipse.org/bpel/sample'>
+ <tns:result xmlns:tns='http://eclipse.org/bpel/sample'>hello World this is version 3</tns:result>
+</helloResponse></env:Body></env:Envelope>
\ No newline at end of file
15 years, 4 months