Looking at https://jira.jboss.org/jira/browse/JBREFLECT-16 I wanted to do the same as I did to make the reflect flavour properly serializable, which was simply to add this to ClassInfo, as mentioned here http://community.jboss.org/message/534270#534270:
protected Object writeReplace()
{
return new MarshalledClassInfo(getType());
}
public static class MarshalledClassInfo implements Serializable
{
private static final long serialVersionUID = 1L;
Class<?> type;
public MarshalledClassInfo(Class<?> type)
{
this.type = type;
}
protected Object readResolve()
{
TypeInfoFactory tif = new IntrospectionTypeInfoFactory();
return tif.getTypeInfo(type);
}
}
If I do the same for JavassistTypeInfo, then that will load the class. Is that a bad thing? Probably...
The alternative for this simple implementation to work is to save the name and the classloader, and classloaders are not serializable.
Or am I missing something? When deserializing a class should that happen in the same classloader (or one with access to similar classes if serialized out of the vm) as the one that serialized it in the first place? If the answer is yes, then I can go forward with this.