You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by ad...@apache.org on 2007/09/20 09:38:24 UTC

svn commit: r577605 - in /incubator/tuscany/java/das: distribution/binary/ distribution/binary/src/main/assembly/ samples/ samples/dbconfig/src/main/java/org/apache/tuscany/das/rdb/dbconfig/ samples/transaction/ samples/transaction/src/ samples/transac...

Author: adrianocrestani
Date: Thu Sep 20 00:38:23 2007
New Revision: 577605

URL: http://svn.apache.org/viewvc?rev=577605&view=rev
Log:
applying patch from JIRA-1665

Added:
    incubator/tuscany/java/das/samples/transaction/
    incubator/tuscany/java/das/samples/transaction/build.xml
    incubator/tuscany/java/das/samples/transaction/pom.xml
    incubator/tuscany/java/das/samples/transaction/readme.htm
    incubator/tuscany/java/das/samples/transaction/src/
    incubator/tuscany/java/das/samples/transaction/src/main/
    incubator/tuscany/java/das/samples/transaction/src/main/java/
    incubator/tuscany/java/das/samples/transaction/src/main/java/org/
    incubator/tuscany/java/das/samples/transaction/src/main/java/org/apache/
    incubator/tuscany/java/das/samples/transaction/src/main/java/org/apache/tuscany/
    incubator/tuscany/java/das/samples/transaction/src/main/java/org/apache/tuscany/samples/
    incubator/tuscany/java/das/samples/transaction/src/main/java/org/apache/tuscany/samples/das/
    incubator/tuscany/java/das/samples/transaction/src/main/java/org/apache/tuscany/samples/das/databaseSetup/
    incubator/tuscany/java/das/samples/transaction/src/main/java/org/apache/tuscany/samples/das/databaseSetup/DatabaseSetupUtil.java
    incubator/tuscany/java/das/samples/transaction/src/main/java/org/apache/tuscany/samples/das/tx/
    incubator/tuscany/java/das/samples/transaction/src/main/java/org/apache/tuscany/samples/das/tx/manager/
    incubator/tuscany/java/das/samples/transaction/src/main/java/org/apache/tuscany/samples/das/tx/manager/GeronimoTransactionManagerService.java
    incubator/tuscany/java/das/samples/transaction/src/main/java/org/apache/tuscany/samples/das/tx/manager/GeronimoTransactionManagerUtil.java
    incubator/tuscany/java/das/samples/transaction/src/main/java/org/apache/tuscany/samples/das/tx/sample/
    incubator/tuscany/java/das/samples/transaction/src/main/java/org/apache/tuscany/samples/das/tx/sample/MoneyTransfer.java
    incubator/tuscany/java/das/samples/transaction/src/main/resources/
    incubator/tuscany/java/das/samples/transaction/src/main/resources/BankAccountDBConfig.xml
    incubator/tuscany/java/das/samples/transaction/src/main/resources/BankAccounts.xml
Modified:
    incubator/tuscany/java/das/distribution/binary/pom.xml
    incubator/tuscany/java/das/distribution/binary/src/main/assembly/das.xml
    incubator/tuscany/java/das/samples/dbconfig/src/main/java/org/apache/tuscany/das/rdb/dbconfig/DBHelper.java
    incubator/tuscany/java/das/samples/pom.xml

Modified: incubator/tuscany/java/das/distribution/binary/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/distribution/binary/pom.xml?rev=577605&r1=577604&r2=577605&view=diff
==============================================================================
--- incubator/tuscany/java/das/distribution/binary/pom.xml (original)
+++ incubator/tuscany/java/das/distribution/binary/pom.xml Thu Sep 20 00:38:23 2007
@@ -58,6 +58,12 @@
           <type>war</type>
       </dependency>        
 
+       <dependency>
+          <groupId>org.apache.tuscany.das.samples</groupId>
+          <artifactId>tuscany-das-sample-transaction</artifactId>
+          <version>${das.version}</version>
+      </dependency>
+      
     </dependencies>
 
     <build>

Modified: incubator/tuscany/java/das/distribution/binary/src/main/assembly/das.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/distribution/binary/src/main/assembly/das.xml?rev=577605&r1=577604&r2=577605&view=diff
==============================================================================
--- incubator/tuscany/java/das/distribution/binary/src/main/assembly/das.xml (original)
+++ incubator/tuscany/java/das/distribution/binary/src/main/assembly/das.xml Thu Sep 20 00:38:23 2007
@@ -94,6 +94,24 @@
                <outputDirectory>tuscany-das-${das.version}/samples/customer</outputDirectory>
                <fileMode>0644</fileMode>
             </file>
+            
+            <!-- include readme for transaction sample -->
+            <file>
+               <source>../../samples/transaction/readme.htm</source>
+               <outputDirectory>tuscany-das-${das.version}/samples/transaction</outputDirectory>
+               <fileMode>0644</fileMode>
+            </file>
+            <!-- include transaction sample -->
+            <file>
+               <source>../../samples/transaction/target/sample-transaction.jar</source>
+               <outputDirectory>tuscany-das-${das.version}/samples/transaction</outputDirectory>
+               <fileMode>0644</fileMode>
+            </file>
+            <file>
+               <source>../../samples/transaction/build.xml</source>
+               <outputDirectory>tuscany-das-${das.version}/samples/transaction</outputDirectory>
+               <fileMode>0644</fileMode>
+            </file>
         </files>
 
 
@@ -116,5 +134,20 @@
 	    <fileMode>0644</fileMode>
         </dependencySet>
 
+	<!-- DAS Samples - Transaction mysql dependency-->
+        <dependencySet>
+	    <outputDirectory>tuscany-das-${das.version}/samples/transaction</outputDirectory>
+	        <includes>
+	            <include>mysql:mysql-connector-java</include>
+	            <include>org.apache.geronimo.specs:geronimo-jta_1.0.1B_spec</include>
+	            <include>org.apache.geronimo.modules:geronimo-kernel</include>
+	            <include>org.apache.geronimo.modules:geronimo-transaction</include>
+	            <include>org.apache.geronimo.modules:geronimo-connector</include>
+	            <include>org.apache.geronimo.specs:geronimo-j2ee-connector_1.5_spec</include>
+	            <include>org.apache.tuscany.das.samples:tuscany-das-sample-dbconfig</include>
+	            <include>commons-logging:commons-logging</include>
+	        </includes>	    
+	    <fileMode>0644</fileMode>
+        </dependencySet>
     </dependencySets>
-</assembly>
\ No newline at end of file
+</assembly>

