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;
                     }