Also, you seem to have a quite elaborate functional test that simply
checks whether SerializationHelper is able to handle deserialing a class
from an "isolated classloader" via the SerializableType. Couldn't we
just have a simple unit test that asserted exactly that?
On Wed, 2010-01-13 at 20:25 +0100, Galder Zamarreno wrote:
On 01/13/2010 07:10 PM, Steve Ebersole wrote:
>> For completion, getReturnedClass().getClassLoader() will always return
>> null because SerializableType is initialised with java.io.Serializable
>> as returned class, and it's classloader returns null (quite likely cos
>> it's a system class?).
>
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html#getClassLoad...
>
> null generally indicates the loader is the "boot loader".
>
> The nullness itself is not an issue, the issue is the lack of
> visibility.
>
>> So, getReturnedClass().getClassLoader() is not the answer here.
> There is the only answer unfortunately. Really you'd want the Class of
> the class implementing Serializable, but given how Hibernate's "type
> system" works currently, that's not an option.
If it's not an option, why don't u throw an error or exception?
>
>>
>> Steve, from a chat earlier you indicated that you're not happy passing
>> Thread.currentThread().getContextClassLoader() but I don't understand
>> what issue do you have with this.
> The main issue is that this relies on:
> 1) when the call is made
> 2) the classloader layout of the environment in which the call occurs.
> OSGI comes to mind in which case there is actually no tccl afaik.
>
>> Finally, it might be worth understanding what, apart from query cache,
>> is Hibernate's SerializationHelper used for. If it's only for caching,
>> you could maybe delegate serialization work to the cache providers?
> Thats really a simple matter of a usage search in your IDE.
>
>