On Tue, Oct 5, 2010 at 10:45 AM, <rini.angre...@csiro.au> wrote: > You can only use functions to skip the attribute if you use the feature > chaining syntax. > I said "syntax", because you can omit linkField, therefore it's not really > chaining it and won't generate the extra "joining" queries, it only recycles > the syntax. > http://docs.geoserver.org/latest/en/user/data/app-schema/polymorphism.html#data-type-polymorphism > > "You can omit the linkField and OCQL if the FeatureTypeMapping being linked > to has the same sourceType with the container type. This would save us from > unnecessary extra queries, which would affect performance." > > Anyway, you can't use the functions because you can't "chain" simple > attributes (seeing both x and y are xs:integer). > However, I know what the problem is. > If you refer to this: http://jira.codehaus.org/browse/GEOT-2679, it was > decided that if the value is null and: > > 1. IF minOccur == 0 THEN skip the attribute silently > 2. IF minOccur > 0 && nillable THEN let it pass through validation in > Types.validate() > 3. IF minOccur > 0 && !nillable THEN it will throw an error through > validation in Types.validate() > > So, it's correct that it throws the error, as the attribute shouldn't be null. > Normally, we put an xlink:href in the ClientProperty when the values are > missing, i.e. one of these: > > urn:ogc:def:nil:OGC::inapplicable > urn:ogc:def:nil:OGC::missing > urn:ogc:def:nil:OGC::template > urn:ogc:def:nil:OGC::unknown > urn:ogc:def:nil:OGC::withheld > > Maybe that's what you need, and the use case that's missing is: > > 4. IF minOccur > 0 && !nillable && has xlink HREF THEN it should pass through > validation Types.validate() > > We never had this problem for complex attributes, because they never have > null as a value, but an empty array instead(since the binding is a Collection > for complex types). > Actually, Niels is working on the same problem, but it's for Geometry > attributes, and you're working on simple attributes. > What I think we should do is add another condition in the validate method to > check for xlink:href (from the attribute descriptor user data): > > if (attributeContent == null) { > --> check for xlink:href here and skip the following > if (!attribute.isNillable()) { > throw new IllegalAttributeException(attribute.getDescriptor(), > type.getName() > + " not nillable"); > } > return; > } > I will get Niels to speak to you as well.
In my case I have no xlinks, the schema is pretty simple, I have a complex attribute that contains two integer, the complex attribute is nillable, its contents are not. I think I just need to avoid generating the complex attribute, but I don't know how... I was expecting some logic like: if all sub-attributes of this complex attribute are missing, then the complex attribute is missing as well. But it seems it's not there. > I like that you're working on app-schema and fix all our existing problems :) Eh, I wish I could, but in fact I'm on the clock, so if I don't find a quick way to contribute a solution to this I'll just create an amended schema that does not break the datastore and then use xlst heavily to generate the expected output... :-( Cheers Andrea ----------------------------------------------------- Ing. Andrea Aime Senior Software Engineer GeoSolutions S.A.S. Via Poggio alle Viti 1187 55054 Massarosa (LU) Italy phone: +39 0584962313 fax: +39 0584962313 http://www.geo-solutions.it http://geo-solutions.blogspot.com/ http://www.linkedin.com/in/andreaaime http://twitter.com/geowolf ----------------------------------------------------- ------------------------------------------------------------------------------ Beautiful is writing same markup. Internet Explorer 9 supports standards for HTML5, CSS3, SVG 1.1, ECMAScript5, and DOM L2 & L3. Spend less time writing and rewriting code and more time creating great experiences on the web. Be a part of the beta today. http://p.sf.net/sfu/beautyoftheweb _______________________________________________ Geotools-devel mailing list Geotools-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/geotools-devel