Author: adrianocrestani Date: Tue Sep 4 09:50:19 2007 New Revision: 572735
URL: http://svn.apache.org/viewvc?rev=572735&view=rev Log: applying patch from JIRA-1466 Added: incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/BankAccountData.java incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/DepartmentsData.java incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/EmployeesData.java incubator/tuscany/java/das/rdb/src/test/resources/extTxWithExtConnection.xml incubator/tuscany/java/das/rdb/src/test/resources/extTxWithIntConnection.xml incubator/tuscany/java/das/rdb/src/test/resources/extTxnIntConnectionRollback.xml Modified: incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/DAS.java incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/DASImpl.java incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/TransactionTests.java incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/DatabaseSetup.java Modified: incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/DAS.java URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/DAS.java?rev=572735&r1=572734&r2=572735&view=diff ============================================================================== --- incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/DAS.java (original) +++ incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/DAS.java Tue Sep 4 09:50:19 2007 @@ -18,6 +18,8 @@ */ package org.apache.tuscany.das.rdb; +import java.sql.Connection; + import org.apache.tuscany.das.rdb.impl.DASFactoryImpl; import commonj.sdo.DataObject; @@ -64,4 +66,9 @@ */ Command createCommand(String sql); + /** + * Make connection available for user to control transaction externally + * @return + */ + Connection getConnection(); } Modified: incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/DASImpl.java URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/DASImpl.java?rev=572735&r1=572734&r2=572735&view=diff ============================================================================== --- incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/DASImpl.java (original) +++ incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/DASImpl.java Tue Sep 4 09:50:19 2007 @@ -87,8 +87,7 @@ throw new RuntimeException("Invalid kind of command: " + kind); } - } - + } } public DASImpl(Config inConfig, Connection inConnection) { @@ -111,7 +110,7 @@ * @see org.apache.tuscany.das.rdb.CommandGroup#getApplyChangesCommand() */ public ApplyChangesCommandImpl getApplyChangesCommand() { - ApplyChangesCommandImpl cmd = new ApplyChangesCommandImpl(configWrapper, getConnection()); + ApplyChangesCommandImpl cmd = new ApplyChangesCommandImpl(configWrapper, getConnectionFromConfig()); return cmd; } @@ -125,7 +124,7 @@ throw new RuntimeException("CommandGroup has no command named: " + name); } CommandImpl cmd = (CommandImpl) commands.get(name); - cmd.setConnection(getConnection(), configWrapper.getConfig()); + cmd.setConnection(getConnectionFromConfig(), configWrapper.getConfig()); return cmd; } @@ -133,7 +132,7 @@ this.connection = connection; } - public Connection getConnection() { + private Connection getConnectionFromConfig() { if (connection == null) { initializeConnection(); } @@ -142,6 +141,7 @@ private void initializeConnection() { Config config = configWrapper.getConfig(); + if (config == null || config.getConnectionInfo() == null || (config.getConnectionInfo().getDataSource() == null && config.getConnectionInfo().getConnectionProperties() == null)) { throw new RuntimeException("No connection has been provided and no data source has been specified"); @@ -258,15 +258,15 @@ } /** - * If the config has connection properties then we are "managing" the connection via DataSource + * If the DAS is managing connection, let it close it, else not */ private boolean managingConnections() { - if (configWrapper.getConfig().getConnectionInfo().getDataSource() == null) { - return false; + if (configWrapper.getConfig().getConnectionInfo().isManagedtx()) { + return true; } - return true; + return false; } @@ -302,7 +302,7 @@ throw new RuntimeException("SQL => " + sql + " is not valid"); } - returnCmd.setConnection(getConnection(), config.getConfig()); + returnCmd.setConnection(getConnectionFromConfig(), config.getConfig()); return returnCmd; } @@ -310,4 +310,24 @@ getApplyChangesCommand().execute(root); } -} \ No newline at end of file + public Connection getConnection() { + getConnectionFromConfig(); + //connection created from DAS but tx management by client + if(this.configWrapper.getConfig() != null && + this.configWrapper.getConfig().getConnectionInfo() != null && + !this.configWrapper.getConfig().getConnectionInfo().isManagedtx()){ + return this.connection; + } + //connection from client + else if(this.configWrapper.getConfig() == null || + this.configWrapper.getConfig().getConnectionInfo() == null || + (this.configWrapper.getConfig().getConnectionInfo().getDataSource()==null && + this.configWrapper.getConfig().getConnectionInfo().getConnectionProperties()==null)){ + return this.connection; + } + //connection from DAS and tx management by DAS + else{ + throw new RuntimeException("DAS is controlling transaction, can not expose Connection!"); + } + } +} Modified: incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/TransactionTests.java URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/TransactionTests.java?rev=572735&r1=572734&r2=572735&view=diff ============================================================================== --- incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/TransactionTests.java (original) +++ incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/TransactionTests.java Tue Sep 4 09:50:19 2007 @@ -27,16 +27,28 @@ import org.apache.tuscany.das.rdb.Command; import org.apache.tuscany.das.rdb.DAS; +import org.apache.tuscany.das.rdb.impl.DASImpl; +import org.apache.tuscany.das.rdb.test.data.BankAccountData; import org.apache.tuscany.das.rdb.test.data.CustomerData; +import org.apache.tuscany.das.rdb.test.data.DepartmentsData; +import org.apache.tuscany.das.rdb.test.data.EmployeesData; import org.apache.tuscany.das.rdb.test.framework.DasTest; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.Iterator; + import commonj.sdo.DataObject; +import commonj.sdo.helper.XMLHelper; public class TransactionTests extends DasTest { protected void setUp() throws Exception { super.setUp(); new CustomerData(getAutoConnection()).refresh(); + new DepartmentsData(getAutoConnection()).refresh(); + new EmployeesData(getAutoConnection()).refresh(); + new BankAccountData(getAutoConnection()).refresh(); } protected void tearDown() throws Exception { @@ -84,4 +96,125 @@ } + /** + * Demonstrate that DAS allows external control of transaction when using + * external connection. i.e. ConnectionInfo with only managedtx=false + */ + public void testAbleToControlExternallyInitedTransaction() throws Exception { + // Create and initialize a DAS connection and initialize for externally + // managed transaction boundaries. + java.sql.Connection c = getConnection(); + + //"John Jones" is in "Advanced Technologies"(Department1) + DAS das = DAS.FACTORY.createDAS(getConfig("extTxWithExtConnection.xml"),c); + Command selEmpForDep1 = das.getCommand("SelectEmployeesFromDepartment1"); + DataObject root1 = selEmpForDep1.executeQuery(); + DataObject department1 = (DataObject)root1.getList("DEPARTMENTS").get(0); + assertEquals("Advanced Technologies", department1.getString("NAME")); + DataObject employee1 = (DataObject)department1.getList("employed").get(0); + assertEquals("John Jones", employee1.getString("NAME")); + + //remove "John Jones" from "Advanced Technologies"(Department1) + employee1.delete(); + das.applyChanges(root1); + + //user decided to revert the decision to remove and thus issues rollback + c.rollback(); + + //user wants to ensure that "John Jones" is still in Department1 + root1 = selEmpForDep1.executeQuery(); + department1 = (DataObject)root1.getList("DEPARTMENTS").get(0); + assertEquals("Advanced Technologies", department1.getString("NAME")); + boolean employeeRetained = isEmployeeInDepartment(root1, "John Jones"); + assertEquals(true, employeeRetained);//this shows that employee is not removed due to rollback + //so proves that user is managing tx and not DAS + } + + private boolean isEmployeeInDepartment(DataObject root, String employeeName){ + //iterate for all employees in department1 is ensure that employeeName is there + Iterator itr = ((DataObject)root.getList("DEPARTMENTS").get(0)).getList("employed").iterator(); + boolean employeeRetained = false; + while(itr.hasNext()){ + DataObject employee = (DataObject)itr.next(); + if(employee.getString("NAME").equals(employeeName)){ + employeeRetained = true; + } + } + return employeeRetained; + } + + /** + * Demonstrate that user can control tx when connection is from DAS for single command + */ + public void testAbleToCommitTransaction() throws Exception { + //"John Jones" is in "Advanced Technologies"(Department1) + DAS das = DAS.FACTORY.createDAS(getConfig("extTxWithIntConnection.xml")); + Connection conn = ((DASImpl)das).getConnection(); + //connection is created from config, not passed by user. + Command selEmpForDep1 = das.getCommand("SelectEmployeesFromDepartment1"); + DataObject root1 = selEmpForDep1.executeQuery(); + DataObject department1 = (DataObject)root1.getList("DEPARTMENTS").get(0); + assertEquals("Advanced Technologies", department1.getString("NAME")); + DataObject employee1 = (DataObject)department1.getList("employed").get(0); + assertEquals("John Jones", employee1.getString("NAME")); + //remove "John Jones" from "Advanced Technologies"(Department1) + employee1.delete(); + das.applyChanges(root1); + conn.commit(); + //now open a fresh connection and check data in database + java.sql.Connection c = getConnection(); + DAS dasFresh = DAS.FACTORY.createDAS(getConfig("extTxWithExtConnection.xml"),c); + Command selEmpForDepFresh1 = dasFresh.getCommand("SelectEmployeesFromDepartment1"); + DataObject rootFresh1 = selEmpForDepFresh1.executeQuery(); + boolean employeeRetained1 = isEmployeeInDepartment(rootFresh1, "John Jones"); + + assertEquals(false, employeeRetained1); + } + + /** + * Demonstrate that user can control tx for group of commands when connection is created in DAS + */ + public void testDataIntegrity() throws Exception { + //remove $200 from account1 and add $200 to account2 + //when doing add to account2 operation user rolls back + //account1 and account2 both should have original balance. + DAS das = DAS.FACTORY.createDAS(getConfig("extTxnIntConnectionRollback.xml")); + //connection is created from config, not passed by user. + + //check original balance from account1 + Command SelectBalanceFromAccount1 = das.getCommand("SelectBalanceFromAccount1"); + DataObject root1 = SelectBalanceFromAccount1.executeQuery(); + DataObject bankAccount1 = (DataObject)root1.getList("BANKACCOUNT").get(0); + assertEquals(10000, bankAccount1.getInt("BALANCE")); + + //remove $200 from account1 + bankAccount1.setInt("BALANCE", (bankAccount1.getInt("BALANCE")-200)); + das.applyChanges(root1); + + //check original balance from account2 + Command SelectBalanceFromAccount2 = das.getCommand("SelectBalanceFromAccount2"); + DataObject root2 = SelectBalanceFromAccount2.executeQuery(); + DataObject bankAccount2 = (DataObject)root2.getList("BANKACCOUNT").get(0); + assertEquals(5000, bankAccount2.getInt("BALANCE")); + + //add "$200" to account2 + bankAccount2.setInt("BALANCE", (bankAccount2.getInt("BALANCE")+200)); + das.applyChanges(root2); + das.getConnection().rollback();//say user may get exception here in a try-catch and decides to rollback + + //now open a fresh DAS and check data in database + DAS dasFresh = DAS.FACTORY.createDAS(getConfig("extTxnIntConnectionRollback.xml")); + + Command SelectBalanceFromAccount1Fresh = dasFresh.getCommand("SelectBalanceFromAccount1"); + DataObject rootFresh1 = SelectBalanceFromAccount1Fresh.executeQuery(); + DataObject bankAccount1Fresh = (DataObject)rootFresh1.getList("BANKACCOUNT").get(0); + assertEquals(10000, bankAccount1Fresh.getInt("BALANCE"));//this shows $200 is not removed from account1, expected, + //as rollbacked + + Command SelectBalanceFromAccount2Fresh = dasFresh.getCommand("SelectBalanceFromAccount2"); + DataObject rootFresh2 = SelectBalanceFromAccount2Fresh.executeQuery(); + DataObject bankAccount2Fresh = (DataObject)rootFresh2.getList("BANKACCOUNT").get(0); + assertEquals(5000, bankAccount2Fresh.getInt("BALANCE"));//this shows $200 is not added to account2, expected, + //as have rollbacked + } } Added: incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/BankAccountData.java URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/BankAccountData.java?rev=572735&view=auto ============================================================================== --- incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/BankAccountData.java (added) +++ incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/BankAccountData.java Tue Sep 4 09:50:19 2007 @@ -0,0 +1,43 @@ +/* + * 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.das.rdb.test.data; + +import java.sql.Connection; +import java.sql.Types; + +import org.apache.tuscany.das.rdb.test.framework.TestDataWithExplicitColumns; + +public class BankAccountData extends TestDataWithExplicitColumns { + + private static int[] bankAccountTypes = {Types.INTEGER, Types.INTEGER, Types.INTEGER}; + + private static Object[][] bankAccountData = {{new Integer(1), new Integer(564026354),new Integer(10000)}, + {new Integer(2), new Integer(564026354),new Integer(5000)}}; + + private static String[] bankAccountColumns = {"ID", "SSN", "BALANCE"}; + + public BankAccountData(Connection connection) { + super(connection, bankAccountData, bankAccountColumns, bankAccountTypes); + } + + public String getTableName() { + return "BANKACCOUNT"; + } + +} Added: incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/DepartmentsData.java URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/DepartmentsData.java?rev=572735&view=auto ============================================================================== --- incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/DepartmentsData.java (added) +++ incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/DepartmentsData.java Tue Sep 4 09:50:19 2007 @@ -0,0 +1,44 @@ +/* + * 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.das.rdb.test.data; + +import java.sql.Connection; +import java.sql.Types; + +import org.apache.tuscany.das.rdb.test.framework.TestDataWithExplicitColumns; + + +public class DepartmentsData extends TestDataWithExplicitColumns { + + private static int[] columnTypes = {Types.INTEGER, Types.VARCHAR, Types.VARCHAR, Types.VARCHAR, Types.INTEGER}; + + private static Object[][] deptData = {{Integer.valueOf(1),"Advanced Technologies", "NY", "123", new Integer(1) }, + {Integer.valueOf(2),"New Technologies", "CA", "125", new Integer(2) }}; + + private static String[] deptColumns = {"ID", "NAME", "LOCATION", "DEPNUMBER", "COMPANYID"}; + + public DepartmentsData(Connection connection) { + super(connection, deptData, deptColumns, columnTypes); + } + + public String getTableName() { + return "DEPARTMENTS"; + } + +} Added: incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/EmployeesData.java URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/EmployeesData.java?rev=572735&view=auto ============================================================================== --- incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/EmployeesData.java (added) +++ incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/data/EmployeesData.java Tue Sep 4 09:50:19 2007 @@ -0,0 +1,46 @@ +/* + * 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.das.rdb.test.data; + +import java.sql.Connection; +import java.sql.Types; + +import org.apache.tuscany.das.rdb.test.framework.TestDataWithExplicitColumns; + +public class EmployeesData extends TestDataWithExplicitColumns { + + private static int[] columnTypes = {Types.VARCHAR, Types.VARCHAR, Types.SMALLINT, Types.INTEGER}; + + private static Object[][] employeeData = {{"John Jones", "E0001", Boolean.valueOf(false), Integer.valueOf(1)}, + {"Mary Smith", "E0002", Boolean.valueOf(true), Integer.valueOf(1)}, + {"Jane Doe", "E0003", Boolean.valueOf(false), Integer.valueOf(2)}, + {"Al Smith", "E0004", Boolean.valueOf(true), Integer.valueOf(2)}, + {"John Smith", "E0005", Boolean.valueOf(false), Integer.valueOf(2)}}; + + private static String[] employeeColumns = {"NAME", "SN", "MANAGER","DEPARTMENTID"}; + + public EmployeesData(Connection connection) { + super(connection, employeeData, employeeColumns, columnTypes); + } + + public String getTableName() { + return "EMPLOYEES"; + } + +} Modified: incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/DatabaseSetup.java URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/DatabaseSetup.java?rev=572735&r1=572734&r2=572735&view=diff ============================================================================== --- incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/DatabaseSetup.java (original) +++ incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/framework/DatabaseSetup.java Tue Sep 4 09:50:19 2007 @@ -164,6 +164,9 @@ "DROP TABLE DASTEST3.ORDERDETAILSDESC", "DROP TABLE DASTEST1.ORDERDETAILS", "DROP TABLE DASTEST1.EMPLOYEE", "DROP TABLE SINGER", + "DROP TABLE BANKACCOUNT", + "DROP TABLE DEPARTMENTS", + "DROP TABLE EMPLOYEES", "DROP TABLE SONG", "DROP TABLE DASTEST1.EMPLOYEE", "DROP TABLE DOCUMENTS_IMAGES" @@ -274,7 +277,10 @@ s.execute(getCreateDASTEST3OrderDetailsDesc()); //JIRA-952 end s.execute(getCreateSinger()); - s.execute(getCreateSong()); + s.execute(getCreateSong()); + s.execute(getCreateDepartments()); + s.execute(getCreateBankAccount()); + s.execute(getCreateEmployees()); s.execute(getCreateDocumentsImages()); } catch (SQLException e) { @@ -354,6 +360,13 @@ + getIntegerColumn("DEPARTMENTID") + ")"; } + protected String getCreateEmployees() { + return "CREATE TABLE EMPLOYEES (" + getIntegerColumn("ID") + " PRIMARY KEY NOT NULL " + + getGeneratedKeyClause() + "," + + getStringColumn("NAME", 30) + "," + getStringColumn("SN", 10) + ", MANAGER SMALLINT, " + + getIntegerColumn("DEPARTMENTID") + ")"; + } + protected String getCreateDepartment() { return "CREATE TABLE DEPARTMENT (" + getIntegerColumn("ID") + " PRIMARY KEY NOT NULL " + getGeneratedKeyClause() + ", " @@ -362,6 +375,13 @@ + getIntegerColumn("COMPANYID") + ")"; } + protected String getCreateDepartments() { + return "CREATE TABLE DEPARTMENTS (" + getIntegerColumn("ID") + " PRIMARY KEY NOT NULL , " + + getStringColumn("NAME", 30) + "," + getStringColumn("LOCATION", 30) + ", " + + getStringColumn("DEPNUMBER", 10) + "," + + getIntegerColumn("COMPANYID") + ")"; + } + protected String getCreateBook() { return "CREATE TABLE BOOK (" + getIntegerColumn("BOOK_ID") + " PRIMARY KEY NOT NULL, " + getStringColumn("NAME", 50) + "," @@ -513,7 +533,12 @@ - + protected String getCreateBankAccount() { + return "CREATE TABLE BANKACCOUNT ("+ getIntegerColumn("ID") + " , " + + getIntegerColumn("SSN") + ", "+ + getIntegerColumn("BALANCE") + " )"; + } + Added: incubator/tuscany/java/das/rdb/src/test/resources/extTxWithExtConnection.xml URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/test/resources/extTxWithExtConnection.xml?rev=572735&view=auto ============================================================================== --- incubator/tuscany/java/das/rdb/src/test/resources/extTxWithExtConnection.xml (added) +++ incubator/tuscany/java/das/rdb/src/test/resources/extTxWithExtConnection.xml Tue Sep 4 09:50:19 2007 @@ -0,0 +1,36 @@ +<?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"> + <!--below is needed if user wants to control tx--> + <ConnectionInfo managedtx="false"> + </ConnectionInfo> + + <Command name="SelectEmployeesFromDepartment1" + SQL="select * from DEPARTMENTS left outer join EMPLOYEES on DEPARTMENTS.ID = EMPLOYEES.DEPARTMENTID where DEPARTMENTS.ID = 1" + kind="Select"/> + <Command name="SelectEmployeesFromDepartment2" + SQL="select * from DEPARTMENTS left outer join EMPLOYEES on DEPARTMENTS.ID = EMPLOYEES.DEPARTMENTID where DEPARTMENTS.ID = 2" + kind="Select"/> + + <Relationship name="employed" primaryKeyTable="DEPARTMENTS" foreignKeyTable="EMPLOYEES" many="true" > + <KeyPair primaryKeyColumn="ID" foreignKeyColumn="DEPARTMENTID" /> + </Relationship> +</Config> + Added: incubator/tuscany/java/das/rdb/src/test/resources/extTxWithIntConnection.xml URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/test/resources/extTxWithIntConnection.xml?rev=572735&view=auto ============================================================================== --- incubator/tuscany/java/das/rdb/src/test/resources/extTxWithIntConnection.xml (added) +++ incubator/tuscany/java/das/rdb/src/test/resources/extTxWithIntConnection.xml Tue Sep 4 09:50:19 2007 @@ -0,0 +1,38 @@ +<?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"> + <ConnectionProperties + driverClass="org.apache.derby.jdbc.EmbeddedDriver" + databaseURL="jdbc:derby:target/dastest; create = true" + loginTimeout="600000"/> + </ConnectionInfo> + + <Command name="SelectEmployeesFromDepartment1" + SQL="select * from DEPARTMENTS left outer join EMPLOYEES on DEPARTMENTS.ID = EMPLOYEES.DEPARTMENTID where DEPARTMENTS.ID = 1" + kind="Select"/> + <Command name="SelectEmployeesFromDepartment2" + SQL="select * from DEPARTMENTS left outer join EMPLOYEES on DEPARTMENTS.ID = EMPLOYEES.DEPARTMENTID where DEPARTMENTS.ID = 2" + kind="Select"/> + + <Relationship name="employed" primaryKeyTable="DEPARTMENTS" foreignKeyTable="EMPLOYEES" many="true" > + <KeyPair primaryKeyColumn="ID" foreignKeyColumn="DEPARTMENTID" /> + </Relationship> +</Config> Added: incubator/tuscany/java/das/rdb/src/test/resources/extTxnIntConnectionRollback.xml URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/test/resources/extTxnIntConnectionRollback.xml?rev=572735&view=auto ============================================================================== --- incubator/tuscany/java/das/rdb/src/test/resources/extTxnIntConnectionRollback.xml (added) +++ incubator/tuscany/java/das/rdb/src/test/resources/extTxnIntConnectionRollback.xml Tue Sep 4 09:50:19 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. + --> +<Config xmlns="http:///org.apache.tuscany.das.rdb/config.xsd"> + <ConnectionInfo managedtx="false"> + <ConnectionProperties + driverClass="org.apache.derby.jdbc.EmbeddedDriver" + databaseURL="jdbc:derby:target/dastest; create = true" + loginTimeout="600000"/> + </ConnectionInfo> + + <Command name="SelectBalanceFromAccount1" + SQL="select * from BANKACCOUNT where SSN = 564026354 and ID=1" + kind="Select"/> + <Command name="SelectBalanceFromAccount2" + SQL="select * from BANKACCOUNT where SSN = 564026354 and ID=2" + kind="Select"/> +</Config> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
