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