On 11/05/2011 17:54, Dan Berindei wrote:
On Wed, May 11, 2011 at 7:08 PM, Pete Muir<pmuir(a)redhat.com>
wrote:
> Were we developing for OSGi I would certainly agree with you. However in many
environments today we can reasonably expect the TCCL to be set and to be able to load the
classes we need. So whilst making it part of the API is the safest option, it's also
making complicated an API for the sake of the few at the cost of the many. Further this
also seems kinda nasty to me. We know the class (and hence bundle/module) when we put the
object into Infinispan, therefore why do we require people to respecify this again?
>
> David, can we not actually do something here akin to what we are discussing for Weld?
Whereby we can serialize out the bundle id and then find the correct CL based on that when
we deserialize.
What if the object is a java.util.ArrayList? Each element in the list
could belong to a different bundle, so you'd have to write a bundle id
for every element in the list.
Yes, if you know the Bundle-SymbolicName and Version
(or the Bundle ID)
you can find its classloader.
On the other question, if you're passing in a class object then you can
obtain its classloader and hence the bundle where it came from. But, and
I think this is what Dan allused to above, is it always true that the
class your passing in comes from the bundle that you need to have or
could it also come from one of its parent class loaders?
Cheers,
David