You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2007/11/10 02:00:48 UTC
svn commit: r593706 - in /incubator/tuscany/java/sca/itest/transaction: ./
src/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/
src/main/java/org/apache/tuscany/ src/main/java/org/apache/tuscany/sca/
src/main/java/org/apache/tusca...
Author: rfeng
Date: Fri Nov 9 17:00:45 2007
New Revision: 593706
URL: http://svn.apache.org/viewvc?rev=593706&view=rev
Log: (empty)
Added:
incubator/tuscany/java/sca/itest/transaction/ (with props)
incubator/tuscany/java/sca/itest/transaction/DISCLAIMER
incubator/tuscany/java/sca/itest/transaction/LICENSE
incubator/tuscany/java/sca/itest/transaction/NOTICE
incubator/tuscany/java/sca/itest/transaction/pom.xml (with props)
incubator/tuscany/java/sca/itest/transaction/src/
incubator/tuscany/java/sca/itest/transaction/src/main/
incubator/tuscany/java/sca/itest/transaction/src/main/java/
incubator/tuscany/java/sca/itest/transaction/src/main/java/org/
incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/
incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/
incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/
incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/
incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/
incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/AccountNotFoundException.java (with props)
incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/AccountService.java (with props)
incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/AccountServiceImpl.java (with props)
incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/CheckingAccountServiceImpl.java (with props)
incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/OverDraftException.java (with props)
incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/SavingsAccountServiceImpl.java (with props)
incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/TransferService.java (with props)
incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/TransferServiceImpl.java (with props)
incubator/tuscany/java/sca/itest/transaction/src/main/resources/
incubator/tuscany/java/sca/itest/transaction/src/main/resources/accounts.composite
incubator/tuscany/java/sca/itest/transaction/src/main/resources/log4j.properties (with props)
incubator/tuscany/java/sca/itest/transaction/src/test/
incubator/tuscany/java/sca/itest/transaction/src/test/java/
incubator/tuscany/java/sca/itest/transaction/src/test/java/org/
incubator/tuscany/java/sca/itest/transaction/src/test/java/org/apache/
incubator/tuscany/java/sca/itest/transaction/src/test/java/org/apache/tuscany/
incubator/tuscany/java/sca/itest/transaction/src/test/java/org/apache/tuscany/sca/
incubator/tuscany/java/sca/itest/transaction/src/test/java/org/apache/tuscany/sca/itest/
incubator/tuscany/java/sca/itest/transaction/src/test/java/org/apache/tuscany/sca/itest/transaction/
incubator/tuscany/java/sca/itest/transaction/src/test/java/org/apache/tuscany/sca/itest/transaction/ConcurrentXAResourceTestCase.java (with props)
incubator/tuscany/java/sca/itest/transaction/src/test/java/org/apache/tuscany/sca/itest/transaction/TransactionTestCase.java (with props)
incubator/tuscany/java/sca/itest/transaction/src/test/resources/
Propchange: incubator/tuscany/java/sca/itest/transaction/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Fri Nov 9 17:00:45 2007
@@ -0,0 +1,15 @@
+target
+*.iws
+*.ipr
+*.iml
+.project
+.classpath
+maven.log
+velocity.log*
+junit*.properties
+surefire*.properties
+.settings
+.deployables
+.wtpmodules
+derby.log
+derbydb
Added: incubator/tuscany/java/sca/itest/transaction/DISCLAIMER
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/transaction/DISCLAIMER?rev=593706&view=auto
==============================================================================
--- incubator/tuscany/java/sca/itest/transaction/DISCLAIMER (added)
+++ incubator/tuscany/java/sca/itest/transaction/DISCLAIMER Fri Nov 9 17:00:45 2007
@@ -0,0 +1,8 @@
+Apache Tuscany is an effort undergoing incubation at The Apache Software
+Foundation (ASF), sponsored by the Apache Web Services PMC. Incubation is
+required of all newly accepted projects until a further review indicates that
+the infrastructure, communications, and decision making process have stabilized
+in a manner consistent with other successful ASF projects. While incubation
+status is not necessarily a reflection of the completeness or stability of the
+code, it does indicate that the project has yet to be fully endorsed by the ASF.
+
Added: incubator/tuscany/java/sca/itest/transaction/LICENSE
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/transaction/LICENSE?rev=593706&view=auto
==============================================================================
--- incubator/tuscany/java/sca/itest/transaction/LICENSE (added)
+++ incubator/tuscany/java/sca/itest/transaction/LICENSE Fri Nov 9 17:00:45 2007
@@ -0,0 +1,205 @@
+
+ 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.
+
+
+
Added: incubator/tuscany/java/sca/itest/transaction/NOTICE
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/transaction/NOTICE?rev=593706&view=auto
==============================================================================
--- incubator/tuscany/java/sca/itest/transaction/NOTICE (added)
+++ incubator/tuscany/java/sca/itest/transaction/NOTICE Fri Nov 9 17:00:45 2007
@@ -0,0 +1,6 @@
+${pom.name}
+Copyright (c) 2005 - 2007 The Apache Software Foundation
+
+This product includes software developed by
+The Apache Software Foundation (http://www.apache.org/).
+
Added: incubator/tuscany/java/sca/itest/transaction/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/transaction/pom.xml?rev=593706&view=auto
==============================================================================
--- incubator/tuscany/java/sca/itest/transaction/pom.xml (added)
+++ incubator/tuscany/java/sca/itest/transaction/pom.xml Fri Nov 9 17:00:45 2007
@@ -0,0 +1,91 @@
+<?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-itest</artifactId>
+ <version>1.1-incubating-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <artifactId>tuscany-itest-transaction</artifactId>
+ <name>Apache Tuscany SCA Transaction Policy Integration Test</name>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-policy-transaction</artifactId>
+ <version>1.1-incubating-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-host-embedded</artifactId>
+ <version>1.1-incubating-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>1.1-incubating-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.activemq</groupId>
+ <artifactId>activemq-core</artifactId>
+ <version>4.1.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.activemq</groupId>
+ <artifactId>activemq-ra</artifactId>
+ <version>4.1.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-jms_1.1_spec</artifactId>
+ <version>1.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.derby</groupId>
+ <artifactId>derby</artifactId>
+ <version>10.3.1.4</version>
+ </dependency>
+
+ <!--
+ <dependency>
+ <groupId>jotm</groupId>
+ <artifactId>jotm</artifactId>
+ <version>2.0.10</version>
+ <exclusions>
+ <exclusion>
+ <artifactId>jta</artifactId>
+ <groupId>javax.transaction</groupId>
+ </exclusion>
+ <exclusion>
+ <artifactId>connector</artifactId>
+ <groupId>javax.resource</groupId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ -->
+ </dependencies>
+</project>
Propchange: incubator/tuscany/java/sca/itest/transaction/pom.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/itest/transaction/pom.xml
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/AccountNotFoundException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/AccountNotFoundException.java?rev=593706&view=auto
==============================================================================
--- incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/AccountNotFoundException.java (added)
+++ incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/AccountNotFoundException.java Fri Nov 9 17:00:45 2007
@@ -0,0 +1,36 @@
+/*
+ * 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.itest.transaction;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class AccountNotFoundException extends Exception {
+ private static final long serialVersionUID = -4709084750220950706L;
+
+ public AccountNotFoundException() {
+ super();
+ }
+
+ public AccountNotFoundException(String message) {
+ super(message);
+ }
+
+}
Propchange: incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/AccountNotFoundException.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/AccountNotFoundException.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/AccountService.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/AccountService.java?rev=593706&view=auto
==============================================================================
--- incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/AccountService.java (added)
+++ incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/AccountService.java Fri Nov 9 17:00:45 2007
@@ -0,0 +1,31 @@
+/*
+ * 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.itest.transaction;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public interface AccountService {
+ float getBalance(String accountNumber) throws AccountNotFoundException;
+
+ void deposit(String accountNumber, float amount) throws AccountNotFoundException;
+
+ void withdraw(String accountNumber, float amount) throws OverDraftException, AccountNotFoundException;
+}
Propchange: incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/AccountService.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/AccountService.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/AccountServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/AccountServiceImpl.java?rev=593706&view=auto
==============================================================================
--- incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/AccountServiceImpl.java (added)
+++ incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/AccountServiceImpl.java Fri Nov 9 17:00:45 2007
@@ -0,0 +1,70 @@
+/*
+ * 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.itest.transaction;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public abstract class AccountServiceImpl implements AccountService {
+ protected Map<String, Float> accounts = new HashMap<String, Float>();
+
+ /**
+ * @see org.apache.tuscany.sca.itest.transaction.AccountService#deposit(String, float)
+ */
+ public void deposit(String accountNumber, float amount) throws AccountNotFoundException {
+ float balance = getBalance(accountNumber);
+ balance += amount;
+ save(accountNumber, balance);
+ accounts.put(accountNumber, balance);
+ }
+
+ /**
+ * @see org.apache.tuscany.sca.itest.transaction.AccountService#getBalance(String)
+ */
+ public float getBalance(String accountNumber) throws AccountNotFoundException {
+ Float balance = accounts.get(accountNumber);
+ if (balance == null) {
+ balance = load(accountNumber);
+ accounts.put(accountNumber, balance);
+ }
+ return balance;
+ }
+
+ /**
+ * @see org.apache.tuscany.sca.itest.transaction.AccountService#withdraw(String, float)
+ */
+ public void withdraw(String accountNumber, float amount) throws OverDraftException, AccountNotFoundException {
+ float balance = getBalance(accountNumber);
+ if (amount > balance) {
+ throw new OverDraftException("Insufficient fund");
+ }
+ balance -= amount;
+ save(accountNumber, balance);
+ accounts.put(accountNumber, balance);
+ }
+
+ protected abstract float load(String accountNumber) throws AccountNotFoundException;
+
+ protected abstract void save(String accountNumber, float balance) throws AccountNotFoundException;
+
+}
Propchange: incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/AccountServiceImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/AccountServiceImpl.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/CheckingAccountServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/CheckingAccountServiceImpl.java?rev=593706&view=auto
==============================================================================
--- incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/CheckingAccountServiceImpl.java (added)
+++ incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/CheckingAccountServiceImpl.java Fri Nov 9 17:00:45 2007
@@ -0,0 +1,143 @@
+/*
+ * 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.itest.transaction;
+
+import java.io.File;
+import java.util.Enumeration;
+
+import javax.jms.Connection;
+import javax.jms.JMSException;
+import javax.jms.MapMessage;
+import javax.jms.Message;
+import javax.jms.MessageConsumer;
+import javax.jms.MessageProducer;
+import javax.jms.Queue;
+import javax.jms.QueueBrowser;
+import javax.jms.Session;
+
+import org.apache.activemq.ActiveMQConnectionFactory;
+import org.apache.activemq.ActiveMQSession;
+import org.apache.activemq.broker.BrokerService;
+import org.osoa.sca.ServiceRuntimeException;
+import org.osoa.sca.annotations.Destroy;
+import org.osoa.sca.annotations.Init;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+/**
+ * @version $Rev$ $Date$
+ */
+@Service(AccountService.class)
+@Scope("COMPOSITE")
+public class CheckingAccountServiceImpl extends AccountServiceImpl {
+ private static final String url = "tcp://localhost:61616";
+ private BrokerService broker;
+ private Queue queue;
+
+ @Init
+ public void init() throws Exception {
+ broker = new BrokerService();
+ broker.setBrokerName("localhost");
+ broker.setDataDirectory(new File("target/activemq-data/localhost"));
+ broker.addConnector(url);
+ broker.start();
+
+ ActiveMQConnectionFactory connFac = new ActiveMQConnectionFactory(url);
+ Connection conn = connFac.createConnection();
+ ActiveMQSession session = (ActiveMQSession)conn.createSession(true, Session.AUTO_ACKNOWLEDGE);
+ queue = session.createQueue("CheckAccounts");
+ MessageProducer producer = session.createProducer(queue);
+ MapMessage map = session.createMapMessage();
+
+ for (int i = 0; i < 3; i++) {
+ String accountNumber = "C00" + (i + 1);
+ float balance = (float)(1000.0 + Math.random() * 200.0);
+ map.setStringProperty("accountNumber", accountNumber);
+ map.setFloatProperty("balance", balance);
+
+ map.setString("accountNumber", accountNumber);
+ map.setFloat("balance", balance);
+
+ producer.send(map);
+ }
+ session.commit();
+ conn.close();
+ }
+
+ @Destroy
+ public void destroy() throws Exception {
+ if (broker != null) {
+ broker.stop();
+ }
+ }
+
+ @Override
+ protected float load(String accountNumber) throws AccountNotFoundException {
+ try {
+ ActiveMQConnectionFactory connFac = new ActiveMQConnectionFactory(url);
+ Connection conn = connFac.createConnection();
+ conn.start();
+ Session session = conn.createSession(true, Session.AUTO_ACKNOWLEDGE);
+ QueueBrowser browser = session.createBrowser(queue, "accountNumber = '" + accountNumber + "'");
+ Enumeration msgs = browser.getEnumeration();
+ if (msgs.hasMoreElements()) {
+ MapMessage msg = (MapMessage)msgs.nextElement();
+ float balance = msg.getFloat("balance");
+ conn.close();
+ return balance;
+ } else {
+ conn.close();
+ throw new AccountNotFoundException(accountNumber);
+ }
+ } catch (JMSException e) {
+ throw new ServiceRuntimeException(e);
+ }
+ }
+
+ @Override
+ protected void save(String accountNumber, float balance) throws AccountNotFoundException {
+ try {
+ ActiveMQConnectionFactory connFac = new ActiveMQConnectionFactory(url);
+ Connection conn = connFac.createConnection();
+ conn.start();
+ ActiveMQSession session = (ActiveMQSession)conn.createSession(true, Session.AUTO_ACKNOWLEDGE);
+ MessageConsumer consumer = session.createConsumer(queue, "accountNumber = '" + accountNumber + "'");
+ Message msg = consumer.receiveNoWait();
+ if (msg == null) {
+ conn.close();
+ throw new AccountNotFoundException(accountNumber);
+ }
+ MapMessage map = session.createMapMessage();
+ map.setStringProperty("accountNumber", accountNumber);
+ map.setFloatProperty("balance", balance);
+
+ map.setString("accountNumber", accountNumber);
+ map.setFloat("balance", balance);
+
+ MessageProducer producer = session.createProducer(queue);
+ producer.send(map);
+ conn.close();
+
+ } catch (JMSException e) {
+ throw new ServiceRuntimeException(e);
+ }
+ }
+
+}
Propchange: incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/CheckingAccountServiceImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/CheckingAccountServiceImpl.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/OverDraftException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/OverDraftException.java?rev=593706&view=auto
==============================================================================
--- incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/OverDraftException.java (added)
+++ incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/OverDraftException.java Fri Nov 9 17:00:45 2007
@@ -0,0 +1,36 @@
+/*
+ * 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.itest.transaction;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class OverDraftException extends Exception {
+ private static final long serialVersionUID = -4709084750220950706L;
+
+ public OverDraftException() {
+ super();
+ }
+
+ public OverDraftException(String message) {
+ super(message);
+ }
+
+}
Propchange: incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/OverDraftException.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/OverDraftException.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/SavingsAccountServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/SavingsAccountServiceImpl.java?rev=593706&view=auto
==============================================================================
--- incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/SavingsAccountServiceImpl.java (added)
+++ incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/SavingsAccountServiceImpl.java Fri Nov 9 17:00:45 2007
@@ -0,0 +1,133 @@
+/*
+ * 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.itest.transaction;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.logging.Logger;
+
+import javax.sql.XAConnection;
+
+import org.apache.derby.jdbc.EmbeddedXADataSource;
+import org.osoa.sca.ServiceRuntimeException;
+import org.osoa.sca.annotations.Destroy;
+import org.osoa.sca.annotations.Init;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+/**
+ * @version $Rev$ $Date$
+ */
+@Service(AccountService.class)
+@Scope("COMPOSITE")
+public class SavingsAccountServiceImpl extends AccountServiceImpl {
+ private final static Logger log = Logger.getLogger(SavingsAccountServiceImpl.class.getName());
+ private EmbeddedXADataSource xads;
+
+ @Init
+ public void init() throws SQLException {
+ // Create the database and a table
+ xads = new EmbeddedXADataSource();
+ xads.setDatabaseName("target/test");
+ xads.setCreateDatabase("create");
+
+ XAConnection xaconn = xads.getXAConnection();
+ Connection conn = xaconn.getConnection();
+ PreparedStatement ps =
+ conn.prepareStatement("create table SavingsAccounts(accountNumber char(100), balance float)");
+ try {
+ ps.execute();
+ } catch (SQLException ex) {
+ log.info(ex.getMessage());
+ }
+ ps = conn.prepareStatement("delete from SavingsAccounts");
+ ps.execute();
+
+ ps = conn.prepareStatement("insert into SavingsAccounts(accountNumber, balance) values(?, ?)");
+ for (int i = 0; i < 2; i++) {
+ ps.setString(1, "S00" + (i+1));
+ ps.setFloat(2, (float)(1000.0f + Math.random() * 500.0));
+ ps.executeUpdate();
+ }
+ conn.commit();
+ conn.close();
+ }
+
+ @Override
+ protected float load(String accountNumber) throws AccountNotFoundException {
+ try {
+ XAConnection xaconn = xads.getXAConnection();
+
+ Connection conn = xaconn.getConnection();
+ PreparedStatement ps = conn.prepareStatement("select balance from SavingsAccounts where accountNumber=?");
+ ps.setString(1, accountNumber);
+ ResultSet rs1 = ps.executeQuery();
+ boolean found = rs1.next();
+ if (found) {
+ float balance = rs1.getFloat(1);
+ conn.commit();
+ conn.close();
+ return balance;
+ } else {
+ conn.commit();
+ conn.close();
+ throw new AccountNotFoundException(accountNumber);
+ }
+ } catch (SQLException e) {
+ throw new ServiceRuntimeException(e);
+ }
+ }
+
+ @Override
+ protected void save(String accountNumber, float balance) throws AccountNotFoundException {
+ try {
+ XAConnection xaconn = xads.getXAConnection();
+
+ Connection conn = xaconn.getConnection();
+ PreparedStatement ps = conn.prepareStatement("update SavingsAccounts set balance=? where accountNumber=?");
+ ps.setFloat(1, balance);
+ ps.setString(2, accountNumber);
+ int rows = ps.executeUpdate();
+ conn.commit();
+ boolean found = (rows >= 1);
+ if (found) {
+ conn.close();
+ } else {
+ conn.close();
+ throw new AccountNotFoundException(accountNumber);
+ }
+ } catch (SQLException e) {
+ throw new ServiceRuntimeException(e);
+ }
+ }
+
+ @Destroy
+ public void destroy() throws SQLException {
+ XAConnection xaconn = xads.getXAConnection();
+ Connection conn = xaconn.getConnection();
+ PreparedStatement ps = conn.prepareStatement("drop table SavingsAccounts");
+ ps.execute();
+ conn.commit();
+ conn.close();
+ }
+
+}
Propchange: incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/SavingsAccountServiceImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/SavingsAccountServiceImpl.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/TransferService.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/TransferService.java?rev=593706&view=auto
==============================================================================
--- incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/TransferService.java (added)
+++ incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/TransferService.java Fri Nov 9 17:00:45 2007
@@ -0,0 +1,31 @@
+/*
+ * 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.itest.transaction;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public interface TransferService {
+ String[] getAccounts();
+
+ float getBalance(String accountNumber) throws AccountNotFoundException;
+
+ void transfer(String from, String to, float amount) throws OverDraftException, AccountNotFoundException;
+}
Propchange: incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/TransferService.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/TransferService.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/TransferServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/TransferServiceImpl.java?rev=593706&view=auto
==============================================================================
--- incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/TransferServiceImpl.java (added)
+++ incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/TransferServiceImpl.java Fri Nov 9 17:00:45 2007
@@ -0,0 +1,64 @@
+/*
+ * 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.itest.transaction;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+/**
+ * @version $Rev$ $Date$
+ */
+@Service(TransferService.class)
+public class TransferServiceImpl implements TransferService {
+ @Reference
+ protected AccountService savings;
+
+ @Reference
+ protected AccountService checking;
+
+ /**
+ * @see org.apache.tuscany.sca.itest.transaction.TransferService#transfer(java.lang.String, java.lang.String, float)
+ */
+ public void transfer(String from, String to, float amount) throws OverDraftException, AccountNotFoundException {
+ if (from.startsWith("C")) {
+ checking.withdraw(from, amount);
+ } else {
+ savings.withdraw(from, amount);
+ }
+ if (to.startsWith("C")) {
+ checking.deposit(to, amount);
+ } else {
+ savings.deposit(to, amount);
+ }
+ }
+
+ public float getBalance(String accountNumber) throws AccountNotFoundException {
+ if(accountNumber.startsWith("C")) {
+ return checking.getBalance(accountNumber);
+ } else {
+ return savings.getBalance(accountNumber);
+ }
+ }
+
+ public String[] getAccounts() {
+ return new String[] {"S001", "S002", "C001"};
+ }
+
+}
Propchange: incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/TransferServiceImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/itest/transaction/src/main/java/org/apache/tuscany/sca/itest/transaction/TransferServiceImpl.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/itest/transaction/src/main/resources/accounts.composite
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/transaction/src/main/resources/accounts.composite?rev=593706&view=auto
==============================================================================
--- incubator/tuscany/java/sca/itest/transaction/src/main/resources/accounts.composite (added)
+++ incubator/tuscany/java/sca/itest/transaction/src/main/resources/accounts.composite Fri Nov 9 17:00:45 2007
@@ -0,0 +1,43 @@
+<?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.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0" xmlns:foo="http://foo" targetNamespace="http://account"
+ name="Accounts" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+ <component name="TransferServiceComponent">
+ <implementation.java class="org.apache.tuscany.sca.itest.transaction.TransferServiceImpl"
+ requires="managedTransaction.global" />
+ <service name="TransferService" />
+ <reference name="savings" requires="propagatesTransaction" target="SavingsAccountServiceComponent"></reference>
+ <reference name="checking" requires="propagatesTransaction" target="CheckingAccountServiceComponent"></reference>
+ </component>
+
+ <component name="SavingsAccountServiceComponent">
+ <implementation.java class="org.apache.tuscany.sca.itest.transaction.SavingsAccountServiceImpl"
+ requires="managedTransaction.global" />
+ <service name="AccountService" requires="propagatesTransaction" />
+ </component>
+
+ <component name="CheckingAccountServiceComponent">
+ <implementation.java class="org.apache.tuscany.sca.itest.transaction.CheckingAccountServiceImpl"
+ requires="managedTransaction.global" />
+ <service name="AccountService" requires="propagatesTransaction" />
+ </component>
+
+</composite>
\ No newline at end of file
Added: incubator/tuscany/java/sca/itest/transaction/src/main/resources/log4j.properties
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/transaction/src/main/resources/log4j.properties?rev=593706&view=auto
==============================================================================
--- incubator/tuscany/java/sca/itest/transaction/src/main/resources/log4j.properties (added)
+++ incubator/tuscany/java/sca/itest/transaction/src/main/resources/log4j.properties Fri Nov 9 17:00:45 2007
@@ -0,0 +1,29 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+# Set root logger level to DEBUG and its only appender to A1.
+log4j.rootLogger=INFO, CONSOLE
+
+# CONSOLE is set to be a ConsoleAppender.
+log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
+
+# A1 uses PatternLayout.
+log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
+
+
+# Print only messages of level WARN or above in the package com.foo.
+log4j.logger.org.apache.tuscany=INFO
\ No newline at end of file
Propchange: incubator/tuscany/java/sca/itest/transaction/src/main/resources/log4j.properties
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/itest/transaction/src/main/resources/log4j.properties
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/itest/transaction/src/test/java/org/apache/tuscany/sca/itest/transaction/ConcurrentXAResourceTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/transaction/src/test/java/org/apache/tuscany/sca/itest/transaction/ConcurrentXAResourceTestCase.java?rev=593706&view=auto
==============================================================================
--- incubator/tuscany/java/sca/itest/transaction/src/test/java/org/apache/tuscany/sca/itest/transaction/ConcurrentXAResourceTestCase.java (added)
+++ incubator/tuscany/java/sca/itest/transaction/src/test/java/org/apache/tuscany/sca/itest/transaction/ConcurrentXAResourceTestCase.java Fri Nov 9 17:00:45 2007
@@ -0,0 +1,119 @@
+/*
+ * 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.itest.transaction;
+
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.logging.Logger;
+
+import javax.sql.XAConnection;
+import javax.transaction.Transaction;
+import javax.transaction.TransactionManager;
+
+import junit.framework.TestCase;
+
+import org.apache.derby.jdbc.EmbeddedXADataSource;
+import org.apache.tuscany.sca.policy.transaction.TransactionManagerHelper;
+import org.apache.tuscany.sca.policy.transaction.TransactionManagerWrapper;
+
+public class ConcurrentXAResourceTestCase extends TestCase {
+ class TestThread extends Thread {
+ private int counter;
+
+ TestThread(int i) {
+ counter = i;
+ }
+
+ public void run() {
+ log.info(this + " running...");
+
+ EmbeddedXADataSource xads = new EmbeddedXADataSource();
+ xads.setDatabaseName("target/test" + counter);
+ xads.setCreateDatabase("create");
+ Connection conn = null;
+ try {
+
+ Transaction trans = helper.managedGlobalTransactionPreInvoke();
+
+ XAConnection xaconn = xads.getXAConnection();
+
+ trans.enlistResource(xaconn.getXAResource());
+
+ conn = xaconn.getConnection();
+ try {
+ conn.prepareStatement("create table T1(col1 char(100))").execute();
+ } catch (SQLException ex) {
+ log.info("table T1 exists");
+ }
+ conn.prepareStatement("insert into T1 values('kkkkkkkk')").execute();
+ ResultSet rs = conn.prepareStatement("select count(*) from T1").executeQuery();
+ rs.next();
+ log.info(String.valueOf(rs.getInt(1)));
+
+ helper.managedGlobalTransactionPostInvoke(trans, false);
+
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ } finally {
+ try {
+ conn.close();
+ } catch (Exception _ex) {
+ _ex.printStackTrace();
+ }
+ }
+ }
+
+ }
+ private TransactionManagerWrapper activator;
+ private TransactionManagerHelper helper;
+
+ private Logger log = Logger.getLogger(this.getClass().getName());
+
+ public void setUp() throws Exception {
+ activator = new TransactionManagerWrapper();
+ activator.start();
+ TransactionManager tm = activator.getTransactionManager();
+ helper = new TransactionManagerHelper(tm);
+ }
+
+ public void tearDown() throws Exception {
+ activator.stop();
+
+ }
+
+ public void testConcurrent() {
+ TestThread[] tts = new TestThread[5];
+ for (int i = 0; i < tts.length; i++) {
+ tts[i] = new TestThread(i);
+ tts[i].start();
+ // log.info("one TestThread started...");
+ }
+ try {
+ for (TestThread tt : tts) {
+ while (tt != null && tt.isAlive()) {
+ // log.info("wait for...");
+ Thread.sleep(200);
+ }
+ }
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ }
+}
Propchange: incubator/tuscany/java/sca/itest/transaction/src/test/java/org/apache/tuscany/sca/itest/transaction/ConcurrentXAResourceTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/itest/transaction/src/test/java/org/apache/tuscany/sca/itest/transaction/ConcurrentXAResourceTestCase.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/itest/transaction/src/test/java/org/apache/tuscany/sca/itest/transaction/TransactionTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/transaction/src/test/java/org/apache/tuscany/sca/itest/transaction/TransactionTestCase.java?rev=593706&view=auto
==============================================================================
--- incubator/tuscany/java/sca/itest/transaction/src/test/java/org/apache/tuscany/sca/itest/transaction/TransactionTestCase.java (added)
+++ incubator/tuscany/java/sca/itest/transaction/src/test/java/org/apache/tuscany/sca/itest/transaction/TransactionTestCase.java Fri Nov 9 17:00:45 2007
@@ -0,0 +1,53 @@
+/*
+ * 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.itest.transaction;
+
+import org.apache.tuscany.sca.host.embedded.SCADomain;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class TransactionTestCase {
+ private static SCADomain domain;
+
+ @BeforeClass
+ public static void init() throws Exception {
+ domain = SCADomain.newInstance("accounts.composite");
+ }
+
+ @AfterClass
+ public static void destroy() throws Exception {
+ if (domain != null) {
+ domain.close();
+ }
+ }
+
+ @Test
+ public void testTransaction() throws Exception {
+ TransferService service = domain.getService(TransferService.class, "TransferServiceComponent");
+ String[] accounts = service.getAccounts();
+ for (int i = 0; i < accounts.length; i++) {
+ float balance = service.getBalance(accounts[i]);
+ System.out.println("[" + i + "] " + accounts[i] + ":" + balance);
+ }
+ service.transfer(accounts[0], accounts[2], 200.0f);
+ }
+
+}
Propchange: incubator/tuscany/java/sca/itest/transaction/src/test/java/org/apache/tuscany/sca/itest/transaction/TransactionTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/itest/transaction/src/test/java/org/apache/tuscany/sca/itest/transaction/TransactionTestCase.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org