Author: kwilliams
Date: Wed Mar 1 23:30:25 2006
New Revision: 382312
URL: http://svn.apache.org/viewcvs?rev=382312&view=rev
Log:
Temporary fix to allow updates to DataObjects with database generated keys.
Test added to verify the fix.
Modified:
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeOperation.java
incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CorrectedDefectTests.java
incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/DefectTests.java
Modified:
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeOperation.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeOperation.java?rev=382312&r1=382311&r2=382312&view=diff
==============================================================================
---
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeOperation.java
(original)
+++
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeOperation.java
Wed Mar 1 23:30:25 2006
@@ -55,7 +55,8 @@
}
writeCommand.execute();
- if ( propagatedID != null ) {
+ //TODO - Added this instanceof hack. Brent to
verify
+ if (( propagatedID != null ) && (writeCommand instanceof
InsertCommandImpl)){
DebugUtil.debugln(getClass(), debug, "Propagating key "
+ propagatedID);
int id = writeCommand.getGeneratedKey();
dObject.setPropagatedID(propagatedID, id);
Modified:
incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CorrectedDefectTests.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CorrectedDefectTests.java?rev=382312&r1=382311&r2=382312&view=diff
==============================================================================
---
incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CorrectedDefectTests.java
(original)
+++
incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/CorrectedDefectTests.java
Wed Mar 1 23:30:25 2006
@@ -22,11 +22,17 @@
*
*/
+import java.util.Iterator;
+import java.util.Random;
+
import org.apache.tuscany.das.rdb.ApplyChangesCommand;
import org.apache.tuscany.das.rdb.Command;
import org.apache.tuscany.das.rdb.CommandGroup;
import org.apache.tuscany.das.rdb.SDODataTypes;
+import org.apache.tuscany.das.rdb.test.data.CompanyData;
+import org.apache.tuscany.das.rdb.test.data.CompanyDeptData;
import org.apache.tuscany.das.rdb.test.data.CustomerData;
+import org.apache.tuscany.das.rdb.test.data.DepartmentData;
import org.apache.tuscany.das.rdb.test.data.OrderData;
import org.apache.tuscany.das.rdb.test.framework.DasTest;
@@ -38,6 +44,11 @@
super.setUp();
new CustomerData(getAutoConnection()).refresh();
new OrderData(getAutoConnection()).refresh();
+
+ new CompanyData(getAutoConnection()).refresh();
+ new DepartmentData(getAutoConnection()).refresh();
+ new CompanyDeptData(getAutoConnection()).refresh();
+
}
protected void tearDown() throws Exception {
@@ -219,5 +230,29 @@
assertEquals("5528 Wells Fargo Dr", root.get("CUSTOMER[1]/ADDRESS"));
}
+
+ public void testUpdateChildThatHasGeneratedKey() throws Exception {
+
+ CommandGroup commandGroup =
CommandGroup.FACTORY.createCommandGroup(getConfig("CompanyConfig.xml"));
+
+ //Read a specific company based on the known ID
+ Command readCust = commandGroup.getCommand("all companies and
departments");
+ DataObject root = readCust.executeQuery();
+ DataObject lastCustomer = root.getDataObject("COMPANY[3]");
+ Iterator i = lastCustomer.getList("departments").iterator();
+ Random generator = new Random();
+ int random = generator.nextInt(1000) + 1;
+ DataObject department;
+ while (i.hasNext()) {
+ department = (DataObject)i.next();
+ System.out.println("Modifying department: " +
department.getString("NAME"));
+ department.setString("NAME", "Dept-" + random);
+ random = random + 1;
+ }
+
+ ApplyChangesCommand apply = commandGroup.getApplyChangesCommand();
+ apply.execute(root);
+
+ }
}
Modified:
incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/DefectTests.java
URL:
http://svn.apache.org/viewcvs/incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/DefectTests.java?rev=382312&r1=382311&r2=382312&view=diff
==============================================================================
---
incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/DefectTests.java
(original)
+++
incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/DefectTests.java
Wed Mar 1 23:30:25 2006
@@ -22,11 +22,19 @@
*
*/
+import java.util.Iterator;
+import java.util.Random;
+
import org.apache.tuscany.das.rdb.ApplyChangesCommand;
import org.apache.tuscany.das.rdb.Command;
import org.apache.tuscany.das.rdb.CommandGroup;
import org.apache.tuscany.das.rdb.SDODataTypes;
+import org.apache.tuscany.das.rdb.test.data.CompanyData;
+import org.apache.tuscany.das.rdb.test.data.CompanyDeptData;
import org.apache.tuscany.das.rdb.test.data.CustomerData;
+import org.apache.tuscany.das.rdb.test.data.DepEmpData;
+import org.apache.tuscany.das.rdb.test.data.DepartmentData;
+import org.apache.tuscany.das.rdb.test.data.EmployeeData;
import org.apache.tuscany.das.rdb.test.data.OrderData;
import org.apache.tuscany.das.rdb.test.framework.DasTest;
@@ -38,6 +46,13 @@
super.setUp();
new CustomerData(getAutoConnection()).refresh();
new OrderData(getAutoConnection()).refresh();
+
+ new CompanyData(getAutoConnection()).refresh();
+ new DepartmentData(getAutoConnection()).refresh();
+ new EmployeeData(getAutoConnection()).refresh();
+ new CompanyDeptData(getAutoConnection()).refresh();
+ new DepEmpData(getAutoConnection()).refresh();
+
}
protected void tearDown() throws Exception {
@@ -296,5 +311,43 @@
assertEquals("5528 Wells Fargo Dr", root.get("CUSTOMER[1]/ADDRESS"));
}
+
+ public void testUpdateChildThatHasGeneratedKey() throws Exception {
+
+ CommandGroup commandGroup =
CommandGroup.FACTORY.createCommandGroup(getConfig("CompanyConfig.xml"));
+
+ //Read a specific company based on the known ID
+ Command readCust = commandGroup.getCommand("all companies and
departments");
+ DataObject root = readCust.executeQuery();
+ DataObject lastCustomer = root.getDataObject("COMPANY[3]");
+ Iterator i = lastCustomer.getList("departments").iterator();
+ Random generator = new Random();
+ int random = generator.nextInt(1000) + 1;
+ DataObject department;
+ while (i.hasNext()) {
+ department = (DataObject)i.next();
+ System.out.println("Modifying department: " +
department.getString("NAME"));
+ department.setString("NAME", "Dept-" + random);
+ random = random + 1;
+ }
+
+ ApplyChangesCommand apply = commandGroup.getApplyChangesCommand();
+ apply.execute(root);
+
+ }
+
+
+
+ /**
+ * Test problem with Random
+ */
+ public void testRandomNumber() throws Exception {
+
+ Random generator = new Random();
+ int number = generator.nextInt(1000) + 1;
+ assertTrue(number > 0 & number <= 1000);
+
+ }
+
}