well, for a start its great to see the issue being debated before finalisation of code :-)
I'm not over the intricacies of the beast to be honest, just providing a "sanity check". One thing I'd point out - namespaces do not exist to disambiguate the feature type on the server - they exist to disambiguate it once it leaves the safety of the server - in the outside world. If the feature type names do not mean anything - just call them all foo:1 foo:2 foo:3 - there is simply no need to have disambiguation around arbitrary names. The current linkage between WMS layer name anf featuretype name is a convenient default - but is purely arbitrary and should be able to be overridden. Eg hat about a feature type road, and WMS layers road250K road100K road25K, in a layer group road_anyscale? IMHO What we're talking about is not the information model - its UI workflow optimisation for simple cases. Its the bleed-through of this concern to the resource design that caused such confusion. so - what is a dataAccess - semantically? is it a featuretype, or is an adaptor to allow common optimisation of access of a set of feature types, or is it a connection - the right to access a set of resources? I've always had a problem with the declaration of namespaces and database connection parameters in the same file ;-) Perhaps someone can throw up a formal model of this configuration metadata - I find text descriptions too prone to misinterpreation. Rob On Wed, Jun 17, 2009 at 3:15 PM, Gabriel Roldan<grol...@opengeo.org> wrote: > Ben Caradoc-Davies wrote: >> Andrea Aime wrote: >>> But isn't the namespace a publishing property, and >>> so something that should be set at the layer >>> level? >> >> Some feature types get their namespaces glued on at publishing time. >> Some have their namespace as an intrinsic property; for example, >> app-schema feature types. >> >> You think you have problems: a DataAccess can provide feature types with >> qualified names in different namespaces. See DataAccess: "List<Name> >> getNames()". Given that a workspace and thus data store are named by the >> namespace prefix, if you want multiple namespaces from a single >> DataAccess, you are stuffed. For example, I can create a single >> DataAccess that returns a gsml:MappedFeature and a sa:SamplingPoint. In >> which workspace can this live? The workaround is to Not Do That Then, >> and instead proliferate DataAccesses, one per feature type. The catalog >> implementation prevents a legitimate use of the DataAccess API. See >> GEOS-3042. > It does now, but it doesn't need to when the resource/publish split > becomes real. > To augment the app-schema case, there's also the cascaded WFS case. If > you're cascading featuretype prefix:Road from a wfs and you need to > rename it to anotherprefix:Road then you're not just cascading. > But when the resource/publish split it should be heaven. > First, namespace (as per the ones registered in geoserver) stops being a > first class citizen to be means to ensure name uniqueness _only_ for > those DataAccesses whose feature types do not have an inherent > namespace. That is, they ensure name uniqueness at the datastore level, > namespace is passed as a DataAccess factory parameter to ensure name > uniqueness at the WFS entry point level. > Second, there's gonna be an even better separation of concerns. > Namespace is meaningless outside WFS. WCS and WMS do not really need > them to refer to a coverage or a wms layer. They will just refer to a > resource, which refers to a data store, which refers to a workspace. So > no name clash. You'll just need to be sure to _publish_ them with unique > "layer" names. Benefits of this are bound to imagination. Say you want > to publish the same resource twice in WMS, with different default > styles, different CRS's, or using different "definition filters" (common > case being a single roads type where you want to publish roads and > highways as different layers). > > But I have to admit after all this ranting, the original issue keeps > being confusing. Reason being there's not a perfect separation of > concerns between ResourceInfo and LayerInfo yet. In my mind, > ResourceInfo should the closest to the physical resource metadata as > possible. In the case of feature types, only the information that can be > obtained from the FeatureType, and hence in the UI plainly informative: > qualified name, native CRS, native bounds, etc. > LayerInfo should be all about publishing a resource: published CRS, > alias, lat/lon bbox, etc. > - Where does namespace fit? both places. In ResourceInfo it should be > immutable, even null. Then we should get rid of the namespace datastore > parameter. It is a band aid after all, no real API for it, just a > convention we injected into geotools for the good of geoserver pre-2.0 > :). But the empty namespace is a perfectly valid one in GeoTools. And > GeoServer could use that knowledge to infer whether a LayerInfo > referring to a ResourceInfo _needs_ to use an overriding namespace (if > the resource does not natively provide one), or _can_ use an overriding > namespace (just a convenience publishing option). > - are layernames gonna be qualified? for WFS, yes. For WCS/WMS, no need. > The lookup mecanism from a non qualified WMS layer name to it's > underlying resource is guaranteed since the layer has a direct reference > to the resource it's publishing. When you publish the layer just make > sure it's name is unique "profile/map" wise (aka, WMS entry point wise). > - what happens if I publish a layer with a different name than it's > resource? you're aliasing the resource. > - what happens if I change the published namespace for a resource? > you're aliasing the resource. > > This is how I see the resource/publish split is gonna give the benefits > with the least hassle. I may be missing important topics though. > Comments welcome. > > Gabriel >> > > > -- > Gabriel Roldan > 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 > ------------------------------------------------------------------------------ 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