db-jdo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Craig Russell (JIRA)" <j...@apache.org>
Subject [jira] Commented: (JDO-611) GetObjectIdForPersistentInterface - Implementation Class / PICompany / ICompany Mess
Date Thu, 06 Nov 2008 16:26:01 GMT

    [ https://issues.apache.org/jira/browse/JDO-611?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12645503#action_12645503

Craig Russell commented on JDO-611:

For easy reference, this is the test case method: 
    public void testGetObjectId() { 
        if (!runsWithApplicationIdentity()) { 
        pm = getPM(); 
        Transaction tx = pm.currentTransaction(); 
        ICompany icompany = (ICompany)pm.newInstance(ICompany.class); 
        icompany.setFounded(new Date()); 

        LongIdentity ioid = (LongIdentity)pm.getObjectId(icompany); 

        Class icompanyOidClass = ioid.getTargetClass(); 
        if (icompanyOidClass != icompany.getClass()) 
            appendMessage(ASSERTION_FAILED + 
                 " getObjectId(icompany) should return interface class.\n" + 
                    "expected: " + icompany.getClass().getName() + "\n" + 
                    "actual: " + icompanyOidClass.getName()); 

a) and b) I agree. The ICompany interface isn't persistent, so the newInstance and addTearDownClass
should use PICompany instead of ICompany. 

c) I agree that the check is wrong. Here's the spec: 
For interfaces and classes that use a SingleFieldIdentity as the object-id class, if the returned
stance is subsequently made persistent, the target class stored in the object-id instance
is the param- 
eter of the newInstance method that created it. 

So the check should verify that the target class for the oid instance is the PICompany.class
(with changes as above). Here's what I'd propose to change: 

if (icompanyOidClass != PICompany.class) 

Actually, I'd like to change the variable name to pICompanyOidTargetClass so it's clear that
the class being retrieved from the oid instance is the target class. 


> GetObjectIdForPersistentInterface - Implementation Class / PICompany / ICompany  Mess
> -------------------------------------------------------------------------------------
>                 Key: JDO-611
>                 URL: https://issues.apache.org/jira/browse/JDO-611
>             Project: JDO
>          Issue Type: Test
>          Components: tck2
>    Affects Versions: JDO 2 maintenance release 2
>            Reporter: Ilan Kirsh
> I have two issues with this test:
> (1)
> IMO, PICompany should be written instead of ICompany:
> (a)
> ICompany icompany = (ICompany)pm.newInstance(PICompany.class);
>   instead of:
> ICompany icompany = (ICompany)pm.newInstance(ICompany.class);
> and:
> (b)
> addTearDownClass(PICompany.class);
>   instead of:
> addTearDownClass(ICompany.class);
> ICompany is not persistence capable, so the implementation does not have to handle it.
> (2)
> I think that the following check is wrong:
> if (icompanyOidClass != icompany.getClass())
> icompany.getClass()  => the physical internal implementation class
> icompanyOidClass  => the logical interface (PICompany)
> Actually and exception should be thrown if (icompanyOidClass == icompany.getClass())

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message