Author: aadamchik
Date: Tue Jul 11 13:56:44 2006
New Revision: 420991
URL: http://svn.apache.org/viewvc?rev=420991&view=rev
Log:
CAY-595
Modified:
incubator/cayenne/main/trunk/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/access/DataNodeSyncQualifierDescriptor.java
Modified:
incubator/cayenne/main/trunk/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/access/DataNodeSyncQualifierDescriptor.java
URL:
http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/access/DataNodeSyncQualifierDescriptor.java?rev=420991&r1=420990&r2=420991&view=diff
==============================================================================
---
incubator/cayenne/main/trunk/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/access/DataNodeSyncQualifierDescriptor.java
(original)
+++
incubator/cayenne/main/trunk/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/access/DataNodeSyncQualifierDescriptor.java
Tue Jul 11 13:56:44 2006
@@ -196,19 +196,31 @@
while (joinsIterator.hasNext()) {
final DbJoin dbAttrPair = (DbJoin)
joinsIterator.next();
DbAttribute dbAttribute = dbAttrPair.getSource();
- if (!attributes.contains(dbAttribute)) {
- attributes.add(dbAttribute);
- valueTransformers.add(new Transformer() {
+ // relationship transformers override attribute
transformers for
+ // meaningful FK's... why meanigful FKs can go out of
sync is
+ // another story (CAY-595)
+ int index = attributes.indexOf(dbAttribute);
+ if (index >= 0 && !dbAttribute.isForeignKey()) {
+ continue;
+ }
+
+ Object transformer = new Transformer() {
- public Object transform(Object input) {
- ObjectId targetId = ((ObjectDiff) input)
-
.getArcSnapshotValue(relationship.getName());
- return targetId != null ? targetId
- .getIdSnapshot()
- .get(dbAttrPair.getTargetName()) :
null;
- }
- });
+ public Object transform(Object input) {
+ ObjectId targetId = ((ObjectDiff) input)
+
.getArcSnapshotValue(relationship.getName());
+ return targetId != null ?
targetId.getIdSnapshot().get(
+ dbAttrPair.getTargetName()) : null;
+ }
+ };
+
+ if (index < 0) {
+ attributes.add(dbAttribute);
+ valueTransformers.add(transformer);
+ }
+ else {
+ valueTransformers.set(index, transformer);
}
}
}