bloritsch    2003/03/13 06:12:10

  Modified:    src/java/org/apache/cocoon Cocoon.java
  Log:
  put the CommandManager back in the Cocoon object
  
  Revision  Changes    Path
  1.4       +41 -2     cocoon-2.1/src/java/org/apache/cocoon/Cocoon.java
  
  Index: Cocoon.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/java/org/apache/cocoon/Cocoon.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Cocoon.java       12 Mar 2003 15:35:22 -0000      1.3
  +++ Cocoon.java       13 Mar 2003 14:11:59 -0000      1.4
  @@ -62,10 +62,13 @@
   import org.apache.avalon.framework.configuration.Configuration;
   import org.apache.avalon.framework.configuration.ConfigurationException;
   import org.apache.avalon.framework.configuration.SAXConfigurationHandler;
  +import org.apache.avalon.framework.container.ContainerUtil;
   import org.apache.avalon.framework.context.Context;
   import org.apache.avalon.framework.context.ContextException;
   import org.apache.avalon.framework.context.Contextualizable;
  +import org.apache.avalon.framework.context.DefaultContext;
   import org.apache.avalon.framework.logger.AbstractLogEnabled;
  +import org.apache.avalon.framework.parameters.Parameters;
   import org.apache.avalon.framework.thread.ThreadSafe;
   import org.apache.cocoon.components.CocoonComponentManager;
   import org.apache.cocoon.components.EnvironmentStack;
  @@ -79,6 +82,10 @@
   import org.apache.cocoon.environment.Request;
   import org.apache.cocoon.environment.Session;
   import org.apache.cocoon.util.ClassUtils;
  +import org.apache.excalibur.event.Queue;
  +import org.apache.excalibur.event.command.CommandManager;
  +import org.apache.excalibur.event.command.TPCThreadManager;
  +import org.apache.excalibur.event.command.ThreadManager;
   import org.apache.excalibur.instrument.InstrumentManageable;
   import org.apache.excalibur.instrument.InstrumentManager;
   import org.apache.excalibur.source.Source;
  @@ -116,6 +123,8 @@
                      LogKitManageable,
                      InstrumentManageable {
   
  +    private ThreadManager threads;
  +
       /** The application context */
       private Context context;
   
  @@ -186,7 +195,36 @@
        */
       public void contextualize(Context context) throws ContextException {
           if (this.context == null) {
  -            this.context = context;
  +            this.context = new DefaultContext(context);
  +            
  +            try
  +            {
  +                DefaultContext setup = (DefaultContext)this.context;
  +                threads = new TPCThreadManager();
  +                CommandManager commands = new CommandManager();
  +                
  +                Parameters params = new Parameters();
  +                params.setParameter("threads-per-processor", "1");
  +                params.setParameter("sleep-time", "100");
  +                params.setParameter("block-timeout", "1000");
  +                params.setParameter("force-shutdown", "false");
  +                params.makeReadOnly();
  +                
  +                ContainerUtil.enableLogging(threads, 
getLogger().getChildLogger("thread.manager"));
  +                ContainerUtil.parameterize(threads, params);
  +                ContainerUtil.initialize(threads);
  +                
  +                threads.register(commands);
  +                
  +                setup.put(Queue.ROLE, commands.getCommandSink());
  +                
  +                setup.makeReadOnly();
  +            }
  +            catch (Exception e)
  +            {
  +                getLogger().error("Could not set up the Command Manager", e);
  +            }
  +            
               this.classpath = (String)context.get(Constants.CONTEXT_CLASSPATH);
               this.workDir = (File)context.get(Constants.CONTEXT_WORK_DIR);
               try {
  @@ -467,6 +505,7 @@
           this.componentManager.release((Component)this.xmlizer);
           this.sourceResolver = null;
           this.xmlizer = null;
  +        ContainerUtil.dispose(threads);
           this.componentManager.dispose();
           this.disposed = true;
       }
  
  
  

Reply via email to