You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2012/10/17 20:40:30 UTC
svn commit: r1399382 - in
/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access:
DataDomainDBDiffBuilder.java DataDomainInsertBucket.java
DataDomainUpdateBucket.java
Author: aadamchik
Date: Wed Oct 17 18:40:29 2012
New Revision: 1399382
URL: http://svn.apache.org/viewvc?rev=1399382&view=rev
Log:
undoing r1399376... oops wasn't ready to commit that yet
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomainDBDiffBuilder.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomainInsertBucket.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomainUpdateBucket.java
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomainDBDiffBuilder.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomainDBDiffBuilder.java?rev=1399382&r1=1399381&r2=1399382&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomainDBDiffBuilder.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomainDBDiffBuilder.java Wed Oct 17 18:40:29 2012
@@ -70,7 +70,7 @@ class DataDomainDBDiffBuilder implements
/**
* Processes GraphDiffs of a single object, converting them to DB diff.
*/
- Map<String, Object> buildDBDiff(GraphDiff singleObjectDiff) {
+ Map<Object, Object> buildDBDiff(GraphDiff singleObjectDiff) {
reset();
singleObjectDiff.apply(this);
@@ -79,16 +79,16 @@ class DataDomainDBDiffBuilder implements
return null;
}
- Map<String, Object> dbDiff = new HashMap<String, Object>();
+ Map<Object, Object> dbDiff = new HashMap<Object, Object>();
appendSimpleProperties(dbDiff);
appendForeignKeys(dbDiff);
appendPrimaryKeys(dbDiff);
- return dbDiff;
+ return dbDiff.isEmpty() ? null : dbDiff;
}
- private void appendSimpleProperties(Map<String, Object> dbDiff) {
+ private void appendSimpleProperties(Map<Object, Object> dbDiff) {
// populate changed columns
if (currentPropertyDiff != null) {
for (final Map.Entry<Object, Object> entry : currentPropertyDiff.entrySet()) {
@@ -106,7 +106,7 @@ class DataDomainDBDiffBuilder implements
}
}
- private void appendForeignKeys(Map<String, Object> dbDiff) {
+ private void appendForeignKeys(Map<Object, Object> dbDiff) {
// populate changed FKs
if (currentArcDiff != null) {
for (final Map.Entry<Object, Object> entry : currentArcDiff.entrySet()) {
@@ -127,7 +127,7 @@ class DataDomainDBDiffBuilder implements
}
}
- private void appendPrimaryKeys(Map<String, Object> dbDiff) {
+ private void appendPrimaryKeys(Map<Object, Object> dbDiff) {
// populate changed PKs; note that we might end up overriding some values taken
// from the object (e.g. zero PK's).
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomainInsertBucket.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomainInsertBucket.java?rev=1399382&r1=1399381&r2=1399382&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomainInsertBucket.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomainInsertBucket.java Wed Oct 17 18:40:29 2012
@@ -74,15 +74,17 @@ class DataDomainInsertBucket extends Dat
checkReadOnly(descriptor.getEntity());
createPermIds(descriptor, objects);
- sorter.sortObjectsForEntity(descriptor.getEntity(), objects,
- false);
+ sorter.sortObjectsForEntity(descriptor.getEntity(), objects, false);
for (Persistent o : objects) {
- Map<String, Object> snapshot = diffBuilder
- .buildDBDiff(parent.objectDiff(o.getObjectId()));
+ Map<Object, Object> snapshot = diffBuilder.buildDBDiff(parent
+ .objectDiff(o.getObjectId()));
- // we need to insert even if there is no changes to default
- // values, so keep even an empty changes map
+ // we need to insert even if there is no changes to default values
+ // so creating an empty changes map
+ if (snapshot == null) {
+ snapshot = new HashMap<Object, Object>();
+ }
batch.add(snapshot, o.getObjectId());
}
@@ -92,8 +94,7 @@ class DataDomainInsertBucket extends Dat
}
}
- void createPermIds(DbEntityClassDescriptor descriptor,
- Collection<Persistent> objects) {
+ void createPermIds(DbEntityClassDescriptor descriptor, Collection<Persistent> objects) {
if (objects.isEmpty()) {
return;
@@ -103,8 +104,7 @@ class DataDomainInsertBucket extends Dat
DbEntity entity = descriptor.getDbEntity();
DataNode node = parent.getDomain().lookupDataNode(entity.getDataMap());
- boolean supportsGeneratedKeys = node.getAdapter()
- .supportsGeneratedKeys();
+ boolean supportsGeneratedKeys = node.getAdapter().supportsGeneratedKeys();
PkGenerator pkGenerator = node.getAdapter().getPkGenerator();
@@ -127,22 +127,21 @@ class DataDomainInsertBucket extends Dat
}
// handle meaningful PK
- ObjAttribute objAttr = objEntity
- .getAttributeForDbAttribute(dbAttr);
+ ObjAttribute objAttr = objEntity.getAttributeForDbAttribute(dbAttr);
if (objAttr != null) {
- Object value = descriptor.getClassDescriptor()
- .getProperty(objAttr.getName())
- .readPropertyDirectly(object);
+ Object value = descriptor.getClassDescriptor().getProperty(
+ objAttr.getName()).readPropertyDirectly(object);
if (value != null) {
Class<?> javaClass = objAttr.getJavaClass();
- if (javaClass.isPrimitive() && value instanceof Number
+ if (javaClass.isPrimitive()
+ && value instanceof Number
&& ((Number) value).intValue() == 0) {
- // primitive 0 has to be treated as NULL, or
- // otherwise we
+ // primitive 0 has to be treated as NULL, or otherwise we
// can't generate PK for POJO's
- } else {
+ }
+ else {
idMap.put(dbAttrName, value);
continue;
@@ -160,8 +159,7 @@ class DataDomainInsertBucket extends Dat
continue;
}
- // only a single key can be generated from DB... if this is done
- // already
+ // only a single key can be generated from DB... if this is done already
// in this loop, we must bail out.
if (autoPkDone) {
throw new CayenneRuntimeException(
@@ -173,7 +171,8 @@ class DataDomainInsertBucket extends Dat
Object pkValue = pkGenerator.generatePk(node, dbAttr);
idMap.put(dbAttrName, pkValue);
autoPkDone = true;
- } catch (Exception ex) {
+ }
+ catch (Exception ex) {
throw new CayenneRuntimeException("Error generating PK: "
+ ex.getMessage(), ex);
}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomainUpdateBucket.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomainUpdateBucket.java?rev=1399382&r1=1399381&r2=1399382&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomainUpdateBucket.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataDomainUpdateBucket.java Wed Oct 17 18:40:29 2012
@@ -70,10 +70,10 @@ class DataDomainUpdateBucket extends Dat
Persistent o = objects.next();
ObjectDiff diff = parent.objectDiff(o.getObjectId());
- Map<String, Object> snapshot = diffBuilder.buildDBDiff(diff);
+ Map<Object, Object> snapshot = diffBuilder.buildDBDiff(diff);
// check whether MODIFIED object has real db-level modifications
- if (snapshot.isEmpty()) {
+ if (snapshot == null) {
continue;
}