home *** CD-ROM | disk | FTP | other *** search
- package org.apache.cocoon.samples.parentcm;
-
- import java.util.Hashtable;
- import javax.naming.Context;
- import org.apache.avalon.excalibur.component.ExcaliburComponentManager;
- import org.apache.avalon.excalibur.naming.memory.MemoryInitialContextFactory;
- import org.apache.avalon.framework.activity.Initializable;
- import org.apache.avalon.framework.component.Component;
- import org.apache.avalon.framework.component.ComponentException;
- import org.apache.avalon.framework.component.ComponentManager;
- import org.apache.avalon.framework.configuration.Configuration;
- import org.apache.avalon.framework.context.DefaultContext;
- import org.apache.avalon.framework.logger.LogEnabled;
- import org.apache.avalon.framework.logger.Logger;
-
- public class ParentComponentManager implements ComponentManager, LogEnabled, Initializable {
- private Logger logger;
- private final String jndiName;
- private final ExcaliburComponentManager delegate;
-
- public ParentComponentManager(String jndiName) {
- this.jndiName = jndiName;
- this.delegate = new ExcaliburComponentManager();
- }
-
- public boolean hasComponent(String role) {
- return this.delegate.hasComponent(role);
- }
-
- public void initialize() throws Exception {
- this.logger.debug("Looking up component manager configuration at : " + this.jndiName);
- Hashtable environment = new Hashtable();
- environment.put("java.naming.factory.initial", MemoryInitialContextFactory.class.getName());
- Context initialContext = Configurator.initialContext;
- Configuration config = (Configuration)initialContext.lookup(this.jndiName);
- this.delegate.enableLogging(this.logger);
- this.delegate.contextualize(new DefaultContext());
- this.delegate.configure(config);
- this.delegate.initialize();
- this.logger.debug("Component manager successfully initialized.");
- }
-
- public Component lookup(String role) throws ComponentException {
- return this.delegate.lookup(role);
- }
-
- public void release(Component component) {
- this.delegate.release(component);
- }
-
- public void enableLogging(Logger logger) {
- this.logger = logger;
- }
- }
-