Proxy classes (usually via CGLIB proxies) need to be identified as proxies and treated in such a way that the proxy enhancements do not interfere with marshalling/unmarshalling. Two different issues have arisen with proxies:
First and foremost, Castor needs to identify when an object/class is a proxy instead of the real thing. According to the CGLIB mailing list:
this can be done by finding if a class is an implementation of the net.sf.cglib.proxy.Factory interface (this may need to be user adjustable for other proxying libraries – if there are any).
Once the proxy has been identified, this issue may need to be split into three sub-issues:
- Looking up ClassDescriptors based on a proxy class (get the proxy's superclass to look up?)
- Introspecting proxy classes (don't introspect the proxy, introspect the original?)
- Mapping proxy classes (not sure about this one... maybe the previous two will solve this one)