Currently the JavaBeanConverter uses reflection. Maybe it's better to use bean introspection. The attached patch changes BeanProvider, so that it uses bean introspection.
Maybe it's better to add a setBeanProvider info to the JavaBeanConverter in order to support other (custom) BeanProviders.
Description
Currently the JavaBeanConverter uses reflection. Maybe it's better to use bean introspection. The attached patch changes BeanProvider, so that it uses bean introspection.
Maybe it's better to add a setBeanProvider info to the JavaBeanConverter in order to support other (custom) BeanProviders.
Here's an alternate approach in case you are interested. We save the types, because, for example, byte or char types will not be handle correctly if the type is not encoded in the file. It also only writes changed properties and uses the current class loader to get the beaninfo (should probably default to Introspection if the beaninfo does not exist, etc. etc. etc.).
There are some other tweaks, like not saving a property if it is hidden and expert, not saving read-only properties, etc. Also has mapping of class names, so that if you move a bean from one package to another, or just rename it, you can still read the file (I think that this duplicates a feature that is already in XStream).
We've been using this for close to 2 years now. It saves and restores our 200+ javabeans (http://www.ergotech.com) and most of the javabean editor. That is, we treat our screens and similar as a JavaBeans.
Jim Redman added a comment - 20/Jul/07 01:29 PM Here's an alternate approach in case you are interested. We save the types, because, for example, byte or char types will not be handle correctly if the type is not encoded in the file. It also only writes changed properties and uses the current class loader to get the beaninfo (should probably default to Introspection if the beaninfo does not exist, etc. etc. etc.).
There are some other tweaks, like not saving a property if it is hidden and expert, not saving read-only properties, etc. Also has mapping of class names, so that if you move a bean from one package to another, or just rename it, you can still read the file (I think that this duplicates a feature that is already in XStream).
We've been using this for close to 2 years now. It saves and restores our 200+ javabeans (http://www.ergotech.com) and most of the javabean editor. That is, we treat our screens and similar as a JavaBeans.
Added an updated version of the JavaBeanConverter and BeanProvider as attachement of issue <a href="http://jira.codehaus.org/browse/XSTR-280">XSTR-280</a>. Contains fix for omitted fields and field aliases.
Hinse ter Schuur added a comment - 24/Jul/07 08:47 AM Added an updated version of the JavaBeanConverter and BeanProvider as attachement of issue <a href="http://jira.codehaus.org/browse/XSTR-280">XSTR-280</a>. Contains fix for omitted fields and field aliases.
@Hinse:
Thanks for your patch. I've added a modified version of the patch you've provided in XSTR-280 and made the tests JDK independent.
@Jim:
Also thank you for your contribution. Basically the functionality is already too specialized, some of it can already be done with other mechanisms of XStream. However, there are some interesting details.
Joerg Schaible added a comment - 26/Jul/07 05:05 PM @Hinse:
Thanks for your patch. I've added a modified version of the patch you've provided in XSTR-280 and made the tests JDK independent.
@Jim:
Also thank you for your contribution. Basically the functionality is already too specialized, some of it can already be done with other mechanisms of XStream. However, there are some interesting details.
Here's an alternate approach in case you are interested. We save the types, because, for example, byte or char types will not be handle correctly if the type is not encoded in the file. It also only writes changed properties and uses the current class loader to get the beaninfo (should probably default to Introspection if the beaninfo does not exist, etc. etc. etc.).
There are some other tweaks, like not saving a property if it is hidden and expert, not saving read-only properties, etc. Also has mapping of class names, so that if you move a bean from one package to another, or just rename it, you can still read the file (I think that this duplicates a feature that is already in XStream).
We've been using this for close to 2 years now. It saves and restores our 200+ javabeans (http://www.ergotech.com
) and most of the javabean editor. That is, we treat our screens and similar as a JavaBeans.