1 package br.com.ibnetwork.guara.pipeline.impl; 2 3 import java.net.URL; 4 import java.util.Map; 5 6 import org.apache.avalon.framework.configuration.Configurable; 7 import org.apache.avalon.framework.configuration.Configuration; 8 import org.apache.avalon.framework.configuration.ConfigurationException; 9 import org.apache.avalon.framework.service.ServiceException; 10 import org.apache.avalon.framework.service.ServiceManager; 11 import org.apache.avalon.framework.service.Serviceable; 12 import org.apache.commons.logging.Log; 13 import org.apache.commons.logging.LogFactory; 14 15 import br.com.ibnetwork.xingu.factory.Factory; 16 import br.com.ibnetwork.guara.pipeline.Pipeline; 17 import br.com.ibnetwork.guara.pipeline.PipelineException; 18 import br.com.ibnetwork.guara.pipeline.PipelineManager; 19 import br.com.ibnetwork.guara.pipeline.factory.PipelineFactory; 20 import br.com.ibnetwork.guara.util.ConfigurationLoader; 21 22 /*** 23 * @author <a href="mailto:leandro@ibnetwork.com.br">leandro</a> 24 */ 25 public class PipelineManagerImpl 26 implements PipelineManager, Serviceable, Configurable 27 { 28 private Log logger = LogFactory.getLog(PipelineManagerImpl.class); 29 30 private String configurationFileName; 31 32 private PipelineFactory pipelineFactory; 33 34 private Map map; 35 36 public void service(ServiceManager manager) 37 throws ServiceException 38 { 39 Factory factory = (Factory) manager.lookup(Factory.ROLE); 40 pipelineFactory = (PipelineFactory) factory.create(PipelineFactory.class); 41 } 42 43 public void configure(Configuration conf) 44 throws ConfigurationException 45 { 46 configurationFileName = conf.getChild("file").getAttribute("name"); 47 } 48 49 50 public Map getPipelineMap() 51 throws PipelineException 52 { 53 if(map != null) 54 { 55 return map; 56 } 57 URL url = Thread.currentThread().getContextClassLoader().getResource(configurationFileName); 58 logger.debug("Loading pipeline data from: " + url); 59 try 60 { 61 Configuration conf = ConfigurationLoader.load(url.getFile()); 62 map = pipelineFactory.createPipelineMap(conf); 63 return map; 64 } 65 catch (Exception e) 66 { 67 throw new PipelineException("Error loading pipeline data",e); 68 } 69 } 70 71 public Pipeline getPipeline(String name) 72 throws PipelineException 73 { 74 if(map == null) 75 { 76 map = getPipelineMap(); 77 } 78 return (Pipeline) map.get(name); 79 } 80 81 82 83 84 85 86 }