Author: aadamchik
Date: Sat Jan 21 21:17:37 2012
New Revision: 1234422

URL: http://svn.apache.org/viewvc?rev=1234422&view=rev
Log:
CAY-1616 Remove internal dependencies on deprecated ObjectContext.localObject

migrating unit tests
parameterized merge methods

Added:
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/util/ShallowMergeOperationTest.java
Modified:
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataContext.java
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/util/DeepMergeOperation.java
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/util/ShallowMergeOperation.java
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextObjectTrackingTest.java
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/NestedDataContextReadTest.java

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataContext.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataContext.java?rev=1234422&r1=1234421&r2=1234422&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataContext.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataContext.java
 Sat Jan 21 21:17:37 2012
@@ -43,6 +43,7 @@ import org.apache.cayenne.Persistent;
 import org.apache.cayenne.QueryResponse;
 import org.apache.cayenne.access.util.IteratedSelectObserver;
 import org.apache.cayenne.cache.NestedQueryCache;
+import org.apache.cayenne.configuration.CayenneRuntime;
 import org.apache.cayenne.configuration.server.DataContextFactory;
 import org.apache.cayenne.event.EventManager;
 import org.apache.cayenne.graph.ChildDiffLoader;
@@ -115,8 +116,7 @@ public class DataContext extends BaseCon
      * Creates and returns a new child ObjectContext.
      * 
      * @since 3.0
