Justin Deoliveira ha scritto: > Hi all, > > A few issues have popped up recently related to how maps (in particular > the metadata map for catalog objects) is persisted/depersisted. The > latest issue revolves around someone trying ot configure a feature type > via rest. > > The issue is that in an attempt to make xstream less verbose, i made it > so that someone trying to upload map data with rest can do this: > > <map> > <key1>value1</key1> > <key2>value2</key2> > ... > </map> > > As opposed to the xstream default: > > <map> > <entry> > <string>key1</string> > <string>value1</string> > </entry> > <entry> > <string>key2</string> > <string>value2</string> > </entry> > </map> > > However this has caused some issues. The main issue is that type > information is lost. This pops up in a couple of places: > > * when a feature is persisted in geoserver, and then read back in again > it is always read back in as a string. > > * when a feature type is uploaded via rest, the values in the metadata > map are of type string. > > The end result is the same, ClassClassException for code that assumes > type information about the metadata map. > > The quick solution for now has been to replace this: > > (Integer) featureType.getMetadata().get( "foo" ); > > with: > > Converters.convert( featureType.getMetadata().get( "foo" ), Integer.class ); > > The longer term solution is to amend the xstream persistence a bit so > that type information is not lost. This is however a bit tricky though. > And probably won't fix every REST case. > > So I am wondering. What do people think about making it practice that > whenever accessing data from a metadata map, that a converter be used.
I would be ok using the converters everywhere. But we should make it pretty explicit that the user map is made of strings, Map<String,String>. This way the need of using some kind of conversion is obvious (teaching people that they can use Converters instead of Integer.parseInt(xxx) is another story). Cheers Andrea -- Andrea Aime OpenGeo - http://opengeo.org Expert service straight from the developers. ------------------------------------------------------------------------------ Crystal Reports - New Free Runtime and 30 Day Trial Check out the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment. http://p.sf.net/sfu/businessobjects _______________________________________________ Geoserver-devel mailing list Geoserver-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/geoserver-devel