You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by bl...@apache.org on 2003/10/17 22:57:11 UTC

cvs commit: cocoon-2.2/src/java/org/apache/cocoon/bean CocoonBean.java

bloritsch    2003/10/17 13:57:11

  Modified:    src/java/org/apache/cocoon/bean CocoonBean.java
  Log:
  Finish the CocoonBean base
  
  Revision  Changes    Path
  1.37      +56 -6     cocoon-2.2/src/java/org/apache/cocoon/bean/CocoonBean.java
  
  Index: CocoonBean.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.2/src/java/org/apache/cocoon/bean/CocoonBean.java,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- CocoonBean.java	17 Oct 2003 17:49:23 -0000	1.36
  +++ CocoonBean.java	17 Oct 2003 20:57:11 -0000	1.37
  @@ -51,19 +51,21 @@
   
   import org.apache.avalon.fortress.ContainerManager;
   import org.apache.avalon.fortress.impl.DefaultContainerManager;
  -import org.apache.avalon.fortress.impl.DefaultContainer;
   import org.apache.avalon.fortress.util.FortressConfig;
   import org.apache.avalon.framework.container.ContainerUtil;
   import org.apache.avalon.framework.CascadingRuntimeException;
  +import org.apache.avalon.framework.logger.Logger;
  +import org.apache.avalon.framework.logger.NullLogger;
   import org.apache.avalon.framework.service.ServiceManager;
   import org.apache.avalon.framework.service.ServiceException;
  -import org.apache.cocoon.Cocoon;
   import org.apache.cocoon.Constants;
   import org.apache.cocoon.Processor;
  +import org.apache.cocoon.components.CocoonContainer;
   
   import java.io.File;
   import java.util.ArrayList;
   import java.util.List;
  +import java.util.Iterator;
   
   /**
    * CocoonBean does XYZ
  @@ -75,7 +77,7 @@
   {
       private final FortressConfig m_confBuilder;
       private ContainerManager m_contManager;
  -
  +    private Logger m_initializationLogger;
       private String m_contextURI = Constants.DEFAULT_CONTEXT_DIR;
       private File m_workDirectory = new File( System.getProperty( "java.io.tmpdir" ) );
       private String m_logConfigURI = m_contextURI + File.separator + "cocoon.xlog";
  @@ -91,6 +93,8 @@
       public CocoonBean()
       {
           m_confBuilder = new FortressConfig();
  +        m_parentClassLoader = Thread.currentThread().getContextClassLoader();
  +        m_initializationLogger = new NullLogger();
           m_contManager = null;
       }
   
  @@ -109,10 +113,30 @@
           }
   
           CocoonContainer container = (CocoonContainer)m_contManager.getContainer();
  +        ServiceManager manager = container.getServiceManager();
   
  -        return container;
  +        Processor rootProcessor = null;
  +        try
  +        {
  +            rootProcessor = (Processor)manager.lookup(Processor.ROLE);
  +        }
  +        catch ( ServiceException e )
  +        {
  +            throw new CascadingRuntimeException("Error retrieving root processor", e);
  +        }
  +
  +        return rootProcessor;
       }
   
  +
  +    public Logger getInitializationLogger()
  +    {
  +        return m_initializationLogger; }
  +
  +    public void setInitializationLogger( Logger initializationLogger )
  +    {
  +        m_initializationLogger = initializationLogger; }
  +
       public File getWorkDirectory()
       {
           return m_workDirectory;
  @@ -225,6 +249,10 @@
   
       public void initialize() throws Exception
       {
  +        forceLoadClasses();
  +
  +        m_initializationLogger.debug("Starting up Cocoon");
  +
           m_confBuilder.setContextDirectory( m_contextURI );
           m_confBuilder.setContainerConfiguration( m_configURI );
           m_confBuilder.setLoggerCategory( m_logCategory );
  @@ -237,15 +265,37 @@
           m_confBuilder.setCommandFailureHandlerClass( CocoonCommandFailureHandler.class );
           m_confBuilder.setContainerClass(CocoonContainer.class);
   
  -        // TODO: implement these.  Share pool manager accross invocations
  +        // TODO: implement this.
           //m_confBuilder.setLifecycleExtensionManager( m_lifecycleExtensions );
   
  -        m_contManager = new DefaultContainerManager( m_confBuilder.getContext() );
  +        m_contManager = new DefaultContainerManager( m_confBuilder.getContext(), m_initializationLogger );
           ContainerUtil.initialize( m_contManager );
       }
   
  +    private void forceLoadClasses()
  +    {
  +        m_initializationLogger.debug("Loading classes");
  +
  +        Iterator it = m_classForceLoadList.iterator();
  +        while (it.hasNext())
  +        {
  +            String className = (String) it.next();
  +            m_initializationLogger.debug("Loading class: " + className);
  +
  +            try
  +            {
  +                m_parentClassLoader.loadClass(className);
  +            }
  +            catch (Exception e)
  +            {
  +                m_initializationLogger.warn("Could not load class: " + className, e);
  +            }
  +        }
  +    }
  +
       public void dispose()
       {
  +        m_initializationLogger.debug("Shutting down Cocoon");
           ContainerUtil.dispose( m_contManager );
       }