GeoTools Blog from July, 2007

  1. Whats Up?
  2. Monthly Release
  3. Query Hints
  4. PrePostFilterVisitorSplitter Confusion
  5. Factory Finder=
  6. FeatureCollection

<jdeolive> does anyone have any agenda items
<jgarnett> 0) what is up
<jgarnett> 1) monthly release
<aaime> 2) Query hints (again)
<sfarber> 3) PrePostFilterVisitorSplitter confusion (GeoAPI filters, etc.)
<jonathanv> don't forget featurecollection
<gdavis> 4). factory finder stuff is not working as martin suggests
<jgarnett> gdavis - geometry ready to be supported yet? Or are you just stuck behind factory finder stuff?
<aaime> 5) featurecollection (happy? (smile) )
<jdeolive> sorry, jonathonv, did you want a specific item for featurecollection?
<jdeolive> ok
<jonathanv> no
<gdavis> im stuck behind factory finder stuff before I can get back on supported status stuff. it's basically ready once the factory finder stuff works
<jdeolive> anyone else?
<jdeolive> looks like a full one so lets get started, if anyone has anything else just add it on
<jdeolive> 0) whats up
<jdeolive> everyone can sound off here
<jdeolive> jdeolive: geoserver 1.5.2 release
<aaime> me too
<aaime> added fast oracle bbox computation today (it was too silly it did not have one...)
<jgarnett> jody: factory finder is not my friend, having frun reviewing the FM work on my own time
<gdavis> im trying to make a factory finder for the unsupported geom module, so that i can get it supported. the factory finder stuff doesn't appear to be working tho
<gdavis> anyone else?
<jdeolive> ok, lets move on
<jdeolive> 1) monthly release
<jdeolive> it is still on my list fo release 2.4-RC0 and 2.5-M1
<jdeolive> i was going to try on the weekend... but didn't get around to it (sad)
<jdeolive> although i still want to run geoserver cite before 2.5-M1
<jdeolive> but i think 2.4-RC0 is priority anyways
<jdeolive> so i am going to try and release it this week after the geoserver release
<jdeolive> anyone have any objections?
<jgarnett> We are still on to release 2.5-M0 this week
<jgarnett> (normal monthly release)
<aaime> Geoserver release means gt2 release too
<aaime> 2.3.3
<jgarnett> I would like to get this factory finder stuff sorted out first.
<jgarnett> Wow a lot going on.
<jdeolive> yup
<jgarnett> We may have fun keeping all the patches straight; email early and often.
<jdeolive> yeha... so jody shall we wait to talk about 2.5-M0 until agenda item 4?
<gdavis> yes id like to get this factory finder stuff working before the release
<aaime> About 2.4.0-rc0, I just have to add the "dstype" param to the data source factories
<jgarnett> well not really; the bug will be fixed and the release will go out.
<aaime> to avoid confusion, just like the dbtype in jdbc datastores
<jgarnett> that is about it.
<jdeolive> aaime, will all the factories check for it?
<aaime> Yeah, that's the idea
<aaime> just like jdbc datastores
<jdeolive> i guess this is to stop property datastore for barfing exceptions (smile)
<aaime> ?
<aaime> I meant java.sql.DataSource factories
<aaime> At the moment we have two, DBCP and JNDI
<aaime> there is not confusion
<jdeolive> oh ok... sorry, i was confused
<aaime> but add one, say C3P0, and hell will break loose
<jdeolive> i understand now
<jdeolive> do you know when you will get that in andrea?
<aaime> I can do that as soon as tomorrow. Is that ok?
<jdeolive> sure
<jdeolive> i wasn't planning on releaseing to later in teh week
<jdeolive> ok, is that all for 1) ?
<jdeolive> ok. lets move on
<jdeolive> 2) query hints (again)
<jdeolive> aaime?
<aaime> Yeah, just wondering...
<aaime> when we'll ever deal with them
<aaime> I mean, 2.5.0 is focused on complex features and there is already enough mess generated by it
<jdeolive> what is the issue again?
<jdeolive> adding hints to the api?
<aaime> yep
<jdeolive> i see
<aaime> which may meean, break the Query API,or create a sub-interface
<aaime> if we do that before releasing 2.4.0 we can deal with this performance optimization in a stable branch
<jdeolive> sorry for asking dumb questions, but why do ew have to break the query api?
<aaime> we need to add a getHints() method to Query?
<jgarnett> we looked into using the existing transaction vendor specific hints
<jgarnett> it seems that this idea should be moved to "Query"?
<jdeolive> ok... but that does not break api? its an addition no?
<aaime> Transactions are not around during rendering....
<aaime> The implementations of Query will be broken by the addition
<aaime> I guess there is only one in the world
<aaime> but you know...
<jdeolive> fiar enough, its an api change regardless
<aaime> I just wanted to hear what people think about staying this slow for another six months
<jdeolive> well... this kind of addition we can add whenever we want...
<aaime> adding the decimation hints provided a 2x speedup on a raw test
<aaime> Not really, it's an API breakage
<jgarnett> did you try it with PostGIS and simplify?
<jdeolive> not client code
<aaime> Geoserver against a view that did decimation for a specific level
<jdeolive> i dont really consider breaking our single implementation or coupel of implementations an api breakage
<jgarnett> Andrea if you want to add this to 2.4
<jdeolive> anyways. i am fine with adding this to 2.4
<jgarnett> and get it in before justin makes the release this weekend
<aaime> So you would be for extending Query, right?
<jdeolive> does geoserver or udig impelment query directly?
<jgarnett> or based on your experience we can add it to the GeoAPI Query interface, as something we have learned is needed.
<aaime> I can try to setup a very quick proposal for this and have just the interface extension
<jdeolive> but you are right... its an interface... so its a breakage
<jgarnett> We do sometimes; I have found a lot of uDig code has created hacks for this kind of thing
<jgarnett> (mostly as workarounds)
<aaime> (you mean, for the lack of hints?)
<jgarnett> for lack of hints
<jgarnett> usually it is for lack of control on the creation side (ie no Hints for FeatureFactory)
<aaime> Ok, so, tomorrow morning I'll setup a quick proposal, if you can examine and vote it we can have it in for rc0
<jgarnett> yep
<jdeolive> sounds good
<jgarnett> thanks andrea.
<jdeolive> shall we move on
<aaime> Just one thing: a hint is a hint, a datastore is free to disregard it, right?
<jdeolive> definitley
<jgarnett> Correct
<aaime> Ok, good, then it's a painless addition
<jgarnett> It should however report what Hints it was able to use
<aaime> and we can start rolling in implements
<aaime> How?
<jgarnett> (as gdavis and myself learned to our peril)
<jgarnett> their was a method
<jgarnett> getImplementationHints
<jgarnett> in GeoTools Factory
<jgarnett> that we needed to implement or everything would break.
<gdavis> public Map getImplementationHints()
<gdavis> return Collections.unmodifiableMap( hintsWeCareAbout );
<aaime> Sorry, in which factory? You mean, the datastore factory?
<jgarnett> How you want to make use of this idea with Query I am not sure
<gdavis> this is from Factory I believe
<jgarnett> but the idea is there, if you pass in hints - you need to tell the user what hints were used.
<aaime> Ok, but the only factory I have around is the datastore factory
<jgarnett> there is a geotools interface called Factory
<gdavis> is Factory it's parent?
<jdeolive> i dont think its necessary that supported hints be advertised
<jgarnett> Not a lot of people know about Factory
<jgarnett> so I do not think the DataStore factory knows
<jgarnett> or even plays with this Hints idea.
<aaime> jgarnett, this can be the thing that stops me....
<aaime> It's too late to modify all of the datastores
<jgarnett> Andrea is talking at a different spot - ie Query is ment as a target to FeatureSource right?
<jgarnett> so that returns a FeatureCollection
<jgarnett> better put a getImplemenationHints() method on FeatureCollection?
<aaime> Hmmm.... yes
<jgarnett> FeatureSource.getFeatures( Query ): FeatureCollection
<jgarnett> food for thought.
jdeolive thinks you are making it more complicated then it needs to be
<aaime> Ah, yeah, that may be a place... FeatureCollection has already that many methods that one more won't break it singnificantly further...
<jgarnett> It is needed; because if you cannot respect the hints a user like Jesse is going to wrap the FeatureCollection (in order to make the result implement the interfaces he asked for). This is the kind of thing that uDig did when FeatureFactory could not be used.
<jgarnett> cool.
<aaime> jdeolive, for decimation it's not significant, you're right
<aaime> but if you provide a geometry factory, then you probably want to know if it was used
<jdeolive> fair enough...if you depend on ti then its not a good thing to hint
<jdeolive> imho
<jgarnett> jdeolive++
<aaime> Yeah, looks more like and order than a hint
<jgarnett> Hints really seems to be more than Hints IMHO
<jgarnett> ie the work gdavis is doing must be handled with a Hint (because that is all we got)
<aaime> Well, in most practical cases you can wrap and instanceof the elements that get returned
<jgarnett> but it is not "optional"
<aaime> and convert only if needed
<aaime> Yeah, in CRS subsystem hints are not just hints, either
<aaime> if I ask for a lon/lat factory, I'm requesting it, not suggesting it....
<jgarnett> okay we will have time for that rant in a bit ...
<jgarnett> andrea will make a proposal ... what is next?
<jdeolive> yup, we have abused hints... shall we move on
<jdeolive> 3) PrePostFilterVisitorSplitter confusion
<jdeolive> i think this is sfarber
<jgarnett> Where are the docs?
<aaime> grrr... why are datastores being created in udig directly? (sad)
<sfarber> docs:
<jgarnett> Because they wanted access to the connection pool
<jgarnett> so they could look at the metadata in the catalog handle
<jgarnett> (ie the info object)
<jdeolive> jgarnett, aaime, off topic!!!
<jdeolive> sfarber, continue
<jgarnett> jgarnett--
<simboss> hi guys, I am a bit late :-P
<sfarber> I'm guessing this is relevante:
<sfarber>
<sfarber> http://docs.codehaus.org/display/GEOTOOLS/SQLEncoder+Upgrade+to+GeoAPI+Filters
<sfarber> What, in particular, is a question you were trying answer that wasn't covered by the 2.4.x upgrade docs?
<sfarber> There was some chatter about a rename of the PPPFSV class, but I'm not sure where that originated.
<aaime> I would like to see a little explanation of how filter splitting works (smile)
<aaime> (may be offtopic too (smile) )
<sfarber> Not too be too cheeky, but there's a good explanation here:
<sfarber> http://gtsvn.refractions.net/geotools/trunk/gt/modules/library/main/src/main/java/org/geotools/filter/visitor/PostPreProcessFilterSplittingVisitor.java
<sfarber> at the top, from lines 92 to about 130
<sfarber> It's implementation-specific, though.
<sfarber> It's worth pointing out, also, that I didn't actually write the PPPFSV class, I simply made it work with the new GeoAPI filters.
<aaime> I see, never noticed it because I still live on 2.3.x and just forward port to trunk
<sfarber> If there are bugs and bad logic in it though, I'm more than willing to claim that I caused tham and fix them!
jdeolive is scared of that class
<jgarnett> Setting up a wiki page for you guys to take notes:
<jgarnett> - http://docs.codehaus.org/display/GEOTDOC/PostPreProcessFilterSplittingVisitor
<sfarber> yeah, it's not super-intuitive, but once you get over the stack-processor stuff, it's not super-unfriendly.
<jgarnett> (nice javadocs)
<jdeolive> yeah... its the stack processor stuff i dont quite get
<jdeolive> like what the various state of each stack represents... maybe i am missing somethign obvious
<jdeolive> anyways... off topic, bad jdeolive
<jgarnett> So rather than understand it; can we document with an example? ie What needs to be done to use this for PostGIS, DB2 etc..
<aaime> Tday I was bitten by the fact jdbc datastores are forced to declare capabilities in both the new and old sintax... that is, there is no bridge
<sfarber> aaime: YES! You're totally right about that.
<aaime> The migration page should talk about this
<sfarber> I think it's mentioned as an open question on that page I referenced a while ago.
<aaime> Yes, it is (still open)
<sfarber> under the heading 'the problem of FilterCapabilities'
<sfarber> So there were some problems that touched on this class this week.
<sfarber> Now that I'm back in front of my computer, I'm more than willing to deal with them, and try and actually sort out what's going on that's causing blow-ups in this class.
<sfarber> I've got emails out to Gertjan and now Aaime has bumped up against the filtercaps problem...so I'll be sure to keep the wiki up to date with any changes, and also try and run through gertjan's problem.
<sfarber> I think that's a wrap on this topic from my end. If anyone else's got questions about it, let's take them off-line?
<aaime> Great (smile)
<jdeolive> cool, thanks saul
<jdeolive> 4) factory finder stuff
<jdeolive> gdavis
<gdavis> right
<gdavis> I still cant get factory finder stuff to work (ie: metadata/org.geotools.factory stuff)
<gdavis> I've commited my recent changes that follow Martin's suggestions (as per the recent geotools dev list emails), but it still can't find my factory.
<gdavis> im beginning to think the factory finder stuff isnt working as it is suppose to
<jdeolive> unfortunatley it is written as a framework for martin, not just a framework (smile)
<simboss> that was a good one (smile)
<jdeolive> (smile)
<gdavis> finishing a geombuilder for the geometry module is the last thing in my way of getting this supported
<gdavis> the geombuilder needs a factory finder
<jdeolive> well i am not sure many of us can help you... looks like you might be stuff with debugger and emailing martin (sad)
<jdeolive> stuff = stuck
<gdavis> yah, have been at that for a while, but will continue i guess
<jgarnett> on the bright side
<jgarnett> I got stuck here back in febuary
<jgarnett> but now with these geometry classes it is much easier to debug
<jgarnett> (which is not to say fun)
<jdeolive> ok... shall we move on to the last agenda item
<gdavis> easier to debug, but you are still debugging it because it doesnt appear to work, right?
<jgarnett> It has now been a couple of weeks since the geomtry module was ready as an implementation
<jgarnett> I had a question of process for justin
<jdeolive> sure
<jgarnett> Is there anything stopping us from moving geometry over to supported status? It passes all the geotools supported things.
<jgarnett> Adding in this API change for GeometryFactory is a seperate matter.
<jdeolive> not that i see... i mean i dont understand why having a factory finder is a road block fo ryou guys
<jgarnett> Well we would like Geometry to be "normal" in the GeoTools sense.
<jgarnett> ie. It is not great for people to depend on these implementation classes directly.
<jdeolive> i would actually rather you dont add yoru geometry implementation into the mix... as i forsee problems
<jgarnett> how so?
<jdeolive> umm. the entire library assumes jts
<jgarnett> It still does
<jgarnett> well the entire library does not assume JTS
<jgarnett> referencing assumes DirectPosition.
<jdeolive> well i dont know of any concrete problems but i will bet you lunch that when you do hook it up there will be problems
<jdeolive> (smile)
<jgarnett> We are not trying to hook it up now; only make the implementation available.
<jdeolive> cool
<jdeolive> then what are we talkign about then (smile)
<jgarnett> Does the distinction make sense? We are not trying to use this with DataStore.
<gdavis> having it officially supported is the goal right now
<jdeolive> sure
<jgarnett> We are only making this implementation available (as alternative to jts-wrapper)
<gdavis> not hooking it up
<jdeolive> ok
<jgarnett> for projects that want ISO 19107
<jdeolive> ok, 5 mins left shall we move onto the last agenda item
<jgarnett> sure ...
<jdeolive> 5) feature collection
<jgarnett> 5) feature collection
<jdeolive> not sure who this is?
<jdeolive> ping jonathanv ?
<aaime> jonathanv, you are then one requesting this topic
<jgarnett> I want to remove FeatureList (as unloved)
<jonathanv> i didn't have anything specific
<jgarnett> that was quick then...
<jdeolive> cool
<jgarnett> A lot of docs are now available:
<jgarnett> http://docs.codehaus.org/display/GEOTDOC/05+Main
<aaime> Look, we (almost) all think it's broken, but trying to fix it it's more painful that keeping it as such...
<jgarnett> In particular: http://docs.codehaus.org/display/GEOTDOC/09+FeatureCollection+Iterator
<jgarnett> has a good comparison of Iterator, FeatureIterator and FeatureVisitor
<jdeolive> i agree with andrea
<jgarnett> (with FeatureVisitor being the easiest)
<jdeolive> especially since all of featureCollection is broken imho
<aaime> FeatureVisitor is new to me
<jgarnett> I have chatted with Justin about this a bit; I think what we all lack is time
<jonathanv> you all agree it's broken, but fixing it would be worse?
<aaime> why 3 ways to do the same thing? (sad)
<jgarnett> why? It has been around since GeoTools 2.2. ?
<aaime> breaking the api another time it's painful
<jgarnett> FeatureIterator is for Java 1.4 code
<jgarnett> it has been around since GeoTools 2.0
<jgarnett> it lets you get by without casts or something?
<aaime> It's a bad idea from whatever point of view you look at it, I already elaborated enough on this
<jgarnett> FeatureVistior is used for aggregation functions and so on ..
<aaime> and I'm tired to discuss, that's why I say let's keep it this way
<jgarnett> hrm.
<jonathanv> this document about iteration is great, prior to reading it i didn't know how to iterate through a collection
<jgarnett> If you guys can agree on what you want
<jgarnett> I would rather fix it then listen to complaints for the next four years
<jgarnett> jonathanv the javadocs have the same information.
<aaime> Simple, not have that thing implement Collection, remove all the extra methods, remove the plain iterator
<jgarnett> okay
<jdeolive> aaime++
<jgarnett> I would like to keep the visitor andrea
<aaime> that's what I've been saying since November and I'm tired of repeating it (smile)
<jgarnett> and the FeatureCollectionType
<jgarnett> okay; so if those are our marching orders then lets do it
<aaime> besides, we're arealdy breaking the API with the feature model, how many changes a certain set of users can tolerate?
<jgarnett> now is the best time (during the transition to GeoAPI)
<jgarnett> Andrea can I write up that as a proposal; please.
<jonathanv> hey, the users can barely tolerate what you have without even breaking it
<jgarnett> Jonathanv you are correct
<jgarnett> but we have not been able to implement what we have
<jgarnett> and although I try to document this stuff and take a users point of view as often as possible
<jgarnett> I need andrea and justin to be happy
<jdeolive> can we also add to teh mix that there are 5 different base classes for feaure collections
<jgarnett> since they are implementing
<jdeolive> we need to fix that too
<jgarnett> jdeolive++
<jdeolive> imho i would also like to see FeautreCollection implementing Feature go by ebye as well
<jgarnett> Okay I am going to write this up; as a proposal for GeoTools 2.5
<jdeolive> since that is another thing that we dont do properly
<jgarnett> I feel much more strongly about FeatureCollection implementing Feature
<aaime> jdeolive++
<jgarnett> than I do about it implementing Collection
<jdeolive> i know you do (smile)
<jgarnett> (sorry guys)
<jdeolive> but at least if we dont implement collection we can have a base class that actually impemenets feature properly
<jdeolive> and never worry about it again
<jgarnett> I understand why you feel that way; but I cannot really back down on this one.
<aaime> it's confusing, most of the time it's just a data holder, not a Feature
<jgarnett> jdeolive++
<aaime> can't we have a subclass for the specific case where it's a feature too?
<jgarnett> aaime that is more about an accident of our implementation sucking
<jgarnett> than anything else
<aaime> No, that's not it
<jonathanv> collections shouldn't be features
<jgarnett> yes they should
<aaime> when I ask a datastore for data
<aaime> I get a collection of features
<aaime> that's not a feature in any way
<jgarnett> It is in the strict sense
and I could be happy anyways
<jgarnett> it is :
<jgarnett> a) somethign you can draw on a map
<jgarnett> b) it is something that has a type
<jgarnett> c) it has attributes (bounds, etc...)
<jdeolive> not in the simple case it doesn't
<jgarnett> FeatureCollection is also used to model associations in the larger context
<jdeolive> and by simplei mean 99.9% of the time
<aaime> bah, this is just a way to look at a building and say it's like a toilet (smile)
<jgarnett> bringing together a group of Features according to some criteria or relationship)
<aaime> they have structural similarities, it does not mean they are the same
<jgarnett> so we have two uses cases
<jgarnett> both are important to me;
<jgarnett> aaime++
<jdeolive> the only argument for this that i see is that gml models featurecollection as a feature
<jgarnett> FeatureCollection has a very strict definition ...
<jdeolive> but even in that case... the only thign that acutally uses it (wfs) doens't make use of any of those modelling capabilities
<jdeolive> except for bounds
<aaime> So let's have a FeatureCollection subinterface that is a Feature
<aaime> or have a FeatureCollection superinterface that is not a feature
<aaime> simple things for simple and common cases please (smile)
<jgarnett> not intersted; I do not belive we define these constructs guys
<jgarnett> well we are always going to be limited to these common cases
<jgarnett> can we think ahead please.
<jgarnett> the only reason we have these common cases is because that is what we are limited to right now?
<aaime> Yes, bu having specific implementation that is a Feature and that gets built when a specific hint is provided, maybe
<jgarnett> if we want to sepearte out "Query" from FeatureCollection that is fine
<aaime> jgarnett, give me a significant use case where you do really need it to be a feature
<jgarnett> Do you remember your versioning postgis andrea?
<aaime> Yes
<jgarnett> much of what you get back there I would like to see as a FeatureCollection
<jgarnett> ie the collection of road=x, all versions
<jgarnett> the collection of features in this time perioid etc...
<aaime> it would work only with an svn like versioning support
<jgarnett> each of those resutls should have information about the collection
<aaime> with a cvs like there is not such a thing as a version that can be specified for the collection
<jgarnett> the other examples are with associations
<jgarnett> we are asked to do joins all the time
<jgarnett> I think it is a mistake
<jgarnett> we should have associations
<jgarnett> and let people navigate them
<jgarnett> producing feature collections along the way
<jgarnett> (see AssociationType used in FeatureCollectionType as an example of this)
<aaime> that still does not make them look like features
<aaime> in hiberante you can do all of the above
<jgarnett> and how does it not?
<aaime> yet everything is just a plain collection for the user
<jgarnett> I am not really interseted in hibernate in this context
<aaime> it's not a magical "hibernatebean" implementation
<jgarnett> I am interested in what feature collection is used for?
<jgarnett> capturing sets of features by spatial constraint, aggregation or association
<jgarnett> we mostly focus on spatial constraint
<jgarnett> because our model lacks aggregation and association
<aaime> I still don't follow you, you're polluting the most common case with stuff that may be needed in future and that does not need Feature anyways
<jdeolive> so jody
<jgarnett> I am trying to say that this stuff is needed now
<jgarnett> and time is passing us by
<jdeolive> you are willing to make feature collection impossible to implement just to be able to handle a theoretical use case that will probably never actually realize
<aaime> .... then I'm retarded (smile)
<jdeolive> seems a pretty high price to pay for me
<jgarnett> I am trying to ask what we can do to simplify thigns to the point we can implement
<jgarnett> I am more willing to give up java Collections
<jgarnett> than I am willing to give up the concept of FeatureCollection
<jgarnett> (because if we give it up we are stuck with assumptions again)
<jdeolive> jody your argument would be logical if there was actual code that used FeatureCollection as a feature
<jdeolive> i have a compromise guys
<jonathanv> sorry, i had to go do something
<jdeolive> and stick with me for a sec
<jgarnett> well do I implement that code?
<jgarnett> and just not have it work right now?
<jgarnett> okay.
<jdeolive> sure jody, you are right on how you want to model features
<jgarnett> (aside: I am happy to have this discussion, I am taking a hard line here because I want action - not because I am upset or anything)
<jdeolive> but what you are describing is not a good fit for the datastore api
<jgarnett> that is fine justin; then we should not use it for the datastore api
<jdeolive> so why dont we kill it from datastore api, use what we need
<jdeolive> and keep feature collection to be a feature
<jgarnett> perhaps we should just return Collection<Feature> from the DataStore api?
<jdeolive> nope, again collection is too hard to implmenet
<jonathanv> why not make a good collection, and a seperate adapter to make it a feature
<jgarnett> or go back to FeatureResults with a visitor (andrea I know you like FeatureReader but I find FeatureVisitor much easier to code against)
<aaime> then why there is nothing using FeatureVisitor? (smile)
<aaime> (I don't even know how it likes, I hear about it for the first time)
<jgarnett> jonathanv - you suggestion is good (and we have tried it). Difficulty is that users expect a colleciton to be in memory - we cannot seem to ask them to close their iterators.
<jonathanv> hmm
<jonathanv> so we fix their code for them
<jgarnett> basically users see a collection and start making assumptions.
<aaime> that's why I like FeatureIterator better, it has an explicity close method and throws exceptoins (smile)
<jgarnett> well we could put in a finalizer to throw an exception when they do not close their iterator
<jgarnett> But the idea is just bad; the normal java for loop does not work so well in this case and so on.
<jgarnett> in java 5 we can make the iterator() method
<jgarnett> return a FeatureIterator
<jgarnett> (and indeed I was thinking of doing just that)
<jonathanv> i use foreach loops
<jgarnett> (still amazed andrea has not seen FeatureVisitor)
<aaime> I'm looking at some code using it now, don't like it
<jgarnett> if you use for loop then there is a chance you will not make it to the end of the loop; at which point your iterator would not be closed - and it would be "game over"
<aaime> pretty much dumb and error prone
<jgarnett> compared with the other examples on this page: http://docs.codehaus.org/display/GEOTDOC/09+FeatureCollection+Iterator
<jgarnett> I like it quite a lot
<jgarnett> how so andrea?
<aaime> seeing code like "} else if (visitor instanceof UniqueVisitor) {" in a collection
<jonathanv> foreach loops? when do they not make it to the end?
<aaime> that does not use the provided class
<aaime> jonathanv, when you break out of them
<jgarnett> visitor is the alternative to iterator; the two get the same job done. Visitor leaves more responsibility in the hands of the data structure implementor - it is a good fit?
<aaime> getting back, this "} else if (visitor instanceof UniqueVisitor) {"
<jonathanv> i wouldn't use it if intended to break the loop
<aaime> is dangerous, what if I implemented my own UniqueVisitior with extra logic and you optimize it out
<jonathanv> don't put out hobbled shit because you think your users are stupid
<aaime> jonathanv, our gt2 code is full or break statements
<aaime> and we're still chasing up places that do not close iterators
<aaime> after 2 releases
<jonathanv> i say gt should fail in a spectacular fashion when you do something like that
<aaime> nope, it fails after load
<aaime> when file descriptors, connections or other limite resources are exhasted
<aaime> it may be in a minute, or in a month
<jonathanv> maybe it should delete all the files on your disk, so it's very clear that your code is buggy
<aaime> Bah
<jonathanv> i'm just saying: you need to stop trying to cover for user's mistakes, and you need to stop trying to prevent them from making them
<aaime> Here I'm upset because we're luring them into error, not because we don't shield them enough
<aaime> I know that when I'm using a stream I have to close it
<jgarnett> I understand andrea,
<jonathanv> it's painfully clear that you can't do either in an API
<jgarnett> would the finalizer idea help? It helped for transaction
<aaime> but if you give me a java.util.Collection I'll assume I can play with it clearly
<jgarnett> (more than you know - )
<aaime> it's still a hack
<jgarnett> I know.
<aaime> and when you see a reader was not closed, you just know the reader has been just garbage collected
<jgarnett> But it makes the problem visible; which is where are difficult is.
<aaime> it may have been instantiated one hour ago for what I know
<aaime> No, the difficulty is spotting the error
<aaime> and it's still there
<jgarnett> FeatureVisitor does not have this problem
<jgarnett> (similar to how closures are done in Ruby)
<aaime> you cannot bail out of it, not very useful
<jgarnett> that is not always true
<jgarnett> some visitor implementations let you return true/false to indicate the "bail"
<aaime> that visitor implementation does not have a boolean return value to bail out
<jgarnett> our catalog visitors did that
<aaime> Anyways, the most gross thing I've seen is optimizing visitors away with instanceof
<aaime> it ask vendetta from an OO point of view (smile)
<jgarnett> not sure I understand?
<jgarnett> the collection recognizing a vistor and producing the result of say Sum using alternat means?
<aaime> http://rafb.net/p/bdESNZ43.html
<jgarnett> that is fair use for a visitor ...
<aaime> No it's not
<aaime> if I implement my own version of MinVisitor that does extra work you should not optimize it away
<jgarnett> wow they needed some interfaces here
<aaime> that would have worsen things out
<aaime> at least with a class I can check the class is exactly MinVisitor
<aaime> (instead of using instanceof)
<jgarnett> fair enough
<acuster> how do you check?
<jgarnett> okay for this topic I will produce a proposal; and we can take this up if you guys are interested in it.
<aaime> visitor.getClass().equals(MinVisitor.class)
<jgarnett> At the very least it will let us record good ideas.
<aaime> k
<acuster> thanks
<jgarnett> visitor.getClass() == MinVisitor.class
<aaime> classloaders may play tricks on you if you use ==
acuster would have gone jody's route
<acuster> and learns a lesson from andrea
<aaime> not sure which is better
<jgarnett> Thanks for the discussion guys; once again sorrty for drawing such a hard line (smile) I hold your viewpoint in the highest regard; if not I would not keep revisiting it to try and find a way for us to go forward.
<jgarnett> aaime++ (sigh about the class loaders)
<acuster> what's the take home lesson? FC stays and everyone hates it?
<aaime> For 2.4 for sure
<aaime> for 2.5, don't know
<aaime> everyone - 1 hates it (smile)
<aaime> logs?
<jgarnett> acuser the take home leason is I document a propsal and everyone hates me (smile)
<jdeolive> i am on the logs

IRC Logs July 23rd

Happy holiday Gabriel Roldán and Andrea Aime:
1) what is up
2) feature model update
3) what is a feature collection