-     * @deprecated Since 3.1 replaced by
-     *             {@link DataContextFactory#createContext(DataChannel)}
+     * @deprecated Since 3.1 replaced by {@link 
CayenneRuntime#getContext(DataChannel)}
      */
     @Deprecated
     public ObjectContext createChildContext() {

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/util/DeepMergeOperation.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/util/DeepMergeOperation.java?rev=1234422&r1=1234421&r2=1234422&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/util/DeepMergeOperation.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/util/DeepMergeOperation.java
 Sat Jan 21 21:17:37 2012
@@ -74,14 +74,14 @@ public class DeepMergeOperation {
         return merge((Persistent) object);
     }
 
-    public Object merge(final Persistent peerInParentContext) {
+    public <T extends Persistent> T merge(T peerInParentContext) {
         ClassDescriptor descriptor = entityResolver
                 
.getClassDescriptor(peerInParentContext.getObjectId().getEntityName());
         return merge(peerInParentContext, descriptor, new HashMap<ObjectId, 
Persistent>());
     }
 
-    private Object merge(
-            final Persistent peerInParentContext,
+    private <T extends Persistent> T merge(
+            final T peerInParentContext,
             ClassDescriptor descriptor,
             final Map<ObjectId, Persistent> seen) {
 
@@ -93,12 +93,12 @@ public class DeepMergeOperation {
                     + peerInParentContext);
         }
 
-        Object seenTarget = seen.get(id);
+        Persistent seenTarget = seen.get(id);
         if (seenTarget != null) {
-            return seenTarget;
+            return (T) seenTarget;
         }
 
-        final Persistent target = 
shallowMergeOperation.merge(peerInParentContext);
+        final T target = shallowMergeOperation.merge(peerInParentContext);
         seen.put(id, target);
 
         descriptor = 
descriptor.getSubclassDescriptor(peerInParentContext.getClass());

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/util/ShallowMergeOperation.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/util/ShallowMergeOperation.java?rev=1234422&r1=1234421&r2=1234422&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/util/ShallowMergeOperation.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/util/ShallowMergeOperation.java
 Sat Jan 21 21:17:37 2012
@@ -39,7 +39,7 @@ public class ShallowMergeOperation {
         this.context = context;
     }
 
-    public Persistent merge(Persistent peerInParentContext) {
+    public <T extends Persistent> T merge(T peerInParentContext) {
 
         if (peerInParentContext == null) {
             throw new IllegalArgumentException("Null peerInParentContext");
@@ -59,11 +59,11 @@ public class ShallowMergeOperation {
         // have to synchronize almost the entire method to prevent multiple 
threads from
         // messing up dataobjects per CAY-845.
         synchronized (graphManager) {
-            Persistent object = (Persistent) graphManager.getNode(id);
+            T object = (T) graphManager.getNode(id);
 
             // merge into an existing object
             if (object == null) {
-                object = (Persistent) descriptor.createObject();
+                object = (T) descriptor.createObject();
                 object.setObjectContext(context);
                 object.setObjectId(id);
 

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextObjectTrackingTest.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextObjectTrackingTest.java?rev=1234422&r1=1234421&r2=1234422&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextObjectTrackingTest.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextObjectTrackingTest.java
 Sat Jan 21 21:17:37 2012
@@ -142,6 +142,7 @@ public class DataContextObjectTrackingTe
         assertNotNull(context.getGraphManager().getNode(oid));
     }
 
+    @Deprecated
     public void testLocalObjectPeerContextMap() throws Exception {
         createArtistsDataSet();
 
@@ -239,6 +240,7 @@ public class DataContextObjectTrackingTe
         });
     }
 
+    @Deprecated
     public void testLocalObjectPeerContextNoOverride() throws Exception {
         createArtistsDataSet();
 

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/NestedDataContextReadTest.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/NestedDataContextReadTest.java?rev=1234422&r1=1234421&r2=1234422&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/NestedDataContextReadTest.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/NestedDataContextReadTest.java
 Sat Jan 21 21:17:37 2012
@@ -194,18 +194,22 @@ public class NestedDataContextReadTest e
                 assertSame(childContext, hollowPeer.getObjectContext());
                 assertSame(context, hollow.getObjectContext());
 
-                Persistent committedPeer = childContext.localObject(committed
-                        .getObjectId(), committed);
-                assertEquals(PersistenceState.COMMITTED, committedPeer
-                        .getPersistenceState());
+                Persistent committedPeer = childContext.localObject(
+                        committed.getObjectId(),
+                        committed);
+                assertEquals(
+                        PersistenceState.COMMITTED,
+                        committedPeer.getPersistenceState());
                 assertEquals(committed.getObjectId(), 
committedPeer.getObjectId());
                 assertSame(childContext, committedPeer.getObjectContext());
                 assertSame(context, committed.getObjectContext());
 
-                Artist modifiedPeer = (Artist) 
childContext.localObject(modified
-                        .getObjectId(), modified);
-                assertEquals(PersistenceState.COMMITTED, modifiedPeer
-                        .getPersistenceState());
+                Artist modifiedPeer = (Artist) childContext.localObject(
+                        modified.getObjectId(),
+                        modified);
+                assertEquals(
+                        PersistenceState.COMMITTED,
+                        modifiedPeer.getPersistenceState());
                 assertEquals(modified.getObjectId(), 
modifiedPeer.getObjectId());
                 assertEquals("M1", modifiedPeer.getArtistName());
                 assertSame(childContext, modifiedPeer.getObjectContext());
@@ -214,8 +218,9 @@ public class NestedDataContextReadTest e
                 Persistent deletedPeer = childContext.localObject(
                         deleted.getObjectId(),
                         deleted);
-                assertEquals(PersistenceState.COMMITTED, deletedPeer
-                        .getPersistenceState());
+                assertEquals(
+                        PersistenceState.COMMITTED,
+                        deletedPeer.getPersistenceState());
                 assertEquals(deleted.getObjectId(), deletedPeer.getObjectId());
                 assertSame(childContext, deletedPeer.getObjectContext());
                 assertSame(context, deleted.getObjectContext());
@@ -252,39 +257,19 @@ public class NestedDataContextReadTest e
         queryInterceptor.runWithQueriesBlocked(new UnitTestClosure() {
 
             public void execute() {
-                Persistent peerModified2 = childContext.localObject(modified
-                        .getObjectId(), modified);
+                Persistent peerModified2 = childContext.localObject(
+                        modified.getObjectId(),
+                        modified);
                 assertSame(peerModified, peerModified2);
-                assertEquals(PersistenceState.MODIFIED, peerModified2
-                        .getPersistenceState());
+                assertEquals(
+                        PersistenceState.MODIFIED,
+                        peerModified2.getPersistenceState());
                 assertEquals("M2", peerModified.getArtistName());
                 assertEquals("M1", modified.getArtistName());
             }
         });
     }
 
-    public void testLocalObjectRelationship() throws Exception {
-
-        final ObjectContext childContext = context.createChildContext();
-
-        Artist _new = context.newObject(Artist.class);
-        final Painting _newP = context.newObject(Painting.class);
-        _new.addToPaintingArray(_newP);
-
-        queryInterceptor.runWithQueriesBlocked(new UnitTestClosure() {
-
-            public void execute() {
-                Painting painting = (Painting) childContext.localObject(_newP
-                        .getObjectId(), _newP);
-                assertEquals(PersistenceState.COMMITTED, 
painting.getPersistenceState());
-                assertNotNull(painting.getToArtist());
-                assertEquals(PersistenceState.COMMITTED, painting
-                        .getToArtist()
-                        .getPersistenceState());
-            }
-        });
-    }
-
     public void testSelect() throws Exception {
         createArtistsDataSet();
 
@@ -412,29 +397,33 @@ public class NestedDataContextReadTest e
                 assertSame(child, childHollowTargetSrc.getObjectContext());
                 Artist childHollowTarget = childHollowTargetSrc.getToArtist();
                 assertNotNull(childHollowTarget);
-                assertEquals(PersistenceState.HOLLOW, childHollowTarget
-                        .getPersistenceState());
+                assertEquals(
+                        PersistenceState.HOLLOW,
+                        childHollowTarget.getPersistenceState());
                 assertSame(child, childHollowTarget.getObjectContext());
 
                 Artist childModifiedTarget = ((Painting) childSources.get(1))
                         .getToArtist();
 
-                assertEquals(PersistenceState.COMMITTED, childModifiedTarget
-                        .getPersistenceState());
+                assertEquals(
+                        PersistenceState.COMMITTED,
+                        childModifiedTarget.getPersistenceState());
                 assertSame(child, childModifiedTarget.getObjectContext());
                 assertEquals("M1", childModifiedTarget.getArtistName());
 
                 Painting childDeletedTargetSrc = (Painting) 
childSources.get(2);
                 // make sure we got the right object...
-                assertEquals(deletedTargetSrc.getObjectId(), 
childDeletedTargetSrc
-                        .getObjectId());
+                assertEquals(
+                        deletedTargetSrc.getObjectId(),
+                        childDeletedTargetSrc.getObjectId());
                 Artist childDeletedTarget = 
childDeletedTargetSrc.getToArtist();
                 assertNull(childDeletedTarget);
 
                 Artist childCommittedTarget = ((Painting) childSources.get(3))
                         .getToArtist();
-                assertEquals(PersistenceState.COMMITTED, childCommittedTarget
-                        .getPersistenceState());
+                assertEquals(
+                        PersistenceState.COMMITTED,
+                        childCommittedTarget.getPersistenceState());
                 assertSame(child, childCommittedTarget.getObjectContext());
 
                 Painting childNewTargetSrc = (Painting) childSources.get(4);
@@ -442,8 +431,9 @@ public class NestedDataContextReadTest e
                 assertEquals(newTargetSrc.getObjectId(), 
childNewTargetSrc.getObjectId());
                 Artist childNewTarget = childNewTargetSrc.getToArtist();
                 assertNotNull(childNewTarget);
-                assertEquals(PersistenceState.COMMITTED, childNewTarget
-                        .getPersistenceState());
+                assertEquals(
+                        PersistenceState.COMMITTED,
+                        childNewTarget.getPersistenceState());
                 assertSame(child, childNewTarget.getObjectContext());
                 assertEquals("N1", childNewTarget.getArtistName());
             }

Added: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/util/ShallowMergeOperationTest.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/util/ShallowMergeOperationTest.java?rev=1234422&view=auto
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/util/ShallowMergeOperationTest.java
 (added)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/util/ShallowMergeOperationTest.java
 Sat Jan 21 21:17:37 2012
@@ -0,0 +1,67 @@
+/*****************************************************************
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ ****************************************************************/
+package org.apache.cayenne.util;
+
+import org.apache.cayenne.ObjectContext;
+import org.apache.cayenne.PersistenceState;
+import org.apache.cayenne.access.DataContext;
+import org.apache.cayenne.configuration.server.ServerRuntime;
+import org.apache.cayenne.di.Inject;
+import org.apache.cayenne.testdo.testmap.Artist;
+import org.apache.cayenne.testdo.testmap.Painting;
+import org.apache.cayenne.unit.di.DataChannelInterceptor;
+import org.apache.cayenne.unit.di.UnitTestClosure;
+import org.apache.cayenne.unit.di.server.ServerCase;
+import org.apache.cayenne.unit.di.server.UseServerRuntime;
+
+@UseServerRuntime(ServerCase.TESTMAP_PROJECT)
+public class ShallowMergeOperationTest extends ServerCase {
+
+    @Inject
+    private ServerRuntime runtime;
+    
+    @Inject
+    private DataContext context;
+
+    @Inject
+    private DataChannelInterceptor queryInterceptor;
+
+    public void testLocalObjectRelationship() throws Exception {
+
+        ObjectContext childContext = runtime.getContext(context);
+        final ShallowMergeOperation op = new 
ShallowMergeOperation(childContext);
+
+        Artist _new = context.newObject(Artist.class);
+        final Painting _newP = context.newObject(Painting.class);
+        _new.addToPaintingArray(_newP);
+
+        queryInterceptor.runWithQueriesBlocked(new UnitTestClosure() {
+
+            public void execute() {
+                Painting painting = op.merge(_newP);
+
+                assertEquals(PersistenceState.COMMITTED, 
painting.getPersistenceState());
+                assertNotNull(painting.getToArtist());
+                assertEquals(PersistenceState.COMMITTED, painting
+                        .getToArtist()
+                        .getPersistenceState());
+            }
+        });
+    }
+}


Reply via email to