package net.solarnetwork.org.apache.derby;
import java.sql.Driver;
import java.util.Hashtable;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceRegistration;
import org.osgi.service.jdbc.DataSourceFactory;
public class Activator implements BundleActivator {
private static final String DRIVER_CLASS = "org.apache.derby.jdbc.EmbeddedDriver";
private static final String DRIVER_NAME = "Derby Embedded";
public ServiceRegistration<DataSourceFactory> dsf = null;
@Override
public void start(BundleContext bundleContext) throws Exception {
DataSourceFactory dataSourceFactory = new DerbyDataSourceFactory();
java.sql.Driver driver = (Driver) getClass().getClassLoader().loadClass(DRIVER_CLASS)
.newInstance();
final int major = driver.getMajorVersion();
final int minor = driver.getMinorVersion();
Hashtable<String, Object> props = new Hashtable<String, Object>();
props.put(DataSourceFactory.OSGI_JDBC_DRIVER_CLASS, DRIVER_CLASS);
props.put(DataSourceFactory.OSGI_JDBC_DRIVER_NAME, DRIVER_NAME);
props.put(DataSourceFactory.OSGI_JDBC_DRIVER_VERSION,
String.valueOf(major) + '.' + String.valueOf(minor) + " JDBC 4+");
dsf = bundleContext.registerService(DataSourceFactory.class, dataSourceFactory, props);
}
@Override
public void stop(BundleContext bundleContext) throws Exception {
if ( dsf != null ) {
dsf.unregister();
dsf = null;
}
}
}