jgarnett: hey gabriel
groldan: hi!
jgarnett: anything for an agenda?
groldan: actually not, just looking around while in an inpass on my holidays
jdeolive: congrats on the world cup win groldan (smile)
groldan: hahaha yeah! thanks
groldan: six and counting..... (tongue)
jdeolive: haha
jgarnett: (smile)
jgarnett: jdeolive I am getting some questions; gdavis and now david adler on supported status
jgarnett: perhaps we could go over the documentation page and see if we can answer questions?
groldan: btw, congrats on the commit of the first milestone of fm work on trunk, and the move to java5 (I'm getting up to date with the ml right now)
jgarnett: yeah; jdeolive++
jdeolive: thanks (smile)
jgarnett: oh wait that is weak ..
jgarnett: jdeolive**
jdeolive: haha
jgarnett: should be better as long as jdeolive > 1
jgarnett: looks like david adler got his talking spot for foss4g and would like to make sure DB2 is supported
jgarnett: justin did you want an agenda item for fm work?
jgarnett: Is a version of 2.4-RC0 going out etc...
jdeolive: sure
jdeolive: gtbot add fm status
jgarnett has changed the topic to: 1) what is up 2) fm status
jgarnett: we are botless
jdeolive: oh
jdeolive: replaced with jodybot (smile)
jgarnett: well lets start; for those new to this - one line each let us know what you are up to...
jgarnett: jody - trying to figure out why gdavis cannot build
jdeolive: justin - just finished up first fm milestone, now working on geoserver 1.5.2 while andrea on vacation
gdavis: graham - trying to get geotools to build after justin's updates
gdavis: get get geometry module to supported status
jgarnett: (I assume goldan is on vacation?)
***groldan is on vacation with good old friends after 4 years of not seeing them
jgarnett: yeah
jgarnett: moving on ...
jgarnett: 2) fm status
jdeolive: this is me
jgarnett: the floor is yours justin
jdeolive: so i just finished up the first milestone of having the old feature model extent the implementation of the geoapi feature model
jdeolive: main is back pasing all tests
jdeolive: for most of us anyways (wink)
jdeolive: i would like the module maintainers to run all of there online tests
jdeolive: since i cant really run those
jdeolive: my next step is to setup a geoserver spike against it and run teh cite test suites
jgarnett: our build box runs online tests; I will try and see if it is still going.
***groldan is svn updating trunk to see if it compiles in argentina too (and hopefully teak community-schema to compile again)
pramsey left the room (quit: ).
jdeolive: community schema is down because jody killed DataAccess
groldan: yeah, that's what I mean
groldan: guess I gonna svn copy DataAccess to community schema, any objection?
jgarnett: still wont help
jgarnett: it is removed from renderer and so on
jgarnett: you need to go through the proposal process
jdeolive: jody... i think thats a bit harsh
groldan: not using renderer anyways, just wfs for the sake of immediate rob needs
jdeolive: gabriel just needs this to prototype
jgarnett: Should be easier since we assembled the feedback previously right?
jgarnett: I was just out of volunteer time to implement the chagnes requested by andrea, and thus it was withdrawn.
jgarnett: okay
jdeolive: well the feedback was we dont want another interface
groldan: when is DataStore moving to geoapi FM?
jgarnett: there was several bouts of feedback; i wanted the grid coverage guys and gabriel to talk.
jgarnett: not until after the 2.5.0 release (if I understand Justin correctly?)
jdeolive: well... i am kind of hoping to utilize the code sprint forthat
jdeolive: but yeah.. 2.5.0 will still be with old feature
jgarnett: right!
groldan: but if datastore moves to geoapi FM I should be able of just using it, right? except it explicitly works only over SimpleFeature
jdeolive: but old feature will be deprecated
jgarnett: so it will be quick; and indeed I think you should use the code sprint for that :-D
jgarnett: (I am game)
jdeolive: so i guess 2.6 is the target...
gdavis: brb, need to reboot
gdavis left the room.
groldan: it was more a question: ¿is the current data api going to be changed to work over geoapi Feature or SimpleFeature?
jdeolive: good question... i am guessing simple feature if we dont want to screw over our users
groldan: with java 5 you get the best of both worlds
jdeolive: ahh
jdeolive: thats right
jgarnett: not so sure
jdeolive: we could type narrow
groldan: DataStore<? extends Feature>
groldan: bad sintax
groldan: you got the idea
jdeolive: yeah
jgarnett: then you would need to match factory ... and SimpleFeatureFactory no longer extends FeatureFactory etc..
jdeolive: java 5 could be useful for coming up with the api that keeps the old in tact but lets gabriel set up a datastore which can use complex features
jdeolive: i dont agree jody
jgarnett: but yeah; that could work ...
jgarnett: but the emphais is on SimpleFeature - we will need you to consider the "Feature" case for us gabriel.
jdeolive: yeah... but you are looking at the case where you want regular datastores to switch back and forth based on factory injection
jdeolive: and i dont think that works
groldan: quiestion: PojoDataStore is alive? and if it does, is it only simple features too?
jgarnett: it is not alive
groldan: ok
gdavis n=gdavis@mail.refractions.net entered the room.
groldan: didn't understand this: "but you are looking at the case where you want regular datastores to switch back and forth based on factory injection"
groldan: are we changing datastore to allow fature factory injection or something?
jdeolive: jody wants SimpleFeatureFactory to extend FeatureFactory because he wants to just pass people a factory and have it decide which features to return, simpl eor complex
jdeolive: i am saying that does not relaly work
groldan: well... I don't quite see the point for that requirement...
groldan: guess a datastore implementation shall know if it works with simple or complex, and client code shouldnt care?
jgarnett: justin I am happy either way
groldan: or client code should just care if it wants only simplefeature capable datastores
jdeolive: that is what i am getting at too
jdeolive: but yeah
jgarnett: I can make a FeatureFactory that returns SimpleFeature instances (as long as it is called with the correct restrictions ....)
jgarnett: I am fine.
jgarnett: gabriel you are correct - the data store should "look up" the kind of factory it needs. We only get in trouble when client code wants to choose the exact implementation. Using hints or otherwise...
jgarnett: still; this is an aside.
jgarnett: I am so glad that SimpleFeature is on trunk.
jonathanv: are you guys still contemplating featurecollection
jgarnett: what is next justin?
jdeolive: that is it for me
jdeolive: i wont be back to fm stuff for another week or so
jgarnett: we are at an impass jonathanv
jonathanv: why don't you just model it after something similar from the java/c# world?
jgarnett: we are all kind of tired of the concept; it is a source of friction between somethig that is nice to use - and something that can be implemented.
groldan: well, when time comes, I would like to decouple feature collection from the java collections framework
groldan: (bomb bomb)
jonathanv: i'd suggest something but i've never been able to figure out how featurecollection is supposed be used, at least beyond the most basic interaction
jgarnett: understood
jgarnett: well have you tried reading the definition of it in GML?
jonathanv: i'm not sure where this GML is
jgarnett: (ignore the java collections stuff - that is only the cloths we dress up the idea in - so that our users like it)
jgarnett: Right ...
jgarnett: - http://www.opengeospatial.org/
jgarnett: they have a good definition of Geometry
jgarnett: Feature
jgarnett: and FeatureCollection
jonathanv: i do enjoy designing data structures though
jgarnett: and we hate writing docs
jonathanv: i've noticed
jgarnett: so we try to do what they say; and expect users to go read the definitions elsewhere
jgarnett: (I enjoy writing docs but nobody will pay me to do it)
gdavis left the room (quit: Read error: 104 (Connection reset by peer)).
jgarnett: http://docs.codehaus.org/display/GEOTDOC/Use+of+Standards
jonathanv: okay i think i've found the right pdf
jgarnett: There is a nice overview somewhere on their site
jgarnett: guys should I end the meeting and continue this conversation after?
jdeolive: sure
groldan: sounds good
jgarnett: okay meeting done - I will post the logs
jgarnett: http://www.opengeospatial.org/standards
jgarnett: have a look at the "OpenGIS Reference Model"
jgarnett: it has the best definition of Feature and FeatureCollection
jgarnett: (all the other ones talk a about a specific implementation - either XML or COM or whatever...)
jgarnett: but to sum up
jgarnett: a Feature is something you can draw on a Map
jgarnett: the Geometry is the shape on the map (just the shape mind you)
jgarnett: and a FeatureCollection is a Feature (because you can draw it on a map)
jgarnett: made up of smaller parts
jgarnett: so maybe it is all the "lakes" on your Map
jonathanv: so it's recursive
jgarnett: or maybe it is all the lakes that were dredged in 2002
jgarnett: so yes it is recursive
jgarnett: but it is almost the result of a query
jgarnett: either containment (which is how we like to think of it - ie simple container pattern in Java)
gdavis n=gdavis@mail.refractions.net entered the room.
jgarnett: temporal (ie the 2003 part)
jgarnett: or spatial
jgarnett: (all the lakes in this bounding box, ie all the lakes on this page of my map)
jgarnett: rant rant...
jonathanv: ok, you lost me when you went into geographer mode
jgarnett: features have a shape; but they also have properties (either associations, attributes or operations)
jgarnett: and you may define your feature collection with respect to that
jgarnett: ie find me all the lakes that are WITHIN north america.
jonathanv: okay
jgarnett: so realy what we have
jonathanv: so a featurecollection can be a subset of all the features that exist
jgarnett: is a "model" of the world
jgarnett: using the same "modeling tools" that we computer scientists use
jgarnett: ie Feature == Object
jgarnett: FeatureType == Class
jgarnett: operations = method
jgarnett: association = collection
jgarnett: attribute = field
jgarnett: and so on ..
jgarnett: this "matching" is so complete that geographers use the same tools we use
jgarnett: ie they use UML diagrams
jgarnett: just like we do.
jonathanv: ewwwww uml
jgarnett: So the design space of GIS systems is just as bad as the design space for an IDE
jgarnett: I am just trying to say they have a classification system, and all the same ideas about complexity we do
jgarnett: (think philosphy and plato if an IDE was too much)
jgarnett: http://portal.opengeospatial.org/files/?artifact_id=3836
jgarnett: did you get this link yet?
jonathanv: apparently
jgarnett: page 12
jgarnett: and page 9
jgarnett: so are conflict here is complexity
jgarnett: same as it ever is with computer science
jgarnett: this design problem just happens to be really mean; only bright side is this ...
pramsey n=pramsey@S01060014515fec41.gv.shawcable.net entered the room.
jonathanv: i need to read this stuff
jgarnett: the geographers have been doing this since the 1500s; it is us computer guys who are the new kids on the block.
jgarnett: fair enough
jonathanv: but i feel like it's a mistake to try to model your class structure after the real world
jonathanv: that's the impression i'm getting
jgarnett: that is object oriented programming my friend
jgarnett: it may be a mistake; functional programming is the proof of the pudding
jonathanv: hehe
jgarnett: okay - later
jonathanv: i'm kind of stubborn about OOP
jgarnett: I better wrapp up the logs
jonathanv: really, any paradigm taken to an extreme is damaging i think
jgarnett: as I said this time it is not too bad
jgarnett: the geography guys have smacked this feature idea around for a good 500 years
jonathanv: good point
pramsey left the room (quit: Client Quit).
jonathanv: but, biologists have smacked the uhh species tree around for a long time too
jonathanv: that doesn't mean Cat should be a class that subclasses Carnivore which implements Animal, which implements LifeForm
groldan left the room (quit: Remote closed the connection).
jgarnett: fair enough
jgarnett: however whatever we do come up with has to be communicated with our user community
jgarnett: Feature is to Geographer
jgarnett: as Money is to Accountant
jgarnett: it is what they do.
jonathanv: classes are good, interfaces are good, i just thing programmers need to make absolutely sure they don't take things too far
jgarnett: On the bright side noboy loves FeatureCollection that much
jgarnett: for the geographer there is little difference between the FeatureType and the FeatureCollection (near as I can tell)
jgarnett: think of they "Key" on a Map
jgarnett: those are the FeatureTypes

