diff options
author | lresende <lresende@13f79535-47bb-0310-9956-ffa450edef68> | 2009-11-20 23:53:35 +0000 |
---|---|---|
committer | lresende <lresende@13f79535-47bb-0310-9956-ffa450edef68> | 2009-11-20 23:53:35 +0000 |
commit | a3c48da9bb8971497d414f86e352123d95b9c3da (patch) | |
tree | fdf0f3636b65946c061c8b2e89d657b488be274e /java/sca/modules/implementation-bpel-runtime | |
parent | cc7496466097c3cb8e793ebf3e332b025705aaa7 (diff) |
Moving 2.x trunk
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@882795 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/sca/modules/implementation-bpel-runtime')
31 files changed, 0 insertions, 4729 deletions
diff --git a/java/sca/modules/implementation-bpel-runtime/LICENSE b/java/sca/modules/implementation-bpel-runtime/LICENSE deleted file mode 100644 index baba9ca048..0000000000 --- a/java/sca/modules/implementation-bpel-runtime/LICENSE +++ /dev/null @@ -1,251 +0,0 @@ -
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed 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.
-
-===============================================================================================================
-
-Apache Tuscany SCA for Java Subcomponents
-=========================================:
-
-The Tuscany SCA for Java release includes a number of subcomponents with
-separate copyright notices and license terms. Your use of the source
-code for the these subcomponents is subject to the terms and
-conditions of the following licenses.
-
-=================================================================================================================
-
-This module implementation-script temporarily includes one file under the following BSD license:
-
- Copyright (c) 2006, Sun Microsystems, Inc.
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
-
- - Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- - Neither the name of the Sun Microsystems, Inc. nor the names of
- contributors may be used to endorse or promote products derived from this
- software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
- WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY
- DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- DAMAGE.
-
-=================================================================================================================
diff --git a/java/sca/modules/implementation-bpel-runtime/META-INF/MANIFEST.MF b/java/sca/modules/implementation-bpel-runtime/META-INF/MANIFEST.MF deleted file mode 100644 index d23f4ee0bb..0000000000 --- a/java/sca/modules/implementation-bpel-runtime/META-INF/MANIFEST.MF +++ /dev/null @@ -1,51 +0,0 @@ -Manifest-Version: 1.0
-Private-Package: org.apache.tuscany.sca.implementation.bpel.ode;versio
- n="2.0",org.apache.tuscany.sca.implementation.bpel.ode.provider;versi
- on="2.0"
-SCA-Version: 1.1
-Bundle-Name: Apache Tuscany SCA BPEL ODE Implementation Extension
-Bundle-Vendor: The Apache Software Foundation
-Bundle-Version: 2.0
-Bundle-ManifestVersion: 2
-Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
-Bundle-ClassPath: .
-Bundle-Description: Apache Tuscany SCA BPEL ODE Implementation Extensi
- on
-Import-Package: javax.persistence;version="1.0.0",
- javax.persistence.spi;version="1.0.0",
- javax.resource.spi,
- javax.transaction;version="1.1.0",
- javax.wsdl;resolution:=optional,
- javax.xml.namespace;resolution:=optional,
- org.apache.commons.logging;resolution:=optional,
- org.apache.geronimo.transaction.manager,
- org.apache.ode.bpel.compiler;version="1.3.2",
- org.apache.ode.bpel.dao;version="1.3.2",
- org.apache.ode.bpel.engine;version="1.3.2",
- org.apache.ode.bpel.evt;version="1.3.2",
- org.apache.ode.bpel.iapi;version="1.3.2",
- org.apache.ode.bpel.memdao;version="1.3.2",
- org.apache.ode.dao.jpa;version="1.3.2",
- org.apache.ode.il.config;version="1.3.2",
- org.apache.ode.il.dbutil;version="1.3.2",
- org.apache.ode.scheduler.simple;version="1.3.2",
- org.apache.ode.utils;version="1.3.2",
- org.apache.tuscany.sca.assembly;version="2.0",
- org.apache.tuscany.sca.core;version="2.0",
- org.apache.tuscany.sca.databinding;version="2.0",
- org.apache.tuscany.sca.databinding.impl;version="2.0",
- org.apache.tuscany.sca.databinding.xml;version="2.0",
- org.apache.tuscany.sca.extensibility;version="2.0.0",
- org.apache.tuscany.sca.implementation.bpel;version="2.0",
- org.apache.tuscany.sca.interfacedef;version="2.0",
- org.apache.tuscany.sca.interfacedef.wsdl;version="2.0",
- org.apache.tuscany.sca.invocation;version="2.0",
- org.apache.tuscany.sca.policy;version="2.0.0",
- org.apache.tuscany.sca.provider;version="2.0",
- org.apache.tuscany.sca.runtime;version="2.0",
- org.eclipse.core.runtime;resolution:=optional;common=split,
- org.oasisopen.sca.annotation;version="2.0",
- org.w3c.dom;resolution:=optional
-Bundle-SymbolicName: org.apache.tuscany.sca.implementation.bpel.runtime
-Bundle-DocURL: http://www.apache.org/
-Bundle-RequiredExecutionEnvironment: J2SE-1.5,JavaSE-1.6
diff --git a/java/sca/modules/implementation-bpel-runtime/NOTICE b/java/sca/modules/implementation-bpel-runtime/NOTICE deleted file mode 100644 index a2f696be26..0000000000 --- a/java/sca/modules/implementation-bpel-runtime/NOTICE +++ /dev/null @@ -1,17 +0,0 @@ -${pom.name}
-Copyright (c) 2005 - 2008 The Apache Software Foundation
-
-This product includes software developed by
-The Apache Software Foundation (http://www.apache.org/).
-
-Unless otherwise indicated, all distribution made available by the Apache Software Foundation
-is provided to you under the terms and conditions of the Apache License Version 2.0 ("AL").
-A copy of the AL is provided with this distribution as the LICENSE file present in the
-root directory, and is also available at http://www.apache.org/licenses/.
-
-This product also includes software under the BSD license
-(see the LICENSE file contained in this distribution), with
-the following copyright:
-
-Copyright (c) 2006, Sun Microsystems, Inc.
-All rights reserved.
diff --git a/java/sca/modules/implementation-bpel-runtime/pom.xml b/java/sca/modules/implementation-bpel-runtime/pom.xml deleted file mode 100644 index eedf738ddb..0000000000 --- a/java/sca/modules/implementation-bpel-runtime/pom.xml +++ /dev/null @@ -1,495 +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. ---> -<project> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-modules</artifactId> - <version>2.0-SNAPSHOT</version> - <relativePath>../pom.xml</relativePath> - </parent> - <artifactId>tuscany-implementation-bpel-runtime</artifactId> - <name>Apache Tuscany SCA BPEL ODE Implementation Extension</name> - <dependencies> - <dependency> - <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-assembly</artifactId> - <version>2.0-SNAPSHOT</version> - </dependency> - <dependency> - <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-implementation-bpel</artifactId> - <version>2.0-SNAPSHOT</version> - </dependency> - <dependency> - <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-core</artifactId> - <version>2.0-SNAPSHOT</version> - </dependency> - <dependency> - <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-assembly-xml</artifactId> - <version>2.0-SNAPSHOT</version> - </dependency> - <dependency> - <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-contribution</artifactId> - <version>2.0-SNAPSHOT</version> - </dependency> - <dependency> - <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-sca-api</artifactId> - <version>2.0-SNAPSHOT</version> - </dependency> - <dependency> - <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-databinding</artifactId> - <version>2.0-SNAPSHOT</version> - </dependency> - <dependency> - <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-implementation-java-runtime</artifactId> - <version>2.0-SNAPSHOT</version> - </dependency> - <dependency> - <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-node-impl</artifactId> - <version>2.0-SNAPSHOT</version> - </dependency> - <dependency> - <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-interface-wsdl</artifactId> - <version>2.0-SNAPSHOT</version> - </dependency> - - <!-- ODE Jars --> - <dependency> - <groupId>org.apache.ode</groupId> - <artifactId>ode-bpel-epr</artifactId> - <version>1.3.2</version> - </dependency> - <dependency> - <groupId>org.apache.ode</groupId> - <artifactId>ode-bpel-store</artifactId> - <version>1.3.2</version> - </dependency> - <dependency> - <groupId>org.apache.ode</groupId> - <artifactId>ode-bpel-dao</artifactId> - <version>1.3.2</version> - </dependency> - <dependency> - <groupId>org.apache.ode</groupId> - <artifactId>ode-dao-jpa</artifactId> - <version>1.3.2</version> - </dependency> - <dependency> - <groupId>org.apache.ode</groupId> - <artifactId>ode-dao-jpa-ojpa-derby</artifactId> - <version>1.3.2</version> - <type>zip</type> - </dependency> - <dependency> - <groupId>org.apache.ode</groupId> - <artifactId>ode-bpel-runtime</artifactId> - <version>1.3.2</version> - </dependency> - <dependency> - <groupId>org.apache.ode</groupId> - <artifactId>ode-bpel-api</artifactId> - <version>1.3.2</version> - </dependency> - <dependency> - <groupId>org.apache.ode</groupId> - <artifactId>ode-scheduler-simple</artifactId> - <version>1.3.2</version> - </dependency> - <dependency> - <groupId>org.apache.ode</groupId> - <artifactId>ode-utils</artifactId> - <version>1.3.2</version> - </dependency> - <dependency> - <groupId>org.apache.ode</groupId> - <artifactId>ode-bpel-compiler</artifactId> - <version>1.3.2</version> - </dependency> - <dependency> - <groupId>org.apache.ode</groupId> - <artifactId>ode-bpel-schemas</artifactId> - <version>1.3.2</version> - </dependency> - <dependency> - <groupId>org.apache.ode</groupId> - <artifactId>ode-bpel-obj</artifactId> - <version>1.3.2</version> - </dependency> - <dependency> - <groupId>org.apache.ode</groupId> - <artifactId>ode-jacob</artifactId> - <version>1.3.2</version> - </dependency> - <dependency> - <groupId>org.apache.ode</groupId> - <artifactId>ode-jacob-ap</artifactId> - <version>1.3.2</version> - </dependency> - <!-- http://issues.apache.org/jira/browse/ODE-604 --> - <dependency> - <groupId>org.apache.ode</groupId> - <artifactId>ode-agents</artifactId> - <version>1.3.2</version> - </dependency> - <dependency> - <groupId>org.apache.ode</groupId> - <artifactId>ode-dao-hibernate</artifactId> - <version>1.3.2</version> - </dependency> - - <!-- implementation-bpel non-sca dependencies --> - <dependency> - <groupId>org.eclipse.equinox</groupId> - <artifactId>common</artifactId> - <version>3.5.0-v20090520-1800</version> - </dependency> - - <!-- ODE Dependencies --> - <dependency> - <groupId>commons-lang</groupId> - <artifactId>commons-lang</artifactId> - <version>2.3</version> - </dependency> - <dependency> - <groupId>commons-collections</groupId> - <artifactId>commons-collections</artifactId> - <version>3.2</version> - </dependency> - <dependency> - <groupId>org.apache.geronimo.modules</groupId> - <artifactId>geronimo-kernel</artifactId> - <version>2.0.1</version> - <exclusions> - <exclusion> - <groupId>asm</groupId> - <artifactId>asm-commons</artifactId> - </exclusion> - <exclusion> - <groupId>mx4j</groupId> - <artifactId>mx4j</artifactId> - </exclusion> - <exclusion> - <groupId>cglib</groupId> - <artifactId>cglib-nodep</artifactId> - </exclusion> - <exclusion> - <groupId>xpp3</groupId> - <artifactId>xpp3</artifactId> - </exclusion> - <exclusion> - <groupId>xstream</groupId> - <artifactId>xstream</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.apache.geronimo.components</groupId> - <artifactId>geronimo-transaction</artifactId> - <version>2.0.1</version> - <exclusions> - <exclusion> - <groupId>org.apache.geronimo.specs</groupId> - <artifactId>geronimo-jta_1.1_spec</artifactId> - </exclusion> - <exclusion> - <groupId>org.apache.geronimo.specs</groupId> - <artifactId>geronimo-ejb_2.1_spec</artifactId> - </exclusion> - <exclusion> - <groupId>org.apache.geronimo.specs</groupId> - <artifactId>geronimo-j2ee-connector_1.5_spec</artifactId> - </exclusion> - <exclusion> - <groupId>ognl</groupId> - <artifactId>ognl</artifactId> - </exclusion> - <exclusion> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.apache.geronimo.specs</groupId> - <artifactId>geronimo-ejb_3.0_spec</artifactId> - <version>1.0.1</version> - </dependency> - <dependency> - <groupId>org.apache.geronimo.specs</groupId> - <artifactId>geronimo-jta_1.1_spec</artifactId> - <version>1.1.1</version> - </dependency> - <dependency> - <groupId>org.apache.geronimo.specs</groupId> - <artifactId>geronimo-jpa_3.0_spec</artifactId> - <version>1.1.1</version> - </dependency> - <dependency> - <groupId>org.apache.geronimo.specs</groupId> - <artifactId>geronimo-jms_1.1_spec</artifactId> - <version>1.1.1</version> - </dependency> - <dependency> - <groupId>org.apache.geronimo.specs</groupId> - <artifactId>geronimo-j2ee-connector_1.5_spec</artifactId> - <version>2.0.0</version> - </dependency> - <dependency> - <groupId>org.apache.geronimo.components</groupId> - <artifactId>geronimo-connector</artifactId> - <version>2.0.1</version> - <exclusions> - <exclusion> - <groupId>org.apache.geronimo.specs</groupId> - <artifactId>geronimo-jta_1.0.1B_spec</artifactId> - </exclusion> - <exclusion> - <groupId>org.apache.geronimo.specs</groupId> - <artifactId>geronimo-j2ee-connector_1.5_spec</artifactId> - </exclusion> - <exclusion> - <groupId>xmlbeans</groupId> - <artifactId>xbean</artifactId> - </exclusion> - <exclusion> - <groupId>stax</groupId> - <artifactId>stax-api</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.apache.derby</groupId> - <artifactId>derby</artifactId> - <version>10.4.1.3</version> - </dependency> - <dependency> - <groupId>tranql</groupId> - <artifactId>tranql-connector</artifactId> - <version>1.1</version> - <exclusions> - <exclusion> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - </exclusion> - <exclusion> - <groupId>geronimo-spec</groupId> - <artifactId>geronimo-spec-j2ee-connector</artifactId> - </exclusion> - <exclusion> - <groupId>geronimo-spec</groupId> - <artifactId>geronimo-spec-jta</artifactId> - </exclusion> - <exclusion> - <groupId>axion</groupId> - <artifactId>axion</artifactId> - </exclusion> - <exclusion> - <groupId>commons-logging</groupId> - <artifactId>commons-logging</artifactId> - </exclusion> - <exclusion> - <groupId>commons-collections</groupId> - <artifactId>commons-collections</artifactId> - </exclusion> - <exclusion> - <groupId>commons-primitives</groupId> - <artifactId>commons-primitives</artifactId> - </exclusion> - </exclusions> - </dependency> - <!-- http://issues.apache.org/jira/browse/ODE-605 --> - <dependency> - <groupId>org.apache.openjpa</groupId> - <artifactId>openjpa</artifactId> - <version>1.2.1</version> - - <exclusions> - <exclusion> - <groupId>org.apache.geronimo.specs</groupId> - <artifactId>geronimo-jta_1.1_spec</artifactId> - </exclusion> - <exclusion> - <groupId>org.apache.geronimo.specs</groupId> - <artifactId>geronimo-jpa_3.0_spec</artifactId> - </exclusion> - <exclusion> - <groupId>org.apache.geronimo.specs</groupId> - <artifactId>geronimo-jms_1.1_spec</artifactId> - </exclusion> - </exclusions> - - </dependency> - <dependency> - <groupId>net.sourceforge.serp</groupId> - <artifactId>serp</artifactId> - <version>1.13.1</version> - <exclusions> - <exclusion> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>jaxen</groupId> - <artifactId>jaxen</artifactId> - <version>1.1.1</version> - <exclusions> - <exclusion> - <groupId>xom</groupId> - <artifactId>xom</artifactId> - </exclusion> - <exclusion> - <groupId>xml-apis</groupId> - <artifactId>xml-apis</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>xalan</groupId> - <artifactId>xalan</artifactId> - <version>2.7.0</version> - <exclusions> - <exclusion> - <groupId>xml-apis</groupId> - <artifactId>xml-apis</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>xerces</groupId> - <artifactId>xercesImpl</artifactId> - <version>2.8.1</version> - <exclusions> - <exclusion> - <groupId>xml-apis</groupId> - <artifactId>xml-apis</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.apache.xmlbeans</groupId> - <artifactId>xmlbeans</artifactId> - <version>2.3.0</version> - <exclusions> - <exclusion> - <groupId>stax</groupId> - <artifactId>stax-api</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>net.sf.saxon</groupId> - <artifactId>saxon</artifactId> - <version>9.x</version> - </dependency> - <dependency> - <groupId>net.sf.saxon</groupId> - <artifactId>saxon-dom</artifactId> - <version>9.x</version> - </dependency> - <dependency> - <groupId>net.sf.saxon</groupId> - <artifactId>saxon-xpath</artifactId> - <version>9.x</version> - </dependency> - <dependency> - <groupId>net.sf.saxon</groupId> - <artifactId>saxon-xqj</artifactId> - <version>9.x</version> - </dependency> - <dependency> - <groupId>commons-codec</groupId> - <artifactId>commons-codec</artifactId> - <version>1.3</version> - <exclusions> - <exclusion> - <groupId>commons-codec</groupId> - <artifactId>commons-codec</artifactId> - </exclusion> - </exclusions> - </dependency> - - <dependency> - <groupId>log4j</groupId> - <artifactId>log4j</artifactId> - <version>1.2.15</version> - <exclusions> - <exclusion> - <groupId>com.sun.jdmk</groupId> - <artifactId>jmxtools</artifactId> - </exclusion> - <exclusion> - <groupId>com.sun.jmx</groupId> - <artifactId>jmxri</artifactId> - </exclusion> - <exclusion> - <groupId>javax.jms</groupId> - <artifactId>jms</artifactId> - </exclusion> - <exclusion> - <groupId>javax.mail</groupId> - <artifactId>mail</artifactId> - </exclusion> - </exclusions> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-dependency-plugin</artifactId> - <executions> - <execution> - <id>unpack</id> - <phase>generate-sources</phase> - <goals> - <goal>unpack</goal> - </goals> - <configuration> - <artifactItems> - <artifactItem> - <groupId>org.apache.ode</groupId> - <artifactId>ode-dao-jpa-ojpa-derby</artifactId> - <version>1.3.2</version> - <type>zip</type> - <overWrite>true</overWrite> - <outputDirectory>${project.build.directory}/test-classes/ - </outputDirectory> - </artifactItem> - </artifactItems> - </configuration> - </execution> - </executions> - </plugin> - - </plugins> - </build> -</project> diff --git a/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/BPELODEDeployFile.java b/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/BPELODEDeployFile.java deleted file mode 100644 index fe1e2d620b..0000000000 --- a/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/BPELODEDeployFile.java +++ /dev/null @@ -1,233 +0,0 @@ -/* - * 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.tuscany.sca.implementation.bpel.ode; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.PrintStream; -import java.net.URI; -import java.util.List; - -import javax.xml.namespace.QName; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.tuscany.sca.assembly.ComponentType; -import org.apache.tuscany.sca.assembly.Reference; -import org.apache.tuscany.sca.assembly.Service; -import org.apache.tuscany.sca.implementation.bpel.BPELImplementation; - -/** - * A class that handles the deploy.xml file required for each BPEL process by the ODE runtime - * @author Mike Edwards - * - * An explanation of the structure of the ODE deploy file: - * - * <deploy xmlns="http://www.apache.org/ode/schemas/dd/2007/03" - * xmlns:tns="http://helloworld" - * xmlns:tus="http://tuscany.apache.org/xmlns/sca/1.1"> - * - * <process name="tns:HelloWorld"> - * <active>true</active> - * <provide partnerLink="helloPartnerLink"> - * <service name="tus:helloPartnerLink" port="HelloWorld"/> - * </provide> - * <invoke partnerLink="greetingsPartnerLink"> - * <service name="tus:greetingsPartnerLink" port="Greetings"/> - * </invoke> - * </process> - * </deploy> - * - * For SCA purposes: - * - * a) Each partner link in the BPEL process is declared using either a <provide.../> - * (for a service) or using a <invoke.../> (for a reference). - * - * b) Each <provide/> and <invoke/> must use the partnerLink name, as declared in the - * BPEL process. - * - * c) The <provide/> and <invoke/> elements each have a single child <service/> element. - * The <service/> elements have name and port attributes. The NAME attribute MUST be set - * to the same name as the partnerLink and MUST be prefixed by a prefix which references - * the namespace "http://tuscany.apache.org" ("tus" in the example above). - * The port attribute can be set to any name (it must be present but it is not actually - * used for anything significant). - * - * When SCA loads a BPEL process to the ODE server, this file is read by the ODE server to - * characterize the process. When SCA interacts with ODE at later points - either when a - * service is being invoked or the process invokes a reference - it is the service @name - * attribute that identifies the service or reference involved. - * - * @version - */ -public class BPELODEDeployFile { - private final Log __log = LogFactory.getLog(getClass()); - - static final String DEPLOY_ELEMENT_START = "<deploy xmlns=\"http://www.apache.org/ode/schemas/dd/2007/03\""; - static final String DEPLOY_ENDELEMENT = "</deploy>"; - static final String PROCESS_NAMESPACE_DECL = "xmlns:tns="; - static final String SERVICE_NAMESPACE = "xmlns:tus=\"http://tuscany.apache.org\""; - static final String PROCESS_ELEMENT_START = "<process name=\"tns:"; - static final String PROCESS_ELEMENT_END = "\">"; - static final String PROCESS_ENDELEMENT = "</process>"; - static final String ACTIVE_ELEMENT = "<active>true</active>"; - static final String PROVIDE_ELEMENT_START = "<provide partnerLink=\""; - static final String PROVIDE_ELEMENT_END = "\">"; - static final String PROVIDE_ENDELEMENT = "</provide>"; - static final String SERVICE_ELEMENT_START = "<service name=\"tus:"; - static final String SERVICE_ELEMENT_PORT = "\" port=\""; - static final String SERVICE_ELEMENT_END = "Port\"/>"; - static final String INVOKE_ELEMENT_START = "<invoke partnerLink=\""; - static final String INVOKE_ELEMENT_END = "\">"; - static final String INVOKE_ENDELEMENT = "</invoke>"; - - static final String DEPLOY_FILENAME = "deploy.xml"; - - private BPELImplementation implementation; - - /** - * Constructor - requires a BPELImplementation as a parameter - * The ODE deploy.xml file is for this supplied BPELImplementation - * @param theImplementation - */ - public BPELODEDeployFile( BPELImplementation theImplementation ) { - - implementation = theImplementation; - - } // end BPELODEDeployFile constructor - - /** - * Writes the deploy file into the same directory as the BPEL process file, with the name - * "deploy.xml" - */ - public void writeDeployfile() throws IOException { - - File theDirectory = getDirectory(); - - File deployFile = new File( theDirectory, DEPLOY_FILENAME ); - new FileOutputStream( deployFile ); - //if( !deployFile.canWrite() ) throw new IOException( "Unable to write to deploy file" + - // deployFile.getPath() ); - - // Create a stream for the data and write the data to the file - PrintStream theStream = new PrintStream( new FileOutputStream( deployFile ) ); - try { - constructDeployXML( theStream ); - if( theStream.checkError() ) throw new IOException(); - } catch (Exception e) { - throw new IOException( "Unable to write data to deploy file" + - deployFile.getPath() ); - } finally { - theStream.close(); - } // end try - - } // end writeDeployFile - - /** - * Creates the deploy.xml data and writes it to a supplied PrintStream - * @param stream - */ - public void constructDeployXML( PrintStream stream ) { - - // <deploy + namespace... - stream.println( DEPLOY_ELEMENT_START ); - // namespace of the BPEL process - QName process = implementation.getProcess(); - String processNamespace = process.getNamespaceURI(); - stream.println( PROCESS_NAMESPACE_DECL + "\"" + processNamespace + "\"" ); - // namespace for the service name elements - stream.println( SERVICE_NAMESPACE + ">" ); - - // <process> element - stream.println( PROCESS_ELEMENT_START + process.getLocalPart() + - PROCESS_ELEMENT_END ); - - // <active/> element - stream.println( ACTIVE_ELEMENT ); - - ComponentType componentType = implementation.getComponentType(); - List<Service> theServices = componentType.getServices(); - // Loop over the <provide/> elements - one per service - for ( Service service : theServices ) { - String serviceName = service.getName(); - // Provide element... - stream.println( PROVIDE_ELEMENT_START + serviceName + PROVIDE_ELEMENT_END ); - // Child service element... - stream.println( SERVICE_ELEMENT_START + serviceName + - SERVICE_ELEMENT_PORT + serviceName + SERVICE_ELEMENT_END ); - stream.println( PROVIDE_ENDELEMENT ); - } // end for - - // Loop over the <invoke/> elements - one per reference - List<Reference> theReferences = componentType.getReferences(); - for ( Reference reference : theReferences ) { - String referenceName = reference.getName(); - stream.println( INVOKE_ELEMENT_START + referenceName + INVOKE_ELEMENT_END ); - // Child service element... - stream.println( SERVICE_ELEMENT_START + referenceName + - SERVICE_ELEMENT_PORT + referenceName + SERVICE_ELEMENT_END ); - stream.println( INVOKE_ENDELEMENT ); - - } // end for - - // </process> element - stream.println( PROCESS_ENDELEMENT ); - - // </deploy> - stream.println( DEPLOY_ENDELEMENT ); - - } // end constructDeployXML - - /** - * Gets the directory containing the BPEL process - * @return - */ - private File getDirectory() { - File theDir = getBPELFile().getParentFile(); - return theDir; - } // end getDirectory - - /** - * Gets the File containing the BPEL process definition - * @return - the File object containing the BPEL process - */ - private File getBPELFile() { - try { - String location = this.implementation.getProcessDefinition().getLocation(); - URI locationURI; - if (location.indexOf('%') != -1) { - locationURI = URI.create(location); - } else { - locationURI = new URI(null, location, null); - } - - File theProcess = new File(locationURI); - return theProcess; - } catch( Exception e ) { - if(__log.isDebugEnabled()) { - __log.debug("Exception converting BPEL file URL to an URI: " + e ); - } - } // end try - return null; - } // end getBPELFile - - - -} // end class BPELODEDeployFile diff --git a/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/DeploymentWorkspace.java b/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/DeploymentWorkspace.java deleted file mode 100644 index 8553574aa9..0000000000 --- a/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/DeploymentWorkspace.java +++ /dev/null @@ -1,233 +0,0 @@ -/* - * 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.tuscany.sca.implementation.bpel.ode; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.net.URI; -import java.net.URISyntaxException; -import java.net.URL; -import java.net.URLConnection; -import java.security.AccessController; -import java.security.PrivilegedAction; -import java.util.UUID; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.apache.tuscany.sca.implementation.bpel.BPELImplementation; - -/** - * - */ -public class DeploymentWorkspace { - private static final Logger logger = Logger.getLogger(DeploymentWorkspace.class.getName()); - - static final String DEPLOY_FILENAME = "deploy.xml"; - - private BPELImplementation implementation; - private File workingDir; - private File bpelFile; - - /** - * @param implementation - */ - public DeploymentWorkspace(BPELImplementation implementation) { - super(); - this.implementation = implementation; - this.workingDir = createWorkingDirectory(); - } - - /** - * @param implementation - */ - public DeploymentWorkspace(BPELImplementation implementation, File workingDir) { - super(); - this.implementation = implementation; - this.workingDir = workingDir; - if (this.workingDir == null) { - this.workingDir = createWorkingDirectory(); - } - } - - public File getCBPFile() throws IOException { - String name = getBPELFile().getName(); - int index = name.lastIndexOf('.'); - if (index != -1) { - name = name.substring(0, index); - } - return new File(workingDir, name + ".cbp"); - } - - public synchronized File getBPELFile() throws IOException { - if (bpelFile != null) { - String location = implementation.getProcessDefinition().getLocation(); - String fileName = implementation.getProcessDefinition().getURI(); - File file = new File(workingDir, fileName); - if (file.isFile()) { - bpelFile = file; - return file; - } - URL url = new URL(location); - this.bpelFile = copy(url, workingDir, fileName); - } - return bpelFile; - } - - /** - * Escape the space in URL string - * @param uri - * @return - */ - public static URI createURI(String uri) { - if (uri == null) { - return null; - } - if (uri.indexOf('%') != -1) { - // Avoid double-escaping - return URI.create(uri); - } - int index = uri.indexOf(':'); - String scheme = null; - String ssp = uri; - if (index != -1) { - scheme = uri.substring(0, index); - ssp = uri.substring(index + 1); - } - try { - return new URI(scheme, ssp, null); - } catch (URISyntaxException e) { - throw new IllegalArgumentException(e); - } - } - - /** - * Gets the File containing the BPEL process definition - * @return - the File object containing the BPEL process - */ - private static File getContainer(String location) { - try { - File theProcess = null; - URI locationURI = createURI(location); - String protocol = locationURI.getScheme(); - if ("file".equals(protocol)) { - theProcess = new File(locationURI); - } else if ("jar".equals(protocol) || "wsjar".equals(protocol) || "zip".equals(protocol)) { - String uri = locationURI.toString(); - // jar contribution - uri = uri.substring(protocol.length() + 1, uri.lastIndexOf("!/")); - locationURI = createURI(uri); - if ("file".equals(locationURI.getScheme())) { - theProcess = new File(locationURI); - } - } - return theProcess; - } catch (Exception e) { - logger.log(Level.SEVERE, "Exception converting BPEL file URL to an URI: " + location, e); - } // end try - return null; - } // end getBPELFile - - /** - * Gets the directory containing the BPEL process - * @return - */ - static File getDirectory(String location) { - File file = getContainer(location); - if (file == null) { - return null; - } - File theDir = file.getParentFile(); - return theDir; - } // end getDirectory - - public File getDeployFile() { - return new File(workingDir, DEPLOY_FILENAME); - } - - private static String getSystemProperty(final String name) { - return AccessController.doPrivileged(new PrivilegedAction<String>() { - public String run() { - return System.getProperty(name); - } - }); - } - - private File createWorkingDirectory() { - String tmpDir = getSystemProperty("java.io.tmpdir"); - File root = new File(tmpDir); - // Add user name as the prefix. For multiple users on the same Lunix, - // there will be permission issue if one user creates the .tuscany folder - // first under /tmp with no write permission for others. - String userName = getSystemProperty("user.name"); - if (userName != null) { - root = new File(root, userName); - } - root = new File(root, ".tuscany/bpel/" + UUID.randomUUID().toString()); - if (logger.isLoggable(Level.FINE)) { - logger.fine("BPEL working directory: " + root); - } - return root; - } - - public static File copy(URL url, File directory, String fileName) throws IOException { - File file = new File(directory, fileName); - file.getParentFile().mkdirs(); - FileOutputStream os = new FileOutputStream(file); - URLConnection connection = url.openConnection(); - connection.setUseCaches(false); - InputStream is = connection.getInputStream(); - byte[] buf = new byte[8192]; - while (true) { - int size = is.read(buf); - if (size < 0) - break; - os.write(buf, 0, size); - } - is.close(); - os.close(); - return file; - } - - private static boolean deleteFiles(File file) { - boolean result = true; - if (file.isFile()) { - if (!file.delete()) { - result = false; - } - } else if (file.isDirectory()) { - for (File f : file.listFiles()) { - if (!deleteFiles(f)) { - result = false; - } - } - if (!file.delete()) { - result = false; - } - } - return result; - } - - public boolean delete() { - return deleteFiles(workingDir); - } - -} diff --git a/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/EmbeddedODEServer.java b/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/EmbeddedODEServer.java deleted file mode 100644 index d29e682f36..0000000000 --- a/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/EmbeddedODEServer.java +++ /dev/null @@ -1,565 +0,0 @@ -/* - * 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.tuscany.sca.implementation.bpel.ode; - -import java.io.File; -import java.net.URISyntaxException; -import java.net.URL; -import java.util.Map; -import java.util.Properties; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.ThreadFactory; -import java.util.concurrent.locks.Condition; -import java.util.concurrent.locks.Lock; -import java.util.concurrent.locks.ReentrantLock; - -import javax.persistence.spi.PersistenceProvider; -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.dao.BpelDAOConnectionFactoryJDBC; -import org.apache.ode.bpel.engine.BpelServerImpl; -import org.apache.ode.bpel.engine.CountLRUDehydrationPolicy; -import org.apache.ode.bpel.evt.BpelEvent; -import org.apache.ode.bpel.evt.CorrelationMatchEvent; -import org.apache.ode.bpel.evt.NewProcessInstanceEvent; -import org.apache.ode.bpel.evt.ProcessMessageExchangeEvent; -import org.apache.ode.bpel.iapi.BpelEventListener; -import org.apache.ode.bpel.iapi.Scheduler; -import org.apache.ode.bpel.memdao.BpelDAOConnectionFactoryImpl; -import org.apache.ode.dao.jpa.ProcessDAOImpl; -import org.apache.ode.il.config.OdeConfigProperties; -import org.apache.ode.il.dbutil.Database; -import org.apache.ode.scheduler.simple.JdbcDelegate; -import org.apache.ode.scheduler.simple.SimpleScheduler; -import org.apache.ode.utils.GUID; -import org.apache.tuscany.sca.assembly.Endpoint; -import org.apache.tuscany.sca.assembly.EndpointReference; -import org.apache.tuscany.sca.extensibility.ServiceDiscovery; -import org.apache.tuscany.sca.implementation.bpel.BPELImplementation; -import org.apache.tuscany.sca.runtime.RuntimeComponent; -import org.eclipse.core.runtime.FileLocator; - - - -/** - * Embedded ODE process server - * - * @version $Rev$ $Date$ - */ -public class EmbeddedODEServer { - protected final Log __log = LogFactory.getLog(getClass()); - - private boolean _initialized; - - private OdeConfigProperties _config; - - private TransactionManager _txMgr; - - private Database _db; - - private File _workRoot; - - private BpelDAOConnectionFactoryJDBC _daoCF; - - private BpelServerImpl _bpelServer; - - private Scheduler _scheduler; - - protected ExecutorService _executorService; - - private Map<QName, RuntimeComponent> tuscanyRuntimeComponents = new ConcurrentHashMap<QName, RuntimeComponent>(); - - private Map<String, Long> mexToProcessMap = new ConcurrentHashMap<String, Long>(); - - private Map<Long, Map<String, EndpointReference>> callbackMap = new ConcurrentHashMap<Long, Map<String, EndpointReference>>(); - - private final Lock metadataLock = new ReentrantLock(); - private final Condition mexAdded = metadataLock.newCondition(); - private final Condition callbackAdded = metadataLock.newCondition(); - - public EmbeddedODEServer(TransactionManager txMgr) { - _txMgr = txMgr; - } - - public void init() throws ODEInitializationException { - - Properties p = System.getProperties(); - p.put("derby.system.home", "target"); - - Properties confProps = new Properties(); - confProps.put("openjpa.jdbc.SynchronizeMappings", "buildSchema(ForeignKeys=false)"); - - _config = new OdeConfigProperties(confProps, "ode-sca"); - - // Setting work root as the directory containing our database - try { - _workRoot = getDatabaseLocationAsFile(); - } catch (URISyntaxException e) { - throw new ODEInitializationException(e); - } - - initTxMgr(); - initPersistence(); - initBpelServer(); - - try { - _bpelServer.start(); - } catch (Exception ex) { - String errmsg = "An error occured during the ODE BPEL server startup."; - __log.error(errmsg, ex); - throw new ODEInitializationException(errmsg, ex); - } - - // Start ODE scheduler - _scheduler.start(); - - __log.info("ODE BPEL server started."); - _initialized = true; - - } // end method init() - - /** - * Gets the location of the database used for the ODE BPEL engine as a File object for - * the directory containing the database - * @return - * @throws ODEInitializationException - * @throws URISyntaxException - */ - private File getDatabaseLocationAsFile() throws ODEInitializationException, - URISyntaxException { - File locationFile = null; - URL dbLocation = null; - - // An environment variable to set the path to the DB - String dbFile = System.getenv("TUSCANY_IMPL_BPEL_DBLOCATION"); - if( dbFile != null ) { - try { - locationFile = new File(dbFile).getParentFile(); - } catch (Exception e ) { - System.out.println("Environment variable TUSCANY_IMPL_BPEL_LOCATION has the wrong format: " + dbFile); - System.out.println("Exception is: " + e.getClass().toString() + " " + e.getMessage()); - } // end try - } else { - dbLocation = getClass().getClassLoader().getResource("jpadb"); - if (dbLocation == null) { - throw new ODEInitializationException("Couldn't find database in the classpath:" + - " try setting the TUSCANY_IMPL_BPEL_LOCATION environment variable"); - } - // Handle OSGI bundle case - if( dbLocation.getProtocol() == "bundleresource" ) { - try { - dbLocation = FileLocator.toFileURL( dbLocation ); - } catch (Exception ce ) { - throw new ODEInitializationException("Couldn't find database in the OSGi bundle"); - } // end try - } // end if - locationFile = new File(dbLocation.toURI()).getParentFile(); - } // end if - - return locationFile; - } // end method getDatabaseLocationAsFile - - private void initTxMgr() { - if(_txMgr == null) { - try { - GeronimoTxFactory txFactory = new GeronimoTxFactory(); - _txMgr = txFactory.getTransactionManager(); - } catch (Exception e) { - __log.fatal("Couldn't initialize a transaction manager using Geronimo's transaction factory.", e); - throw new ODEInitializationException("Couldn't initialize a transaction manager using " + "Geronimo's transaction factory.", e); - } - } - } - - private void initPersistence() { - _db = new Database(_config); - _db.setTransactionManager(_txMgr); - _db.setWorkRoot(_workRoot); - - try { - _db.start(); - _daoCF = _db.createDaoCF(); - } catch (Exception ex) { - String errmsg = "Error while configuring ODE persistence."; - __log.error(errmsg, ex); - throw new ODEInitializationException(errmsg, ex); - } - } - - private void initBpelServer() { - if (__log.isDebugEnabled()) { - __log.debug("ODE initializing"); - } - ThreadFactory threadFactory = new ThreadFactory() { - int threadNumber = 0; - public Thread newThread(Runnable r) { - threadNumber += 1; - Thread t = new Thread(r, "ODEServer-"+threadNumber); - t.setDaemon(true); - return t; - } - }; - - _executorService = Executors.newCachedThreadPool(threadFactory); - - // executor service for long running bulk transactions - ExecutorService _polledRunnableExecutorService = Executors.newCachedThreadPool(new ThreadFactory() { - int threadNumber = 0; - public Thread newThread(Runnable r) { - threadNumber += 1; - Thread t = new Thread(r, "PolledRunnable-"+threadNumber); - t.setDaemon(true); - return t; - } - }); - - _bpelServer = new BpelServerImpl(); - _scheduler = createScheduler(); - _scheduler.setJobProcessor(_bpelServer); - - BpelServerImpl.PolledRunnableProcessor polledRunnableProcessor = new BpelServerImpl.PolledRunnableProcessor(); - polledRunnableProcessor.setPolledRunnableExecutorService(_polledRunnableExecutorService); - polledRunnableProcessor.setContexts(_bpelServer.getContexts()); - //_scheduler.setPolledRunnableProcesser(polledRunnableProcessor); - - _bpelServer.setDaoConnectionFactory(_daoCF); - _bpelServer.setInMemDaoConnectionFactory(new BpelDAOConnectionFactoryImpl(_scheduler)); - - _bpelServer.setEndpointReferenceContext( new ODEEprContext() ); - _bpelServer.setMessageExchangeContext(new ODEMessageExchangeContext(this)); - _bpelServer.setBindingContext(new ODEBindingContext()); - _bpelServer.setScheduler(_scheduler); - if (_config.isDehydrationEnabled()) { - CountLRUDehydrationPolicy dehy = new CountLRUDehydrationPolicy(); - dehy.setProcessMaxAge(_config.getDehydrationMaximumAge()); - dehy.setProcessMaxCount(_config.getDehydrationMaximumCount()); - _bpelServer.setDehydrationPolicy(dehy); - } - - _bpelServer.setConfigProperties(_config.getProperties()); - _bpelServer.init(); - _bpelServer.setInstanceThrottledMaximumCount(_config.getInstanceThrottledMaximumCount()); - _bpelServer.setProcessThrottledMaximumCount(_config.getProcessThrottledMaximumCount()); - _bpelServer.setProcessThrottledMaximumSize(_config.getProcessThrottledMaximumSize()); - _bpelServer.setHydrationLazy(_config.isHydrationLazy()); - _bpelServer.setHydrationLazyMinimumSize(_config.getHydrationLazyMinimumSize()); - - // Register event listener on the BPEL server - _bpelServer.registerBpelEventListener( new ODEEventListener( this, _bpelServer) ); - } // end method initBpelLServer - - public void stop() throws ODEShutdownException { - if(_bpelServer != null) { - try { - __log.debug("Stopping BPEL Embedded server"); - _bpelServer.shutdown(); - _bpelServer = null; - } catch (Exception ex) { - __log.debug("Error stopping BPEL server"); - } - } - - if(_scheduler != null) { - try { - __log.debug("Stopping scheduler"); - _scheduler.shutdown(); - _scheduler = null; - } catch (Exception ex) { - __log.debug("Error stopping scheduler"); - } - } - - if(_daoCF != null) { - try { - __log.debug("Stopping DAO"); - _daoCF.shutdown(); - _daoCF = null; - } catch (Exception ex) { - __log.debug("Error stopping DAO"); - } - } - - if(_db != null) { - try { - __log.debug("Stopping DB"); - _db.shutdown(); - _db = null; - } catch (Exception ex) { - __log.debug("Error stopping DB"); - } - } - - if(_txMgr != null) { - try { - __log.debug("Stopping Transaction Manager"); - _txMgr = null; - } catch (Exception ex) { - __log.debug("Error stopping Transaction Manager"); - } - } - } - - protected Scheduler createScheduler() { - Properties odeProperties = new Properties(); - // TODO Find correct values for these properties - MJE 22/06/2009 - odeProperties.put("ode.scheduler.queueLength", "100" ); - odeProperties.put("ode.scheduler.immediateInterval", "30000" ); - odeProperties.put("ode.scheduler.nearFutureInterval", "600000" ); - odeProperties.put("ode.scheduler.staleInterval", "100000" ); - - SimpleScheduler scheduler = new SimpleScheduler(new GUID().toString(), - new JdbcDelegate(_db.getDataSource()), - odeProperties ); - scheduler.setTransactionManager(_txMgr); - - return scheduler; - } - - public boolean isInitialized() { - return _initialized; - } - - public BpelServerImpl getBpelServer() { - return _bpelServer; - } - - public Scheduler getScheduler() { - return _scheduler; - } - - public ExecutorService getExecutor() { - return _executorService; - } - - /** - * Deploy the BPEL process implementation to the ODE Engine - * @param d - ODEDeployment structure - * @param implementation - the BPEL Implementation - * @param component - the SCA component which uses the implementation - */ - public void deploy(ODEDeployment d, BPELImplementation implementation, RuntimeComponent component ) { - try { - TuscanyProcessConfImpl processConf = new TuscanyProcessConfImpl( implementation, component ); - _bpelServer.register(processConf); - d.setProcessConf(processConf); - __log.debug("Completed calling new Process deployment code..."); - } catch (Exception ex) { - String errMsg = ">>> DEPLOY: Unexpected exception during deploy of BPEL. /n Component = " - + component.getName() - + " implementation = " - + implementation.getProcess() - + ex.getMessage(); - __log.debug(errMsg, ex); - throw new ODEDeploymentException(errMsg,ex); - } - } - - /** - * Undeploy the BPEL process implementation from the ODE Engine - * @param d - ODEDeployment structure - */ - public void undeploy(ODEDeployment d) { - TuscanyProcessConfImpl processConf = d.getProcessConf(); - if( processConf != null ) { - processConf.stop(); - } // end if - } // end method undeploy - - public void registerTuscanyRuntimeComponent(QName processName,RuntimeComponent componentContext) { - tuscanyRuntimeComponents.put(processName, componentContext); - } - - public RuntimeComponent getTuscanyRuntimeComponent(QName processName) { - return tuscanyRuntimeComponents.get(processName); - } - - /** - * Records a connection between a MessageExchange ID and a Process Instance ID - * @param mexID - * @param processID - */ - public void addMexToProcessIDLink( String mexID, Long processID ) { - //System.out.println("Add mapping Mex - ProcessID = " + mexID + " " + processID.toString()); - if( mexID == null ) { - //System.out.println("Mex ID is null !"); - return; - } // end if - metadataLock.lock(); - try { - mexToProcessMap.put(mexID, processID); - mexAdded.signalAll(); - return; - } catch (Exception e) { - return; - } finally { - metadataLock.unlock(); - } // end try - } // end method addMexToProcessIDLink( mexID, processID ) - - /** - * Connects from a MessageExchangeID to a Process Instance ID - * @param mexID - the MessageExchange ID - * @return - a Long which is the Process Instance ID - */ - public Long getProcessIDFromMex( String mexID ) { - //System.out.println("Get mapping for Mex: " + mexID); - metadataLock.lock(); - try { - Long processID = mexToProcessMap.get(mexID); - while( processID == null ) { - mexAdded.await(); - processID = mexToProcessMap.get(mexID); - } // end while - return processID; - } catch (Exception e) { - return null; - } finally { - metadataLock.unlock(); - } // end try - - } // end method getProcessIDFromMex - - /** - * Remove the connection between a Message Exchange ID and a Process Instance ID - * @param mexID - the Message Exchange ID - */ - public void removeMexToProcessIDLink( String mexID ) { - mexToProcessMap.remove(mexID); - } // end method removeMexToProcessIDLink - - /** - * Stores the metadata for a Callback - * @param processID - Process ID of the BPEL Process Instance for which this callback applies - * @param serviceName - the name of the service which has the callback - * @param callbackEndpoint - a Tuscany Endpoint which is the target of the callback - */ - public void saveCallbackMetadata( Long processID, String serviceName, EndpointReference callbackEPR ) { - //System.out.println("Save callback metadata: ProcessID " + processID.toString() + " service: " + serviceName); - metadataLock.lock(); - try { - Map<String, EndpointReference> processMap = callbackMap.get(processID); - if( processMap == null ) { - processMap = new ConcurrentHashMap<String, EndpointReference>(); - callbackMap.put(processID, processMap); - } // end if - // Put the mapping of service name to callback endpoint - note that this overwrites any - // previous mapping for the same service name - processMap.put(serviceName, callbackEPR); - callbackAdded.signalAll(); - } finally { - metadataLock.unlock(); - } // end try - } // end saveCallbackMetadata - - /** - * Get the metadata for a Callback, based on a BPEL Process Instance ID and a Service name - * @param processID - the BPEL Process Instance ID - * @param serviceName - the service name - * @return - and Endpoint which is the Callback endpoint for the service for this process instance. - * Returns null if there is no callback metadata for this service. - */ - public EndpointReference getCallbackMetadata( Long processID, String serviceName ) { - EndpointReference theEPR; - //System.out.println("Get callback metadata: ProcessID " + processID.toString() + " service: " + serviceName); - - metadataLock.lock(); - try { - while(true) { - Map<String, EndpointReference> processMap = callbackMap.get(processID); - theEPR = processMap.get(serviceName); - if( theEPR != null ) return theEPR; - callbackAdded.await(); - } // end while - } catch (Exception e) { - return null; - } finally { - metadataLock.unlock(); - } // end try - } // end method getCallbackMetadata - - /** - * Removes the metadata for a Callback - * @param processID - the Process Instance ID of the process instance to which the callback metadata applies - * @param serviceName - the service name for the service which has a callback - can be NULL, in which case ALL - * callback metadata for the process instance is removed - */ - public void removeCallbackMetadata( Long processID, String serviceName ) { - - if( serviceName == null ) { - callbackMap.remove(processID); - } else { - Map<String, EndpointReference> processMap = callbackMap.get(processID); - processMap.remove(serviceName); - } // end if - - } // end method removeCallbackMetadata - - private class ODEEventListener implements BpelEventListener { - - private EmbeddedODEServer ODEServer; - private BpelServerImpl bpelServer; - - ODEEventListener( EmbeddedODEServer ODEServer, BpelServerImpl bpelServer ) { - this.ODEServer = ODEServer; - this.bpelServer = bpelServer; - } // end constructor - - /** - * Method which receives events from the ODE Engine as processing proceeds - */ - public void onEvent(BpelEvent bpelEvent) { - if( bpelEvent instanceof ProcessMessageExchangeEvent || - bpelEvent instanceof NewProcessInstanceEvent || - bpelEvent instanceof CorrelationMatchEvent ) { - handleProcMexEvent( (ProcessMessageExchangeEvent) bpelEvent ); - return; - } // end if - - } // end method onEvent - - /** - * Handle a ProcessMessageExchangeEvent - * - the important aspect of this event is that it establishes a connection between a MessageExchange object - * and the BPEL Process instance to which it relates. - * @param bpelEvent - the ProcessMessageExchangeEvent - */ - private void handleProcMexEvent( ProcessMessageExchangeEvent bpelEvent) { - // Extract the message ID and the process instance ID - it is the connection between these - // that is vital to know - String mexID = bpelEvent.getMessageExchangeId(); - Long processID = bpelEvent.getProcessInstanceId(); - ODEServer.addMexToProcessIDLink( mexID, processID ); - } // end method handleProcMexEvent - - public void shutdown() { - // Intentionally left blank - } - - public void startup(Properties configProperties) { - // Intentionally left blank - } - - } // end Class BPELEventListener -} diff --git a/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/GeronimoTxFactory.java b/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/GeronimoTxFactory.java deleted file mode 100644 index 11af0f8b50..0000000000 --- a/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/GeronimoTxFactory.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * 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.tuscany.sca.implementation.bpel.ode; - -import javax.transaction.TransactionManager; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -/** - * Geronimo transaction factory - * - * @version $Rev$ $Date$ - */ -public class GeronimoTxFactory { - private static final Log __log = LogFactory.getLog(GeronimoTxFactory.class); - - /* Public no-arg constructor is required */ - public GeronimoTxFactory() { - } - - public TransactionManager getTransactionManager() { - __log.info("Using embedded Geronimo transaction manager"); - try { - Object obj = new org.apache.geronimo.transaction.manager.GeronimoTransactionManager(); - return (TransactionManager) obj; - } catch (Exception except) { - throw new IllegalStateException("Unable to instantiate Geronimo Transaction Manager", except); - } - } -} diff --git a/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/ODEBindingContext.java b/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/ODEBindingContext.java deleted file mode 100644 index 8e339812cd..0000000000 --- a/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/ODEBindingContext.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * 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.tuscany.sca.implementation.bpel.ode; - -import javax.wsdl.PortType; -import javax.xml.namespace.QName; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.ode.bpel.iapi.BindingContext; -import org.apache.ode.bpel.iapi.Endpoint; -import org.apache.ode.bpel.iapi.EndpointReference; -import org.apache.ode.bpel.iapi.PartnerRoleChannel; - -/** - * Binding Context information - * - * @version $Rev$ $Date$ - */ -public class ODEBindingContext implements BindingContext { - protected final Log __log = LogFactory.getLog(getClass()); - - public ODEBindingContext() { - - } - - public EndpointReference activateMyRoleEndpoint(QName pid, Endpoint endpoint) { - // This will be needed when we support callBacks - if (__log.isDebugEnabled()) { - __log.debug("Activating MyRole Endpoint : " + pid + " - " + endpoint.serviceName); - } - - QName processName = getProcessName(pid); - - return new TuscanyEPR(processName, endpoint); - } - - public void deactivateMyRoleEndpoint(Endpoint endpoint) { - if (__log.isDebugEnabled()) { - __log.debug("Deactivate MyRole Endpoint : " + endpoint.serviceName); - } - - } - - public PartnerRoleChannel createPartnerRoleChannel(QName pid, PortType portType, Endpoint endpoint) { - if (__log.isDebugEnabled()) { - __log.debug("Create PartnerRole channel : " + pid + " - " + portType.getQName() + " - "+ endpoint.serviceName); - } - - QName processName = getProcessName(pid); - return new TuscanyPRC(processName, pid, portType, endpoint); - } - - /** - * Helper method to retrieve the BPEL process name from a processID (where processID have version concatenated to it) - * @param pid - * @return QName the BPEL process name - */ - private static QName getProcessName(QName pid) { - String processName = pid.getLocalPart().substring(0, pid.getLocalPart().lastIndexOf("-")); - return new QName(pid.getNamespaceURI(), processName); - } - - /** - * Calculate the size of the service that this endpoint references. - * @param epr the endpoint reference for the service - * @returns the size of the service - */ - public long calculateSizeofService(EndpointReference epr) { - // TODO It is not at all clear from the ODE code what "size" means - // eg number of service operations? size of the process in bytes? - // So for the present, return a fixed random value... - return 10000; - } -} diff --git a/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/ODEDeployment.java b/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/ODEDeployment.java deleted file mode 100644 index 0eedd5d0e5..0000000000 --- a/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/ODEDeployment.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * 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.tuscany.sca.implementation.bpel.ode; - -import java.io.File; - -/** - * Deployment information - * - * @version $Rev$ $Date$ - */ -public class ODEDeployment { - /** The directory containing the deploy.xml and artifacts. */ - public File deployDir; - - // The Tuscany version of the ODE Process Conf implementation - private TuscanyProcessConfImpl conf; - - /** If non-null the type of exception we expect to get when we deploy. */ - public Class<?> expectedException = null; - - public ODEDeployment(File deployDir) { - this.deployDir = deployDir; - } - - @Override - public String toString() { - return "Deployment#" + deployDir; - } - - public void setProcessConf( TuscanyProcessConfImpl conf ) { - this.conf = conf; - } - - public TuscanyProcessConfImpl getProcessConf() { - return conf; - } -}
\ No newline at end of file diff --git a/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/ODEDeploymentException.java b/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/ODEDeploymentException.java deleted file mode 100644 index b03f69d9aa..0000000000 --- a/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/ODEDeploymentException.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * 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.tuscany.sca.implementation.bpel.ode; - -/** - * Thrown when ODE failed to shutdown. - * - * @version $Rev$ $Date$ - */ -public class ODEDeploymentException extends RuntimeException { - private static final long serialVersionUID = -2869674556330744215L; - - public ODEDeploymentException(Throwable cause) { - super(cause); - } - - public ODEDeploymentException(String message) { - super(message); - } - - public ODEDeploymentException(String message, Throwable cause) { - super(message, cause); - } -} diff --git a/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/ODEEndpointReference.java b/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/ODEEndpointReference.java deleted file mode 100644 index 079a0f96f5..0000000000 --- a/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/ODEEndpointReference.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * 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.tuscany.sca.implementation.bpel.ode; - -import org.apache.ode.bpel.iapi.Endpoint; -import org.apache.ode.bpel.iapi.EndpointReference; -import org.apache.ode.utils.DOMUtils; -import org.apache.tuscany.sca.assembly.Base; -import org.w3c.dom.Document; -import org.w3c.dom.Element; - -/** - * Tuscany implementation of the ODE EndpointReference interface - * - */ -public class ODEEndpointReference implements EndpointReference { - - - private Document doc = DOMUtils.newDocument(); - private Element serviceref; - - /** - * Private constructor for the EndpointReference - */ - private ODEEndpointReference() { - super(); - } // end ODEEndpointReference() - - /** - * Add a new <service-ref/> element to the EndpointReference - */ - private void addServiceRef() { - serviceref = doc.createElementNS(EndpointReference.SERVICE_REF_QNAME.getNamespaceURI(), - EndpointReference.SERVICE_REF_QNAME.getLocalPart()); - doc.appendChild(serviceref); - } // end method addServiceRef() - - /** - * Create an EndpointReference from an Endpoint object - * @param anEndpoint - the endpoint object - */ - public ODEEndpointReference( Endpoint anEndpoint ) { - this(); - addServiceRef(); - // If there is an endpoint for this reference (ie the reference is wired) - // then add an element to indicate this - String eprCount = anEndpoint.portName; - if( !"0".equals(eprCount) ) { - Element eprElement = doc.createElementNS( Base.SCA11_TUSCANY_NS, "EPR"); - serviceref.appendChild(eprElement); - } // end if - return; - } // end - - /** - * Create a new EndpointReference from an existing endpointElement, which is assumed - * to be of the form: - * <sref:service-ref> - * <EPR/> - * </sref:service-ref> - * - * @param endpointElement the endpointElement - */ - public ODEEndpointReference( Element endpointElement ) { - this(); - if( endpointElement != null ) { - // import the service-ref element into this EndpointReference, if the - // root element is a <sref:service-ref/> - if( endpointElement.getLocalName().equals("service-ref") ) { - doc.appendChild( doc.importNode(endpointElement, true) ); - } // end if - } // end if - return; - } // end - - public Document toXML() { - return doc; - } // end toXML() - -} diff --git a/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/ODEEprContext.java b/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/ODEEprContext.java deleted file mode 100644 index 972f77ad65..0000000000 --- a/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/ODEEprContext.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * 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.tuscany.sca.implementation.bpel.ode; - -import java.util.Map; - -import javax.xml.namespace.QName; - -import org.apache.ode.bpel.iapi.EndpointReference; -import org.apache.ode.bpel.iapi.EndpointReferenceContext; -import org.w3c.dom.Element; - -/** - * Implementation of the ODE EndpointReferenceContext interface, used by the ODE BPEL Engine - * to handle conversions of EndpointReferences at runtime. - * - * An ODE Endpoint reference relates to SCA Reference EndpointReferences (pointers to target - * services) and to BPEL PartnerLink elements and any associated BPEL process variables with - * type set to element="sref:service-ref" - * - */ -public class ODEEprContext implements EndpointReferenceContext { - - /** - * Converts an endpoint reference from its XML representation to another - * type of endpoint reference. - * - * @param targetType - * @param sourceEndpoint - * @return converted EndpointReference, being of targetType - */ - public EndpointReference convertEndpoint( QName targetType, - Element sourceEndpoint) { - // For the present, Tuscany only has one type of EndpointReference, so that the - // targetType parameter is of no significance. - return new ODEEndpointReference( sourceEndpoint ); - } // end method convertEndpoint - - public Map getConfigLookup(EndpointReference epr) { - // TODO Auto-generated method stub - return null; - } - - /** - * Resolve an end-point reference from its XML representation. The - * nature of the representation is determined by the integration - * layer. The BPEL engine uses this method to reconstruct - * {@link EndpointReference} objects that have been persisted in the - * database via {@link EndpointReference#toXML(javax.xml.transform.Result)} - * method. - * - * @param XML representation of the EPR - * @return reconstituted EPR object {@link EndpointReference} - */ - public EndpointReference resolveEndpointReference(Element epr) { - return new ODEEndpointReference( epr ); - } // end method resolveEndpointReference - -} // end class ODEEprContext diff --git a/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/ODEExternalService.java b/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/ODEExternalService.java deleted file mode 100644 index d2dbd4880d..0000000000 --- a/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/ODEExternalService.java +++ /dev/null @@ -1,370 +0,0 @@ -/* - * 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.tuscany.sca.implementation.bpel.ode; - -import java.util.List; -import java.util.concurrent.Callable; - -import javax.wsdl.Part; -import javax.xml.namespace.QName; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -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.Scheduler; -import org.apache.ode.utils.DOMUtils; -import org.apache.tuscany.sca.assembly.ComponentReference; -import org.apache.tuscany.sca.assembly.EndpointReference; -import org.apache.tuscany.sca.interfacedef.Operation; -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLInterface; -import org.apache.tuscany.sca.runtime.RuntimeComponent; -import org.apache.tuscany.sca.runtime.RuntimeComponentReference; -import org.apache.tuscany.sca.runtime.RuntimeEndpointReference; -import org.w3c.dom.Document; -import org.w3c.dom.Element; - -/** - * Helper Class to handle invocation to Tuscany Component References - * - * @version $Rev$ $Date$ - */ -public class ODEExternalService { - protected final Log __log = LogFactory.getLog(getClass()); - - private EmbeddedODEServer _server; - private Scheduler _sched; - - public ODEExternalService(EmbeddedODEServer server) { - this._server = server; - this._sched = _server.getScheduler(); - } - - public void invoke(final PartnerRoleMessageExchange partnerRoleMessageExchange) { - boolean isTwoWay = - partnerRoleMessageExchange.getMessageExchangePattern() == org.apache.ode.bpel.iapi.MessageExchange.MessageExchangePattern.REQUEST_RESPONSE; - - if (isTwoWay) { - // Defer the invoke until the transaction commits. - _sched.registerSynchronizer(new Scheduler.Synchronizer() { - public void beforeCompletion() { - - } - - public void afterCompletion(boolean success) { - // If the TX is rolled back, then we don't send the request. - if (!success) return; - - // The invocation must happen in a separate thread, holding on the afterCompletion - // blocks other operations that could have been listed there as well. - _server.getExecutor().submit(new Callable<Object>() { - public Object call() throws Exception { - try { - // do execution - if(! (partnerRoleMessageExchange.getChannel() instanceof TuscanyPRC)) { - throw new IllegalArgumentException("Channel should be an instance of TuscanyPRC"); - } - - TuscanyPRC channel = (TuscanyPRC) partnerRoleMessageExchange.getChannel(); - RuntimeComponent tuscanyRuntimeComponent = _server.getTuscanyRuntimeComponent(channel.getProcessName()); - - // Fetching the reference based on the data held in the PRC / Endpoint - String refName = channel.getEndpoint().serviceName.getLocalPart(); - RuntimeComponentReference runtimeComponentReference = getReferenceByName( tuscanyRuntimeComponent, refName ); - RuntimeEndpointReference epr = getEndpointReference( runtimeComponentReference, partnerRoleMessageExchange ); - // convert operations - Operation operation = - findOperation(partnerRoleMessageExchange.getOperation().getName(), epr); - - /* - This is how a request looks like (payload is wrapped with extra info) - <?xml version="1.0" encoding="UTF-8"?> - <message> - <parameters> - <getGreetings xmlns="http://greetings"> - <message xmlns="http://helloworld">Luciano</message> - </getGreetings> - </parameters> - </message> - */ - Element msg = partnerRoleMessageExchange.getRequest().getMessage(); - if (msg != null) { - - if(__log.isDebugEnabled()) { - String xml = DOMUtils.domToString(msg); - String payload = DOMUtils.domToString(getPayload(partnerRoleMessageExchange.getRequest())); - __log.debug("Starting invocation of SCA Reference"); - __log.debug(">>> Original message: " + xml); - __log.debug(">>> Payload: " + payload); - } // end if - - Object[] args = new Object[] {getPayload(partnerRoleMessageExchange.getRequest())}; - - Object result = null; - boolean success = false; - - try { - result = epr.invoke(operation, args); - success = true; - } catch (Exception e) { - e.printStackTrace(); - partnerRoleMessageExchange.replyWithFailure(MessageExchange.FailureType.OTHER, - e.getMessage(), - null); - } // end try - - if(__log.isDebugEnabled()) { - __log.debug("SCA Reference invocation finished"); - __log.debug(">>> Result : " + DOMUtils.domToString((Element)result)); - } // end if - - if (!success) { return null; } - - // two way invocation - // process results based on type of message invocation - replyTwoWayInvocation(partnerRoleMessageExchange.getMessageExchangeId(), - operation, - (Element)result); - } // end if - - } catch (Throwable t) { - // some error - String errmsg = "Error sending message (mex=" + partnerRoleMessageExchange + "): " + t.getMessage(); - __log.error(errmsg, t); - /*replyWithFailure(partnerRoleMessageExchange.getMessageExchangeId(), - MessageExchange.FailureType.COMMUNICATION_ERROR, - errmsg, - null);*/ - } - return null; - } - }); - - } - }); - partnerRoleMessageExchange.replyAsync(); - - } else { - /** one-way case * */ - _server.getExecutor().submit(new Callable<Object>() { - public Object call() throws Exception { - // do reply - // operationClient.execute(false); - return null; - } - }); - partnerRoleMessageExchange.replyOneWayOk(); - } - } - - /** - * Gets a RuntimeComponentReference of a supplied RuntimeComponent by name - * @param tuscanyRuntimeComponent - the runtime component - * @param name - the name of the reference - * @return - the RuntimeComponentReference with the supplied name - null if there is no reference with that name - */ - private RuntimeComponentReference getReferenceByName( RuntimeComponent tuscanyRuntimeComponent, String name ) { - if( name == null ) return null; - for( ComponentReference reference : tuscanyRuntimeComponent.getReferences() ) { - if( name.equals(reference.getName()) ) return (RuntimeComponentReference)reference; - } // end for - return null; - } // end method getReferenceByName - - /** - * Get the Runtime Wire for the supplied reference - * @param componentReference - the reference - * @return - the RuntimeWire - null if it cannot be found - */ - private RuntimeEndpointReference getEndpointReference( RuntimeComponentReference componentReference, - PartnerRoleMessageExchange mex) { - if( componentReference.isForCallback() ) { - // Where there is a callback, it is necessary to create a specialized wire, based on callback information - // present on the forward call - - // Get the callbackEPR for the callback using the BPEL Process ID and the Reference name - // - which is the same name as the service name for a callback - Long processID = _server.getProcessIDFromMex(mex.getMessageExchangeId()); - org.apache.tuscany.sca.assembly.EndpointReference callbackEPR = - _server.getCallbackMetadata(processID, componentReference.getName()); - RuntimeEndpointReference wire = selectCallbackWire( callbackEPR.getTargetEndpoint(), componentReference ); - wire = clone_bind( componentReference, callbackEPR.getCallbackEndpoint() ); - return wire; - } else { - // No callback case... - //TODO - fix the x..n multiplicity case, which needs to select the correct ONE of multiple - // EndpointReferences here - return (RuntimeEndpointReference) componentReference.getEndpointReferences().get(0); - } // end if - } // end method getEndpointReference - - private RuntimeEndpointReference selectCallbackWire( org.apache.tuscany.sca.assembly.Endpoint endpoint, - RuntimeComponentReference componentReference) { - // Look for callback binding with same name as service binding - if (endpoint == null) { - throw new RuntimeException("Destination for forward call is not available"); - } - - for (EndpointReference epr : componentReference.getEndpointReferences()) { - if (epr.getBinding().getName().equals(endpoint.getBinding().getName())) { - return (RuntimeEndpointReference) epr; - } - } - - // if no match, look for callback binding with same type as service binding - for (EndpointReference epr : componentReference.getEndpointReferences()) { - if (epr.getBinding().getType().equals(endpoint.getBinding().getType())) { - return (RuntimeEndpointReference) epr; - } - } - - // no suitable callback wire was found - return null; - } // end method selectCallbackWire - - private RuntimeEndpointReference clone_bind(RuntimeComponentReference reference, - org.apache.tuscany.sca.assembly.Endpoint callbackEndpoint) { - - try { - // clone the callback reference ready to configure it for this callback endpoint - RuntimeComponentReference ref = (RuntimeComponentReference)reference.clone(); - ref.getTargets().clear(); - ref.getBindings().clear(); - ref.getEndpointReferences().clear(); - - // clone epr - EndpointReference callbackEndpointReference = (EndpointReference)reference.getEndpointReferences().get(0).clone(); - callbackEndpointReference.setReference(ref); - callbackEndpointReference.setTargetEndpoint(callbackEndpoint); - callbackEndpointReference.setUnresolved(true); - - // The callback endpoint will be resolved when the wire chains are created - ref.getEndpointReferences().add(callbackEndpointReference); - return (RuntimeEndpointReference) ref.getEndpointReferences().get(0); - } catch ( CloneNotSupportedException e ) { - return null; - } // end try clone_bind - - } // end method - - /** - * Find the SCA Reference operation - * - * @param operationName - * @param runtimeComponentReference - * @return - */ - private Operation findOperation(String operationName, RuntimeEndpointReference epr) { - Operation reseultOperation = null; - - for (Operation operation : epr.getComponentTypeReferenceInterfaceContract().getInterface().getOperations()) { - if (operationName.equalsIgnoreCase(operation.getName())) { - reseultOperation = operation; - break; - } - } - return reseultOperation; - } - - /** - * Get payload from a given ODEMessage - * @param odeMessage - the ODE message - * @return the payload of the Message, as a DOM Element - */ - private Element getPayload(Message odeMessage) { - Element payload = null; - - // Get the message parts - these correspond to the message parts for the invocation - // as defined in the WSDL for the service operation being invoked - List<String> parts = odeMessage.getParts(); - if( parts.size() == 0 ) return null; - - // For the present, just deal with the ** FIRST ** part - // TODO Deal with operations that have messages with multiple parts - // - that will require returning an array of Elements, one for each part - Element part = odeMessage.getPart(parts.get(0)); - - // Get the payload which is the First child - if (part != null && part.hasChildNodes()) { - payload = (Element)part.getFirstChild(); - } - - return payload; - } // end getPayload - - - private void replyTwoWayInvocation(final String odeMexId, final Operation operation, final Element result) { - // ODE MEX needs to be invoked in a TX. - try { - _server.getScheduler().execIsolatedTransaction(new Callable<Void>() { - public Void call() throws Exception { - PartnerRoleMessageExchange odeMex = null; - try { - odeMex = (PartnerRoleMessageExchange)_server.getBpelServer().getEngine().getMessageExchange(odeMexId); - if (odeMex != null) { - Message response = createResponseMessage(odeMex, operation, (Element)result); - odeMex.reply(response); - } - } catch (Exception ex) { - String errmsg = "Unable to process response: " + ex.getMessage(); - if (odeMex != null) { - odeMex.replyWithFailure(MessageExchange.FailureType.OTHER, errmsg, null); - } - } - - return null; - } - }); - } catch (Exception ex) { - ex.printStackTrace(); - } - - } - - private Message createResponseMessage(PartnerRoleMessageExchange partnerRoleMessageExchange, - Operation operation, - Element invocationResult) { - Document dom = DOMUtils.newDocument(); - - String operationName = operation.getName(); - Part bpelOperationOutputPart = - (Part)((WSDLInterface)operation.getInterface()).getPortType().getOperation(operationName, null, null) - .getOutput().getMessage().getParts().values().iterator().next(); - - Element contentMessage = dom.createElement("message"); - Element contentPart = dom.createElement(bpelOperationOutputPart.getName()); - - contentPart.appendChild(dom.importNode(invocationResult, true)); - contentMessage.appendChild(contentPart); - dom.appendChild(contentMessage); - - if(__log.isDebugEnabled()) { - __log.debug("Creating result message:"); - __log.debug(">>>" + DOMUtils.domToString(dom.getDocumentElement())); - } - - QName id = partnerRoleMessageExchange.getOperation().getOutput().getMessage().getQName(); - Message response = partnerRoleMessageExchange.createMessage(id); - response.setMessage(dom.getDocumentElement()); - - return response; - } - -} diff --git a/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/ODEInitializationException.java b/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/ODEInitializationException.java deleted file mode 100644 index 2fa91e4e86..0000000000 --- a/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/ODEInitializationException.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * 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.tuscany.sca.implementation.bpel.ode; - -/** - * Thrown when ODE failed to initialize one if its needed resources. - * - * @version $Rev$ $Date$ - */ -public class ODEInitializationException extends RuntimeException { - private static final long serialVersionUID = -2869674556330744215L; - - public ODEInitializationException(Throwable cause) { - super(cause); - } - - public ODEInitializationException(String message) { - super(message); - } - - public ODEInitializationException(String message, Throwable cause) { - super(message, cause); - } -} diff --git a/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/ODEMessageExchangeContext.java b/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/ODEMessageExchangeContext.java deleted file mode 100644 index 1ec82390cf..0000000000 --- a/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/ODEMessageExchangeContext.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * 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.tuscany.sca.implementation.bpel.ode; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.ode.bpel.iapi.BpelEngineException; -import org.apache.ode.bpel.iapi.ContextException; -import org.apache.ode.bpel.iapi.MessageExchangeContext; -import org.apache.ode.bpel.iapi.MyRoleMessageExchange; -import org.apache.ode.bpel.iapi.PartnerRoleMessageExchange; - -/** - * Message Exchange Context information - * - * @version $Rev$ $Date$ - */ -public class ODEMessageExchangeContext implements MessageExchangeContext { - private static final Log __log = LogFactory.getLog(ODEMessageExchangeContext.class); - - private EmbeddedODEServer _server; - - public ODEMessageExchangeContext(EmbeddedODEServer _server) { - this._server = _server; - } - - public void invokePartner(PartnerRoleMessageExchange partnerRoleMessageExchange) throws ContextException { - if (__log.isDebugEnabled()) { - __log.debug("Invoking a partner operation: " + partnerRoleMessageExchange.getOperationName()); - } - - ODEExternalService scaService = new ODEExternalService(_server); - scaService.invoke(partnerRoleMessageExchange); - } - - public void onAsyncReply(MyRoleMessageExchange myRoleMessageExchange) throws BpelEngineException { - if (__log.isDebugEnabled()) { - __log.debug("Processing an async reply from service " + myRoleMessageExchange.getServiceName()); - } - } - } diff --git a/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/ODEShutdownException.java b/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/ODEShutdownException.java deleted file mode 100644 index a928379ba9..0000000000 --- a/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/ODEShutdownException.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * 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.tuscany.sca.implementation.bpel.ode; - -/** - * Thrown when ODE failed to shutdown. - * - * @version $Rev$ $Date$ - */ -public class ODEShutdownException extends RuntimeException { - private static final long serialVersionUID = -2869674556330744215L; - - public ODEShutdownException(Throwable cause) { - super(cause); - } - - public ODEShutdownException(String message) { - super(message); - } - - public ODEShutdownException(String message, Throwable cause) { - super(message, cause); - } -} diff --git a/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/TuscanyEPR.java b/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/TuscanyEPR.java deleted file mode 100644 index deaeaec040..0000000000 --- a/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/TuscanyEPR.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * 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.tuscany.sca.implementation.bpel.ode; - -import javax.xml.namespace.QName; - -import org.apache.ode.bpel.iapi.Endpoint; -import org.apache.ode.bpel.iapi.EndpointReference; -import org.apache.ode.utils.DOMUtils; -import org.w3c.dom.Document; -import org.w3c.dom.Element; - -/** - * This should hold something that makes sense for Tuscany so that the - * process has an address that makes sense from the outside world perspective - * - * @version $Rev$ $Date$ - */ -public class TuscanyEPR implements EndpointReference { - private final Document doc = DOMUtils.newDocument(); - - public TuscanyEPR(QName processName, Endpoint endpoint) { - Element serviceref = doc.createElementNS(EndpointReference.SERVICE_REF_QNAME.getNamespaceURI(), - EndpointReference.SERVICE_REF_QNAME.getLocalPart()); - serviceref.setNodeValue(endpoint.serviceName + ":" + endpoint.portName); - doc.appendChild(serviceref); - } - - public Document toXML() { - return doc; - } -} diff --git a/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/TuscanyPRC.java b/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/TuscanyPRC.java deleted file mode 100644 index aaa00069f5..0000000000 --- a/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/TuscanyPRC.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * 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.tuscany.sca.implementation.bpel.ode; - -import javax.wsdl.PortType; -import javax.xml.namespace.QName; - -import org.apache.ode.bpel.iapi.Endpoint; -import org.apache.ode.bpel.iapi.EndpointReference; -import org.apache.ode.bpel.iapi.PartnerRoleChannel; - -/** - * Tuscany Partner Role Channel for ODE Integration - * - * @version $Rev$ $Date$ - */ -public class TuscanyPRC implements PartnerRoleChannel { - private final QName processName; - private final QName pid; - private final Endpoint endpoint; - - public TuscanyPRC(QName processName, QName pid, PortType portType, Endpoint endpoint){ - this.processName = processName; - this.pid = pid; - this.endpoint = endpoint; - } - - public QName getProcessName() { - return this.processName; - } - - public Endpoint getEndpoint() { - return this.endpoint; - } - - public void close() { - - } - - public EndpointReference getInitialEndpointReference() { - - return new ODEEndpointReference( this.endpoint ); - } // end method getInitialEndpointReference - -} diff --git a/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/TuscanyProcessConfImpl.java b/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/TuscanyProcessConfImpl.java deleted file mode 100644 index 9e7b447886..0000000000 --- a/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/TuscanyProcessConfImpl.java +++ /dev/null @@ -1,824 +0,0 @@ -/* - * 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.tuscany.sca.implementation.bpel.ode; - - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.net.URI; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.Date; -import java.util.EnumSet; -import java.util.HashMap; -import java.util.Hashtable; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import javax.wsdl.Definition; -import javax.xml.namespace.QName; -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.transform.Result; -import javax.xml.transform.Source; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerConfigurationException; -import javax.xml.transform.TransformerException; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.dom.DOMSource; -import javax.xml.transform.stream.StreamResult; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.ode.bpel.compiler.BpelC; -import org.apache.ode.bpel.evt.BpelEvent.TYPE; -import org.apache.ode.bpel.iapi.Endpoint; -import org.apache.ode.bpel.iapi.EndpointReference; -import org.apache.ode.bpel.iapi.ProcessConf; -import org.apache.ode.bpel.iapi.ProcessState; -import org.apache.tuscany.sca.assembly.Base; -import org.apache.tuscany.sca.assembly.ComponentProperty; -import org.apache.tuscany.sca.assembly.ComponentReference; -import org.apache.tuscany.sca.assembly.ComponentService; -import org.apache.tuscany.sca.assembly.Reference; -import org.apache.tuscany.sca.assembly.Service; -import org.apache.tuscany.sca.databinding.SimpleTypeMapper; -import org.apache.tuscany.sca.databinding.impl.SimpleTypeMapperImpl; -import org.apache.tuscany.sca.implementation.bpel.BPELImplementation; -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLInterface; -import org.apache.tuscany.sca.runtime.RuntimeComponent; -import org.w3c.dom.Attr; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; - -/** - * A Tuscany implementation of the ODE Process Conf - * - * @version $Rev$ $Date$ - */ -public class TuscanyProcessConfImpl implements ProcessConf { - private final Log __log = LogFactory.getLog(getClass()); - - private BPELImplementation implementation; - private RuntimeComponent component; - private Map<String, Endpoint> invokeEndpoints = null; - private Map<String, Endpoint> provideEndpoints = null; - private Map<QName, Node> properties = null; - private ProcessState processState; - private Date deployDate; - - private File theBPELFile; - // Marks whether the BPEL file was rewritten (eg for initializer statements) - private boolean rewritten = false; - - private final SimpleTypeMapper mapper = new SimpleTypeMapperImpl(); - private final String TUSCANY_NAMESPACE = Base.SCA11_TUSCANY_NS; - - /** - * Constructor for the ProcessConf implementation - * @param theImplementation the BPEL implementation for which this is the ProcessConf - * @param component - the SCA component which uses the implementation - */ - public TuscanyProcessConfImpl( BPELImplementation theImplementation, RuntimeComponent component ) { - //System.out.println("New TuscanyProcessConfImpl..."); - this.implementation = theImplementation; - this.component = component; - - processState = ProcessState.ACTIVE; - deployDate = new Date(); - - // Compile the process - compile( getBPELFile() ); - } // end TuscanyProcessConfImpl constructor - - public void stop() { - // If the BPEL file was rewritten, destroy the rewritten version of it so that - // it is not used again. Also delete the related compiled cbp file - if( rewritten ) { - try { - String cbpName = theBPELFile.getCanonicalPath(); - // Remove the "bpel_tmp" suffix and add "cbp" - if ( cbpName.endsWith("bpel_tmp") ) { - cbpName = cbpName.substring( 0, cbpName.length() - 8) + "cbp"; - File cbpFile = new File( cbpName ); - if ( cbpFile.exists() ) cbpFile.delete(); - } // end if - } catch (Exception e ) { - // Do nothing with an exception - } // end try - theBPELFile.delete(); - } // end if - - } // end method stop - - /** - * Returns the URI for the directory containing the BPEL process - */ - public URI getBaseURI() { - //System.out.println("getBaseURI called"); - File theDir = getDirectory(); - return theDir.toURI(); - } - - /** - * Returns a String containing the (local) name of the file containing the BPEL process - */ - public String getBpelDocument() { - //System.out.println("getBPELDocument called"); - try { - String location = this.implementation.getProcessDefinition().getLocation(); - URI locationURI = new URI(null, location, null); - File processFile = new File(locationURI); - return getRelativePath( getDirectory(), processFile); - } catch (Exception e) { - if(__log.isWarnEnabled()) { - __log.warn("Unable to resolve relative path of BPEL process" + implementation.getProcessDefinition().getLocation(), e ); - } - return null; - } // end try - } // end getBpelDocument - - /** - * Returns an InputStream containing the Compiled BPEL Process (CBP) - */ - public InputStream getCBPInputStream() { - //System.out.println("getCBPInputStream called"); - - File cbpFile = getCBPFile(); - if( cbpFile == null ) return null; - - if( cbpFile.exists() ) { - // Create an InputStream from the cbp file... - try { - return new FileInputStream( cbpFile ); - } catch ( Exception e ) { - if(__log.isDebugEnabled()) { - __log.debug("Unable to open the cbp file for BPEL process: " + - implementation.getProcessDefinition().getName(), e); - } - } // end try - } else { - // Cannot find the cbp file - if(__log.isWarnEnabled()){ - __log.warn("Cannot find the cbp file for process: " + - implementation.getProcessDefinition().getName()); - } - } // end if - // TODO - need better exception handling if we can't open the cbp file for any reason - return null; - } // end getCBPInputStream - - /** - * Gets the File object for the CBP file for this BPEL Process - * @return - the File object for the CBP file - */ - private File getCBPFile() { - // Find the CBP file - it has the same name as the BPEL process and lives in the same - // directory as the process file - String cbpFileName = null; - try { - String fileName = getRelativePath( getDirectory(), getBPELFile() ); - cbpFileName = fileName.substring(0, fileName.lastIndexOf(".")) + ".cbp"; - } catch (Exception e ) { - // IOException trying to fetch the BPEL file name - if(__log.isDebugEnabled()) { - __log.debug("Unable to calculate the file name for BPEL process: " + - implementation.getProcessDefinition().getName(), e); - return null; - } // end if - } // end try - File cbpFile = new File( getDirectory(), cbpFileName ); - return cbpFile; - } // end getCBPFile - - /** - * Return the WSDL Definition for a given PortType - * @param portTypeName - the QName of the PortType - */ - public Definition getDefinitionForPortType( QName portTypeName ) { - //System.out.println("getDefinitionForPortType called for portType: " + portTypeName ); - // Find the named PortType in the list of WSDL interfaces associated with this BPEL Process - Collection<WSDLInterface> theInterfaces = implementation.getProcessDefinition().getInterfaces(); - for( WSDLInterface wsdlInterface : theInterfaces ) { - if ( wsdlInterface.getPortType().getQName().equals( portTypeName ) ) { - // Extract and return the Definition associated with the WSDLDefinition... - return wsdlInterface.getWsdlDefinition().getDefinition(); - } // end if - } // end for - return null; - } // end getDefinitionforPortType - - /** - * Returns a WSDL Definition for a given Service QName - * - * 22/05/2008 - it is very unclear what this service QName is really meant to be. - * From the handling of the deploy.xml file by the current ODE code, it seems that the key link - * is from the Service QName to the PartnerLink name (done in the deploy.xml file). - * - * The curious part about this is that the QName for the service is ONLY defined in deploy.xml file - * and does not appear to relate to anything else, except for the QName of the PartnerLink - * - * The PartnerLink name is the same as the name of the SCA service (or reference) which in turn points - * at the PartnerLinkType which in turn points at an (WSDL) interface definition. - */ - public Definition getDefinitionForService(QName serviceQName ) { - //System.out.println("getDefinitionForService called for Service: " + serviceQName ); - if(__log.isDebugEnabled()){ - __log.debug("getDefinitionforService called for service: " + serviceQName ); - } - // TODO Auto-generated method stub - return null; - } - - /** - * Returns the date of deployment of the process - * - for SCA returns the date at which this object was created - */ - public Date getDeployDate() { - //System.out.println("getDeployDate called"); - return deployDate; - } - - /** - * Returns userid of deployer - * - always "SCA Tuscany" for Tuscany... - */ - public String getDeployer() { - //System.out.println("getDeployer called"); - return "SCA Tuscany"; - } // end getDeployer - - /** - * Returns a list of the files in the directory containing the BPEL Process - */ - public List<File> getFiles() { - //System.out.println("getFiles called"); - File theDir = getDirectory(); - List<File> theFiles = Arrays.asList( (File[]) theDir.listFiles() ); - // TODO recurse into subdirectories - return theFiles; - } // end getFiles - - /** - * Returns a Map containing all the "invoke endpoints" - for which read "SCA references" - * The map is keyed by partnerLink name and holds Endpoint objects - * 0..1 multiplicity references are not included in the returned Map (it is as if the reference is not there...) - * TODO deal with multiplicity 0..n and 1..n - * TODO deal with service callbacks on bidirectional services - */ - public Map<String, Endpoint> getInvokeEndpoints() { - if( invokeEndpoints == null ) { - invokeEndpoints = new HashMap<String, Endpoint>(); - // Get a collection of the component references - note that this includes "pseudo-references" for any - // services that have a callback interface - List<ComponentReference> theReferences = component.getReferences(); - //List<Reference> theReferences = implementation.getReferences(); - // Create an endpoint for each reference, using the reference name combined with - // http://tuscany.apache.org to make a QName - // Note that the key used for this put operation MUST be the name of one of the partnerLinks of the - // BPEL process. The SCA reference MAY have an alias for the name (can be given using the sca-bpel:reference - // element, if present) and this alias must not be used - for( Reference reference : theReferences ) { - String partnerlinkName = implementation.getReferencePartnerlinkName( reference.getName() ); - // Check that there is at least 1 configured SCA endpointReference for the reference, since it is - // possible for 0..1 multiplicity references to have no SCA endpointReferences configured - List<org.apache.tuscany.sca.assembly.EndpointReference> eprs = reference.getEndpointReferences(); - String eprCount = Integer.toString( eprs.size() ); - invokeEndpoints.put( partnerlinkName, - new Endpoint( new QName( TUSCANY_NAMESPACE, reference.getName() ), eprCount)); - } // end for - } // end if - return invokeEndpoints; - } // end getInvokeEndpoints - - /** - * Returns the name of the directory containing the BPEL files - */ - public String getPackage() { - //System.out.println("getPackage called"); - File theDir = getDirectory(); - return theDir.getName(); - } // end getPackage - - /** - * Return the BPEL Process ID - which is the Process QName appended "-versionnumber" - */ - public QName getProcessId() { - //System.out.println("getProcessId called"); - QName processType = getType(); - QName processID = new QName( processType.getNamespaceURI(), - processType.getLocalPart() + "-" + getVersion() ); - return processID; - } // end getProcessID - - /** - * TODO - What are properties? - */ - public Map<QName, Node> getProperties() { - //System.out.println("getProperties called"); - if ( properties == null ) { - properties = new HashMap<QName, Node>(); - } // end if - return properties; - } // end getProperties - - /** - * Returns a Map containing all the "provide endpoints" - for which read "SCA services" - * The map is keyed by partnerLink name and holds Endpoint objects - * - * TODO deal with reference callbacks on bidirectional references - */ - public Map<String, Endpoint> getProvideEndpoints() { - //System.out.println("getProvideEndpoints called"); - if( provideEndpoints == null ) { - provideEndpoints = new HashMap<String, Endpoint>(); - String componentURI = component.getURI(); - // Get a collection of the services - note that the Component services include additional - // "pseudo-services" for each reference that has a callback... - - List<ComponentService> theServices = component.getServices(); - // Create an endpoint for each service, using the service name combined with - // http://tuscany.apache.org to make a QName - // Note that the key used for this put operation MUST be the name of one of the partnerLinks of the - // BPEL process. The SCA service MAY have an alias for the name (can be given using the sca-bpel:service - // element, if present) and this alias must not be used - for( ComponentService service : theServices ) { - String partnerlinkName = implementation.getServicePartnerlinkName( service.getName() ); - // MJE 14/07/2009 - added componentURI to the service name to get unique service name - provideEndpoints.put( partnerlinkName, - new Endpoint( new QName( TUSCANY_NAMESPACE, componentURI + service.getName() ), - "ServicePort")); - } // end for - } // end if - return provideEndpoints; - } // end getProvideEndpoints - - /** - * Return the process state - */ - public ProcessState getState() { - //System.out.println("getState called"); - return processState; - } - - /** - * Returns the QName of the BPEL process - */ - public QName getType() { - //System.out.println("getType called"); - return implementation.getProcess(); - } - - /** - * Gets the process Version number - * - current code does not have versions for BPEL processes and always returns "1" - */ - public long getVersion() { - //System.out.println("getVersion called"); - return 1; - } - - /** - * Returns true if the supplied event type is enabled for any of the scopes in the provided - * List. These events are "ODE Execution Events" and there is a definition of them on this - * page: http://ode.apache.org/user-guide.html#UserGuide-ProcessDeployment - * - * Tuscany currently uses: - * - instanceLifecycle events in order to establish the relationship of MessageExchange objects - * to the BPEL Process instances - * @param scopeNames - list of BPEL process Scope names - * @param type - the event type - */ - public boolean isEventEnabled(List<String> scopeNames, TYPE type) { - if( type == TYPE.dataHandling ) return false; - if( type == TYPE.activityLifecycle ) return false; - if( type == TYPE.scopeHandling ) return true; - if( type == TYPE.instanceLifecycle ) return true; - if( type == TYPE.correlation ) return true; - return false; - } // end isEventEnabled - - /** - * Returns whether the process is persisted in the store - * - * Returns false for SCA configuration - * - returning true causes problems in communicating with the BPEL process - */ - public boolean isTransient() { - return false; - } // end isTransient - - /** - * Compiles a BPEL process file into a compiled form CBP file in the main directory - * (ie same directory as the BPEL process file) - * @param bpelFile - the BPEL process file - */ - private void compile( File bpelFile ) { - // Set up the compiler - BpelC compiler = BpelC.newBpelCompiler(); - // Provide a null set of initial properties for now - Map<QName, Node> processProps = new HashMap<QName, Node>(); - Map<String, Object> compileProps = new HashMap<String, Object>(); - compileProps.put( BpelC.PROCESS_CUSTOM_PROPERTIES, processProps ); - compiler.setCompileProperties( compileProps ); - compiler.setBaseDirectory( getDirectory() ); - - // Inject any property values - bpelFile = injectPropertyValues( bpelFile ); - - // Run the compiler and generate the CBP file into the given directory - try { - compiler.compile( bpelFile ); - } catch (IOException e) { - if(__log.isDebugEnabled()) { - __log.debug("Compile error in " + bpelFile, e); - } - // TODO - need better exception handling here - } // end try - } // end compile - - /** - * Adds the values for SCA declared properties to the BPEL process. - * The values for the properties are held in the SCA RuntimeComponent supplied to this - * TuscanyProcessConfImpl. - * The properties map to <variable/> declarations in the BPEL process that are specifically - * marked with @sca-bpel:property="yes" - * @param bpelFile the file containing the BPEL process - * @return the (updated) file containing the BPEL process - */ - private File injectPropertyValues( File bpelFile ) { - // Get the properties - List<ComponentProperty> properties = component.getProperties(); - - // If there are no properties, we're done! - if( properties.size() == 0 ) return bpelFile; - - Document bpelDOM = readDOMFromProcess( bpelFile ); - - for( ComponentProperty property : properties ) { - //System.out.println("BPEL: Property - name = " + property.getName() ); - insertSCAPropertyInitializer( bpelDOM, property ); - } // end for - - File bpelFile2 = writeProcessFromDOM( bpelDOM, - getTransformedBPELFile( bpelFile) ); - if( bpelFile2 != null ) { - theBPELFile = bpelFile2; - rewritten = true; - return bpelFile2; - } // end if - - return bpelFile; - } // end injectPropertyValues - - /** - * Insert an initializer which supplies the value of an SCA property as specified by the - * SCA Component using the BPEL process - * @param bpelDOM - a DOM model representation of the BPEL process - * @param property - an SCA ComponentProperty element for the property - * This DOM model is updated, with an initializer being added for the BPEL variable - * corresponding to the SCA property - */ - private void insertSCAPropertyInitializer( Document bpelDOM, ComponentProperty property ) { - // Only insert a Property initializer where there is a value for the Property - if( property.getValue() == null ) return; - - Element insertionElement = findInitializerInsertionPoint( bpelDOM ); - if( insertionElement == null ) return; - - Element initializer = getInitializerSequence( bpelDOM, property ); - if( initializer == null ) return; - - // Insert the initializer sequence as the next sibling element of the insertion point - Element parent = (Element)insertionElement.getParentNode(); - // Get the next sibling element, if there is one - Node sibling = insertionElement.getNextSibling(); - while( sibling != null && sibling.getNodeType() != Node.ELEMENT_NODE ) { - sibling = sibling.getNextSibling(); - } // end while - // Either insert at the end or before the next element - if ( sibling == null ) { - parent.appendChild( initializer ); - } else { - parent.insertBefore( initializer, sibling ); - } // end if - - } // end insertSCAPropertyInitializer - - /** - * Gets the variable initializer DOM sequence for a given property, in the context of a supplied - * DOM model of the BPEL process - * @param bpelDOM - DOM representation of the BPEL process - * @param property - SCA Property which relates to one of the variables in the BPEL process - * @return - a DOM model representation of the XML statements required to initialize the - * BPEL variable with the value of the SCA property. - */ - private Element getInitializerSequence( Document bpelDOM, ComponentProperty property ) { - // For an XML simple type (string, int, etc), the BPEL initializer sequence is: - // <assign><copy><from><literal>value</literal></from><to variable="variableName"/></copy></assign> - QName type = property.getXSDType(); - if( type != null ) { - if( mapper.isSimpleXSDType( type ) ) { - // Simple types - String NS_URI = bpelDOM.getDocumentElement().getNamespaceURI(); - String valueText = getPropertyValueText( property.getValue() ); - Element literalElement = bpelDOM.createElementNS(NS_URI, "literal"); - literalElement.setTextContent(valueText); - Element fromElement = bpelDOM.createElementNS(NS_URI, "from"); - fromElement.appendChild(literalElement); - Element toElement = bpelDOM.createElementNS(NS_URI, "to"); - Attr variableAttribute = bpelDOM.createAttributeNS(NS_URI, "variable"); - variableAttribute.setValue( property.getName() ); - toElement.setAttributeNode( variableAttribute ); - Element copyElement = bpelDOM.createElementNS(NS_URI, "copy"); - copyElement.appendChild(fromElement); - copyElement.appendChild(toElement); - Element assignElement = bpelDOM.createElementNS(NS_URI, "assign"); - assignElement.appendChild(copyElement); - return assignElement; - } // end if - // TODO Deal with Properties which have a non-simple type - } else { - // TODO Deal with Properties which have an element as the type - } // end if - - return null; - } // end method getInitializerSequence - - /** - * Gets the text value of a property that is a simple type - * @param propValue - the SCA Property value - * @return - the text content of the Property value, as a String - */ - private String getPropertyValueText( Object propValue ) { - String text = null; - if( propValue instanceof Document ) { - Element docElement = ((Document)propValue).getDocumentElement(); - if( docElement != null ){ - Element valueElement = (Element)docElement.getFirstChild(); - if( valueElement != null ) { - text = valueElement.getTextContent(); - } // end if - } // end if - } // end if - - return text; - } // end method getPropertyValueText - - private Element findInitializerInsertionPoint( Document bpelDOM ) { - // The concept is to find the first Activity child element of the BPEL process document - Element docElement = bpelDOM.getDocumentElement(); - NodeList elements = docElement.getElementsByTagName("*"); - - Element element; - for ( int i = 0 ; i < elements.getLength() ; i++ ) { - element = (Element)elements.item(i); - if( isInsertableActivityElement( element ) ) { - return element; - } // end if - } // end for - - return null; - } // end method findInitializerInsertionPoint - - /** - * A WS-BPEL activity can be any of the following: - * <receive> - * <reply> - * <invoke> - * <assign> - * <throw> - * <exit> - * <wait> - * <empty> - * <sequence> - * <if> - * <while> - * <repeatUntil> - * <forEach> - * <pick> - * <flow> - * <scope> - * <compensate> - * <compensateScope> - * <rethrow> - * <validate> - * <extensionActivity> - * A WS-BPEL start activity is a <receive> or <pick> with @create_instance="yes" - */ - private static String SEQUENCE_ELEMENT = "sequence"; - private static String REPLY_ELEMENT = "reply"; - private static String INVOKE_ELEMENT = "invoke"; - private static String ASSIGN_ELEMENT = "assign"; - private static String PICK_ELEMENT = "pick"; - private static String RECEIVE_ELEMENT = "receive"; - private static String FLOW_ELEMENT = "flow"; - private static String SCOPE_ELEMENT = "scope"; - /** - * Determine if an Element is a BPEL start activity element which can have an Assign - * inserted following it - * @param element - a DOM Element containing the BPEL activity - * @return - true if the Element is a BPEL Activity element, false otherwise - */ - private boolean isInsertableActivityElement( Element element ) { - String name = element.getTagName(); - // For the present, only <receive/> and <pick/> elements with create_instance="yes" count - // if( SEQUENCE_ELEMENT.equalsIgnoreCase(name) ) return true; - String start = element.getAttribute("createInstance"); - if( start == null ) return false; - if( !"yes".equals(start) ) return false; - if( RECEIVE_ELEMENT.equalsIgnoreCase(name) ) return true; - if( PICK_ELEMENT.equalsIgnoreCase(name) ) return true; - return false; - } // end method isActivityElement - - /** - * Reads a BPEL Process file into a DOM Document structure - * @param bpelFile - a File object referencing the BPEL process document - * @return - a DOM Document structure representing the same BPEL process - */ - private Document readDOMFromProcess( File bpelFile ) { - try { - DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); - docFactory.setNamespaceAware(true); - docFactory.setXIncludeAware(true); - DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); - - Document bpelDOM = docBuilder.parse( bpelFile ); - return bpelDOM; - } catch (Exception e) { - return null; - } // end try - } // end method - - /** - * Writes a BPEL Process file from a DOM Document structure representing the Process - * @param bpelDOM - the DOM Document representation of the BPEL process - * @param file - a File object to which the BPEL Process is to be written - * @return - */ - private File writeProcessFromDOM( Document bpelDOM, File file ) { - try { - // Prepare the DOM document for writing - Source source = new DOMSource( bpelDOM ); - - // Prepare the output file - Result result = new StreamResult(file); - - // Write the DOM document to the file - Transformer xformer = TransformerFactory.newInstance().newTransformer(); - xformer.transform(source, result); - } catch (TransformerConfigurationException e) { - } catch (TransformerException e) { - return null; - } - return file; - } // end writeProcessFromDOM - - private File getTransformedBPELFile( File bpelFile ) { - String name = bpelFile.getName(); - File parent = bpelFile.getParentFile(); - File bpelFile2 = null; - try { - bpelFile2 = File.createTempFile(name, ".bpel_tmp", parent); - } catch (Exception e ){ - - } // end try - return bpelFile2; - } // end getTransformedBPELFile - - /** - * Gets the directory containing the BPEL process - * @return - */ - private File getDirectory() { - File theDir = getBPELFile().getParentFile(); - return theDir; - } // end getDirectory - - /** - * Gets the File containing the BPEL process definition - * @return - the File object containing the BPEL process - */ - private File getBPELFile() { - if( theBPELFile != null ) return theBPELFile; - try { - String location = this.implementation.getProcessDefinition().getLocation(); - URI locationURI; - if (location.indexOf('%') != -1) { - locationURI = URI.create(location); - } else { - locationURI = new URI(null, location, null); - } - File theProcess = new File(locationURI); - theBPELFile = theProcess; - return theProcess; - } catch( Exception e ) { - if(__log.isDebugEnabled()) { - __log.debug("Exception converting BPEL file URL to an URI: " + e ); - } - } // end try - return null; - } // end getBPELFile - - /** - * Gets the relative path of a file against a directory in its hierarchy - * @param base - the base directory - * @param path - the file - * @return - * @throws IOException - */ - private String getRelativePath(File base, File path) throws IOException { - String basePath = base.getCanonicalPath(); - String filePath = path.getCanonicalPath(); - if (!filePath.startsWith(basePath)) { - throw new IOException("Invalid relative path: base=" + base + " path=" + path); - } - String relative = filePath.substring(basePath.length()); - if (relative.startsWith(File.separator)) { - relative = relative.substring(1); - } - return relative; - } // end getRelativePath - - //----------------------------------------------------------------------------- - // other public APIs which ProcessConfImpl displays which are not in ProcessConf interface - - public List<String> getMexInterceptors(QName processId) { -// System.out.println("getMexInterceptors for processID: " + processId ); - return null; - } - - public void setTransient(boolean t) { -// System.out.println("setTransient called with boolean: " + t ); - } - - public List<Element> getExtensionElement(QName arg0) { - return Collections.emptyList(); - } - // end of other public APIs - //----------------------------------------------------------------------------- - - /** - * Get the size in bytes of the CBP file - * @return - this size in bytes of the CBP file, 0 if the file cannot be found - */ - public long getCBPFileSize() { - File cbpFile = getCBPFile(); - if( cbpFile == null ) return 0; - - return cbpFile.length(); - } // end getCBPFileSize - - private final Set<CLEANUP_CATEGORY> successCategories = EnumSet.noneOf(CLEANUP_CATEGORY.class); - private final Set<CLEANUP_CATEGORY> failureCategories = EnumSet.noneOf(CLEANUP_CATEGORY.class); - - public Set<CLEANUP_CATEGORY> getCleanupCategories(boolean instanceSucceeded) { - if( instanceSucceeded ) return successCategories; - else return failureCategories; - } - - private final Map<String, String> emptyPropertyMap = new Hashtable<String, String>(); - public Map<String, String> getEndpointProperties(EndpointReference epr) { - return emptyPropertyMap; - } - - private final Map<QName, Node> emptyProcessProperties = new Hashtable<QName, Node>(); - public Map<QName, Node> getProcessProperties() { - return emptyProcessProperties; - } - - public boolean isCleanupCategoryEnabled(boolean instanceSucceeded, - CLEANUP_CATEGORY category) { - // TODO Currently returns false - should this be changed for some categories? - return false; - } - - public boolean isSharedService(QName serviceName) { - // Tuscany does not share the service - return false; - } - -} // end class TuscanyProcessConfImpl diff --git a/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/provider/BPELImplementationProvider.java b/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/provider/BPELImplementationProvider.java deleted file mode 100644 index 8880d20a37..0000000000 --- a/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/provider/BPELImplementationProvider.java +++ /dev/null @@ -1,186 +0,0 @@ -/* - * 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.tuscany.sca.implementation.bpel.ode.provider; - -import java.io.File; -import java.net.URI; - -import javax.persistence.spi.PersistenceProvider; -import javax.transaction.TransactionManager; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.ode.dao.jpa.ProcessDAOImpl; -import org.apache.tuscany.sca.assembly.Endpoint; -import org.apache.tuscany.sca.assembly.EndpointReference; -import org.apache.tuscany.sca.assembly.Reference; -import org.apache.tuscany.sca.assembly.Service; -import org.apache.tuscany.sca.databinding.xml.DOMDataBinding; -import org.apache.tuscany.sca.extensibility.ClassLoaderContext; -import org.apache.tuscany.sca.implementation.bpel.BPELImplementation; -import org.apache.tuscany.sca.implementation.bpel.ode.EmbeddedODEServer; -import org.apache.tuscany.sca.implementation.bpel.ode.ODEDeployment; -import org.apache.tuscany.sca.implementation.bpel.ode.ODEInitializationException; -import org.apache.tuscany.sca.interfacedef.Operation; -import org.apache.tuscany.sca.invocation.Invoker; -import org.apache.tuscany.sca.provider.ImplementationProvider; -import org.apache.tuscany.sca.runtime.RuntimeComponent; -import org.apache.tuscany.sca.runtime.RuntimeComponentService; -import org.apache.tuscany.sca.runtime.RuntimeEndpoint; -import org.apache.tuscany.sca.runtime.RuntimeEndpointReference; - -/** - * BPEL Implementation provider - * - * @version $Rev$ $Date$ - */ -public class BPELImplementationProvider implements ImplementationProvider { - private final Log __log = LogFactory.getLog(getClass()); - - private RuntimeComponent component; - private BPELImplementation implementation; - - private EmbeddedODEServer odeServer; - private TransactionManager txMgr; - - private ODEDeployment deployment; - - /** - * Constructs a new BPEL Implementation. - */ - public BPELImplementationProvider(RuntimeComponent component, - BPELImplementation implementation, - EmbeddedODEServer odeServer, - TransactionManager txMgr) { - this.component = component; - this.implementation = implementation; - this.odeServer = odeServer; - this.txMgr = txMgr; - - // Configure the service and reference interfaces to use a DOM databinding - // as it's what ODE expects - for(Service service: implementation.getServices() ){ - service.getInterfaceContract().getInterface().resetDataBinding(DOMDataBinding.NAME); - } // end for - - for(Reference reference: implementation.getReferences() ) { - reference.getInterfaceContract().getInterface().resetDataBinding(DOMDataBinding.NAME); - } // end for - - for (Service service: component.getServices()) { - //TODO - MJE, 06/06/2009 - we can eventually remove the reset of the service interface - // contract and leave it to the Endpoints only - service.getInterfaceContract().getInterface().resetDataBinding(DOMDataBinding.NAME); - for( Endpoint endpoint : service.getEndpoints() ) { - RuntimeEndpoint ep = (RuntimeEndpoint) endpoint; - if (ep.getComponentTypeServiceInterfaceContract() != null) { - ep.getComponentTypeServiceInterfaceContract().getInterface().resetDataBinding(DOMDataBinding.NAME); - } - } // end for - } // end for - - for (Reference reference : component.getReferences()) { - reference.getInterfaceContract().getInterface().resetDataBinding(DOMDataBinding.NAME); - for (EndpointReference endpointReference : reference.getEndpointReferences()) { - RuntimeEndpointReference epr = (RuntimeEndpointReference)endpointReference; - if (epr.getComponentTypeReferenceInterfaceContract() != null) { - epr.getComponentTypeReferenceInterfaceContract().getInterface().resetDataBinding(DOMDataBinding.NAME); - } - } // end for */ - } // end for - - } - - public Invoker createInvoker(RuntimeComponentService service, Operation operation) { - BPELInvoker invoker = new BPELInvoker(component, service, operation, odeServer, txMgr); - return invoker; - } - - public boolean supportsOneWayInvocation() { - return false; - } - - public void start() { - if(__log.isInfoEnabled()) { - __log.info("Starting " + component.getName()); - } // end if - - // Switch TCCL - under OSGi this causes the TCCL to be set to the Bundle - // classloader - this is then used by 3rd party code from ODE and its dependencies - ClassLoader tccl = ClassLoaderContext.setContextClassLoader(EmbeddedODEServer.class.getClassLoader(), - PersistenceProvider.class.getClassLoader(), - ProcessDAOImpl.class.getClassLoader() ); - - try { - if (!odeServer.isInitialized()) { - // start ode server - odeServer.init(); - } - - String location = this.implementation.getProcessDefinition().getLocation(); - URI deployURI = new URI(null, location, null); - - File deploymentDir = new File(deployURI).getParentFile(); - - if(__log.isInfoEnabled()) { - __log.info(">>> Deploying : " + deploymentDir.toString()); - } - - // deploy the process - if (odeServer.isInitialized()) { - deployment = new ODEDeployment( deploymentDir ); - try { - odeServer.registerTuscanyRuntimeComponent(implementation.getProcess(), component); - - odeServer.deploy(deployment, implementation, component ); - } catch (Exception e) { - e.printStackTrace(); - } - } - - } catch (ODEInitializationException inite) { - throw new RuntimeException("BPEL Component Type Implementation : Error initializing embedded ODE server " + inite.getMessage(), inite); - } catch(Exception e) { - throw new RuntimeException("BPEL Component Type Implementation initialization failure : " + e.getMessage(), e); - } finally { - // Restore the TCCL if we changed it - if( tccl != null ) Thread.currentThread().setContextClassLoader(tccl); - } // end try - } // end method start() - - public void stop() { - if(__log.isInfoEnabled()) { - __log.info("Stopping " + component.getName()); - } - - odeServer.undeploy(deployment); - - if (odeServer.isInitialized()) { - // stop ode server - odeServer.stop(); - } - - txMgr = null; - - if(__log.isInfoEnabled()) { - __log.info("Stopped !!!"); - } - } - -} diff --git a/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/provider/BPELImplementationProviderFactory.java b/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/provider/BPELImplementationProviderFactory.java deleted file mode 100644 index ed327e237b..0000000000 --- a/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/provider/BPELImplementationProviderFactory.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * 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.tuscany.sca.implementation.bpel.ode.provider; - -import javax.transaction.TransactionManager; - -import org.apache.tuscany.sca.core.ExtensionPointRegistry; -import org.apache.tuscany.sca.implementation.bpel.BPELImplementation; -import org.apache.tuscany.sca.implementation.bpel.ode.EmbeddedODEServer; -import org.apache.tuscany.sca.implementation.bpel.ode.GeronimoTxFactory; -import org.apache.tuscany.sca.provider.ImplementationProvider; -import org.apache.tuscany.sca.provider.ImplementationProviderFactory; -import org.apache.tuscany.sca.runtime.RuntimeComponent; -import org.oasisopen.sca.annotation.Destroy; - -/** - * BPEL Implementation provider factory - * - * We use the provider factory to instantiate a ODE server that is going to be injected in all BPEL components - * - * @version $Rev$ $Date$ - */ -public class BPELImplementationProviderFactory implements ImplementationProviderFactory<BPELImplementation> { - - private EmbeddedODEServer odeServer; - private TransactionManager txMgr; - - /** - * Default constructor receiving an extension point - * @param extensionPoints - */ - public BPELImplementationProviderFactory(ExtensionPointRegistry extensionPoints) { - GeronimoTxFactory txFactory = new GeronimoTxFactory(); - txMgr = txFactory.getTransactionManager(); - this.odeServer = new EmbeddedODEServer(txMgr); - } - - /** - * Creates a new BPEL Implementation and inject the EmbeddedODEServer - */ - public ImplementationProvider createImplementationProvider(RuntimeComponent component, BPELImplementation implementation) { - return new BPELImplementationProvider(component, implementation, odeServer, txMgr); - } - - public Class<BPELImplementation> getModelType() { - return BPELImplementation.class; - } - - @Destroy - public void destroy() { - txMgr = null; - } -} diff --git a/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/provider/BPELInvoker.java b/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/provider/BPELInvoker.java deleted file mode 100644 index dfe11600f0..0000000000 --- a/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/provider/BPELInvoker.java +++ /dev/null @@ -1,286 +0,0 @@ -/* - * 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.tuscany.sca.implementation.bpel.ode.provider; - -import java.lang.reflect.InvocationTargetException; -import java.util.concurrent.Future; -import java.util.concurrent.TimeUnit; - -import javax.transaction.SystemException; -import javax.transaction.TransactionManager; -import javax.wsdl.Part; -import javax.xml.namespace.QName; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.ode.bpel.iapi.MyRoleMessageExchange; -import org.apache.ode.bpel.iapi.MessageExchange.Status; -import org.apache.ode.utils.DOMUtils; -import org.apache.ode.utils.GUID; -import org.apache.tuscany.sca.assembly.Base; -import org.apache.tuscany.sca.assembly.EndpointReference; -import org.apache.tuscany.sca.implementation.bpel.ode.EmbeddedODEServer; -import org.apache.tuscany.sca.interfacedef.Interface; -import org.apache.tuscany.sca.interfacedef.Operation; -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLInterface; -import org.apache.tuscany.sca.invocation.Invoker; -import org.apache.tuscany.sca.invocation.Message; -import org.apache.tuscany.sca.runtime.RuntimeComponent; -import org.apache.tuscany.sca.runtime.RuntimeComponentService; -import org.w3c.dom.Document; -import org.w3c.dom.Element; - -/** - * Implements a target invoker for BPEL component implementations. - * - * The target invoker is responsible for dispatching invocations to the particular - * component implementation logic. In this example we are simply delegating the - * CRUD operation invocations to the corresponding methods on our fake - * resource manager. - * - * @version $Rev$ $Date$ - */ -public class BPELInvoker implements Invoker { - private final static long TIME_OUT = 2000L; - - protected final Log __log = LogFactory.getLog(getClass()); - - private EmbeddedODEServer odeServer; - private TransactionManager txMgr; - - private RuntimeComponentService service; - private Operation operation; - private QName bpelServiceName; - private String bpelOperationName; - private Part bpelOperationInputPart; - private Part bpelOperationOutputPart; - private RuntimeComponent component; - // Marks if this service has a callback interface - private Boolean isCallback = false; - private EndpointReference callbackEPR; - - public BPELInvoker(RuntimeComponent component, RuntimeComponentService service, Operation operation, - EmbeddedODEServer odeServer, TransactionManager txMgr) { - this.service = service; - this.component = component; - this.operation = operation; - this.bpelOperationName = operation.getName(); - this.odeServer = odeServer; - this.txMgr = txMgr; - this.isCallback = serviceHasCallback( service ); - - initializeInvocation(); - } // end method BPELInvoker - - private boolean serviceHasCallback( RuntimeComponentService service ) { - if(service.getInterfaceContract().getCallbackInterface() != null) return true; - return false; - } // end method serviceHasCallback - - private void initializeInvocation() { - - __log.debug("Initializing BPELInvoker"); - - Interface interfaze = operation.getInterface(); - if(interfaze instanceof WSDLInterface){ - WSDLInterface wsdlInterface = null; - wsdlInterface = (WSDLInterface) interfaze; - - // Fetch the service name from the service object - including the componentURI guarantees a unique service name - String componentURI = component.getURI(); - bpelServiceName = new QName( Base.SCA11_TUSCANY_NS, componentURI + service.getName() ); - - bpelOperationInputPart = (Part) wsdlInterface.getPortType().getOperation(bpelOperationName,null,null).getInput().getMessage().getParts().values().iterator().next(); - bpelOperationOutputPart = (Part) wsdlInterface.getPortType().getOperation(bpelOperationName,null,null).getOutput().getMessage().getParts().values().iterator().next(); - } - } // end method initializeInvocation - - public Message invoke(Message msg) { - try { - if( isCallback ) { - // Extract the callback endpoint metadata - callbackEPR = msg.getFrom(); - } // end if - Object[] args = msg.getBody(); - Object resp = doTheWork(args); - msg.setBody(resp); - } catch (InvocationTargetException e) { - msg.setFaultBody(e.getCause()); - } - return msg; - } - - public Object doTheWork(Object[] args) throws InvocationTargetException { - Element response = null; - - if(! (operation.getInterface() instanceof WSDLInterface)) { - throw new InvocationTargetException(null,"Unsupported service contract"); - } - - org.apache.ode.bpel.iapi.MyRoleMessageExchange mex = null; - Future<?> onhold = null; - - //Process the BPEL process invocation - Long processID = 0L; - try { - txMgr.begin(); - mex = odeServer.getBpelServer().getEngine().createMessageExchange(new GUID().toString(), - bpelServiceName, - bpelOperationName); - //TODO - this will not be true for OneWay operations - need to handle those - mex.setProperty("isTwoWay", "true"); - onhold = mex.invoke(createInvocationMessage(mex, args)); - - txMgr.commit(); - // Deal with callback cases - store the callback metadata by process instance ID - if( isCallback ) { - processID = odeServer.getProcessIDFromMex(mex.getMessageExchangeId()); - // Store the callback metadata for this invocation - odeServer.saveCallbackMetadata( processID, service.getName(), callbackEPR ); - } // end if - } catch (Exception e) { - try { - txMgr.rollback(); - } catch (SystemException se) { - - } - throw new InvocationTargetException(e, "Error invoking BPEL process : " + e.getMessage()); - } // end try - - // Waiting until the reply is ready in case the engine needs to continue in a different thread - if (onhold != null) { - try { - //add timeout to avoid blocking when there is a exception/failure - onhold.get(TIME_OUT, TimeUnit.MILLISECONDS); - } catch (Exception e) { - throw new InvocationTargetException(e,"Error invoking BPEL process : " + e.getMessage()); - } // end try - } // end if - - //Process the BPEL invocation response - try { - txMgr.begin(); - // Reloading the mex in the current transaction, otherwise we can't - // be sure we have the "freshest" one. - mex = (MyRoleMessageExchange)odeServer.getBpelServer().getEngine().getMessageExchange(mex.getMessageExchangeId()); - - Status status = mex.getStatus(); - - switch (status) { - case FAULT: - if (__log.isDebugEnabled()) - __log.debug("Fault response message: " + mex.getFault()); - throw new ODEInvocationException("FAULT received from BPEL process : " + mex.getFault() - + " " - + mex.getFaultExplanation()); - case ASYNC: - case RESPONSE: - //process the method invocation result - response = processResponse(mex.getResponse().getMessage()); - if (__log.isDebugEnabled()) - __log.debug("Response message " + response); - break; - case FAILURE: - if (__log.isDebugEnabled()) - __log.debug("Failure response message: " + mex.getFault()); - break; - default: - throw new ODEInvocationException("FAILURE received from BPEL process : " + mex.getStatus() + " - " + mex.getFault()); - } // end switch - - txMgr.commit(); - // end of transaction two - } catch (Exception e) { - try { - txMgr.rollback(); - } catch (SystemException se) { - - } - throw new InvocationTargetException(e, "Error retrieving BPEL process invocation status : " + e.getMessage()); - } // end try - - // Cleanup the ODE MessageExchange object - //mex.release(); - - return response; - } - - /** - * Create BPEL Invocation message - * - * BPEL invocation message like : - * <message> - * <TestPart> - * <hello xmlns="http://tuscany.apache.org/implementation/bpel/example/helloworld.wsdl">Hello</hello> - * </TestPart> - * </message> - * @param args - * @return - */ - private org.apache.ode.bpel.iapi.Message createInvocationMessage(org.apache.ode.bpel.iapi.MyRoleMessageExchange mex, Object[] args) { - Document dom = DOMUtils.newDocument(); - - Element contentMessage = dom.createElement("message"); - Element contentPart = dom.createElement(bpelOperationInputPart.getName()); - Element payload = null; - - // TODO handle WSDL input messages with multiple Parts... - //TUSCANY-2321 - Properly handling Document or Element types - if(args[0] instanceof Document) { - payload = (Element) ((Document) args[0]).getFirstChild(); - } else { - payload = (Element) args[0]; - } - - contentPart.appendChild(dom.importNode(payload, true)); - contentMessage.appendChild(contentPart); - dom.appendChild(contentMessage); - - if (__log.isDebugEnabled()) { - __log.debug("Creating invocation message:"); - __log.debug(">> args.....: " + DOMUtils.domToString(payload)); - __log.debug(">> message..:" + DOMUtils.domToString(dom.getDocumentElement())); - } - - org.apache.ode.bpel.iapi.Message request = mex.createMessage(new QName("", "")); - request.setMessage(dom.getDocumentElement()); - - return request; - } - - /** - * Process BPEL response - * - * <message> - * <TestPart> - * <hello xmlns="http://tuscany.apache.org/implementation/bpel/example/helloworld.wsdl">World</hello> - * </TestPart> - * </message> - * - * @param response - * @return - */ - private Element processResponse(Element response) { - return (Element) DOMUtils.findChildByName(response, new QName("",bpelOperationOutputPart.getName())).getFirstChild(); - - // MJE, 12/06/2009 - changed to return the message without the PART wrapper element, since this element is not - // transmitted in the SOAP messages on the wire - } // end method processResponse -} // end class BPELInvoker diff --git a/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/provider/ODEInvocationException.java b/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/provider/ODEInvocationException.java deleted file mode 100644 index 7b6f9ceafa..0000000000 --- a/java/sca/modules/implementation-bpel-runtime/src/main/java/org/apache/tuscany/sca/implementation/bpel/ode/provider/ODEInvocationException.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * 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.tuscany.sca.implementation.bpel.ode.provider; - -public class ODEInvocationException extends Exception { - - /** - * Thrown when the result of the invocation of a BPEL Process operation - * returns a Fault or Failure code - */ - private static final long serialVersionUID = 5096941965798566018L; - - public ODEInvocationException(String message) { - super(message); - } - -} diff --git a/java/sca/modules/implementation-bpel-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.ImplementationProviderFactory b/java/sca/modules/implementation-bpel-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.ImplementationProviderFactory deleted file mode 100644 index 763f8a601b..0000000000 --- a/java/sca/modules/implementation-bpel-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.ImplementationProviderFactory +++ /dev/null @@ -1,20 +0,0 @@ -# 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.
-
-# Implementation class for the implementation extension
-org.apache.tuscany.sca.implementation.bpel.ode.provider.BPELImplementationProviderFactory;model=org.apache.tuscany.sca.implementation.bpel.BPELImplementation
-
diff --git a/java/sca/modules/implementation-bpel-runtime/src/test/java/org/apache/tuscany/sca/implementation/bpel/ode/EmbeddedODEServerTestCase.java b/java/sca/modules/implementation-bpel-runtime/src/test/java/org/apache/tuscany/sca/implementation/bpel/ode/EmbeddedODEServerTestCase.java deleted file mode 100644 index 0f59990377..0000000000 --- a/java/sca/modules/implementation-bpel-runtime/src/test/java/org/apache/tuscany/sca/implementation/bpel/ode/EmbeddedODEServerTestCase.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * 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.tuscany.sca.implementation.bpel.ode; - -import javax.transaction.TransactionManager; - -import junit.framework.TestCase; - -/** - * Test to Deploy and Invoke a HelloWorld BPEL process using EmbeddedODEServer - * - * Major changes introduced to this testcase on 27/05/2008 associated with changes in the - * implementation of EmbeddedODEServer which remove the need for the ODE deploy.xml file - - * instead a Tuscany BPELImplementation object is passed to the EmbeddedODEServer and this is - * introspected to get all the necessary information about the BPEL process - * - * @version $Rev$ $Date$ - */ -public class EmbeddedODEServerTestCase extends TestCase { - - private EmbeddedODEServer odeServer; - - private TransactionManager txMgr; - - @Override - protected void setUp() throws Exception { - // Set up the ODE BPEL server... - GeronimoTxFactory txFactory = new GeronimoTxFactory(); - txMgr = txFactory.getTransactionManager(); - - this.odeServer = new EmbeddedODEServer(txMgr); - odeServer.init(); - - } // end setUp - - @Override - protected void tearDown() throws Exception { - odeServer.stop(); - } - - public void testProcessInvocation() throws Exception { - if (!odeServer.isInitialized()) { - fail("Server did not start !"); - } -// TODO - write effective testcase - made problematic by the need to supply a resolved -// BPELImplementation -/* - URL deployURL = getClass().getClassLoader().getResource("helloworld/deploy.xml"); - File deploymentDir = new File(deployURL.toURI().getPath()).getParentFile(); - System.out.println("Deploying : " + deploymentDir.toString()); - System.out.println(deploymentDir); - - if (odeServer.isInitialized()) { - try { - txMgr.begin(); - odeServer.deploy(new ODEDeployment(deploymentDir), implementation); - txMgr.commit(); - } catch (Exception e) { - e.printStackTrace(); - txMgr.rollback(); - } - - // transaction one - MyRoleMessageExchange mex = null; - Future onhold = null; - try { - // invoke the process - txMgr.begin(); - mex = odeServer.getBpelServer().getEngine().createMessageExchange(new GUID().toString(), - new QName("http://tuscany.apache.org/implementation/bpel/example/helloworld.wsdl", "HelloService"), "hello"); - - Message request = mex.createMessage(new QName("", "")); - request.setMessage(DOMUtils.stringToDOM("<message><TestPart><hello xmlns=\"http://tuscany.apache.org/implementation/bpel/example/helloworld.wsdl\">Hello</hello></TestPart></message>")); - onhold = mex.invoke(request); - txMgr.commit(); - } catch (Exception e) { - e.printStackTrace(); - txMgr.rollback(); - } - // - end of transaction one - - // Waiting until the reply is ready in case the engine needs to continue in a different thread - if (onhold != null) - onhold.get(); - - // transaction two - try { - txMgr.begin(); - // Reloading the mex in the current transaction, otherwise we can't be sure we have - // the "freshest" one. - mex = (MyRoleMessageExchange) odeServer.getBpelServer().getEngine().getMessageExchange(mex.getMessageExchangeId()); - - Status status = mex.getStatus(); - System.out.println("Status: " + status.name()); - Element response = mex.getResponse().getMessage(); - System.out.println("Response: " + DOMUtils.domToString(response)); - txMgr.commit(); - // end of transaction two - } catch (Exception e) { - e.printStackTrace(); - txMgr.rollback(); - } // end try - } // end if -*/ - } // end testProcessInvocation - -} diff --git a/java/sca/modules/implementation-bpel-runtime/src/test/resources/helloworld/deploy.xml b/java/sca/modules/implementation-bpel-runtime/src/test/resources/helloworld/deploy.xml deleted file mode 100644 index 571aa37d58..0000000000 --- a/java/sca/modules/implementation-bpel-runtime/src/test/resources/helloworld/deploy.xml +++ /dev/null @@ -1,30 +0,0 @@ -<!-- - ~ 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:tns="http://tuscany.apache.org/implementation/bpel/example/helloworld" - xmlns:wns="http://tuscany.apache.org/implementation/bpel/example/helloworld.wsdl"> - - - <process name="tns:HelloWorld"> - <active>true</active> - <provide partnerLink="helloPartnerLink"> - <service name="wns:HelloService" port="HelloPort"/> - </provide> - </process> -</deploy> diff --git a/java/sca/modules/implementation-bpel-runtime/src/test/resources/helloworld/greetings.wsdl b/java/sca/modules/implementation-bpel-runtime/src/test/resources/helloworld/greetings.wsdl deleted file mode 100644 index e768707ccd..0000000000 --- a/java/sca/modules/implementation-bpel-runtime/src/test/resources/helloworld/greetings.wsdl +++ /dev/null @@ -1,87 +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. ---> -<wsdl:definitions name="greetings" - targetNamespace="http://greetings" - xmlns:tns="http://greetings" - xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" - xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" - xmlns:xsd="http://www.w3.org/2001/XMLSchema" - xmlns:plnk="http://schemas.xmlsoap.org/ws/2004/03/partner-link/"> - - <wsdl:types> - <schema elementFormDefault="qualified" targetNamespace="http://greetings" xmlns="http://www.w3.org/2001/XMLSchema"> - - <element name="getGreetings"> - <complexType> - <sequence> - <element name="name" type="xsd:string"/> - </sequence> - </complexType> - </element> - - <element name="getGreetingsResponse"> - <complexType> - <sequence> - <element name="getGreetingsReturn" type="xsd:string"/> - </sequence> - </complexType> - </element> - - </schema> - </wsdl:types> - - <wsdl:message name="getGreetingsRequest"> - <wsdl:part element="tns:getGreetings" name="parameters"/> - </wsdl:message> - - <wsdl:message name="getGreetingsResponse"> - <wsdl:part element="tns:getGreetingsResponse" name="parameters"/> - </wsdl:message> - - <wsdl:portType name="Greetings"> - <wsdl:operation name="getGreetings"> - <wsdl:input message="tns:getGreetingsRequest" name="getGreetingsRequest"/> - <wsdl:output message="tns:getGreetingsResponse" name="getGreetingsResponse"/> - </wsdl:operation> - </wsdl:portType> - - <wsdl:binding name="GreetingsSoapBinding" type="tns:Greetings"> - <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> - <wsdl:operation name="getGreetings"> - <wsdlsoap:operation soapAction=""/> - <wsdl:input name="getGreetingsRequest"> - <wsdlsoap:body use="literal"/> - </wsdl:input> - <wsdl:output name="getGreetingsResponse"> - <wsdlsoap:body use="literal"/> - </wsdl:output> - </wsdl:operation> - </wsdl:binding> - - <wsdl:service name="GreetingsService"> - <wsdl:port name="GreetingsSoapPort" binding="tns:GreetingsSoapBinding"> - <wsdlsoap:address location="http://localhost:8085/GreetingsServiceComponent"/> - </wsdl:port> - </wsdl:service> - - <plnk:partnerLinkType name="GreetingsPartnerLinkType"> - <plnk:role name="Provider" portType="tns:Greetings"/> - </plnk:partnerLinkType> -</wsdl:definitions> diff --git a/java/sca/modules/implementation-bpel-runtime/src/test/resources/helloworld/helloworld.bpel b/java/sca/modules/implementation-bpel-runtime/src/test/resources/helloworld/helloworld.bpel deleted file mode 100644 index 1799a5ebd3..0000000000 --- a/java/sca/modules/implementation-bpel-runtime/src/test/resources/helloworld/helloworld.bpel +++ /dev/null @@ -1,81 +0,0 @@ -<!-- - ~ 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://tuscany.apache.org/implementation/bpel/example/helloworld" - xmlns="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
- xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/" - xmlns:tns="http://tuscany.apache.org/implementation/bpel/example/helloworld" - xmlns:xsd="http://www.w3.org/2001/XMLSchema" - xmlns:test="http://tuscany.apache.org/implementation/bpel/example/helloworld.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" importType="http://schemas.xmlsoap.org/wsdl/" - namespace="http://tuscany.apache.org/implementation/bpel/example/helloworld.wsdl"/> - - <partnerLinks> - <partnerLink name="helloPartnerLink" partnerLinkType="test:HelloPartnerLinkType" myRole="me" /> - </partnerLinks> - - <variables> - <variable name="helloMessage" messageType="test:HelloMessage"/> - <variable name="tmpVar" type="xsd:string"/> - </variables> - - <sequence> - <receive - name="start" - partnerLink="helloPartnerLink" - portType="test:HelloPortType" - operation="hello" - variable="helloMessage" - createInstance="yes"/> - - <variables> - <variable name="myVar" messageType="test:HelloMessage"/> - <variable name="tmpVar" type="xsd:string"/> - </variables> - - <sequence> - <receive - name="start" - partnerLink="helloPartnerLink" - portType="test:HelloPortType" - operation="hello" - variable="myVar" - createInstance="yes"/> - - <assign name="assign1"> - <copy> - <from>concat($myVar.TestPart/test:message/text(), ' World')</from> - <to variable="tmpVar"/> - </copy> - <copy> - <from>$tmpVar</from> - <to>$myVar.TestPart/test:message</to> - </copy> - </assign> - - <reply name="end" - partnerLink="helloPartnerLink" - portType="test:HelloPortType" - operation="hello" - variable="helloMessage"/> - </sequence> -</process> diff --git a/java/sca/modules/implementation-bpel-runtime/src/test/resources/helloworld/helloworld.wsdl b/java/sca/modules/implementation-bpel-runtime/src/test/resources/helloworld/helloworld.wsdl deleted file mode 100644 index 610bda3cc4..0000000000 --- a/java/sca/modules/implementation-bpel-runtime/src/test/resources/helloworld/helloworld.wsdl +++ /dev/null @@ -1,82 +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. - --> - -<wsdl:definitions name="helloworld" - targetNamespace="http://tuscany.apache.org/implementation/bpel/example/helloworld.wsdl" - xmlns="http://schemas.xmlsoap.org/wsdl/" - xmlns:tns="http://tuscany.apache.org/implementation/bpel/example/helloworld.wsdl" - xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" - xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" - xmlns:xsd="http://www.w3.org/2001/XMLSchema" - xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" - xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/" - xmlns:plnk="http://schemas.xmlsoap.org/ws/2004/03/partner-link/"> - - <wsdl:types> - <schema elementFormDefault="qualified" - targetNamespace="http://tuscany.apache.org/implementation/bpel/example/helloworld.wsdl" - xmlns="http://www.w3.org/2001/XMLSchema"> - - <element name="hello"> - <complexType> - <sequence> - <element name="message" type="xsd:string"/> - </sequence> - </complexType> - </element> - </schema> - </wsdl:types> - - <wsdl:message name="HelloMessage"> - <wsdl:part element="tns:hello" name="TestPart"/> - </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"> - <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> - <wsdl:operation name="hello"> - <wsdlsoap:operation soapAction=""/> - <wsdl:input name="TestIn"> - <wsdlsoap:body use="literal"/> - </wsdl:input> - <wsdl:output name="TestOut"> - <wsdlsoap:body use="literal"/> - </wsdl:output> - </wsdl:operation> - </wsdl:binding> - - <wsdl:service name="HelloService"> - <wsdl:port name="HelloPort" binding="tns:HelloSoapBinding"> - <soap:address location="http://localhost:8085/ode/processes/helloWorld"/> - </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>
\ No newline at end of file diff --git a/java/sca/modules/implementation-bpel-runtime/src/test/resources/log4j.properties b/java/sca/modules/implementation-bpel-runtime/src/test/resources/log4j.properties deleted file mode 100644 index 82b3c09723..0000000000 --- a/java/sca/modules/implementation-bpel-runtime/src/test/resources/log4j.properties +++ /dev/null @@ -1,36 +0,0 @@ -# -# 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=OFF, CONSOLE
-
-# log4j properties to work with commandline tools.
-log4j.category.org.mortbay=OFF
-log4j.category.org.hibernate.type=OFF
-log4j.category.org.objectweb=OFF
-log4j.category.org.apache.ode.axis2=OFF
-log4j.category.org.apache.ode.bpel.engine=OFF
-log4j.category.org.apache.ode.daohib.bpel.CorrelatorDaoImpl=OFF
-log4j.category.org.apache.ode.bpel.epr=OFF -log4j.category.org.apache.tuscany.sca.implementation.bpel=OFF -log4j.category.org.apache.tuscany.sca.implementation.bpel.ode=OFF -log4j.category.org.apache.tuscany.sca.implementation.bpel.ode.provider=OFF -
-# 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
|