Author: aadamchik
Date: Tue Oct 10 11:00:47 2006
New Revision: 454855
URL: http://svn.apache.org/viewvc?view=rev&rev=454855
Log:
CAY-682 - cleaning insert pipeline from DataObject references
Modified:
incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/access/DataContext.java
incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/access/DataDomainInsertBucket.java
incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/access/DataDomainSyncBucket.java
Modified:
incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/access/DataContext.java
URL:
http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/access/DataContext.java?view=diff&rev=454855&r1=454854&r2=454855
==============================================================================
---
incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/access/DataContext.java
(original)
+++
incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/access/DataContext.java
Tue Oct 10 11:00:47 2006
@@ -543,16 +543,19 @@
*
* @since 1.1
*/
- public DataRow currentSnapshot(DataObject object) {
- ObjEntity entity = getEntityResolver().lookupObjEntity(object);
-
+ public DataRow currentSnapshot(Persistent object) {
+
// for a HOLLOW object return snapshot from cache
if (object.getPersistenceState() == PersistenceState.HOLLOW
&& object.getObjectContext() != null) {
return getObjectStore().getSnapshot(object.getObjectId());
}
-
+
+ // TODO: andrus, 10/10/2006 - use descriptor visitor instead of entity
attribute iterator
+
+ ObjEntity entity = getEntityResolver().lookupObjEntity(object);
+ ClassDescriptor descriptor =
getEntityResolver().getClassDescriptor(entity.getName());
DataRow snapshot = new DataRow(10);
Iterator attributes = entity.getAttributeMap().entrySet().iterator();
@@ -562,8 +565,9 @@
ObjAttribute objAttr = (ObjAttribute) entry.getValue();
// processing compound attributes correctly
- snapshot.put(objAttr.getDbAttributePath(), object
- .readPropertyDirectly(attrName));
+ snapshot.put(objAttr.getDbAttributePath(), descriptor
+ .getProperty(attrName)
+ .readPropertyDirectly(object));
}
Iterator relationships =
entity.getRelationshipMap().entrySet().iterator();
@@ -576,7 +580,9 @@
continue;
}
- Object targetObject = object.readPropertyDirectly(rel.getName());
+ Object targetObject = descriptor
+ .getProperty(rel.getName())
+ .readPropertyDirectly(object);
if (targetObject == null) {
continue;
}
Modified:
incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/access/DataDomainInsertBucket.java
URL:
http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/access/DataDomainInsertBucket.java?view=diff&rev=454855&r1=454854&r2=454855
==============================================================================
---
incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/access/DataDomainInsertBucket.java
(original)
+++
incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/access/DataDomainInsertBucket.java
Tue Oct 10 11:00:47 2006
@@ -26,8 +26,8 @@
import java.util.Map;
import org.apache.cayenne.CayenneRuntimeException;
-import org.apache.cayenne.DataObject;
import org.apache.cayenne.ObjectId;
+import org.apache.cayenne.Persistent;
import org.apache.cayenne.dba.PkGenerator;
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.DbEntity;
@@ -36,6 +36,7 @@
import org.apache.cayenne.map.EntitySorter;
import org.apache.cayenne.map.ObjAttribute;
import org.apache.cayenne.map.ObjEntity;
+import org.apache.cayenne.property.ClassDescriptor;
import org.apache.cayenne.query.InsertBatchQuery;
/**
@@ -88,7 +89,7 @@
}
for (Iterator k = objects.iterator(); k.hasNext();) {
- DataObject o = (DataObject) k.next();
+ Persistent o = (Persistent) k.next();
Map snapshot = diffBuilder.buildDBDiff(parent.objectDiff(o
.getObjectId()));
@@ -116,11 +117,12 @@
}
PkGenerator pkGenerator = node.getAdapter().getPkGenerator();
+ ClassDescriptor descriptor = null;
Iterator i = dataObjects.iterator();
while (i.hasNext()) {
- DataObject object = (DataObject) i.next();
+ Persistent object = (Persistent) i.next();
ObjectId id = object.getObjectId();
if (id == null || !id.isTemporary()) {
continue;
@@ -142,7 +144,17 @@
// handle meaningful PK
ObjAttribute objAttr =
objEntity.getAttributeForDbAttribute(dbAttr);
if (objAttr != null) {
- idMap.put(dbAttrName,
object.readPropertyDirectly(objAttr.getName()));
+
+ if (descriptor == null) {
+ descriptor = parent
+ .getDomain()
+ .getEntityResolver()
+ .getClassDescriptor(objEntity.getName());
+ }
+
+ idMap.put(dbAttrName, descriptor
+ .getProperty(objAttr.getName())
+ .readPropertyDirectly(object));
continue;
}
Modified:
incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/access/DataDomainSyncBucket.java
URL:
http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/access/DataDomainSyncBucket.java?view=diff&rev=454855&r1=454854&r2=454855
==============================================================================
---
incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/access/DataDomainSyncBucket.java
(original)
+++
incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/access/DataDomainSyncBucket.java
Tue Oct 10 11:00:47 2006
@@ -31,6 +31,7 @@
import org.apache.cayenne.DataObject;
import org.apache.cayenne.DataRow;
import org.apache.cayenne.ObjectId;
+import org.apache.cayenne.Persistent;
import org.apache.cayenne.graph.CompoundDiff;
import org.apache.cayenne.graph.NodeIdChangeOperation;
import org.apache.cayenne.map.DbEntity;
@@ -160,12 +161,15 @@
Iterator objects = ((Collection) it.next()).iterator();
while (objects.hasNext()) {
- DataObject object = (DataObject) objects.next();
+ Persistent object = (Persistent) objects.next();
ObjectId id = object.getObjectId();
-
DataRow dataRow =
parent.getContext().currentSnapshot(object);
- dataRow.setReplacesVersion(object.getSnapshotVersion());
- object.setSnapshotVersion(dataRow.getVersion());
+
+ if (object instanceof DataObject) {
+ DataObject dataObject = (DataObject) object;
+
dataRow.setReplacesVersion(dataObject.getSnapshotVersion());
+ dataObject.setSnapshotVersion(dataRow.getVersion());
+ }
// record id change
if (id.isReplacementIdAttached()) {