Modified: incubator/tuscany/java/das/samples/dbconfig/src/main/java/org/apache/tuscany/das/rdb/dbconfig/DBHelper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/samples/dbconfig/src/main/java/org/apache/tuscany/das/rdb/dbconfig/DBHelper.java?rev=577605&r1=577604&r2=577605&view=diff
==============================================================================
--- incubator/tuscany/java/das/samples/dbconfig/src/main/java/org/apache/tuscany/das/rdb/dbconfig/DBHelper.java (original)
+++ incubator/tuscany/java/das/samples/dbconfig/src/main/java/org/apache/tuscany/das/rdb/dbconfig/DBHelper.java Thu Sep 20 00:38:23 2007
@@ -155,7 +155,7 @@
             dbConnection = DBConnectionHelper.createConnection(dbConfig.getConnectionInfo());
             dbStatement = dbConnection.createStatement();
 
-            if (dbConfig.getTable() != null && dbConfig.getTable().size() > 0) {
+            if (dbConnection != null && dbStatement != null && dbConfig.getTable() != null && dbConfig.getTable().size() > 0) {
                 Iterator tableIterator = dbConfig.getTable().iterator();
                 while (tableIterator.hasNext()) {
                     Table table = (Table) tableIterator.next();
@@ -182,8 +182,11 @@
             }
         } finally {
             try {
-                dbStatement.close();
-                dbConnection.close();
+                if(dbStatement != null)
+                	dbStatement.close();
+                
+                if(dbConnection != null)
+                	dbConnection.close();
             } catch (SQLException e) {
                 // ignore here
             }

Modified: incubator/tuscany/java/das/samples/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/samples/pom.xml?rev=577605&r1=577604&r2=577605&view=diff
==============================================================================
--- incubator/tuscany/java/das/samples/pom.xml (original)
+++ incubator/tuscany/java/das/samples/pom.xml Thu Sep 20 00:38:23 2007
@@ -35,5 +35,6 @@
         <module>company-webapp</module>
         <module>advanced-webapp</module>
         <module>customer</module>
+        <module>transaction</module>
     </modules>
 </project>

Added: incubator/tuscany/java/das/samples/transaction/build.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/samples/transaction/build.xml?rev=577605&view=auto
==============================================================================
--- incubator/tuscany/java/das/samples/transaction/build.xml (added)
+++ incubator/tuscany/java/das/samples/transaction/build.xml Thu Sep 20 00:38:23 2007
@@ -0,0 +1,48 @@
+<!--
+ * 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 name="transaction" default="run">
+    <property name="test.class" value="org.apache.tuscany.samples.das.tx.sample.MoneyTransfer" />
+	<property name="test.jar"   value="sample-transaction.jar" />
+	
+	
+    <target name="run">
+        <java classname="${test.class}"
+              fork="true">
+       	<arg value="commit"/>
+       	<arg value="1200"/>
+	    <classpath>
+	      <pathelement path="${classpath}"/>
+	      <fileset dir="../../lib">
+		<include name="**/*.jar"/>
+	      </fileset>
+		<pathelement location="mysql-connector-java-5.0.4.jar"/>
+		<pathelement location="commons-logging-1.1.jar"/>
+		<pathelement location="geronimo-jta_1.0.1B_spec-1.0.jar"/>
+		<pathelement location="geronimo-kernel-1.2-beta.jar"/>
+		<pathelement location="geronimo-transaction-1.2-beta.jar"/>
+		<pathelement location="geronimo-connector-1.2-beta.jar"/>
+		<pathelement location="geronimo-j2ee-connector_1.5_spec-1.0.1.jar"/>
+		<pathelement location="tuscany-das-sample-dbconfig-1.0-incubating-SNAPSHOT.jar"/>
+		<pathelement path="${test.jar}"/>
+	    </classpath>        
+        </java>    	
+    </target>	
+	
+</project>
+

Added: incubator/tuscany/java/das/samples/transaction/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/samples/transaction/pom.xml?rev=577605&view=auto
==============================================================================
--- incubator/tuscany/java/das/samples/transaction/pom.xml (added)
+++ incubator/tuscany/java/das/samples/transaction/pom.xml Thu Sep 20 00:38:23 2007
@@ -0,0 +1,140 @@
+<?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.das.samples</groupId>
+        <artifactId>tuscany-das-samples</artifactId>
+        <version>1.0-incubating-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>tuscany-das-sample-transaction</artifactId>
+    <packaging>jar</packaging>
+    <name>Tuscany DAS J2SE Transaction Sample Using Transaction Manager</name>
+    <description>Sample use of RDB DAS in a J2SE application with Transaction Manager</description>
+
+    <dependencies>
+       <dependency>
+           <groupId>org.apache.tuscany.das</groupId>
+           <artifactId>tuscany-das-rdb</artifactId>
+           <version>${das.version}</version>
+           <scope>compile</scope>
+       </dependency>
+
+      <dependency>
+        <groupId>org.apache.tuscany.das.samples</groupId>
+        <artifactId>tuscany-das-sample-dbconfig</artifactId>
+        <version>${das.version}</version>
+        <scope>compile</scope>
+        <exclusions>
+            <exclusion>
+                <groupId>org.apache.derby</groupId>
+            <artifactId>derby</artifactId>
+            </exclusion>
+        </exclusions>
+      </dependency>
+          
+	  <dependency>
+	     <groupId>mysql</groupId>
+	     <artifactId>mysql-connector-java</artifactId>
+	     <version>5.0.4</version>
+	     <scope>compile</scope>
+	  </dependency>
+	 
+      <dependency>
+          <groupId>org.apache.geronimo.specs</groupId>
+          <artifactId>geronimo-jta_1.0.1B_spec</artifactId>
+          <version>1.0</version>
+      </dependency>
+        
+      <dependency>
+          <groupId>commons-logging</groupId>
+          <artifactId>commons-logging</artifactId>
+          <version>1.1</version>
+      </dependency>
+      
+      <dependency>
+          <groupId>org.apache.geronimo.modules</groupId>
+          <artifactId>geronimo-transaction</artifactId>
+          <version>1.2-beta</version>
+			<exclusions>
+                <exclusion>
+                    <artifactId>mx4j</artifactId>
+                    <groupId>mx4j</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>commons-jelly-tags-velocity</artifactId>
+                    <groupId>commons-jelly</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>velocity</artifactId>
+                    <groupId>velocity</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>geronimo-core</artifactId>
+                    <groupId>org.apache.geronimo.modules</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>geronimo-kernel</artifactId>
+                    <groupId>org.apache.geronimo.modules</groupId>                    
+                </exclusion>
+                <exclusion>
+                    <artifactId>geronimo-system</artifactId>
+                    <groupId>org.apache.geronimo.modules</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>geronimo-j2ee</artifactId>
+                    <groupId>org.apache.geronimo.modules</groupId>
+                </exclusion>
+            </exclusions>          
+      </dependency>
+        
+    </dependencies>
+
+    <!-- this will place the java source files inside the jar -->
+    <build>
+        <finalName>sample-transaction</finalName>
+        <sourceDirectory>src/main/java</sourceDirectory>
+        <resources>
+            <resource>
+                <directory>src/main/java</directory>
+            </resource>
+            <resource>
+              <directory>src/main/resources</directory>
+            </resource>
+        </resources>
+	   <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <configuration>
+                    <archive>
+                        <manifest> 
+                    <mainClass>org.apache.tuscany.samples.das.tx.sample.MoneyTransfer</mainClass> 
+                    <addClasspath>true</addClasspath> 
+                    <!-- classpathPrefix>../../lib/</classpathPrefix --> 
+                   </manifest> 
+
+                    </archive>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>

Added: incubator/tuscany/java/das/samples/transaction/readme.htm
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/samples/transaction/readme.htm?rev=577605&view=auto
==============================================================================
--- incubator/tuscany/java/das/samples/transaction/readme.htm (added)
+++ incubator/tuscany/java/das/samples/transaction/readme.htm Thu Sep 20 00:38:23 2007
@@ -0,0 +1,449 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:w="urn:schemas-microsoft-com:office:word"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=Word.Document>
+<meta name=Generator content="Microsoft Word 10">
+<meta name=Originator content="Microsoft Word 10">
+<link rel=File-List href="readme_files/filelist.xml">
+<title>Tuscany RDB DAS Sample</title>
+<!--[if gte mso 9]><xml>
+ <o:DocumentProperties>
+  <o:Author>IBM_User</o:Author>
+  <o:LastAuthor>IBM_User</o:LastAuthor>
+  <o:Revision>59</o:Revision>
+  <o:TotalTime>329</o:TotalTime>
+  <o:Created>2007-09-05T11:09:00Z</o:Created>
+  <o:LastSaved>2007-09-19T11:43:00Z</o:LastSaved>
+  <o:Pages>1</o:Pages>
+  <o:Words>593</o:Words>
+  <o:Characters>3384</o:Characters>
+  <o:Company>IBM</o:Company>
+  <o:Lines>28</o:Lines>
+  <o:Paragraphs>7</o:Paragraphs>
+  <o:CharactersWithSpaces>3970</o:CharactersWithSpaces>
+  <o:Version>10.3501</o:Version>
+ </o:DocumentProperties>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:WordDocument>
+  <w:Compatibility>
+   <w:ApplyBreakingRules/>
+   <w:UseFELayout/>
+  </w:Compatibility>
+  <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
+ </w:WordDocument>
+</xml><![endif]-->
+<style>
+<!--
+ /* Font Definitions */
+ @font-face
+	{font-family:SimSun;
+	panose-1:2 1 6 0 3 1 1 1 1 1;
+	mso-font-alt:\5B8B\4F53;
+	mso-font-charset:134;
+	mso-generic-font-family:auto;
+	mso-font-pitch:variable;
+	mso-font-signature:3 135135232 16 0 262145 0;}
+@font-face
+	{font-family:"\@SimSun";
+	panose-1:2 1 6 0 3 1 1 1 1 1;
+	mso-font-charset:134;
+	mso-generic-font-family:auto;
+	mso-font-pitch:variable;
+	mso-font-signature:3 135135232 16 0 262145 0;}
+ /* Style Definitions */
+ p.MsoNormal, li.MsoNormal, div.MsoNormal
+	{mso-style-parent:"";
+	margin:0in;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	font-family:"Times New Roman";
+	mso-fareast-font-family:SimSun;}
+h1
+	{mso-margin-top-alt:auto;
+	margin-right:0in;
+	mso-margin-bottom-alt:auto;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	mso-outline-level:1;
+	font-size:24.0pt;
+	font-family:"Times New Roman";
+	font-weight:bold;}
+h2
+	{mso-margin-top-alt:auto;
+	margin-right:0in;
+	mso-margin-bottom-alt:auto;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	mso-outline-level:2;
+	font-size:18.0pt;
+	font-family:"Times New Roman";
+	font-weight:bold;}
+a:link, span.MsoHyperlink
+	{color:blue;
+	text-decoration:underline;
+	text-underline:single;}
+a:visited, span.MsoHyperlinkFollowed
+	{color:blue;
+	text-decoration:underline;
+	text-underline:single;}
+p
+	{mso-margin-top-alt:auto;
+	margin-right:0in;
+	mso-margin-bottom-alt:auto;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	font-family:"Times New Roman";
+	mso-fareast-font-family:SimSun;}
+@page Section1
+	{size:8.5in 11.0in;
+	margin:1.0in 1.25in 1.0in 1.25in;
+	mso-header-margin:.5in;
+	mso-footer-margin:.5in;
+	mso-paper-source:0;}
+div.Section1
+	{page:Section1;}
+-->
+</style>
+<!--[if gte mso 10]>
+<style>
+ /* Style Definitions */
+ table.MsoNormalTable
+	{mso-style-name:"Table Normal";
+	mso-tstyle-rowband-size:0;
+	mso-tstyle-colband-size:0;
+	mso-style-noshow:yes;
+	mso-style-parent:"";
+	mso-padding-alt:0in 5.4pt 0in 5.4pt;
+	mso-para-margin:0in;
+	mso-para-margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:10.0pt;
+	font-family:"Times New Roman";}
+</style>
+<![endif]-->
+<meta name=CREATED content="20070704;1002817">
+<meta name=CHANGEDBY content="a a">
+<meta name=CHANGED content="20070704;2123396">
+<!-- <pre><a name="header-text">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
+&quot;License&quot;); 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
+&quot;AS IS&quot; 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.   </a></pre>
+
+-->
+</head>
+
+<body lang=EN-US link=blue vlink=blue style='tab-interval:.5in'>
+
+<div class=Section1>
+
+<h1 style='margin:0in;margin-bottom:.0001pt'><span lang=PT-BR style='mso-ansi-language:
+PT-BR'>RDB DAS Transaction Sample<o:p></o:p></span></h1>
+
+<h2 style='margin:0in;margin-bottom:.0001pt'><span lang=PT-BR style='mso-ansi-language:
+PT-BR'><o:p>&nbsp;</o:p></span></h2>
+
+<h2 style='margin:0in;margin-bottom:.0001pt'><span lang=PT-BR style='mso-ansi-language:
+PT-BR'>Introduction<o:p></o:p></span></h2>
+
+<p style='margin:0in;margin-bottom:.0001pt'><span lang=PT-BR style='mso-ansi-language:
+PT-BR'>This stand-alone sample demonstrates the RDB Data Access Service
+transaction management with external Transaction Manager. This example uses Geronimo
+<span style='mso-spacerun:yes'> </span>as the transaction manager. <o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt'><b><span lang=PT-BR
+style='mso-ansi-language:PT-BR'><o:p>&nbsp;</o:p></span></b></p>
+
+<p style='margin:0in;margin-bottom:.0001pt'><b><span lang=PT-BR
+style='font-size:18.0pt;mso-ansi-language:PT-BR'>Example</span></b><span
+lang=PT-BR style='font-size:18.0pt;mso-ansi-language:PT-BR'><o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt'><span lang=PT-BR style='mso-ansi-language:
+PT-BR'>In this MoneyTransfer example,user entered amount will be withdrawn from
+one of his bankaccount using one call to das.applyChanges(dataGraph1) and same
+amount will<span style='mso-spacerun:yes'>  </span>be deposited to his another
+account using another call to das.applyChanges(dataGraph2). Based on whether
+user selects commit/rollback, these 2 applyChanges() will behave identically.
+i.e. both will commit or both will rollback, but partial transaction will not
+happen. Example build.xml - sets for transfer of 1200 from Account1 to Account2
+[commit].<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt'><b><span lang=PT-BR
+style='mso-ansi-language:PT-BR'><o:p>&nbsp;</o:p></span></b></p>
+
+<h2 style='margin:0in;margin-bottom:.0001pt'><span lang=PT-BR style='mso-ansi-language:
+PT-BR'>Building and Running<o:p></o:p></span></h2>
+
+<p style='margin:0in;margin-bottom:.0001pt'><b><span lang=PT-BR
+style='mso-ansi-language:PT-BR'><span style='mso-spacerun:yes'> </span></span></b><span
+lang=PT-BR style='mso-ansi-language:PT-BR'>From binary distribution, <b>base
+directory</b> is {DAS_ROOT}\ samples\transaction. Refer to below settings from
+this base directory.<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt'><span lang=PT-BR style='mso-ansi-language:
+PT-BR'>1]BankAccounts.xml available in sample-transaction.jar, is the DAS
+config file. Note that, as transaction is externally managed, this uses
+managedtx=false setting.<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt'><span lang=PT-BR style='mso-ansi-language:
+PT-BR'><o:p>&nbsp;</o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt'><span lang=PT-BR style='mso-ansi-language:
+PT-BR'>2]MySQL server should be running. The example uses MySQL DB (with innoDB
+ON to support transaction). Database <b>dastest, </b>table <b>bankaccount</b> and
+data will be created during sample run. For this preconfigured
+BankAccountDBConfig.xml available in sample-transaction.jar, will be used. User
+needs to set correct values for url, login etc. in this.<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt'><span lang=PT-BR style='mso-ansi-language:
+PT-BR'><o:p>&nbsp;</o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt'><span lang=PT-BR style='mso-ansi-language:
+PT-BR'>3] Apache Ant latest version should be installed.Download Apache Ant
+latest version on and extract into folder &lt;apache_ant_folder&gt;. You can
+find it here: <a href="http://ant.apache.org/bindownload.cgi">http://ant.apache.org/bindownload.cgi</a>.Add
+&lt;apache_ant_folder&gt;/bin directory to your OS path variable.<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt'><span lang=PT-BR style='mso-ansi-language:
+PT-BR'><o:p>&nbsp;</o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt'><span lang=PT-BR style='mso-ansi-language:
+PT-BR'>4] From <b>base directory </b>run-<span style='mso-spacerun:yes'> 
+</span>ant<o:p></o:p></span></p>
+
+<h2 style='margin:0in;margin-bottom:.0001pt'><span lang=PT-BR style='mso-ansi-language:
+PT-BR'><o:p>&nbsp;</o:p></span></h2>
+
+<p style='margin:0in;margin-bottom:.0001pt'><span lang=PT-BR style='mso-ansi-language:
+PT-BR'>The sample will run and output the following: <o:p></o:p></span></p>
+
+<div style='border:solid windowtext 1.0pt;mso-border-alt:solid windowtext .5pt;
+padding:1.0pt 4.0pt 1.0pt 4.0pt'>
+
+<p style='margin:0in;margin-bottom:.0001pt;border:none;mso-border-alt:solid windowtext .5pt;
+padding:0in;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span lang=PT-BR
+style='mso-ansi-language:PT-BR'>Buildfile: build.xml<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;border:none;mso-border-alt:solid windowtext .5pt;
+padding:0in;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span lang=PT-BR
+style='mso-ansi-language:PT-BR'><o:p>&nbsp;</o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;border:none;mso-border-alt:solid windowtext .5pt;
+padding:0in;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span lang=PT-BR
+style='mso-ansi-language:PT-BR'>run:<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;border:none;mso-border-alt:solid windowtext .5pt;
+padding:0in;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span lang=PT-BR
+style='mso-ansi-language:PT-BR'><span style='mso-spacerun:yes'>     </span>[java]
+INIT database<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;border:none;mso-border-alt:solid windowtext .5pt;
+padding:0in;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span lang=PT-BR
+style='mso-ansi-language:PT-BR'><span style='mso-spacerun:yes'>     </span>[java]
+INIT transaction manager<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;border:none;mso-border-alt:solid windowtext .5pt;
+padding:0in;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span lang=PT-BR
+style='mso-ansi-language:PT-BR'><span style='mso-spacerun:yes'>     </span>[java]
+Wed Sep 19 17:09:42 IST 2007 DEBUG: Executing XA statement: XA START<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;border:none;mso-border-alt:solid windowtext .5pt;
+padding:0in;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span lang=PT-BR
+style='mso-ansi-language:PT-BR'><span style='mso-spacerun:yes'> </span>0x01000000000000004bceb90109b6b0f3000000000000000000000000000000000000000000000<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;border:none;mso-border-alt:solid windowtext .5pt;
+padding:0in;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span lang=PT-BR
+style='mso-ansi-language:PT-BR'>000000000000000000000000000000000000000000000000000,0x00000000000000000000000000<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;border:none;mso-border-alt:solid windowtext .5pt;
+padding:0in;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span lang=PT-BR
+style='mso-ansi-language:PT-BR'>00000000000000000000000000000000000000000000000000000000000000000000000000000000<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;border:none;mso-border-alt:solid windowtext .5pt;
+padding:0in;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span lang=PT-BR
+style='mso-ansi-language:PT-BR'>0000000000000000000000,0x4765526f<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;border:none;mso-border-alt:solid windowtext .5pt;
+padding:0in;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span lang=PT-BR
+style='mso-ansi-language:PT-BR'><span style='mso-spacerun:yes'>     </span>[java]
+Get a connection<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;border:none;mso-border-alt:solid windowtext .5pt;
+padding:0in;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span lang=PT-BR
+style='mso-ansi-language:PT-BR'><span style='mso-spacerun:yes'>     </span>[java]
+Before transaction, table is:<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;border:none;mso-border-alt:solid windowtext .5pt;
+padding:0in;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span lang=PT-BR
+style='mso-ansi-language:PT-BR'><span style='mso-spacerun:yes'>     </span>[java]<span
+style='mso-spacerun:yes'>     </span>id<span style='mso-spacerun:yes'>     
+</span>name<span style='mso-spacerun:yes'>    </span>balance<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;border:none;mso-border-alt:solid windowtext .5pt;
+padding:0in;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span lang=PT-BR
+style='mso-ansi-language:PT-BR'><span style='mso-spacerun:yes'>     </span>[java]<span
+style='mso-spacerun:yes'>     </span>1<span style='mso-spacerun:yes'>      
+</span>John Feng<span style='mso-spacerun:yes'>       </span>1200<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;border:none;mso-border-alt:solid windowtext .5pt;
+padding:0in;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span lang=PT-BR
+style='mso-ansi-language:PT-BR'><span style='mso-spacerun:yes'>     </span>[java]<span
+style='mso-spacerun:yes'>     </span>2<span style='mso-spacerun:yes'>      
+</span>John Feng<span style='mso-spacerun:yes'>       </span>0<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;border:none;mso-border-alt:solid windowtext .5pt;
+padding:0in;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span lang=PT-BR
+style='mso-ansi-language:PT-BR'><span style='mso-spacerun:yes'>     </span>[java]
+Begin a transaction<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;border:none;mso-border-alt:solid windowtext .5pt;
+padding:0in;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span lang=PT-BR
+style='mso-ansi-language:PT-BR'><span style='mso-spacerun:yes'>     </span>[java]
+Update the table - 2 accounts<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;border:none;mso-border-alt:solid windowtext .5pt;
+padding:0in;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span lang=PT-BR
+style='mso-ansi-language:PT-BR'><span style='mso-spacerun:yes'>     </span>[java]
+*commit* the transaction<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;border:none;mso-border-alt:solid windowtext .5pt;
+padding:0in;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span lang=PT-BR
+style='mso-ansi-language:PT-BR'><span style='mso-spacerun:yes'>     </span>[java]
+Wed Sep 19 17:09:45 IST 2007 DEBUG: Executing XA statement: XA END 0<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;border:none;mso-border-alt:solid windowtext .5pt;
+padding:0in;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span lang=PT-BR
+style='mso-ansi-language:PT-BR'>x01000000000000004bceb90109b6b0f300000000000000000000000000000000000000000000000<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;border:none;mso-border-alt:solid windowtext .5pt;
+padding:0in;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span lang=PT-BR
+style='mso-ansi-language:PT-BR'>0000000000000000000000000000000000000000000000000,0x0000000000000000000000000000<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;border:none;mso-border-alt:solid windowtext .5pt;
+padding:0in;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span lang=PT-BR
+style='mso-ansi-language:PT-BR'>00000000000000000000000000000000000000000000000000000000000000000000000000000000<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;border:none;mso-border-alt:solid windowtext .5pt;
+padding:0in;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span lang=PT-BR
+style='mso-ansi-language:PT-BR'>00000000000000000000,0x4765526f<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;border:none;mso-border-alt:solid windowtext .5pt;
+padding:0in;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span lang=PT-BR
+style='mso-ansi-language:PT-BR'><span style='mso-spacerun:yes'>     </span>[java]
+Wed Sep 19 17:09:45 IST 2007 DEBUG: Executing XA statement: XA PREPA<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;border:none;mso-border-alt:solid windowtext .5pt;
+padding:0in;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span lang=PT-BR
+style='mso-ansi-language:PT-BR'>RE 0x01000000000000004bceb90109b6b0f30000000000000000000000000000000000000000000<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;border:none;mso-border-alt:solid windowtext .5pt;
+padding:0in;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span lang=PT-BR
+style='mso-ansi-language:PT-BR'>00000000000000000000000000000000000000000000000000000,0x000000000000000000000000<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;border:none;mso-border-alt:solid windowtext .5pt;
+padding:0in;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span lang=PT-BR
+style='mso-ansi-language:PT-BR'>00000000000000000000000000000000000000000000000000000000000000000000000000000000<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;border:none;mso-border-alt:solid windowtext .5pt;
+padding:0in;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span lang=PT-BR
+style='mso-ansi-language:PT-BR'>000000000000000000000000,0x4765526f<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;border:none;mso-border-alt:solid windowtext .5pt;
+padding:0in;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span lang=PT-BR
+style='mso-ansi-language:PT-BR'><span style='mso-spacerun:yes'>     </span>[java]
+Wed Sep 19 17:09:45 IST 2007 DEBUG: Executing XA statement: XA COMMI<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;border:none;mso-border-alt:solid windowtext .5pt;
+padding:0in;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span lang=PT-BR
+style='mso-ansi-language:PT-BR'>T 0x01000000000000004bceb90109b6b0f300000000000000000000000000000000000000000000<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;border:none;mso-border-alt:solid windowtext .5pt;
+padding:0in;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span lang=PT-BR
+style='mso-ansi-language:PT-BR'>0000000000000000000000000000000000000000000000000000,0x0000000000000000000000000<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;border:none;mso-border-alt:solid windowtext .5pt;
+padding:0in;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span lang=PT-BR
+style='mso-ansi-language:PT-BR'>00000000000000000000000000000000000000000000000000000000000000000000000000000000<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;border:none;mso-border-alt:solid windowtext .5pt;
+padding:0in;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span lang=PT-BR
+style='mso-ansi-language:PT-BR'>00000000000000000000000,0x4765526f<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;border:none;mso-border-alt:solid windowtext .5pt;
+padding:0in;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span lang=PT-BR
+style='mso-ansi-language:PT-BR'><span style='mso-spacerun:yes'>     </span>[java]
+After transaction, table is:<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;border:none;mso-border-alt:solid windowtext .5pt;
+padding:0in;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span lang=PT-BR
+style='mso-ansi-language:PT-BR'><span style='mso-spacerun:yes'>     </span>[java]<span
+style='mso-spacerun:yes'>     </span>id<span style='mso-spacerun:yes'>     
+</span>name<span style='mso-spacerun:yes'>    </span>balance<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;border:none;mso-border-alt:solid windowtext .5pt;
+padding:0in;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span lang=PT-BR
+style='mso-ansi-language:PT-BR'><span style='mso-spacerun:yes'>     </span>[java]<span
+style='mso-spacerun:yes'>     </span>1<span style='mso-spacerun:yes'>      
+</span>John Feng<span style='mso-spacerun:yes'>       </span>0<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;border:none;mso-border-alt:solid windowtext .5pt;
+padding:0in;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span lang=PT-BR
+style='mso-ansi-language:PT-BR'><span style='mso-spacerun:yes'>     </span>[java]<span
+style='mso-spacerun:yes'>     </span>2<span style='mso-spacerun:yes'>      
+</span>John Feng<span style='mso-spacerun:yes'>       </span>1200<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;border:none;mso-border-alt:solid windowtext .5pt;
+padding:0in;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span lang=PT-BR
+style='mso-ansi-language:PT-BR'><span style='mso-spacerun:yes'>     </span>[java]
+Cleanup<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;border:none;mso-border-alt:solid windowtext .5pt;
+padding:0in;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span lang=PT-BR
+style='mso-ansi-language:PT-BR'><span style='mso-spacerun:yes'>     </span>[java]
+End MoneyTransfer<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;border:none;mso-border-alt:solid windowtext .5pt;
+padding:0in;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span lang=PT-BR
+style='mso-ansi-language:PT-BR'><span style='mso-spacerun:yes'>     </span>[java]<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;border:none;mso-border-alt:solid windowtext .5pt;
+padding:0in;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span lang=PT-BR
+style='mso-ansi-language:PT-BR'><o:p>&nbsp;</o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;border:none;mso-border-alt:solid windowtext .5pt;
+padding:0in;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span lang=PT-BR
+style='mso-ansi-language:PT-BR'>BUILD SUCCESSFUL<o:p></o:p></span></p>
+
+<p style='margin:0in;margin-bottom:.0001pt;border:none;mso-border-alt:solid windowtext .5pt;
+padding:0in;mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt'><span lang=PT-BR
+style='mso-ansi-language:PT-BR'>Total time: 8 seconds<o:p></o:p></span></p>
+
+</div>
+
+<p style='margin:0in;margin-bottom:.0001pt'><b><span lang=PT-BR
+style='mso-ansi-language:PT-BR'>Observation:</span></b><span lang=PT-BR
+style='mso-ansi-language:PT-BR'> The build.xml ant file only works on DAS Java binary
+distribution.<o:p></o:p></span></p>
+
+</div>
+
+</body>
+
+</html>

