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/05 02:30:15 UTC
svn commit: r572847 - in /incubator/tuscany/java/das/rdb/src:
main/java/org/apache/tuscany/das/rdb/
main/java/org/apache/tuscany/das/rdb/impl/
test/java/org/apache/tuscany/das/rdb/test/
test/java/org/apache/tuscany/das/rdb/test/data/ test/java/org/apac...
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: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org