You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by kw...@apache.org on 2006/04/11 00:14:36 UTC
svn commit: r393099 - in /incubator/tuscany/java/das/rdb/src:
main/java/org/apache/tuscany/das/rdb/generator/impl/InsertGenerator.java
test/java/org/apache/tuscany/das/rdb/test/OneToOneRelationshipTests.java
Author: kwilliams
Date: Mon Apr 10 15:14:35 2006
New Revision: 393099
URL: http://svn.apache.org/viewcvs?rev=393099&view=rev
Log:
Applying pacth for TUSCANY-167
Modified:
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/InsertGenerator.java
incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/OneToOneRelationshipTests.java
Modified: incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/InsertGenerator.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/InsertGenerator.java?rev=393099&r1=393098&r2=393099&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/InsertGenerator.java (original)
+++ incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/InsertGenerator.java Mon Apr 10 15:14:35 2006
@@ -18,6 +18,7 @@
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
import java.util.Iterator;
import java.util.List;
@@ -123,17 +124,17 @@
if (obj.isSet(p))
fields.add(p);
} else {
- if (!p.isMany() && obj.isSet(p)) {
- Relationship relationship = config.getRelationshipByName(p
- .getOpposite().getName());
-
- RelationshipWrapper r = new RelationshipWrapper(
+ if ( obj.isSet(p) ) {
+ Relationship relationship = config.getRelationshipByReference(p);
+ if ( p.getOpposite().isMany() || (hasState(config, relationship, obj))) {
+ RelationshipWrapper r = new RelationshipWrapper(
relationship);
- Iterator keys = r.getForeignKeys().iterator();
- while (keys.hasNext()) {
- String key = (String) keys.next();
- Property keyProp = obj.getType().getProperty(key);
- fields.add(keyProp);
+ Iterator keys = r.getForeignKeys().iterator();
+ while (keys.hasNext()) {
+ String key = (String) keys.next();
+ Property keyProp = obj.getType().getProperty(key);
+ fields.add(keyProp);
+ }
}
}
@@ -159,6 +160,20 @@
}
return parameters;
+ }
+
+ private boolean hasState(MappingWrapper config, Relationship rel, DataObject changedObject) {
+
+ if ( !rel.isMany()) {
+ Table t = config.getTableByPropertyName(changedObject.getType().getName());
+ TableWrapper tw = new TableWrapper(t);
+ RelationshipWrapper rw = new RelationshipWrapper(rel);
+ if (( rel.getForeignKeyTable().equals(t.getName())) &&
+ ( Collections.disjoint(tw.getPrimaryKeyProperties(),rw.getForeignKeys()) ))
+ return true;
+ }
+
+ return false;
}
}
Modified: incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/OneToOneRelationshipTests.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/OneToOneRelationshipTests.java?rev=393099&r1=393098&r2=393099&view=diff
==============================================================================
--- incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/OneToOneRelationshipTests.java (original)
+++ incubator/tuscany/java/das/rdb/src/test/java/org/apache/tuscany/das/rdb/test/OneToOneRelationshipTests.java Mon Apr 10 15:14:35 2006
@@ -135,7 +135,7 @@
DataObject employee = root.createDataObject("EMPLOYEE");
employee.setString ("NAME", "Joe Hotshot");
- /* //Assigne a EOTM
+ //Assigne a EOTM
//Strangely this statement results in "Could not find relationships" error
//although "company.setDataObject("company->employee_opposite", null);" dos not
company.setDataObject("company->employee_opposite", employee);
@@ -150,6 +150,6 @@
employee = root.getDataObject("COMPANY[1]/company->employee_opposite");
assertEquals("Joe Hotshot", employee.getString("NAME"));
- */
+
}
}