Added: incubator/tuscany/java/das/samples/transaction/src/main/java/org/apache/tuscany/samples/das/databaseSetup/DatabaseSetupUtil.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/samples/transaction/src/main/java/org/apache/tuscany/samples/das/databaseSetup/DatabaseSetupUtil.java?rev=577605&view=auto
==============================================================================
--- incubator/tuscany/java/das/samples/transaction/src/main/java/org/apache/tuscany/samples/das/databaseSetup/DatabaseSetupUtil.java (added)
+++ incubator/tuscany/java/das/samples/transaction/src/main/java/org/apache/tuscany/samples/das/databaseSetup/DatabaseSetupUtil.java Thu Sep 20 00:38:23 2007
@@ -0,0 +1,67 @@
+/*
+ * 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.samples.das.databaseSetup;
+
+import java.sql.Connection;
+import java.sql.ResultSet;
+
+import org.apache.tuscany.das.rdb.dbconfig.DBConfig;
+import org.apache.tuscany.das.rdb.dbconfig.DBConfigUtil;
+import org.apache.tuscany.das.rdb.dbconfig.DBInitializer;
+import org.apache.tuscany.samples.das.tx.manager.GeronimoTransactionManagerUtil;
+
+/**
+ * Setup database, XA resources required by the sample
+ * 
+ *
+ */
+public class DatabaseSetupUtil {
+    private static DBConfig dbConfig = null;
+    /**
+     * Constructor for DatabaseSetupUtil.
+     */
+    public DatabaseSetupUtil(String dbConfigFile) throws Exception {
+    	//create database tables, data
+    	DBInitializer dbInitializer = new DBInitializer(dbConfigFile);
+    	dbInitializer.refreshDatabaseData();
+    	//read DAS Config
+    	dbConfig = DBConfigUtil.loadDBConfig(ClassLoader.getSystemResourceAsStream(dbConfigFile));
+    }
+    
+    public static DBConfig getDBConfig() {
+    	return DatabaseSetupUtil.dbConfig;
+    }
+    
+    public static void main(String[] args) throws Exception{
+    	//test program
+    	new DatabaseSetupUtil("BankAccountDBConfig.xml");
+    	GeronimoTransactionManagerUtil tmUtil = new GeronimoTransactionManagerUtil();
+    	tmUtil.initTransactionManager();
+    	tmUtil.startTransaction();
+    	Connection conn = tmUtil.getConnection();
+    	
+        ResultSet rs = conn.createStatement().executeQuery("select id, balance from bankaccount");
+        while(rs.next()){
+        	System.out.println("result row: "+rs.getInt(1)+","+rs.getString(2));
+        }
+        
+        tmUtil.commitTransaction();
+
+    }    
+}

