[ 
https://issues.apache.org/jira/browse/ARIES-681?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Balazs Zsoldos updated ARIES-681:
---------------------------------

    Attachment: classloadingFromMultipleProviderDuringQuery.0.3.patch

The attached file contains a patch for version 0.3 (till now I tested with the 
release only). I guess the patch is almost the same for the version in the SVN 
trunk.
The patch changes the Temp and the normal DelegatingClassLoader to search 
resources and classes in the PU bundle first and if it does not find it checks 
the bundle of the JPA provider.

> JPA Container BundleDelegatingClassLoader should look for classes in the 
> provider bundle, too
> ---------------------------------------------------------------------------------------------
>
>                 Key: ARIES-681
>                 URL: https://issues.apache.org/jira/browse/ARIES-681
>             Project: Aries
>          Issue Type: Bug
>          Components: JPA
>    Affects Versions: 0.3
>         Environment: Glassfish 3.0 (EclipseLink 2.0.2), Glassfish 3.1 
> (EclipseLink 2.2)
>            Reporter: Balazs Zsoldos
>         Attachments: classloadingFromMultipleProviderDuringQuery.0.3.patch
>
>
> Currently the BundleDelegatingClassLoader in JPA container only looks for 
> classes in the bundle of the entitymanager. However the JPA implementation 
> Eclipselink needs some classes from itself. The reason is that in entity 
> classes the properties that hold mapping of One-To-Many are converted to 
> EclipseLink list type. See the following exception stacktrace:
> Internal Exception: java.lang.ClassNotFoundException: 
> org.eclipse.persistence.indirection.IndirectList
>       at 
> org.eclipse.persistence.exceptions.ValidationException.classNotFoundWhileConvertingClassNames(ValidationException.java:2317)
>       at 
> org.eclipse.persistence.internal.queries.InterfaceContainerPolicy.convertClassNamesToClasses(InterfaceContainerPolicy.java:123)
>       at 
> org.eclipse.persistence.mappings.CollectionMapping.convertClassNamesToClasses(CollectionMapping.java:788)
>       at 
> org.eclipse.persistence.descriptors.ClassDescriptor.convertClassNamesToClasses(ClassDescriptor.java:1458)
>       at 
> org.eclipse.persistence.sessions.Project.convertClassNamesToClasses(Project.java:362)
>       at 
> org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:322)
>       ... 83 more
> Caused by: java.lang.ClassNotFoundException: 
> org.eclipse.persistence.indirection.IndirectList
>       at 
> org.apache.felix.framework.ModuleImpl.findClassOrResourceByDelegation(ModuleImpl.java:744)
>       at org.apache.felix.framework.ModuleImpl.access$100(ModuleImpl.java:61)
>       at 
> org.apache.felix.framework.ModuleImpl$ModuleClassLoader.loadClass(ModuleImpl.java:1656)
>       at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
>       at 
> org.apache.felix.framework.ModuleImpl.getClassByDelegation(ModuleImpl.java:604)
>       at org.apache.felix.framework.Felix.loadBundleClass(Felix.java:1487)
>       at org.apache.felix.framework.BundleImpl.loadClass(BundleImpl.java:897)
>       at 
> org.apache.aries.jpa.container.unit.impl.BundleDelegatingClassLoader$1.run(BundleDelegatingClassLoader.java:50)
>       at 
> org.apache.aries.jpa.container.unit.impl.BundleDelegatingClassLoader$1.run(BundleDelegatingClassLoader.java:47)
>       at java.security.AccessController.doPrivileged(Native Method)
>       at 
> org.apache.aries.jpa.container.unit.impl.BundleDelegatingClassLoader.findClass(BundleDelegatingClassLoader.java:47)
>       at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
>       at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
>       at java.lang.Class.forName0(Native Method)
>       at java.lang.Class.forName(Class.java:247)
>       at 
> org.eclipse.persistence.internal.security.PrivilegedAccessHelper.getClassForName(PrivilegedAccessHelper.java:88)
>       at 
> org.eclipse.persistence.internal.queries.InterfaceContainerPolicy.convertClassNamesToClasses(InterfaceContainerPolicy.java:120)
>       ... 87 more

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to