1 16 package org.outerj.daisy.emailnotifier.serverimpl; 17 18 import org.apache.avalon.framework.service.Serviceable; 19 import org.apache.avalon.framework.service.ServiceManager; 20 import org.apache.avalon.framework.service.ServiceException; 21 import org.apache.avalon.framework.activity.Initializable; 22 import org.apache.avalon.framework.logger.Logger; 23 import org.apache.avalon.framework.logger.AbstractLogEnabled; 24 import org.outerj.daisy.repository.ExtensionRegistrar; 25 import org.outerj.daisy.repository.ExtensionProvider; 26 import org.outerj.daisy.repository.Repository; 27 import org.outerj.daisy.jdbcutil.JdbcHelper; 28 29 import javax.sql.DataSource ; 30 31 34 public class LocalEmailSubscriptionManagerProvider extends AbstractLogEnabled implements Serviceable, Initializable { 35 private ExtensionRegistrar extensionRegistrar; 36 private ExtensionProvider extensionProvider; 37 private DataSource dataSource; 38 private Context context = new Context(); 39 private JdbcHelper jdbcHelper; 40 41 45 public void service(ServiceManager serviceManager) throws ServiceException { 46 this.extensionRegistrar = (ExtensionRegistrar)serviceManager.lookup("extensionRegistrar"); 47 this.dataSource = (DataSource )serviceManager.lookup("datasource"); 48 } 49 50 public void initialize() throws Exception { 51 extensionProvider = new MyExtensionProvider(); 52 extensionRegistrar.registerExtension("EmailSubscriptionManager", extensionProvider); 53 jdbcHelper = JdbcHelper.getInstance(context.getDataSource(), context.getLogger()); 54 } 55 56 class MyExtensionProvider implements ExtensionProvider { 57 public Object createExtension(Repository repository) { 58 return new LocalEmailSubscriptionManager(repository, context, jdbcHelper); 59 } 60 } 61 62 public class Context { 63 private Context() { 64 } 65 66 public DataSource getDataSource() { 67 return dataSource; 68 } 69 70 public Logger getLogger() { 71 return LocalEmailSubscriptionManagerProvider.this.getLogger(); 72 } 73 } 74 } 75 | Popular Tags |