Added: incubator/tuscany/java/das/samples/transaction/src/main/java/org/apache/tuscany/samples/das/tx/manager/GeronimoTransactionManagerService.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/samples/transaction/src/main/java/org/apache/tuscany/samples/das/tx/manager/GeronimoTransactionManagerService.java?rev=577605&view=auto
==============================================================================
--- incubator/tuscany/java/das/samples/transaction/src/main/java/org/apache/tuscany/samples/das/tx/manager/GeronimoTransactionManagerService.java (added)
+++ incubator/tuscany/java/das/samples/transaction/src/main/java/org/apache/tuscany/samples/das/tx/manager/GeronimoTransactionManagerService.java Thu Sep 20 00:38:23 2007
@@ -0,0 +1,118 @@
+/*
+ * 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.samples.das.tx.manager;
+
+import javax.transaction.HeuristicMixedException;
+import javax.transaction.HeuristicRollbackException;
+import javax.transaction.InvalidTransactionException;
+import javax.transaction.NotSupportedException;
+import javax.transaction.RollbackException;
+import javax.transaction.SystemException;
+import javax.transaction.Transaction;
+import javax.transaction.TransactionManager;
+
+import org.apache.geronimo.transaction.manager.TransactionManagerImpl;
+import org.apache.geronimo.transaction.manager.XidFactoryImpl;
+
+/**
+ * A <code>TransactionManager</code> that delegates to a Geronimo JTA transaction manager. This class serves as a
+ * wrapper for initializing the Geronimo TM as a system service.
+ *
+ * @version $Rev$ $Date$
+ */
+public class GeronimoTransactionManagerService implements TransactionManager {
+    private TransactionManager transactionManager;
+    private int timeout = 250;
+
+    public GeronimoTransactionManagerService() {
+    }
+
+    /**
+     * Returns the transaction timeout in seconds
+     *
+     * @return the transaction timeout in seconds
+     */
+    public int getTimeout() {
+        return timeout;
+    }
+
+    /**
+     * Sets the transaction timeout in seconds
+     */
+    public void setTimeout(int timeout) {
+        this.timeout = timeout;
+    }
+
+    public void init() throws Exception {
+        XidFactoryImpl factory = new XidFactoryImpl();
+        transactionManager = new TransactionManagerImpl(timeout, factory, null, null);        
+    }
+
+    public void begin() throws NotSupportedException, SystemException {
+        transactionManager.begin();
+    }
+
+    public void commit() throws HeuristicMixedException,
+                                HeuristicRollbackException,
+                                IllegalStateException,
+                                RollbackException,
+                                SecurityException,
+                                SystemException {
+        transactionManager.commit();
+    }
+
+    public TransactionManager getTransactionManager() {
+        return transactionManager;
+    }
+
+    public int getStatus() throws SystemException {
+        return transactionManager.getStatus();
+    }
+
+    public Transaction getTransaction() throws SystemException {
+        return transactionManager.getTransaction();
+    }
+
+    public void resume(Transaction transaction)
+        throws IllegalStateException, InvalidTransactionException, SystemException {
+        transactionManager.resume(transaction);
+    }
+
+    public void rollback() throws IllegalStateException, SecurityException, SystemException {
+        transactionManager.rollback();
+    }
+
+    public void setRollbackOnly() throws IllegalStateException, SystemException {
+        transactionManager.setRollbackOnly();
+    }
+
+    public void setTransactionTimeout(int i) throws SystemException {
+        transactionManager.setTransactionTimeout(i);
+    }
+
+    public Transaction suspend() throws SystemException {
+        return transactionManager.suspend();
+    }
+
+    public void begin(long timeout) throws NotSupportedException, SystemException {
+        transactionManager.begin();
+        return;
+    }
+
+}

