1 package org.apache.turbine.services.avaloncomponent; 2 3 18 19 import java.util.Iterator ; 20 import java.util.List ; 21 import java.util.Vector ; 22 23 import org.apache.commons.logging.Log; 24 import org.apache.commons.logging.LogFactory; 25 26 import org.apache.avalon.excalibur.component.DefaultRoleManager; 27 import org.apache.avalon.excalibur.component.ExcaliburComponentManager; 28 import org.apache.avalon.excalibur.logger.Log4JLoggerManager; 29 import org.apache.avalon.excalibur.logger.LoggerManager; 30 import org.apache.avalon.framework.activity.Disposable; 31 import org.apache.avalon.framework.activity.Initializable; 32 import org.apache.avalon.framework.component.Component; 33 import org.apache.avalon.framework.component.ComponentException; 34 import org.apache.avalon.framework.configuration.Configuration; 35 import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder; 36 import org.apache.avalon.framework.context.DefaultContext; 37 import org.apache.avalon.framework.logger.Logger; 38 39 import org.apache.turbine.Turbine; 40 import org.apache.turbine.services.InitializationException; 41 import org.apache.turbine.services.TurbineBaseService; 42 43 70 public class TurbineAvalonComponentService 71 extends TurbineBaseService 72 implements AvalonComponentService, Initializable, Disposable 73 { 74 75 private static Log log = LogFactory.getLog( 76 TurbineAvalonComponentService.class); 77 78 79 private ExcaliburComponentManager manager = null; 80 81 85 93 public void init() 94 throws InitializationException 95 { 96 try 97 { 98 initialize(); 99 100 setInit(true); 101 } 102 catch (Exception e) 103 { 104 throw new InitializationException("init failed", e); 105 } 106 } 107 108 113 public void shutdown() 114 { 115 dispose(); 116 setInit(false); 117 } 118 119 123 128 public void initialize() throws Exception 129 { 130 org.apache.commons.configuration.Configuration conf 131 = getConfiguration(); 132 133 String sysConfigFilename = Turbine.getRealPath( 135 conf.getString(COMPONENT_CONFIG_KEY, COMPONENT_CONFIG_VALUE)); 136 String roleConfigFilename = Turbine.getRealPath( 137 conf.getString(COMPONENT_ROLE_KEY, COMPONENT_ROLE_VALUE)); 138 139 log.debug("Config File: " + sysConfigFilename); 140 log.debug("Role File: " + roleConfigFilename); 141 142 144 DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder(); 145 Configuration sysConfig = builder.buildFromFile(sysConfigFilename); 146 Configuration roleConfig = builder.buildFromFile(roleConfigFilename); 147 148 LoggerManager lm = new Log4JLoggerManager(); 150 151 DefaultRoleManager roles = new DefaultRoleManager(); 153 154 Logger logger = lm.getLoggerForCategory(AVALON_LOG_CATEGORY); 155 156 roles.enableLogging(logger); 157 roles.configure(roleConfig); 158 159 manager = new ExcaliburComponentManager(); 161 162 manager.setLoggerManager(lm); 163 manager.enableLogging(logger); 164 165 DefaultContext context = new DefaultContext(); 166 String realPath = Turbine.getRealPath("/"); 167 168 context.put(AvalonComponentService.COMPONENT_APP_ROOT, realPath); 169 System.setProperty("applicationRoot", realPath); 170 171 log.debug("Application Root is " + realPath); 172 173 manager.contextualize(context); 174 manager.setRoleManager(roles); 175 manager.configure(sysConfig); 176 177 manager.initialize(); 179 180 List lookupComponents = conf.getList(COMPONENT_LOOKUP_KEY, 181 new Vector ()); 182 183 for (Iterator it = lookupComponents.iterator(); it.hasNext();) 184 { 185 String component = (String ) it.next(); 186 try 187 { 188 Component c = manager.lookup(component); 189 log.info("Lookup for Component " + component + " successful"); 190 manager.release(c); 191 } 192 catch (Exception e) 193 { 194 log.error("Lookup for Component " + component + " failed!"); 195 } 196 } 197 } 198 199 202 public void dispose() 203 { 204 manager.dispose(); 205 } 206 207 214 public Component lookup(String roleName) 215 throws ComponentException 216 { 217 return manager.lookup(roleName); 218 } 219 220 225 public void release(Component component) 226 { 227 manager.release(component); 228 } 229 230 } 231 | Popular Tags |