You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jdo-commits@db.apache.org by cl...@apache.org on 2010/05/12 17:37:55 UTC

svn commit: r943557 - in /db/jdo/trunk: api2/src/java/javax/jdo/JDOHelper.java tck2/src/java/org/apache/jdo/tck/api/jdohelper/GetObjectIds.java

Author: clr
Date: Wed May 12 15:37:55 2010
New Revision: 943557

URL: http://svn.apache.org/viewvc?rev=943557&view=rev
Log:
JDO-655 Allow typed collections for JDOHelper.getObjectIds

Modified:
    db/jdo/trunk/api2/src/java/javax/jdo/JDOHelper.java
    db/jdo/trunk/tck2/src/java/org/apache/jdo/tck/api/jdohelper/GetObjectIds.java

Modified: db/jdo/trunk/api2/src/java/javax/jdo/JDOHelper.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api2/src/java/javax/jdo/JDOHelper.java?rev=943557&r1=943556&r2=943557&view=diff
==============================================================================
--- db/jdo/trunk/api2/src/java/javax/jdo/JDOHelper.java (original)
+++ db/jdo/trunk/api2/src/java/javax/jdo/JDOHelper.java Wed May 12 15:37:55 2010
@@ -397,7 +397,7 @@ public class JDOHelper implements Consta
      * @see #getObjectIds(Object[] pcs)
      * @since 2.0
      */
-    public static Collection<Object> getObjectIds(Collection<Object> pcs) {
+    public static Collection<Object> getObjectIds(Collection<?> pcs) {
         ArrayList<Object> result = new ArrayList<Object>();
         for (Iterator<?> it = pcs.iterator(); it.hasNext();) {
             result.add(getObjectId(it.next()));

Modified: db/jdo/trunk/tck2/src/java/org/apache/jdo/tck/api/jdohelper/GetObjectIds.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/tck2/src/java/org/apache/jdo/tck/api/jdohelper/GetObjectIds.java?rev=943557&r1=943556&r2=943557&view=diff
==============================================================================
--- db/jdo/trunk/tck2/src/java/org/apache/jdo/tck/api/jdohelper/GetObjectIds.java (original)
+++ db/jdo/trunk/tck2/src/java/org/apache/jdo/tck/api/jdohelper/GetObjectIds.java Wed May 12 15:37:55 2010
@@ -25,10 +25,12 @@ import java.util.Iterator;
 
 import javax.jdo.JDOHelper;
 import javax.jdo.PersistenceManager;
+import javax.jdo.identity.SingleFieldIdentity;
 
 import org.apache.jdo.tck.JDO_Test;
 
 import org.apache.jdo.tck.pc.mylib.PCPoint;
+import org.apache.jdo.tck.pc.singlefieldidentity.PCPointSingleFieldInteger;
 
 import org.apache.jdo.tck.util.BatchTestRunner;
 
@@ -82,6 +84,20 @@ public class GetObjectIds extends JDO_Te
 
     Object[] oids;  
 
+    /** Typed objects
+     */
+    PCPointSingleFieldInteger singleFieldIdentityObj0;
+    PCPointSingleFieldInteger singleFieldIdentityObj1;
+
+    PCPointSingleFieldInteger[] singleFieldIdentityObjs;
+
+    /** Typed object ids
+     */
+    SingleFieldIdentity singleFieldIdentityOid0;
+    SingleFieldIdentity singleFieldIdentityOid1;
+
+    SingleFieldIdentity[] singleFieldIdentityOids;  
+
     /** The second persistence manager.
      */
     PersistenceManager pm2;
@@ -99,9 +115,18 @@ public class GetObjectIds extends JDO_Te
             obj4 = new PCPoint(23,45) // not persistent
         };
 
+        singleFieldIdentityObjs = new PCPointSingleFieldInteger[] {
+            singleFieldIdentityObj0 = new PCPointSingleFieldInteger(0, 1), // persistent in pm1
+            singleFieldIdentityObj1 = new PCPointSingleFieldInteger(1, 1) // persistent in pm1
+        };
+
         getPM();
         pm.currentTransaction().begin();
         pm.makePersistent(obj2);
+        if (runsWithApplicationIdentity()) {
+            pm.makePersistent(singleFieldIdentityObj0);
+            pm.makePersistent(singleFieldIdentityObj1);
+        }
         pm.currentTransaction().commit();
         
         pm2 = getPMF().getPersistenceManager();
@@ -110,11 +135,16 @@ public class GetObjectIds extends JDO_Te
         pm2.currentTransaction().commit();
         
         oids = new Object[] {
-            oid0 = JDOHelper.getObjectId(obj0),
-            oid1 = JDOHelper.getObjectId(obj1),
-            oid2 = JDOHelper.getObjectId(obj2),
-            oid3 = JDOHelper.getObjectId(obj3),
-            oid4 = JDOHelper.getObjectId(obj4),
+                oid0 = JDOHelper.getObjectId(obj0),
+                oid1 = JDOHelper.getObjectId(obj1),
+                oid2 = JDOHelper.getObjectId(obj2),
+                oid3 = JDOHelper.getObjectId(obj3),
+                oid4 = JDOHelper.getObjectId(obj4),
+        };
+
+        singleFieldIdentityOids = new SingleFieldIdentity[] {
+                singleFieldIdentityOid0 = (SingleFieldIdentity)JDOHelper.getObjectId(singleFieldIdentityObj0),
+                singleFieldIdentityOid1 = (SingleFieldIdentity)JDOHelper.getObjectId(singleFieldIdentityObj1)
         };
 
     }
@@ -154,7 +184,7 @@ public class GetObjectIds extends JDO_Te
         StringBuffer messages = new StringBuffer();
         List paramList = Arrays.asList(objs);
         List expectedList = Arrays.asList(oids);
-        Collection actualCollection = JDOHelper.getObjectIds(paramList);
+        Collection<Object> actualCollection = JDOHelper.getObjectIds(paramList);
         Iterator expectedIterator = expectedList.iterator();
         Iterator actualIterator = actualCollection.iterator();
         for (int i = 0; i < objs.length; ++i) {
@@ -174,4 +204,56 @@ public class GetObjectIds extends JDO_Te
                 messages.toString());
         }
     }
