1 16 package org.outerj.daisy.linkextraction; 17 18 import org.apache.avalon.framework.configuration.Configuration; 19 import org.apache.avalon.framework.configuration.ConfigurationException; 20 import org.apache.avalon.framework.configuration.Configurable; 21 import org.apache.avalon.framework.service.Serviceable; 22 import org.apache.avalon.framework.service.ServiceManager; 23 import org.apache.avalon.framework.service.ServiceException; 24 import org.apache.avalon.framework.activity.Initializable; 25 26 29 public class LinkExtractorImpl implements Serviceable, Initializable, Configurable { 30 private ServiceManager serviceManager; 31 private Configuration config; 32 33 34 public void configure(Configuration configuration) throws ConfigurationException { 35 this.config = configuration; 36 } 37 38 41 public void service(ServiceManager serviceManager) throws ServiceException { 42 this.serviceManager = serviceManager; 43 } 44 45 public void initialize() throws Exception { 46 LinkExtractorRegistrar linkExtractorRegistrar = (LinkExtractorRegistrar)serviceManager.lookup("linkExtractorRegistrar"); 47 try { 48 Configuration[] extractorConf = config.getChild("extractors").getChildren("extractor"); 49 for (int i = 0; i < extractorConf.length; i++) { 50 String name = extractorConf[i].getAttribute("name"); 51 String description = extractorConf[i].getAttribute("description"); 52 String className = extractorConf[i].getAttribute("class"); 53 try { 54 Class clazz = Class.forName(className); 55 linkExtractorRegistrar.registerLinkExtractor(name, description, (LinkExtractor)clazz.newInstance()); 56 } catch (ClassNotFoundException e) { 57 throw new ConfigurationException("Class not found: " + className + " specified at: " + extractorConf[i].getLocation()); 58 } 59 } 60 } finally { 61 serviceManager.release(linkExtractorRegistrar); 62 } 63 } 64 65 } 66 | Popular Tags |