Added: incubator/tuscany/java/das/samples/transaction/src/main/java/org/apache/tuscany/samples/das/tx/manager/GeronimoTransactionManagerUtil.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/samples/transaction/src/main/java/org/apache/tuscany/samples/das/tx/manager/GeronimoTransactionManagerUtil.java?rev=577605&view=auto
==============================================================================
--- incubator/tuscany/java/das/samples/transaction/src/main/java/org/apache/tuscany/samples/das/tx/manager/GeronimoTransactionManagerUtil.java (added)
+++ incubator/tuscany/java/das/samples/transaction/src/main/java/org/apache/tuscany/samples/das/tx/manager/GeronimoTransactionManagerUtil.java Thu Sep 20 00:38:23 2007
@@ -0,0 +1,122 @@
+/*
+ * 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.samples.das.tx.manager;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+
+import javax.sql.XAConnection;
+import javax.sql.XADataSource;
+import javax.transaction.xa.XAResource;
+import javax.transaction.xa.Xid;
+
+import org.apache.geronimo.transaction.manager.XidFactory;
+import org.apache.geronimo.transaction.manager.XidFactoryImpl;
+import org.apache.tuscany.das.rdb.dbconfig.DBConfig;
+import org.apache.tuscany.samples.das.databaseSetup.DatabaseSetupUtil;
+
+import com.mysql.jdbc.jdbc2.optional.MysqlXADataSource;
+
+public class GeronimoTransactionManagerUtil {
+	private GeronimoTransactionManagerService service;
+    private static XADataSource xads;
+    private static XAConnection xaconn = null;
+    private static XAResource xares = null;
+    private static XidFactory xidFact = null;
+    private static Xid xid = null;
+	
+    public void initTransactionManager() {
+        // Get a transction manager
+        try {
+        	xidFact = new XidFactoryImpl();
+        	// creates an instance of Geronimo TM Service        	
+        	service = new GeronimoTransactionManagerService();
+            service.init();
+            service.begin();
+            initDataSource();
+            initXAConnection();
+        } catch (Exception e) {
+            e.printStackTrace();
+            System.exit(1);
+        }
+    }
+	
+    private void initDataSource() {
+        //setup XADataSource
+    	xads = new MysqlXADataSource();       
+        try {
+        	DBConfig dbcfg = DatabaseSetupUtil.getDBConfig();
+        	((MysqlXADataSource) xads).setUser(dbcfg.getConnectionInfo().getConnectionProperties().getUserName());
+        	((MysqlXADataSource) xads).setPassword(dbcfg.getConnectionInfo().getConnectionProperties().getPassword());
+            ((MysqlXADataSource) xads).setUrl(dbcfg.getConnectionInfo().getConnectionProperties().getDatabaseURL());
+            ((MysqlXADataSource) xads).setURL(dbcfg.getConnectionInfo().getConnectionProperties().getDatabaseURL());
+        } catch (Exception e) {
+            e.printStackTrace();
+            System.exit(1);
+        }
+    }
+
+    private void initXAConnection() throws SQLException{
+    	DBConfig dbcfg = DatabaseSetupUtil.getDBConfig();
+    	xaconn = xads.getXAConnection(dbcfg.getConnectionInfo().getConnectionProperties().getUserName(), 
+    			dbcfg.getConnectionInfo().getConnectionProperties().getPassword());
+    }
+
+    public void startTransaction() throws Exception {
+    	try{
+            //create XAResource
+            xid= xidFact.createXid();
+            xares = xaconn.getXAResource();
+            xares.setTransactionTimeout(250); //something
+            xares.start(xid, XAResource.TMNOFLAGS);            
+            return;    		
+    	}catch(Exception e) {
+    		e.printStackTrace();
+    		throw e;
+    	}
+    }
+    
+    public void commitTransaction() throws Exception {
+    	xares.end(xid, XAResource.TMSUCCESS);
+    	xares.prepare(xid);
+    	xares.commit(xid, false); //onePhase=true/false
+    }
+    
+    public void rollbackTransaction() throws Exception {
+    	xares.end(xid, XAResource.TMFAIL);
+    	xares.prepare(xid);
+    	xares.rollback(xid);    	
+    }
+    
+    public Connection getConnection() throws SQLException {
+        return xaconn.getConnection();
+    }
+
+    /**
+     * cleanup
+     */
+    public void cleanup() throws Exception{
+    	xaconn.close();
+    	xid = null;
+    	xares = null;
+    	xaconn = null;
+    	xads = null;
+    	service.commit();
+    }
+}