IRC Meeting July 16th

  1. Some java.sql.DataSource details
  2. feature collection
  3. Java 5
  4. GeoAPI update
  5. geometry module to supported

gtbot: Added agenda item '1: Some java.sql.DataSource details' to the list.
jdeolive: gtbot add feature collection
gtbot: Added agenda item '2: feature collection' to the list.
***aaime hides under the nearest bush
jgarnett: hello
jgarnett: gtbot add Java 5
gtbot: Added agenda item '3: Java 5' to the list.
chorner: any other items?
acuster: gtbod add GeoAPI update
chorner: gtbot add GeoAPI update
gtbot: Added agenda item '4: GeoAPI update' to the list.
chorner has changed the topic to: 1) Some java.sql.DataSource details 2) feature collection 3) Java 5 4) GeoAPI update
acuster: 0. what is up
chorner: gtbot start
gtbot: Logging started.
jonathanv: you guys still haven't figured out what to do about feature collections?
aaime: last week of work for me, then one week vacation (smile)
jonathanv: what's the problem?
chorner: stay on topic
chorner: what's everyone working on?
gdavis: hi
aaime: Geoserver 1.5.2. release
jgarnett: jgarnett - hooking up HsqlDialectEpsgMediator as the default
gdavis: I'd like to get the unsupported geometry module to supported status for this geotools release
chorner: testing new hsql/oracle epsg for connection leakage
gdavis: can/should we add that as an agenda item?
jdeolive: new feature model
jgarnett: yep
chorner: gtbot add geometry module to unsupported?
gtbot: Added agenda item '5: geometry module to unsupported?' to the list.
acuster: acuster: doing nothing, planning virtual udig work
jdeolive: jonathanv, i added a topic to talk about feautrecollections
gdavis: thnx cory
CIA-9: jgarnett * r26256 geotools/gt/modules/library/main/src/main/java/org/geotools/ (2 files in 2 dirs): DefaultFeatureCollection copy constructor
jonathanv: oh really
***chorner curses jody
acuster: there goes the auto post
chorner: gtbot list
gtbot: Agenda Items:
gtbot: 1: Some java.sql.DataSource details
gtbot: 2: feature collection
gtbot: 3: Java 5
gtbot: 4: GeoAPI update
gtbot: 5: geometry module to unsupported?
jgarnett: fine I will post; although why we cannot get the bot to ignore CIA-9 I am not sure...
gtbot: End of agenda items.
chorner: we just need 10 minutes of richard's time (smile)
acuster has changed the topic to: 1) Some java.sql.DataSource details 2) feature collection 3) Java 5 4) GeoAPI update 5) geometry module to supported (sic)
chorner: 1) Some java.sql.DataSource details
aaime: That's mine
aaime: Two little things
aaime: First one is a clarification
aaime: I did upgrad the old factories to use DataSource, the DBCP one in particular
aaime: and added three parameters for basic control of it (min/max connection, connection vitality check)
aaime: but I did not add the "advanced" factories, that is, those taking a DataSource as a parameter
aaime: I guess we can add those at our leisue when the need arise
aaime: at the moment I can't use those in Geoserver unfortunately (the struts UI is killing me)
aaime: Second one is a change I need to add before the release
aaime: DataSource factories should take a dsType parameter, just like dbType parameter is provided to jdbc datastores
aaime: so that we have a discriminator when two datasources accept the same parameters
jgarnett: so question/clairification - without datasoruce as prameter - does DBCP even get used? Or is it used internally by the factory you did implement (going to look now).
aaime: I'll add those before rc1
aaime: Used internally
jgarnett: okay
aaime: all factories are using DBCP by default
aaime: or else, they do use DataSourceUtil
aaime: which in turns builds a DBCP based one
jgarnett: thanks andrea that answers my question
aaime: if we ever wanted to switch to C3P0 by default
aaime: this give us a single point of change
aaime: If there are no further comments/questions, I'm done
jgarnett: questions
jgarnett: docs / docs / docs
jgarnett: I asked questions on this last week - any progress?
aaime: you're the one that volounteered for the docs? (smile)
jgarnett: indeed
jgarnett: I have some emails flagged from you
jgarnett: when the docs are done then this proposal is finished?
aaime: yes
jgarnett: cool.
aaime: sorry, can you resend those mails
aaime: in the mail maelstrom I receive every day I loose some
jgarnett: nope they were ones from you; let me turn them into docs. Mostly they are notes from you talking with acuster.
chorner: no other questions?
acuster: jgarnett, you going to document the above while you are at it? ...what DBCP vs. C3PO are
aaime: c3p0... ah, you missed some star wars episode, don't you? :-p
jonathanv is now known as jonafan
acuster: anyhow, let's not stall on that but leave it to the eventual docs. next?
chorner: 2) Feature Collection
jdeolive: this one is me
jdeolive: our feature colleciton is stressing me out... and here is why
jdeolive: 1. fc implements both collection + feature... but none of our implementations do it properly
jdeolive: 2. we have three different base classes for fc's,... which again makes implementation confiusing
jdeolive: 3. having to implmenet both collection and feature is hard ... which is why we dont have a good base class
jdeolive: it has been the messiest part of extending the new feature model thus far
iant left the room (quit: ).
snicoll left the room (quit: ).
jdeolive: 4. it duplicates query / feature reader functionality
iant n=ijturton@c-71-58-71-181.hsd1.pa.comcast.net entered the room.
jdeolive: which makes the api hard for users
jdeolive: having two options is bad enough... havign two options when one of them (fc) only half works is really bad
iant left the room (quit: Client Quit).
jdeolive: end rant
chorner: what are you proposing?
aaime: Not much to add from my part... my point of view is that Collection and phisical resource access are a bad mix
aaime: (aka, doing I/O in something that the world knows for being memory only)
jgarnett: I don't mind too much what we do; only that we do it over the next couple of months before geoapi FeatureCollection is pressed into stone.
jdeolive: nothing... just that fc is a problem
jgarnett: But this is all old ground ...
jgarnett: okay jdeolive++ good rant
jgarnett: next?
aaime: Hmmm... so they idea is, fc sucks, but we're going to keep it that way anyways?
aaime: Any hope to make it work as adverstised at least?
chorner: 3) Java 5
jdeolive: doubtful in my opinion... in my opionion the best solution is to strip it down... not make it implement collection
jgarnett: 2.4.x is out of the way
snicoll n=snicoll@70.165-66-87.adsl-dyn.isp.belgacom.be entered the room.
jdeolive: and dont try to duplicate functionality from query (liek sorting)
jgarnett: can we update trunk to use Java 5 now please.
jgarnett: jdeolive do you want to set up a breakout IRC on feature collection?
jdeolive: sure that would be good
jgarnett: cool.
iant n=ijturton@c-71-58-71-181.hsd1.pa.comcast.net entered the room.
jgarnett: Justin I want to ask you about Java 5 - as I think your build box is stricktly Java 1.4 right now
jgarnett: (and this would break it)
jdeolive: yup... and i have hesitatoins to updating trunk yet
jdeolive: we dont have policies for java 5 usage in place yet
jdeolive: until we do i would rather we stick with the profile
jdeolive: using generics and templates and enums can easily make code way harder to understand tehn the java 4 version
jgarnett: okay; what are you thinking of in terms of polices?
jgarnett: generics, templates and enums should only get in our way when we are defining new API yes?
jdeolive: like you can only use generics to strongly type collecitons, not to template a class... that sort of thing
jgarnett: So we would get a chance to review these introductions when the proposal is submitted.
aaime: I think there are examples of deadly combinations of generics and autboxing on the net
jgarnett: Do you want to write up your ideas on the "coding conventions" page justin.
aaime: we should search the blogs of 1-2 years ago
aaime: the topic was quite popular
jgarnett: I think what we are all wanting is "minimal" use of Java 5
aaime: indeed
jgarnett: mostly using it to keep our collections straight
jdeolive: agreed
jdeolive: type narrowing is good too imho
jgarnett: I don't mind enum
jgarnett: but would like to keep to the GeoAPI interface guidelines here
jdeolive: but yeah... lets start the proposal and start a coding guidelines page
jgarnett: enum used for a fixed set; codelist used for an open ended set
jgarnett: etc...
jgarnett: jdeolive you are okay with the task? Send email when the page is ready - and dont stress too much and realy damage is restricted to the public API change process so you will get a chance to review.
jgarnett: I would like to see us use Java 5 concurrrancy however..
jdeolive: i am pretty deep within the bowels of the feature model work at the moment
jdeolive: but will need java 5 in place to commmit
jdeolive: so yes... i can work on that
jgarnett: I will wait for the wiki page update (or do it myself) before we update trunk to Java 5.
jgarnett: next?
jdeolive: cool
chorner: java 5 concurrency (smile)
chorner: 4) GeoAPI update
acuster:
jgarnett: Is this a status update? or a jar update... i would like to know how the OGC meeting went.
acuster: GeoAPI went to the OGC conference in Paris
acuster: ...and successfully dodged the rain.
acuster:
acuster: Martin found out a week before that the working group had been disolved,
acuster: which we weren't sure what it meant.
acuster:
acuster: We went to try to push many changes since 2.0 through so as to
acuster: make two new releases, the compatible 2.1 and the client breaking 3.0.
acuster:
acuster: Martin and I gave a talk.
acuster: I waved my hands about what GeoAPI was to a fairly full room 20-30 people;
acuster: seemed well received.
acuster: Martin started asking the room for their opionions on change number 1;
acuster: total silence.
acuster:
acuster: No one had read the doc or felt qualifed to comment.
acuster: So he went through and summarized the proposals,
acuster: which was well received: they liked the rigour, they liked the idea.
acuster:
acuster: We passed a motion to ask the Technical Committee to let us form the
acuster:
acuster: GeoAPI Standards Working Group
acuster:
acuster: which, on thursday they accepted. The group will eventually propose GeoAPI as
acuster: its very own implementation standard. (When we return to GO-w territory we will
acuster: presumably deprecate the old spec and offer our own).
acuster:
acuster: So now:
acuster: 1) we will need volunteers to sit on the working group
acuster: 2) we will need to stay active and propose one set of changes at least a year.
acuster: If we do, in six months or so we could propose GeoAPI 3.0 as the base for the
acuster: standard and would work to amend and extend the spec thereafter.
acuster:
acuster: questions?
jgarnett: first
jgarnett: woot!
jgarnett: good work martin and acuster
jgarnett: 1) can you do what some of the other OGC groups do; and let open source people in on the process?
jgarnett: (if not I am stuck and cannot volunteer)
jgarnett: 2) should not be a problem
acuster: I'm not sure of what the membership rules will be
jgarnett: Also do you need a new charter?
acuster: nor if we can sneak in as members of OGC (which is a member)
jgarnett: (I assume this chater will be more straight forward ... we want Java interfaces for your crazy ISO specifications)
acuster: sorry of OSGeo
jgarnett: ah OSGeo++
acuster: yes, the charter will be small although perhaps not restricted to Java
jgarnett: understood
acuster: OGC is going to have individual memberships as well ($500ish/year)
acuster: and there's going to be a backdoor way for us to get the specs
jgarnett: FrankW ping? Can some of us that are OSGeo memembers attend OGC meetings / working groups as representatives?
acuster: because they are going to post the last draft
acuster: and all the comments
iant: when did OSGEo join OGC?
acuster: with some strict rule about comments being integrated to the final draft
acuster: but they need to iron things out
desruisseaux n=chatzill@mtd203.teledetection.fr entered the room.
acuster: iant, not sure when. The trusty Arnaulf was there as the OSGeo rep.
acuster: hey martin
desruisseaux: Hello all
acuster: we are just discussing your talk
FrankW: Arnulf is there as a rep for the where group, but also advocating on behalf of osgeo.
iant: He usually represents his company
FrankW: You can't go to meetings on behalf of osgeo currently.
acuster: yes, but this time he had a big tag
FrankW: I have gone once as a consultant to the where group. (smile)
acuster: ah, okay. He wasn't official.
acuster: but he was present
iant: I've been with GeoTools on my badge before (i.e. you can put what you like on the badge)
acuster: The meeting is kind of weird. A bunch of techno-geeks in their little world.
acuster: they do a lot of experiments, few land.
acuster: Anyhow, the sociology is for another day.
acuster: next?
chorner: 5) Geometry module to supported
jgarnett: still great work guys; thanks for all your hard work.
gdavis: that's me,... should be to "supported" though
gdavis: basically the module is ready to be brought to supported status. The bugs are fixed, the test coverage is at 50%, I've created a wiki page (http://docs.codehaus.org/display/GEOTDOC/Geometry+Module) and I'm about to go through the last bit of IP review.
jgarnett: (um it is )
gdavis: oh, it was unsupported a while back
gdavis: what I need is someone to review the wiki page listed above and provide any feedback, and let me know what, if anything, still needs to be done to get this to supported status.
aaime: does it build with java4?
gdavis: this module requires java5
aaime: so we need to move to java5 before moving it to supported no?
acuster: pre-approved!
acuster: a new status
aaime: ha ha
gdavis: right, which I thought was planned for the next geotools release?
aaime: 2.5
aaime: not 2.4
gdavis: ok, so in order to get this module to supported status for 2.5, what do I need to do?
snicoll left the room (quit: ).
acuster: and 2.4 is not even out yet so that puts your deadline out a ways.
aaime: get the feedback your requested above
aaime: get a positive vote
jgarnett: can we not move this to supported status on trunk?
acuster: jgarnett, is the king of the stars so he should know
aaime: and wait java5 to actually move it to supported
aaime: since otherwise you'll break all build boxes
jgarnett: geometry has one "star" left - the IP check.
acuster: so what's the decision on java5?
acuster: we wait for justin's review and then ...?
aaime: Mostly positive, we need some policy to avoid too
jgarnett: it looks to be happening on trunk (see agenda topic 3)
chorner: would it go in plugin, library, or extension?
acuster: s/review/policy doc
gdavis: I believe jgarnett said plugin
aaime: good question... library or extension I guess?
aaime: why plugin? is there an SPI behind this?
jgarnett: plugin; there are two implementations around; both just implement existing GeoAPI interfaces.
aaime: Ah, ok
acuster: gdavis, sorry for the clarification. your lib is geoapi + native code or geoapi+wrapper+jts?
jgarnett: We would have to define "FactoryFinder" in our API module
aaime: hmmm.... so it would be like epsg modules... library do not depend on it, but you need at least one to make gt work?
gdavis: this module does not use jts wrapper
jgarnett: aaime++
aaime: What about current JTS geometries?
jgarnett: jts-wrapper is a seperate implemenation (and only does a subset)
jgarnett: current JTS geometries are just the way they always are
aaime: (and all the code that depends on them directly?)
jgarnett: to be clear this module is an implementation
acuster: yeah, can you two explain where we will be in six months?
jgarnett: hooking up the new feature model is needed
acuster: how do we run your code without the JTS libs
jgarnett: before the rest of geotools cares
acuster: and conversely
aaime: and then making all the code independent of JTS geometries... ugh
acuster: how do we use JTS when your lib is around?
aaime: (or I'm missing something)
jgarnett: going to ask for a time out; this geometry module has nothing to do with jts - or the feature model.
jgarnett: it is pure implementation
gdavis: I'm not sure where the confusion is
jgarnett: and rests on its own merits
aaime: It's an implementation of an inteface
acuster: of geoapi only?
gdavis: correct
aaime: and to have renderer work with it
jgarnett: the confusions is people wondering how your module hooks up to geotols
gdavis: of iso 19107 specs
aaime: renderer has to work with geoapi geometries, no?
jgarnett: (ie rendering, feature model, expression and so on)
jgarnett: and the answer is - not your problem.
aaime: really, how?
aaime: because now I see plenty of code doing Geometry g = f.getDefaultGeometry()
aaime: and g is a JTS geometry
acuster: do we have other modules like this that arn't connected at all?
gdavis: perhaps jgarneet can answer that one, im not familiar with how all of geotools works
jgarnett: I will answer it - but can we treat this as a seperate topic?
acuster: aaime, you see that kind of code in geotools itself?
jgarnett: acuster the page with notes on this stuff is here: http://docs.codehaus.org/display/GEOTOOLS/ISO+Geometry+Research)
aaime: ti's everywhere, yes
acuster: ouch
jgarnett: so we need isolation; Expression interface
aaime: renderer, GML encoders, GML parsers
jgarnett: converters; so we can pull JTS Geometry (or ISO Geometry) into a Java 2D shape for rendering
acuster: thanks for the link
aaime: So we need to change all of our code and ask users to do the same
jgarnett: and deep intergration with datastore depends us getting our factory game on
jgarnett: See GeoAPI PositionFactory for an example API where a PointArray can be created from float[] or double[]
jgarnett: Some of this work gabriel all ready did
jgarnett: isolating the code that takes a JTS Geometry
aaime: This is another major api breakage, we should better have them both in one shot, otherwise we will make gt2 unusable for a few releases (at least, a royal pain to track)
jgarnett: into a "Converter" as used by Expression
jgarnett: so it can be pulled into a Shape for rendering
jgarnett: This balance; allowing both JTS Geometry and ISO Geometry to work is the major work justing is doing right now
jgarnett: as part of getting us a feature interface that does not suck
aaime: jdeolive, I did not know the feature model work switched us to geoapi geometries...
jgarnett: You can (without API breakage) renderer ISO Geometry right now; and query against them.
jgarnett: It does not
aaime: oh, is the new default geometry method return type an "object"?
jdeolive: aaime, it does not
jgarnett: correct
jgarnett: Well the super interface does; our JTS Feature will still be returning a JTS Geometry.
aaime: jgarnet, without some refactoring you can render stuff slowly
jdeolive: well the geotools Feature will still return a jts geometry as it does today
jgarnett: (here is the other intergration link: http://docs.codehaus.org/display/GEOTOOLS/Expression+Improvements#ExpressionImprovements-GeometryFilter)
aaime: Ha, so we'll need another API break to have GeoAPI geometries in the game?
jgarnett: Nope
jgarnett: if your code works against the GeoAPI SimpleFeature interface
jgarnett: you should be fine.
jdeolive: well i guess it will part of the upgrade to SimpleFeature...
jdeolive: i agree its a pain
jgarnett: jdeolive++
aaime: is that change part of the feature model work?
***acuster finally gets it
jdeolive: yes and no
aaime: What I want is an assessment of the effort that has resources backed
jdeolive: the first round of feature model work is to just get geotools Fetaure to etend geoapi feature
aaime: I don't like people telling me about a brave new world
aaime: and hinding (or forgetting) the work needed to get there
jdeolive: so its fine that geotools feature still works against JTS
jdeolive: but once client code switches to SimpleFeture completley... then the problem starts
aaime: and the resource (people/money) needed to get there
jgarnett: creating plugin/geometry is something we can do now; and will be valued. Intergration with the rest of geotools as an attribute can also happen now (or when anyone cares).
jgarnett: (so can we get back on track ... plugin/geometry )
jgarnett: nobody has a requirement right now to use ISO Geometry + ISO Feature do they? So we cannot answer questions on resoruce (people/money)
aaime: I wasn't complaining about the module itself, a dead, disconnected but mantained module creates no troubles
aaime: the troubles start if you try to connect it and leave the work incomplete
jgarnett: We have people using jts-wrapper in the wild; bryce was using it.
jgarnett: We are not starting to connect it.
acuster: well it does create a documentation issue
acuster: since newcommers will look at that module first
acuster: only to discover it's not connected
jdeolive: jgarnett, i have an idea
jdeolive: what if we moved SimpleFeature to geotools instead of in geoapi
acuster: what's the incentive for having it in supported?
jdeolive: that way we could still type narrow to JTS
jgarnett: The documentation issue is covered: http://docs.codehaus.org/display/GEOTDOC/Geometry
aaime: well, while we don't have an alternate implementation it's no trouble to put it in extensions no?
aaime: That would be make it clear it's not core
acuster: yeah, extensions would be okay
acuster: that should indicate something is wrong
jgarnett: um we have two implementations of this thing; this is just like referencing - other projects (besides the rest of geotools)
jgarnett: use this stuff.
jgarnett: so "plugins"
aaime: I don't agree, but have it your way (smile)
jgarnett: jts-wrapper may also want to go supported - I will talk to bryce? He should be able to get it done now that we have good test cases?
acuster: yeah, I don't care. It's good enough work that I'll let the newcommers suffer yet even more.
jgarnett: Please note that we do use some of these abstractions in geotools as it stands (DirectPosition) is used when we do transformations.
aaime: these are in referencing thought
acuster: DirectPosition is now using this new geometry!?
aaime: no
jgarnett: that is a good question
aaime: that is even more confusing (smile)
jgarnett: what do you think gdavis?
gdavis: about plugin vs ext?
jgarnett: (There are three implementation of DirectPosition right now)
acuster: ha!
jgarnett: about this; does referencing require your geometry module
aaime: oh the horror
acuster: the only one I care about is in martin's referencing code
gdavis: ..not that i know of
jgarnett: (in order to have an implementation of DirectPosition)
aaime: that would make the whole geotools depend on a module which is otherwise disconnected
acuster: since referencing and geometry (currently) depend on each other
jgarnett: right now we defined equals / hashcode so the three implementations will not trip on each other)
acuster: and there is no logical way to break that co-dependency
jgarnett: darn ISO abstractions
jgarnett: well referencing only needs an implementation of DirectPosition for testing...
acuster: no
jgarnett: in a similar fashion geometry only needs referencing for testing.
aaime: he? no, it users directposition everywhere
aaime: in the transfrom code
acuster: it's not just for testing
jgarnett: It should be using a PrimitiveFactory for that should it not?
aaime: ?
jgarnett: (this is an honest question )
acuster: desruisseaux, t'es la?
aaime: No, it uses DirectionPosition directly, as an implementation class
aaime: (afaik)
jgarnett: aaime you are correct
acuster: it has its own directPos iirc
desruisseaux: acuster, yes
jgarnett: my question is this: GeoAPI defines a factory for getting your DirectPosition instnaces created
aaime: it has DirectPosition1d and 2d
jgarnett: should referencing use it?
acuster: any implementation will do, but why switch if it buys us nothing?
aaime: Can I ask why we should try to coax the geometry module into a dependency when there are no resources to make it work seamlessly with the rest of gt2?
acuster: yes, what andrea asked
jgarnett: the answer to both your questions is the same: do we want to "respect" a factory provided by the user
acuster: no, not yet for this
aaime: the answer is no because we never needed to?
jgarnett: ie if they give us one that uses a float[] for ordinates; should we use it
aaime: it does not buy us anything?
acuster: just for the DirectPositions of the referencing module? no. If it ain't broke, don't fix it.
aaime: the day Geometry is ready to be seamelessly used adding that factory it's a snap
aaime: doing that today is confusing and needless?
acuster: in the misty future, when geotools is an OSGeo project and... maybe
jgarnett: heh - I would like that to be soon (the OSGeo part)
jgarnett: but yeah; lets jump off that bridge when we come to it.
acuster: so should you all vote on the topic question: moving the geometry module to supported?
jgarnett: I think the correct order would be to have referencing use a "DefaultPositionFactory" that only can create points...
jgarnett: right...
jgarnett: let me ask
acuster: gdavis, where do you want your module to live?
jgarnett: gdavis are you ready for a vote? Sounded like you needed your IP review and wiki pages first
desruisseaux: I would prefer to let DirectPosition alone for now. Maybe we can revisit this issue later if there is request for that. Right now I would not like to throw more potential instability in the referencing module.
jgarnett: Do you want to send out an email when you got them.
gdavis: i dont know enough about where it should live to answer that. I've just been living in implementation world for this spec
gdavis: okay, so what I need is someone to review the wiki page for me
gdavis: http://docs.codehaus.org/display/GEOTDOC/Geometry+Module
gdavis: in the meantime ill be finishing up the IP review
jgarnett: nice code examples
gdavis: as for how it should hook into geotools, i dont feel I know enough about the module to answer that.
gdavis: er, not the module, geotools rather
jgarnett: agreed; the quick answer is it does not hook up to geotools yet
acuster: pico container!?
gdavis: heh
acuster: yet another twist on the geotools factory system
chorner: we're running late guys
jgarnett: heh; you try sorting out how to use the five geomety factories without it
chorner: perhaps call it a meeting?
gdavis: many of the factories require other factories and figuring out the dependencies is confusing
jgarnett: yep
acuster: well gdavis thanks for all the hard work
gdavis: pico container is just one example of how to go about it
jgarnett: gdavis can you send email when you IP review is done? we can figure out how to vote then...
gdavis: sure
acuster: gdavis, I suspect we should discuss the various solutions to the problem and then stay consistent
gdavis: okay
acuster: jgarnett, what's the general solution for factories needing factories needing...?
gdavis: so... can someone commit to reviewing this wiki page?
jgarnett: acuster? Are you thinking factories? I cover picocontainer as an option (along with spring).
jgarnett: I glanced through - but honestly acuster is better at reviewing
jgarnett: (he is meaner then me)
acuster: okay, I'll review.
acuster: gdavis, ping me if I get distracted since I can't start on this right away
jgarnett: acuster the general solution is to "wire it up yourself"; but in the real world people either:
jgarnett: - use spring (and an XML recipie)
jgarnett: - use pico container (which uses reflection)
gdavis: acuster, thanks. Im going to head out to lunch now. you can email me your feedback whenever you have a chance to review it
acuster: what about the whole factory finder meme?
gdavis: sometime today or tomorrow would be nice though
jgarnett: (aside: http://docs.codehaus.org/display/GEOTDOC/How+to+Find+a+Factory)
jgarnett: covers factory finder and "container"
jgarnett: the factory finder meme tends to break down here; as you need five factories all configured with the same CRS and percision; or you break things
gdavis: so, I think I got what I needed for now. The discussion of how this will become supported can resume via email I guess, once my wiki page is done and the IP review is done
jgarnett: martin used something called a FactoryGroup in referencing
jgarnett: (it was a container that he made by hand so I renamed it ReferencingFactoryContainer)
jgarnett: but there is no reason to make up this stuff by hand; hense the use of Picocontainer)
***acuster thinks the PMC simply needs to mandate one system
jgarnett: See bottom of this page for ReferencingFactoryContainer: http://docs.codehaus.org/display/GEOTDOC/09+Referencing+Factories
jgarnett: it is hard
jgarnett: uDig uses pico
acuster: because it's exhausting learning every alternative
jgarnett: geoserver uses spring
gdavis: can I assume my topic and the meeting are now complete?
jgarnett: really geotools should not dictate
jgarnett: agreed
jgarnett: chorner do I need to post the logs (since I confused the bot?)
gdavis: chorner is afk
jgarnett: gtbot stop
gtbot: Logging stopped.
gtbot: Posting news to GeoTools confluence...
gtbot: Unable to post news to Confluence. Saving logs to a local location.
gtbot: Logs saved in /home/rgould/IRC Meeting - 16 July 2007.log
vheurteaux left the room (quit: ).
jgarnett: that answers that question - I will post logs
jgarnett: jdeolive ping?
jdeolive: hi
jgarnett: We don't update the stable/development thing until 2.4.0 goes out do we?
gdavis: im going to lunch, ill be back later acuster. otherwise just post your feedback via email (gdavis@refractions.net) cheers!
iant left the room (quit: ).
jdeolive: i dont think so
jgarnett: okay
jgarnett: desruisseaux ping?
jgarnett: When we go to Java 5
jgarnett: will we consider the JSR-275 units jar?
desruisseaux: Jody?
jgarnett: hi
jgarnett: (welcome back)
jgarnett: if it is late feel free to ignore me; I am just excited about Java 5
desruisseaux: Yes, we will need to move to JSR-275 soon or later. JSR-108 is dead.

IRC Meeting - 9 July 2007

1: feature model changes for 2.4
2: More Filter updaters volunteers required


jdeolive: 1: feature model changes for 2.4
jdeolive: i am ready to commit my changes to the feature model api
jdeolive: which is the last blocker for me against 2.4
jdeolive: i have the chagnes local and have run tests, and geoserver cite tests
jdeolive: all is good
jdeolive: minus one patch i am currently waiting and discussing with gabriel
jdeolive: so... as per discussion on the list
groldan: the one on DataUtilities?
jgarnett: nice work; Andrea and myself had a look at Jira - it should now reflect a bit better what is needed for 2.4.
jdeolive: yes, and FilterAttributeExreactor
jdeolive: so this will break geoserver and udig
jdeolive: well maybe not udig, i dont know if it directly subclasses Feature or FeatureCollection
groldan: just go for it, I got just confused by the lack of evidence on the methods intent
jdeolive: but geoserver does and it broke
jdeolive: ok cool... i will commit a unit test for it as well
jdeolive: chorner, does udig implmeent Feature or FeatureCollection directly?
jdeolive: ok, i get it lurk mode... will send email
jdeolive: ok, thats it for me on 1 then
jgarnett: There is at least one Feature implementation (that adapts to layer, georesource etc...) - pretty sure it is a pure wrapper though (since FeatureFactory is not injectable yet)
groldan: wondering, do you have the community-schema modules loaded on your eclipse workspace?
jdeolive: yes
jdeolive: have changed the GTAdapters and stuff
groldan: cool
jdeolive: although i never did the geoserver part of it
jdeolive: i can do that thouhg, not many compile errors
groldan: so what's the next step? I'm quite ignorant on what your end goals are (sure its just me not looking for in the right place, but you know how it is when there's too much stuff to come up with)
jdeolive: yup
jdeolive: well most of the info is here
jdeolive: http://jira.codehaus.org/browse/GEOT-1191
jdeolive: but basically i am just making the api changes i need to in order to allow the old model to implement the new
jdeolive: and making the changes before 2.4 goes out so we can have a clean cycle of deprecattion
jdeolive: so basically this task here
jdeolive: http://jira.codehaus.org/browse/GEOT-1372
groldan: thats cool (even if I'm still hesitant on the approach) (smile) but I wonder if theres a plan to actually use complex features in the mid term
groldan: or do we just want to stick with SimpleFeature?
jdeolive: not really... my goal is to just switch client code to SimpleFeature
jdeolive: complex features is the next major milestone after that
groldan: k, I'll try to keep an eye on the topic, though not sure I could do that much over the next month as I'm flying back home
jgarnett: justin I made a picture of what was coming up; can you check it over and make sure it agrees with what you just said?
jdeolive: sure...
jdeolive: link?
jgarnett: http://docs.codehaus.org/display/GEOTOOLS/2007+Q2
jdeolive: ahh, this picture again
jdeolive: anyways, gabriel, we can move onto your issue
jdeolive: sorry, agenda item
jgarnett: (Also note the home page, and the 2.3.x and 2.4.x page now have a slightly better list of bugs)
jdeolive: 2: More Filter updaters volunteers required
groldan: ok
groldan: as said on the ml, I got stuck for a good while on that bug that raised on IndexedShapeFileDataStore so didn't advanced far beyond updating main to geoapi filters
groldan: that said, most of the work shall be quite mechanical
jdeolive: yeha, its no easy task
jdeolive: i have an idea
groldan: but there might be a couple conflictive pieces, of the one I can remember off the top of my head...
jdeolive: for the grunt feature model i plan to utilize the foss4g code sprint
jdeolive: we could possibly include switch to filter in that mix
groldan: somewhere we need to know the functions arg count up front... (smile)
jdeolive: yeah i had this issue
jdeolive: and argued with jgarnett about it for quite some time
groldan: complementary idea: out of library (ie, in plugins, unsupported, etc) we can use CQL as a test dependency to simplify unit tests (lots of them build filters)
jdeolive: its a major issue blocking full acceptance by geoserver
jdeolive: thats a good idea
jgarnett: justin are you going to organize the geotools code sprint then?
groldan: if andrea were here he would argument CQL still don't support Id filters... yet it could be useful and time saving for any non Id filter building
groldan: ha, talking about rome... hi andrea!
aaime: hi
jdeolive: jgarnett i plan to yes
groldan: so, if filter gets worked out at the code sprint, we still have the issue of migrating to SimpleFeatureBuilder. And the code spring being next month, it doesn't get ready for this month's release?
groldan: (code sprint I mean)
jdeolive: yeah... we agreed to move back the requirement to move over to SimpleFeatureBuilder
jdeolive: for 2.4
jdeolive: and push it off to 2.5
groldan: ok, sad thouhg, guilty me
jdeolive: so is that it, anything else fo rthe meeting?
groldan: guess not
jdeolive: ok, lets call it then
jdeolive: thanks guys
iant_: bye