[udig-devel] Extention propsoal ...

Jesse Eichar jeichar at refractions.net
Tue Sep 12 07:21:45 PDT 2006


This extension point certainly seems reasonable Jody.  I'm ok with  
you implementing something like this.  Should be pretty easy.
Take a look at the getResource(Class,monitor) method in LayerImpl.

Jesse.

Am 8-Sep-06 um 7:02 AM schrieb Jody Garnett:

> A couple of requests for extension points have gone by recently:
> - IResolveAdapterFactory - completed (thanks Jesse)
> - IGeoCoder - for the location view to process
>
> And I am about to request one more, but I am not sure how to phrase  
> it - basically as an application developer I want to hook into uDig  
> and be able to do the kinds of things it does (and I expect uDig to  
> use the same facilities it is offering me).
>
> So here is the uDig functionality that I want to take part in:
> - when you request a FeatureSource for a Layer, uDig will create  
> you one, and hook it up with a Transaction
>
> Sine a Transaction completely holds the "state" for all geotools  
> data interaction this is all fine and good. But uDig goes the extra  
> mile and holds onto the FeatureSource so you can get back the exact  
> same instance next time. This is helpful when it holds onto other  
> resources for you (ie WMSLayer, something you made up, etc...).  To  
> be open ended the layer "refresh" option should actually empty out  
> all these things, forcing renderer's and so on to fetch them from  
> the catalog again.
>
> That is the background information, here is the activity I need to  
> take part in  ....
> - uDig constructs a FeatureSource, and performs some manipulations  
> on it before making it available for caching (ie uDig sets the  
> currentTransaction).
> - I need in there in order to wrap the featureSource with my own  
> class before it is cached, and used by all uDig display and edit tools
>
> So here is what I propose (note use of proxy rather then adapter as  
> we need to maintain the same interface):
> interface LayerResourceProxy<R> {
>        public <R> proxy( ILayer layer, <R> resource);
> }
>
> The extension point XML will define the specific interface being  
> handled. For uDig to make use of the same facility it will need to  
> implement something like the following:
> class TransactionResourceProxy implements  
> LayerResourceProxy<FeatureSource> {
>        public FeatureSource proxy( ILayer layer, FeatureSource  
> resource){
>               if( resource instanceof FeatureStore){
>                      ((FeatureStore)resource).setTransaction 
> ( transaction ); // no idea where transaction is off the top of my  
> head
>               }
>               return resource;
>        }
> }
>
> Comments are welcome,
> Jody
>
>
> _______________________________________________
> User-friendly Desktop Internet GIS (uDig)
> http://udig.refractions.net
> http://lists.refractions.net/mailman/listinfo/udig-devel



More information about the udig-devel mailing list