db-jdo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andy Jefferson (JIRA)" <j...@apache.org>
Subject [jira] Assigned: (JDO-144) Incorrect value for public Collection CollectionOfDate12
Date Sat, 22 Oct 2005 10:01:20 GMT
     [ http://issues.apache.org/jira/browse/JDO-144?page=all ]

Andy Jefferson reassigned JDO-144:

    Assign To: Michelle Caisse  (was: Andy Jefferson)

Thanks Michelle.
Well I'll explain what the problem is, and some options.

The test creates an object with many collections and instantiates them as Vectors (as you
know). It tries to persist it, and JPOX converts all Collection fields to the equivalent wrapper
type for the _instantiated_ type of the field. This is fine. The test then goes back to the
datastore and retrieves the persisted object. JPOX has to look at what is in the datastore
for each Collection field and create a suitable Collection. At this point it has no idea that
the user wants a Vector creating since the instantiated type is not stored in the datastore
anywhere. Consequently it knows it has to create a Collection type, and that the user has
provided an <order>, so it create an ArrayList (since that is the JPOX-defined default
for Lists). 

How is JPOX to know that it should instantiate the fields as Vector when it is simply retrieving
an object from the datastore and the declared type of the field is Collection ? JPOX calls
the default constructor of CollectionCollections and then has to instantiate each field somehow.
So it takes a guess. If anyone thinks it should do better, then please please define how.

What I would do to the test is change your "Vector.elementAt(i)" calls to be "List.get(i)"
(since List.get(i) is more generic and does the same thing as Vector.elementAt(i)), and cast
the Collection field to a List instead of a Vector. This will work because JPOX (CVS) has
given it a List wrapper.

Hope that makes sense.

> Incorrect value for public Collection CollectionOfDate12
> --------------------------------------------------------
>          Key: JDO-144
>          URL: http://issues.apache.org/jira/browse/JDO-144
>      Project: JDO
>         Type: Bug
>   Components: tck20
>     Reporter: Michelle Caisse
>     Assignee: Michelle Caisse

> [java] 1) test(org.apache.jdo.tck.models.fieldtypes.TestCollectionCollections)junit.framework.AssertionFailedError:
Assertion A6.4.3-33 (TestCollectionCollections) failed:
> [java] Incorrect value for public Collection CollectionOfDate12
> [java]      at org.apache.jdo.tck.JDO_Test.fail(JDO_Test.java:546)
> [java]      at org.apache.jdo.tck.models.fieldtypes.TestCollectionCollections.checkValues(TestCollectionCollections.java:146)
> [java]      at org.apache.jdo.tck.models.fieldtypes.TestCollectionCollections.runTest(TestCollectionCollections.java:104)
> [java]      at org.apache.jdo.tck.models.fieldtypes.TestCollectionCollections.test(TestCollectionCollections.java:69)
> [java]      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> [java]      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> [java]      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> [java]      at org.apache.jdo.tck.JDO_Test.runBare(JDO_Test.java:204)
> [java]      at org.apache.jdo.tck.util.BatchTestRunner.start(BatchTestRunner.java:115)
> [java]      at org.apache.jdo.tck.util.BatchTestRunner.main(BatchTestRunner.java:93)

This message is automatically generated by JIRA.
If you think it was sent incorrectly contact one of the administrators:
For more information on JIRA, see:

View raw message