Hi Mike,
In kodo application id will not be wrapped in any sort of objectId.
The applicationId object will directly be returned.
E.g:
In OpenJPA,
public Object pcNewObjectIdInstance()
{
return new
ObjectId(org.apache.openjpa.persistence.jdbc.meta.RaviA.class, new
RaviAId());
}
In Kodo,
public Object pcNewObjectIdInstance()
{
return new RaviAId();
}
Regards,
Ravi.
Michael Dick wrote:
>
> Just a couple of thoughts..
>
> Presumably Kodo uses a product derivation that causes a different ObjectId
> .
> If that's the case we probably could introduce a test derivation that does
> something similar and verifies the fix.
>
> That said, removing the cast shouldn't be impossible to do. In trunk it
> might be better to define an interface that kodo can extend rather than
> just
> removing the cast. In the service releases I wouldn't want to make that
> kind
> of change though.
>
> -mike
>
> On Tue, Dec 1, 2009 at 9:06 AM, Donald Woods <[email protected]> wrote:
>
>> Yep, go ahead and open a JIRA and include the details from your email,
>> along with which OpenJPA releases this needs to be addressed in.
>>
>>
>> -Donald
>>
>>
>>
>> Ravi P Palacherla wrote:
>>
>>> Hi All,
>>>
>>> As part of OPENJPA-263 the following code is added to
>>> org/apache/openjpa/datacache/DataCacheStoreManager.java
>>>
>>> oidList.add((OpenJPAId) sm.getObjectId());
>>>>>
>>>>
>>> I think there is no need to perform casting in the above source.
>>> Due to the above casting there is no issue in openJPA testcases but the
>>> issue appears on products like Kodo which uses openJPA source
>>> internally.
>>>
>>> Can I ask for removal of this casting via JIRA without an openJPA test
>>> case
>>> ?
>>> I think it is not possible to provide an openJPA testcase because
>>> sm.getObjectId() will always return OpenJPAId in case of openJPA.
>>>
>>> Regards,
>>> Ravi.
>>>
>>> To be more precise; the following exception stack trace is seen in kodo
>>> :
>>>
>>> [java] Caused by: java.lang.ClassCastException:
>>> com.sample.TestTableId
>>> [java] at
>>>
>>> org.apache.openjpa.datacache.DataCacheStoreManager.loadAll(DataCacheStoreManager.java:461)
>>> [java] at
>>>
>>> org.apache.openjpa.kernel.DelegatingStoreManager.loadAll(DelegatingStoreManager.java:121)
>>> [java] at
>>> org.apache.openjpa.kernel.BrokerImpl.findAll(BrokerImpl.java:984)
>>> [java] at
>>> org.apache.openjpa.kernel.BrokerImpl.findAll(BrokerImpl.java:1027)
>>> [java] at
>>> org.apache.openjpa.kernel.BrokerImpl.findAll(BrokerImpl.java:913)
>>> [java] at
>>>
>>> org.apache.openjpa.kernel.AbstractPCData.toRelationFields(AbstractPCData.java:217)
>>> [java] at
>>>
>>> org.apache.openjpa.kernel.AbstractPCData.toNestedFields(AbstractPCData.java:184)
>>> [java] at
>>> org.apache.openjpa.kernel.AbstractPCData.toField(AbstractPCData.java:78)
>>> [java] at
>>> org.apache.openjpa.kernel.PCDataImpl.loadField(PCDataImpl.java:197)
>>> [java] at
>>> org.apache.openjpa.kernel.PCDataImpl.load(PCDataImpl.java:147)
>>> [java] at
>>>
>>> org.apache.openjpa.datacache.DataCacheStoreManager.initialize(DataCacheStoreManager.java:343)
>>> [java] at
>>>
>>> org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:111)
>>> [java] at
>>>
>>> org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
>>> [java] at
>>> org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:894)
>>> [java] at kodo.kernel.KodoBroker.initialize(KodoBroker.java:65)
>>>
>>> Reason behind the above exception is because when application identity
>>> class
>>> is used;
>>> In openJPA, ObjectId is generated by enhancer generated method
>>> pcnewObjectIdInstance and it returns wrapped identity class
>>> like as follows.
>>> public Object pcNewObjectIdInstance()
>>> {
>>> return new ObjectId(ApplicationIdentityIdClass.class, new
>>> AppId());
>>> }
>>> So, the change was not affected to OpenJPA code. However, in OpenJPA
>>> derived products like Kodo, pcNewObjectIdInstance
>>> returns raw application identity class instance.
>>> Due to this "oidList.add((OpenJPAId) sm.getObjectId())" throws
>>> classcast
>>> exception.
>>>
>>
>
>
--
View this message in context:
http://n2.nabble.com/Need-process-help-for-a-code-change-that-does-not-have-an-openJPA-testcase-tp4092236p4096459.html
Sent from the OpenJPA Developers mailing list archive at Nabble.com.