[udig-devel] IResolve to Resolve - just the factories

Jody Garnett jgarnett at refractions.net
Wed Aug 30 01:36:05 PDT 2006


Jody Garnett wrote:
> So it is time to work with others, the geotools project has ported the 
> uDig IResolve API (for catalog), and completed it as an implementation 
> of the "extensible interface pattern". What does this mean? It means 
> that you will be able to supply a factory that can make new adapters 
> for existing IService and IResource handles (no more if/then/else logic).
>
> I have several choices ...
>
> Option 1: extend at the interface level
> Option 2: extend at the implementation level
Both of these fail due to the conflict between URL and URI.
> Option 3: Bridge
Going to try Option 3, sorry I messed up the example earlier....

class GTGeoResource extends IGeoResource {
    GTGeoResource( GeoResource geotoolsHandle );
}


I will also grab the interface I need from GeoTools and port it to 
eclipse progress monitors:

public interface IResolveAdapterFactory {
    boolean canAdapt(IResolve resolve, Class adapter);
    Object adapt(IResolve resolve, Class adapter, IProgressMonitor monitor)
        throws IOException;
}

The alternative is to make use of the Eclipse Platform facilities for 
this stuff ...

interface IAdapterFactory {
    public Object getAdapter(Object adaptableObject, Class adapterType);
    public Class[] getAdapterList();
}

Although I am a bit concerned that using IAdapterFactory misses some of 
the point:
1. the "target" class is not present in the interface (instead it is 
part of the XML referring to this class)
2. there is no opportunity to provide a progress monitor when creating 
the adapter

Point 1 is not so much of a problem, Point 2 breaks the spirit of 
IResolve (be explicit about delay at the API level) - so I am going to 
proceed with IResolveAdapterFactory as based on Justin's work.

(The only other thing would be to check the common navigator framework 
now that it is ready, although I think that may be an Eclipse 3.2 only 
thing - in terms of "integration" with eclipse we are probably going to 
have to support this framework eventually anyways).

Cheers,
Jody



More information about the udig-devel mailing list