+++ /dev/null
-package org.argeo.geotools.osgi;
-
-import java.net.URL;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.argeo.geotools.GeoToolsConstants;
-import org.geotools.data.DataStore;
-import org.geotools.data.FileDataStoreFinder;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-/**
- * Publishes as OSGi services (typically {@link DataStore}) resources contained
- * or references within the bundle declaring this activator.
- */
-public class GisResourcesActivator implements BundleActivator {
- private final static Log log = LogFactory
- .getLog(GisResourcesActivator.class);
-
- /**
- * Keep track of the registered datastores in order to dispose them when the
- * bundle is stopped.
- */
- private Map<String, DataStore> registeredDataStores = new HashMap<String, DataStore>();
-
- @SuppressWarnings("unchecked")
- public void start(BundleContext context) throws Exception {
- Bundle bundle = context.getBundle();
-
- // TODO deal with other data types
- // shapefiles
- Enumeration<URL> resources = bundle.findEntries("/", "*.shp", true);
- while (resources.hasMoreElements()) {
- URL url = resources.nextElement();
- DataStore ds = FileDataStoreFinder.getDataStore(url);
- Properties props = new Properties();
- String alias = url.getPath();
- props.setProperty(GeoToolsConstants.ALIAS_KEY, alias);
- context.registerService(DataStore.class.getName(), ds, props);
- registeredDataStores.put(alias, ds);
- if (log.isDebugEnabled())
- log.debug("Registered data store " + alias + ": " + ds);
- }
- }
-
- public void stop(BundleContext context) throws Exception {
- for (String alias : registeredDataStores.keySet()) {
- DataStore ds = registeredDataStores.get(alias);
- try {
- ds.dispose();
- if (log.isDebugEnabled())
- log.debug("Disposed data store " + alias + ": " + ds);
- } catch (Exception e) {
- log.warn("Could not dispose data store " + ds + ": "
- + e.getMessage());
- }
- }
-
- }
-
-}