+ \r
+ public static synchronized void dispose() {\r
+ if (instance != null) {\r
+ instance.close();\r
+ instance = null;\r
+ } \r
+ }\r
+ \r
+ public synchronized List<GeometryProviderExtension> getExtensions() {\r
+ return Collections.unmodifiableList(extensions);\r
+ }\r
+ \r
+ private synchronized void loadExtensions(IConfigurationElement[] elements) {\r
+ for (IConfigurationElement el : elements) {\r
+ String id = el.getAttribute("id");\r
+ try {\r
+ Object o = el.createExecutableExtension("class");\r
+ GeometryProviderExtension ext = new GeometryProviderExtension(id,(GeometryProvider)o);\r
+ tracker.registerObject(el.getDeclaringExtension(), ext, IExtensionTracker.REF_STRONG);\r
+ extensions.add(ext);\r
+ } catch (CoreException e) {\r
+ ErrorLogger.defaultLogError("Cannot create java interface for GeometryProvider " + id, e);\r
+ }\r
+ }\r
+ }\r