persistence@glassfish.java.net

RE: Please review the fix for issue 256

From: Gordon Yorke <gordon.yorke_at_oracle.com>
Date: Fri, 17 Mar 2006 14:25:49 -0500

Yes Marina, I think adding a ignore PU into the testing persistence.xml file is a good idea (with comments of course as there will not be a unit test for this).
--Gordon

-----Original Message-----
From: Marina Vatkina [mailto:Marina.Vatkina_at_Sun.COM]
Sent: Friday, March 17, 2006 2:11 PM
To: persistence_at_glassfish.dev.java.net
Cc: Tom Ware
Subject: Please review the fix for issue 256


Attached code fixes the issue as discussed in the option b).

The dummy DataSource is created (thanks Gordon for the idea!)
by using existing DataSourceImpl class, which if accessed, will
throw an exception.

Do we want a test case for this (like a PU "ignore" in an existing
persistence.xml)?

thanks,
-marina

Gordon Yorke wrote:
> Hello Marina,
> Yes I agree, I think we need validation for EE deployment. Go with option b.
> --Gordon
>
> -----Original Message-----
> From: Marina Vatkina [mailto:Marina.Vatkina_at_Sun.COM]
> Sent: Thursday, March 16, 2006 1:26 PM
> To: persistence_at_glassfish.dev.java.net
> Cc: Tom Ware
> Subject: Re: Proposed fix for issue 256
>
>
> Gordon,
>
> EntityManagerSetupImpl.predeploy has the following code:
>
> if(!validationOnly && persistenceUnitInfo != null &&
> persistenceUnitInfo.getTransactionType() == PersistenceUnitTransactionType.JTA) {
> if(persistenceUnitInfo.getJtaDataSource() == null) {
> throw new
> PersistenceException(EntityManagerSetupException.jtaPersistenceUnitInfoMissingJtaD
> ataSource(persistenceUnitInfo.getPersistenceUnitName()));
> }
> }
>
>
> And in Sava SE the persistenceUnitInfo is implemented by
> oracle.toplink.essentials.ejb.cmp3.persistence.PersistenceUnitInfo which
> getJtaDataSource() always returns null:
>
> public DataSource getJtaDataSource(){
> // not required in Java SE
> return null;
> }
>
> Option a) is tweak EntityManagerSetupImpl.predeploy
> Option b) is to change PersistenceUnitInfo to handle the value, and
> PersistenceContentHandler to parse it (instead of ignoring right now).
>
> I prefer option b)
>
> Thanks,
> -marina
>
> Gordon Yorke wrote:
>
>>Hello Marina,
>> Without more specifics on the technical roots of the problem I would have to diagnose this case and provide a solution myself. If you can provide pointers to the broken code (class names, line numbers) and your proposed solution, this process will go much faster.
>>--Gordon
>>
>>-----Original Message-----
>>From: Marina Vatkina [mailto:Marina.Vatkina_at_Sun.COM]
>>Sent: Wednesday, March 15, 2006 6:58 PM
>>To: persistence_at_glassfish.dev.java.net
>>Cc: Tom Ware
>>Subject: Re: Proposed fix for issue 256
>>
>>
>>Tom, Gordon,
>>
>>Did you look into this?
>>
>>thanks,
>>-marina
>>
>>Marina Vatkina wrote On 03/14/06 17:31,:
>>
>>
>>>Tom,
>>>
>>>The current code throws an exception if persistence.xml
>>>contains a JTA PU even if it's not used by the app. The
>>>exception is completely misleading, as it complains that
>>>jta datasource is not provided, while it's TopLink code
>>>that ignores the value.
>>>
>>>There are 2 options to fix this:
>>>a) ignore JTA transaction type in Java SE. This can be either
>>>accomplished by checking the actual class type of PUInfo instance,
>>>or using any other available setting, if there is one;
>>>
>>>b) Change PUInfo processing to accept the JTA (and non-JTA for
>>>simplicity) datasource from PersistenceContentHandler.
>>>
>>>I suggest option b). If you agree I can fix it.
>>>
>>>thanks,
>>>-marina
>>
>>
>