I have been having bit of fun with a custom IService implementation that contains the following check:
if (Display.getCurrent() != null) { throw new IllegalStateException( "Access to the server not available from the display thread"); //$NON-NLS-1$ } I have found this *very* helpful for catching code that has a chance of blocking the display thread while it waits for IO. However it has turned up a few instances in uDig where we are incorrectly asking for IServiceInfo from the display thread under the assumption someone already loaded it. After our next release I would like to put a few Display thread checks (such as the above) in order to catch this kind of mistake early. For reference where I get the problem in uDig is here: at net.refractions.udig.catalog.internal.ServiceFactoryImpl.createService(ServiceFactoryImpl.java:241) at net.refractions.udig.catalog.ServiceParameterPersister.locateService(ServiceParameterPersister.java:241) at net.refractions.udig.catalog.ServiceParameterPersister.restore(ServiceParameterPersister.java:155) at net.refractions.udig.catalog.internal.CatalogImpl.loadFromFile(CatalogImpl.java:1015) at net.refractions.udig.catalog.CatalogPlugin.restoreFromPreferences(CatalogPlugin.java:201) at net.refractions.udig.catalog.CatalogPlugin.start(CatalogPlugin.java:106) I am going to think about a fix for that; it could be our habit of asking for getInfo to check if the service is any good is: a) a bit of a hack b) not needed when restoring the catalog no startup -- Jody Garnett
_______________________________________________ User-friendly Desktop Internet GIS (uDig) http://udig.refractions.net http://lists.refractions.net/mailman/listinfo/udig-devel