+
+    /** */
+    public void testTypedGetObjectIdsArray() {
+        if (!runsWithApplicationIdentity()) return;
+        StringBuffer messages = new StringBuffer();
+        Object[] expectedArray = singleFieldIdentityOids;
+        Object[] actualArray = JDOHelper.getObjectIds(singleFieldIdentityObjs);
+        for (int i = 0; i < singleFieldIdentityObjs.length; ++i) {
+            Object expected = expectedArray[i];
+            Object actual = actualArray[i];
+            if (expected == null? 
+                    actual != null:
+                    !expected.equals(actual)) {
+                messages.append(
+                        "\nComparison failed for object ids at position " + i +
+                        "\nexpected: " + expected +
+                        "\nactual: " + actual);
+            }
+        }
+        if (messages.length() != 0) {
+            fail(ASSERTION_FAILED + "getObjectIds(Object[] pcs) " +
+                messages.toString());
+        }
+    }
+
+    /** */
+    public void testTypedGetObjectIdsCollection() {
+        if (!runsWithApplicationIdentity()) return;
+        StringBuffer messages = new StringBuffer();
+        List<PCPointSingleFieldInteger> paramList = Arrays.asList(singleFieldIdentityObjs);
+        List<?> expectedList = Arrays.asList(singleFieldIdentityOids);
+        Collection<?> actualCollection = JDOHelper.getObjectIds(paramList);
+        Iterator<?> expectedIterator = expectedList.iterator();
+        Iterator<?> actualIterator = actualCollection.iterator();
+        for (int i = 0; i < singleFieldIdentityObjs.length; ++i) {
+            Object expected = expectedIterator.next();
+            Object actual = actualIterator.next();
+            if (expected == null? 
+                    actual != null:
+                    !expected.equals(actual)) {
+                messages.append(
+                        "\nComparison failed for object ids at position " + i +
+                        "\nexpected: " + expected +
+                        "\nactual: " + actual);
+            }
+        }
+        if (messages.length() != 0) {
+            fail(ASSERTION_FAILED + "getObjectIds(Collection<SingleFieldIdentyty> pcs) " +
+                messages.toString());
+        }
+    }
+
 }