Author: adrianocrestani Date: Tue Sep 4 17:30:11 2007 New Revision: 572847
URL: http://svn.apache.org/viewvc?rev=572847&view=rev Log: reverting patch from JIRA-1466 Removed: 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=572847&r1=572846&r2=572847&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 17:30:11 2007 @@ -18,8 +18,6 @@ */ package org.apache.tuscany.das.rdb; -import java.sql.Connection; - import org.apache.tuscany.das.rdb.impl.DASFactoryImpl; import commonj.sdo.DataObject; @@ -66,9 +64,4 @@ */ 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=572847&r1=572846&r2=572847&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 17:30:11 2007 @@ -87,7 +87,8 @@ throw new RuntimeException("Invalid kind of command: " + kind); } - } + } + } public DASImpl(Config inConfig, Connection inConnection) { @@ -110,7 +111,7 @@ * @see org.apache.tuscany.das.rdb.CommandGroup#getApplyChangesCommand() */ public ApplyChangesCommandImpl getApplyChangesCommand() { - ApplyChangesCommandImpl cmd = new ApplyChangesCommandImpl(configWrapper, getConnectionFromConfig()); + ApplyChangesCommandImpl cmd = new ApplyChangesCommandImpl(configWrapper, getConnection()); return cmd; } @@ -124,7 +125,7 @@ throw new RuntimeException("CommandGroup has no command named: " + name); } CommandImpl cmd = (CommandImpl) commands.get(name); - cmd.setConnection(getConnectionFromConfig(), configWrapper.getConfig()); + cmd.setConnection(getConnection(), configWrapper.getConfig()); return cmd; } @@ -132,7 +133,7 @@ this.connection = connection; } - private Connection getConnectionFromConfig() { + public Connection getConnection() { if (connection == null) { initializeConnection(); } @@ -141,7 +142,6 @@ 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 DAS is managing connection, let it close it, else not + * If the config has connection properties then we are "managing" the connection via DataSource */ private boolean managingConnections() { - if (configWrapper.getConfig().getConnectionInfo().isManagedtx()) { - return true; + if (configWrapper.getConfig().getConnectionInfo().getDataSource() == null) { + return false; } - return false; + return true; } @@ -302,7 +302,7 @@ throw new RuntimeException("SQL => " + sql + " is not valid"); } - returnCmd.setConnection(getConnectionFromConfig(), config.getConfig()); + returnCmd.setConnection(getConnection(), config.getConfig()); return returnCmd; } @@ -310,24 +310,4 @@ getApplyChangesCommand().execute(root); } - 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!"); - } - } -} +} \ No newline at end of file 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=572847&r1=572846&r2=572847&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 17:30:11 2007 @@ -27,28 +27,16 @@ 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 { @@ -96,125 +84,4 @@ } - /** - * 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 - } } 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=572847&r1=572846&r2=572847&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 17:30:11 2007 @@ -164,9 +164,6 @@ "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" @@ -277,10 +274,7 @@ s.execute(getCreateDASTEST3OrderDetailsDesc()); //JIRA-952 end s.execute(getCreateSinger()); - s.execute(getCreateSong()); - s.execute(getCreateDepartments()); - s.execute(getCreateBankAccount()); - s.execute(getCreateEmployees()); + s.execute(getCreateSong()); s.execute(getCreateDocumentsImages()); } catch (SQLException e) { @@ -360,13 +354,6 @@ + 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() + ", " @@ -375,13 +362,6 @@ + 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) + "," @@ -533,12 +513,7 @@ - protected String getCreateBankAccount() { - return "CREATE TABLE BANKACCOUNT ("+ getIntegerColumn("ID") + " , " + - getIntegerColumn("SSN") + ", "+ - getIntegerColumn("BALANCE") + " )"; - } - + --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