Added: incubator/tuscany/java/das/samples/transaction/src/main/java/org/apache/tuscany/samples/das/tx/sample/MoneyTransfer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/samples/transaction/src/main/java/org/apache/tuscany/samples/das/tx/sample/MoneyTransfer.java?rev=577605&view=auto
==============================================================================
--- incubator/tuscany/java/das/samples/transaction/src/main/java/org/apache/tuscany/samples/das/tx/sample/MoneyTransfer.java (added)
+++ incubator/tuscany/java/das/samples/transaction/src/main/java/org/apache/tuscany/samples/das/tx/sample/MoneyTransfer.java Thu Sep 20 00:38:23 2007
@@ -0,0 +1,193 @@
+/*
+ * 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.samples.das.tx.sample;
+
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.Statement;
+import java.io.InputStream;
+
+import org.apache.tuscany.das.rdb.Command;
+import org.apache.tuscany.das.rdb.DAS;
+import org.apache.tuscany.samples.das.databaseSetup.DatabaseSetupUtil;
+import org.apache.tuscany.samples.das.tx.manager.GeronimoTransactionManagerUtil;
+
+import commonj.sdo.DataObject;
+
+/**
+ * Sample using Geronimo TM to execute multiple DAS applyChanges() under one transaction.
+ * 
+ */
+public class MoneyTransfer {
+
+    private static final String USAGE = "usage: java MoneyTransfer [commit|rollback] [transferAmount]";
+    private static final String SQL_REQUEST = "select id, name, balance from bankaccount";
+    private static Connection conn = null;
+	private static DAS das = null;
+
+    private static void printTable() {
+        try {
+            Statement stmt = conn.createStatement();
+            ResultSet rset = stmt.executeQuery(SQL_REQUEST);
+            int numcols = rset.getMetaData().getColumnCount();
+            for (int i = 1; i <= numcols; i++) {
+                System.out.print("\t" + rset.getMetaData().getColumnName(i));
+            }
+            System.out.println();
+            while (rset.next()) {
+                for (int i = 1; i <= numcols; i++) {
+                    System.out.print("\t" + rset.getString(i));
+                }
+                System.out.println("");
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    public static void main(String[] args) {
+    	GeronimoTransactionManagerUtil tmUtil = null;
+    	
+        if (args.length != 2 || (!args[0].equals("commit") && !args[0].equals("rollback"))) {
+            System.out.println(USAGE + "\n");
+            System.exit(1);
+        }
+
+        String completion = args[0];
+        float transferAmount = 0;
+        try {
+        	transferAmount = Float.parseFloat(args[1]);
+        } catch (NumberFormatException e) {
+            System.out.println(USAGE);
+            System.out.println("[transferAmount] has to be a float\n");
+            System.exit(1);
+        }
+
+        System.out.println("INIT database");        
+        try{
+        	new DatabaseSetupUtil("BankAccountDBConfig.xml");
+        }catch(Exception e){
+        	e.printStackTrace();
+        	System.exit(1);
+        }
+        
+        try {
+            System.out.println("INIT transaction manager");
+            tmUtil = new GeronimoTransactionManagerUtil();
+        	tmUtil.initTransactionManager();
+        	tmUtil.startTransaction();
+        } catch (Exception e) {
+            System.out.println("Exception of type :" + e.getClass().getName() + " has been thrown");
+            System.out.println("Exception message :" + e.getMessage());
+            e.printStackTrace();
+            System.exit(1);
+        }
+
+        try {
+            System.out.println("Get a connection");
+            conn = tmUtil.getConnection();
+            conn.setAutoCommit(false);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        System.out.println("Before transaction, table is:");
+        printTable();
+
+        try {
+            System.out.println("Begin a transaction");            
+            init(); //initialize DAS instance            
+            System.out.println("Update the table - 2 accounts");
+            withdrawFromBankAccount1(transferAmount);
+            depositToBankAccount2(transferAmount);
+            
+            if (completion.equals("commit")) {
+                System.out.println("*commit* the transaction");
+                tmUtil.commitTransaction();
+            } else {
+                System.out.println("*rollback* the transaction");
+                tmUtil.rollbackTransaction();
+            }
+        } catch (Exception e) {
+            System.out.println("Exception of type :" + e.getClass().getName() + " has been thrown");
+            System.out.println("Exception message :" + e.getMessage());
+            e.printStackTrace();
+            System.exit(1);
+        }
+
+        System.out.println("After transaction, table is:");
+        printTable();
+
+        System.out.println("Cleanup");
+        try {
+        	tmUtil.cleanup();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        
+        System.out.println("End MoneyTransfer\n");
+        System.exit(0);
+    }
+
+    private static void init(){
+			try{
+				das = DAS.FACTORY.createDAS(getConfig("BankAccounts.xml"), conn);
+			}catch(Exception e){
+				e.printStackTrace();
+			}
+	}
+
+	/**
+	 * Withdraw asked amount from account1
+	 * @return
+	 */
+    public static final void withdrawFromBankAccount1(float transferAmount) {
+        Command read = das.getCommand("BankAccount1Data");
+        DataObject root = read.executeQuery();
+        DataObject account1 = (DataObject)root.getList("BANKACCOUNT").get(0);
+        float currentBalance = account1.getFloat("BALANCE");
+        float newBalance = currentBalance - transferAmount;
+        account1.setFloat("BALANCE", newBalance);
+        das.applyChanges(root);
+    }
+
+	/**
+	 * Deposit asked amount into account2
+	 * @return
+	 */
+    public static final void depositToBankAccount2(float transferAmount) {
+        Command read = das.getCommand("BankAccount2Data");
+        DataObject root = read.executeQuery();
+        DataObject account2 = (DataObject)root.getList("BANKACCOUNT").get(0);
+        float currentBalance = account2.getFloat("BALANCE");
+        float newBalance = currentBalance + transferAmount;
+        account2.setFloat("BALANCE", newBalance);
+        das.applyChanges(root);
+    }
+    
+	/**Utilities
+     *
+     * @param fileName
+     * @return
+     */
+    private static InputStream getConfig(String fileName) {
+    	MoneyTransfer jdbcExample = new MoneyTransfer(); 
+        return jdbcExample.getClass().getClassLoader().getResourceAsStream(fileName);
+    }
+}

Added: incubator/tuscany/java/das/samples/transaction/src/main/resources/BankAccountDBConfig.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/samples/transaction/src/main/resources/BankAccountDBConfig.xml?rev=577605&view=auto
==============================================================================
--- incubator/tuscany/java/das/samples/transaction/src/main/resources/BankAccountDBConfig.xml (added)
+++ incubator/tuscany/java/das/samples/transaction/src/main/resources/BankAccountDBConfig.xml Thu Sep 20 00:38:23 2007
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+  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.
+ -->
+<DBConfig xmlns="http:///org.apache.tuscany.das.rdb/dbconfig.xsd">
+    <ConnectionInfo>
+		<ConnectionProperties 
+			driverClass="com.mysql.jdbc.Driver" 
+			databaseURL="jdbc:mysql://localhost/dastest?createDatabaseIfNotExist=true" 
+			userName="root"
+			password="mypwd"/>
+	</ConnectionInfo>
+					        
+	<Table name="BANKACCOUNT" SQLCreate="CREATE TABLE BANKACCOUNT (ID INT PRIMARY KEY NOT NULL, NAME VARCHAR(30), BALANCE float )type=InnoDB">
+		<row>1, 'John Feng', 1200</row>
+		<row>2, 'John Feng', 0</row>
+	</Table>
+	
+</DBConfig>

Added: incubator/tuscany/java/das/samples/transaction/src/main/resources/BankAccounts.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/samples/transaction/src/main/resources/BankAccounts.xml?rev=577605&view=auto
==============================================================================
--- incubator/tuscany/java/das/samples/transaction/src/main/resources/BankAccounts.xml (added)
+++ incubator/tuscany/java/das/samples/transaction/src/main/resources/BankAccounts.xml Thu Sep 20 00:38:23 2007
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--
+  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.
+ -->
+ <Config xmlns="http:///org.apache.tuscany.das.rdb/config.xsd"> 
+	<ConnectionInfo managedtx="false" />
+				
+    <Command name="BankAccount1Data" SQL="select ID, NAME, BALANCE from BANKACCOUNT where ID=1" kind="Select"/>
+    <Command name="BankAccount2Data" SQL="select ID, NAME, BALANCE from BANKACCOUNT where ID=2" kind="Select"/>
+    
+    <Table tableName="BANKACCOUNT">
+        <Column columnName="ID" primaryKey="true"/>
+    </Table>
+    	
+</Config>



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org