FYI, i have attached a patch which fixes this issue to this jira: http://jira.codehaus.org/browse/GEOT-2550
Please speak up if you have issue with it. -Justin Gabriel Roldan wrote: > Justin Deoliveira wrote: >> Some changes to the implementation of >> SimpleFeature.getDefaultGeometry() are causing some problems with >> geoserver cite tests. The changes in question are described here: >> >> http://jira.codehaus.org/browse/GEOT-2403 >> >> As stated in the issue, the method before the changes was inconsistent >> with the contract of getDefaultGeometry(), and henceforth the >> following fallback was removed: >> >> +// // not found? Ok, let's do a lookup then... >> +// if ( defaultGeometry == null ) { >> +// for ( Object o : values ) { >> +// if ( o instanceof Geometry ) { >> +// defaultGeometry = o; >> +// break; >> +// } >> +// } >> +// } >> >> In which an exhaustive lookup for any geometry is done. Perhaps not >> the best place for the code, and perhaps bad practice to depend on >> such a fallback/hack/assumption, but nonetheless, it was relied on, >> and hence needs to be replicated with an alternative to rectify the >> regression. >> >> The case in which this is coming up is in a wfs bounding box query >> which does not specify a specific geometric attribute. So what is done >> is that the empty string "" is placed into a PropertyName. This runs >> through the PropertyAccessor extension point and gets mapped to >> SimpleFaturePropertyAccessorFactory.DEFAULT_GEOMETRY_ACCESS, which >> just calls through to feature.getDefaultGeometry(). >> >> So.. I am proposing that the definition of "" as a property name be >> explicitly mapped to *any* geometry, since that is how it is being >> used in this context, rather than the default goemetry, now that its >> definition and implementation have been synced up. >> >> Discussing the change with Gabriel he has suggested we change the name >> DEFAULT_GEOMETRY_ACCESS to ANY_GEOMETRY_ACCESS, which makes sense to me. >> >> Thoughts and/or opinions? The only other place place I can see this >> causing an issue might with SLD. > My gut feeling is it shouldn't be a problem for SLD. But also am not > sure whether SFPropertyAccessor plays any role in SLD handling. > Still, getDefaultGeometry() was first introduced purely for the sake of > playing nice with SLD, the only spec where such a concept exists, up to > my knowledge. And SLD expects it to be always the same attribute. If it > werent, and you have a FT with a point and a polygon attribute, the > point one being the default geom, a feature instance where the point > attribute is null may end up being rendered with a point symbolizer over > the polygon attribute, and viceversa. Still, the fact that we didn't get > a complain is not an indication that there's no problem, it is just a > hard one to identify: multiple geometry attributes aren't that common, > and by looking at a map it's quite hard to know if a given symbol comes > from the point attribute or from the polygon one being applied a point > symbolizer... So when evaluating an SLD it either happens that > SFPropertyAccessor is not being used, and getDefaultGeometry() is being > called, meaning we're ok in returning the declared default geometry, or > it is used and hence there's no regression; worse case the "bug" keeps > as hidden as it was. > > my 2c.- > > Gabriel >> >> -Justin >> > > -- Justin Deoliveira OpenGeo - http://opengeo.org Enterprise support for open source geospatial. ------------------------------------------------------------------------------ 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 _______________________________________________ Geotools-devel mailing list Geotools-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/geotools-devel