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.