You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by cz...@apache.org on 2004/10/21 22:36:34 UTC

svn commit: rev 55257 - in cocoon/trunk: src/blocks/python/java/org/apache/cocoon/components/language/markup/xsp src/blocks/python/java/org/apache/cocoon/components/language/programming/python src/blocks/xsp/java/org/apache/cocoon/acting src/blocks/xsp/java/org/apache/cocoon/components/language/generator src/blocks/xsp/java/org/apache/cocoon/components/language/markup src/blocks/xsp/java/org/apache/cocoon/components/language/markup/xsp src/blocks/xsp/java/org/apache/cocoon/components/language/programming src/blocks/xsp/java/org/apache/cocoon/components/language/programming/java src/blocks/xsp/java/org/apache/cocoon/components/language/programming/javascript src/blocks/xsp/java/org/apache/cocoon/components/xscript src/blocks/xsp/java/org/apache/cocoon/generation src/core/java/org/apache/cocoon/components src/core/java/org/apache/cocoon/components/container src/core/java/org/apache/cocoon/core/container src/java/org/apache/cocoon src/java/org/apache/cocoon/components src/java/org/apache/cocoon/components/container src/java/org/apache/cocoon/components/treeprocessor/sitemap src/java/org/apache/cocoon/generation tools/targets

Author: cziegeler
Date: Thu Oct 21 13:36:33 2004
New Revision: 55257

Added:
   cocoon/trunk/src/java/org/apache/cocoon/components/ChainedConfiguration.java
      - copied unchanged from rev 55255, cocoon/trunk/src/core/java/org/apache/cocoon/components/ChainedConfiguration.java
   cocoon/trunk/src/java/org/apache/cocoon/components/SitemapConfigurable.java
      - copied unchanged from rev 55255, cocoon/trunk/src/core/java/org/apache/cocoon/components/SitemapConfigurable.java
   cocoon/trunk/src/java/org/apache/cocoon/components/SitemapConfigurationHolder.java
      - copied unchanged from rev 55255, cocoon/trunk/src/core/java/org/apache/cocoon/components/SitemapConfigurationHolder.java
   cocoon/trunk/src/java/org/apache/cocoon/components/container/CocoonServiceManager.java
   cocoon/trunk/src/java/org/apache/cocoon/components/container/DefaultSitemapConfigurationHolder.java
      - copied unchanged from rev 55255, cocoon/trunk/src/core/java/org/apache/cocoon/components/container/DefaultSitemapConfigurationHolder.java
Removed:
   cocoon/trunk/src/core/java/org/apache/cocoon/components/ChainedConfiguration.java
   cocoon/trunk/src/core/java/org/apache/cocoon/components/SitemapConfigurable.java
   cocoon/trunk/src/core/java/org/apache/cocoon/components/SitemapConfigurationHolder.java
   cocoon/trunk/src/core/java/org/apache/cocoon/components/container/
Modified:
   cocoon/trunk/src/blocks/python/java/org/apache/cocoon/components/language/markup/xsp/PythonGenerator.java
   cocoon/trunk/src/blocks/python/java/org/apache/cocoon/components/language/programming/python/PythonProgram.java
   cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/acting/ServerPagesAction.java
   cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/generator/CompiledComponent.java
   cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/generator/GeneratorSelector.java
   cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/generator/ProgramGenerator.java
   cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/generator/ProgramGeneratorImpl.java
   cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/markup/MarkupLanguage.java
   cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/markup/xsp/SOAPHelper.java
   cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/markup/xsp/XSPGenerator.java
   cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/markup/xsp/XSPUtil.java
   cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/programming/LanguageCompiler.java
   cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/programming/Program.java
   cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/programming/ProgrammingLanguage.java
   cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/programming/java/JavaProgram.java
   cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/programming/javascript/JavascriptProgram.java
   cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/xscript/XScriptManagerImpl.java
   cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/generation/AbstractServerPage.java
   cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/generation/ServerPagesGenerator.java
   cocoon/trunk/src/core/java/org/apache/cocoon/core/container/CocoonServiceManager.java
   cocoon/trunk/src/core/java/org/apache/cocoon/core/container/CocoonServiceSelector.java
   cocoon/trunk/src/java/org/apache/cocoon/Cocoon.java
   cocoon/trunk/src/java/org/apache/cocoon/components/treeprocessor/sitemap/SitemapLanguage.java
   cocoon/trunk/src/java/org/apache/cocoon/generation/ServletGenerator.java
   cocoon/trunk/tools/targets/compile-build.xml
Log:
Make compilable standalone
Start refactoring XSP - at least it compiles

Modified: cocoon/trunk/src/blocks/python/java/org/apache/cocoon/components/language/markup/xsp/PythonGenerator.java
==============================================================================
--- cocoon/trunk/src/blocks/python/java/org/apache/cocoon/components/language/markup/xsp/PythonGenerator.java	(original)
+++ cocoon/trunk/src/blocks/python/java/org/apache/cocoon/components/language/markup/xsp/PythonGenerator.java	Thu Oct 21 13:36:33 2004
@@ -43,7 +43,7 @@
  * written in Python language
  *
  * @author <a href="mailto:vgritsenko@apache.org">Vadim Gritsenko</a>
- * @version CVS $Id: PythonGenerator.java,v 1.4 2004/03/05 13:02:20 bdelacretaz Exp $
+ * @version CVS $Id$
  */
 public class PythonGenerator extends XSPGenerator
         implements Configurable, Initializable {
@@ -59,6 +59,9 @@
     private Exception compileError;
 
 
+    /* (non-Javadoc)
+     * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
+     */
     public void configure(Configuration configuration) throws ConfigurationException {
         this.file = new File(configuration.getChild("file").getValue());
 
@@ -89,6 +92,9 @@
         return false;
     }
 
+    /* (non-Javadoc)
+     * @see org.apache.avalon.framework.activity.Initializable#initialize()
+     */
     public void initialize() throws Exception {
         try {
             Properties properties = new Properties();
@@ -116,6 +122,9 @@
     }
 
 
+    /* (non-Javadoc)
+     * @see org.apache.cocoon.sitemap.SitemapModelComponent#setup(org.apache.cocoon.environment.SourceResolver, java.util.Map, java.lang.String, org.apache.avalon.framework.parameters.Parameters)
+     */
     public void setup(SourceResolver resolver, Map objectModel, String src, Parameters par)
             throws ProcessingException, SAXException, IOException {
         super.setup(resolver, objectModel, src, par);
@@ -132,6 +141,9 @@
         python.set("parameters", this.parameters);
     }
 
+    /* (non-Javadoc)
+     * @see org.apache.cocoon.generation.Generator#generate()
+     */
     public void generate() throws IOException, ProcessingException {
         try {
             python.set("contentHandler", this.contentHandler);
@@ -145,6 +157,9 @@
         }
     }
 
+    /* (non-Javadoc)
+     * @see org.apache.avalon.excalibur.pool.Recyclable#recycle()
+     */
     public void recycle() {
         python.set("contentHandler", null);
 
@@ -158,6 +173,9 @@
         super.recycle();
     }
 
+    /* (non-Javadoc)
+     * @see org.apache.avalon.framework.activity.Disposable#dispose()
+     */
     public void dispose() {
         python.set("page", null);
         python.set("logger", null);

Modified: cocoon/trunk/src/blocks/python/java/org/apache/cocoon/components/language/programming/python/PythonProgram.java
==============================================================================
--- cocoon/trunk/src/blocks/python/java/org/apache/cocoon/components/language/programming/python/PythonProgram.java	(original)
+++ cocoon/trunk/src/blocks/python/java/org/apache/cocoon/components/language/programming/python/PythonProgram.java	Thu Oct 21 13:36:33 2004
@@ -17,15 +17,12 @@
 
 import org.apache.avalon.framework.configuration.DefaultConfiguration;
 import org.apache.avalon.framework.configuration.Configurable;
-import org.apache.avalon.framework.component.ComponentManager;
 import org.apache.avalon.framework.context.Context;
-
-import org.apache.avalon.excalibur.component.ComponentHandler;
-import org.apache.avalon.excalibur.component.RoleManager;
-import org.apache.avalon.excalibur.component.LogkitLoggerManager;
+import org.apache.avalon.framework.service.ServiceManager;
 
 import org.apache.cocoon.components.language.programming.Program;
 import org.apache.cocoon.components.language.generator.CompiledComponent;
+import org.apache.cocoon.core.container.AbstractComponentHandler;
 
 import java.io.File;
 import java.util.Collection;
@@ -35,7 +32,7 @@
  * This class represents program in the Python language.
  *
  * @author <a href="mailto:vgritsenko@apache.org">Vadim Gritsenko</a>
- * @version CVS $Id: PythonProgram.java,v 1.4 2004/03/05 13:02:20 bdelacretaz Exp $
+ * @version CVS $Id$
  */
 public class PythonProgram implements Program {
 
@@ -63,14 +60,12 @@
         return file.toString();
     }
 
-    public ComponentHandler getHandler(ComponentManager manager,
-                                       Context context,
-                                       RoleManager roles,
-                                       LogkitLoggerManager logKitManager)
+    public AbstractComponentHandler getHandler(ServiceManager manager,
+                                       Context context)
             throws Exception {
 
-        return ComponentHandler.getComponentHandler(
-                clazz, config, manager, context, roles, logKitManager, null, "N/A");
+        return AbstractComponentHandler.getComponentHandler(
+                clazz, config, manager, context, null, null, null);
     }
 
     public CompiledComponent newInstance() throws Exception {

Modified: cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/acting/ServerPagesAction.java
==============================================================================
--- cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/acting/ServerPagesAction.java	(original)
+++ cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/acting/ServerPagesAction.java	Thu Oct 21 13:36:33 2004
@@ -19,19 +19,15 @@
 import java.util.Map;
 
 import org.apache.avalon.framework.activity.Disposable;
-import org.apache.avalon.framework.component.ComponentException;
-import org.apache.avalon.framework.component.ComponentManager;
-import org.apache.avalon.framework.component.Composable;
 import org.apache.avalon.framework.configuration.Configurable;
 import org.apache.avalon.framework.configuration.Configuration;
 import org.apache.avalon.framework.configuration.ConfigurationException;
 import org.apache.avalon.framework.parameters.Parameters;
 import org.apache.avalon.framework.thread.ThreadSafe;
 
-import org.apache.avalon.excalibur.component.ComponentHandler;
-
 import org.apache.cocoon.components.sax.XMLByteStreamCompiler;
 import org.apache.cocoon.components.sax.XMLByteStreamFragment;
+import org.apache.cocoon.core.container.AbstractComponentHandler;
 import org.apache.cocoon.environment.ObjectModelHelper;
 import org.apache.cocoon.environment.Redirector;
 import org.apache.cocoon.environment.Request;
@@ -76,43 +72,31 @@
  * @version CVS $Id$
  */
 public class ServerPagesAction
-        extends AbstractAction
-        implements Disposable, ThreadSafe, Configurable, Composable {
+        extends ServiceableAction
+        implements Disposable, ThreadSafe, Configurable {
 
     public static final String REDIRECTOR_OBJECT = "xsp-action:redirector";
     public static final String ACTION_RESULT_OBJECT = "xsp-action:result";
     public static final String ACTION_SUCCESS_OBJECT = "xsp-action:success";
 
-    private ComponentHandler generatorHandler;
-
-    /** The component manager instance */
-    private ComponentManager manager;
+    private AbstractComponentHandler generatorHandler;
 
     /* (non-Javadoc)
-     * @see org.apache.avalon.framework.component.Composable#compose(org.apache.avalon.framework.component.ComponentManager)
-     */
-    public void compose(ComponentManager manager) throws ComponentException {
-        this.manager=manager;
-    }
-    
-    /* (non-Javadoc)
      * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
      */
     public void configure(Configuration conf)
     throws ConfigurationException {
         try {
-            this.generatorHandler = ComponentHandler.getComponentHandler(
+            this.generatorHandler = AbstractComponentHandler.getComponentHandler(
                 ServerPagesGenerator.class,
                 conf,
                 this.manager,
-                null, // Context
-                null,  // RoleManager
-                null,  // LogkitLoggerManager
-                null, // InstrumentManager
-                "N/A" // instrumentableName
+                null,  // Context
+                this.getLogger(),
+                null,  // LoggerManager
+                null   // RoleManager
             );
 
-            this.generatorHandler.enableLogging(getLogger());
             this.generatorHandler.initialize();
 
         } catch(Exception e) {
@@ -152,8 +136,6 @@
         XMLByteStreamCompiler compiler = null;
 
         try {
-            generator.enableLogging(getLogger());
-            generator.compose(this.manager);
             generator.setup(resolver, objectModel, source, parameters);
 
             // Setup generator output

Modified: cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/generator/CompiledComponent.java
==============================================================================
--- cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/generator/CompiledComponent.java	(original)
+++ cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/generator/CompiledComponent.java	Thu Oct 21 13:36:33 2004
@@ -15,16 +15,13 @@
  */
 package org.apache.cocoon.components.language.generator;
 
-import org.apache.avalon.framework.component.Component;
-import org.apache.avalon.framework.component.Composable;
 import org.apache.cocoon.Modifiable;
 
 /**
- * This interface is the common base of all Compiled Components.  This
- * includes Sitemaps and XSP Pages
+ * This interface is the common base of all XSP Pages
  *
  * @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
- * @version CVS $Id: CompiledComponent.java,v 1.1 2004/03/10 12:58:04 stephan Exp $
+ * @version CVS $Id$
  */
-public interface CompiledComponent extends Component, Composable, Modifiable {
+public interface CompiledComponent extends Modifiable {
 }

Modified: cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/generator/GeneratorSelector.java
==============================================================================
--- cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/generator/GeneratorSelector.java	(original)
+++ cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/generator/GeneratorSelector.java	Thu Oct 21 13:36:33 2004
@@ -15,27 +15,18 @@
  */
 package org.apache.cocoon.components.language.generator;
 
-import org.apache.avalon.excalibur.component.ComponentHandler;
-import org.apache.avalon.excalibur.component.ExcaliburComponentSelector;
-import org.apache.avalon.excalibur.component.LogkitLoggerManager;
-import org.apache.avalon.excalibur.component.RoleManager;
-import org.apache.avalon.excalibur.logger.LogKitManager;
-import org.apache.avalon.excalibur.logger.LoggerManager;
-import org.apache.avalon.framework.activity.Disposable;
-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.context.Context;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
 import org.apache.cocoon.Constants;
 import org.apache.cocoon.components.classloader.ClassLoaderManager;
 import org.apache.cocoon.components.language.programming.Program;
+import org.apache.cocoon.core.container.AbstractComponentHandler;
+import org.apache.cocoon.core.container.CocoonServiceSelector;
 
 import java.io.File;
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
-import java.util.Map;
 
 /**
  * This interface is the common base of all Compiled Components.  This
@@ -43,96 +34,58 @@
  *
  * @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
  * @author <a href="mailto:vgritsenko@apache.org">Vadim Gritsenko</a>
- * @version CVS $Id: GeneratorSelector.java,v 1.2 2004/06/03 12:38:54 vgritsenko Exp $
+ * @version CVS $Id$
  */
-public class GeneratorSelector extends ExcaliburComponentSelector implements Disposable {
+public class GeneratorSelector 
+extends CocoonServiceSelector  {
 
     public static String ROLE = "org.apache.cocoon.components.language.generator.ServerPages";
 
-    private ClassLoaderManager classManager;
-
-    /** The component manager */
-    protected ComponentManager manager;
-
-    private LogkitLoggerManager logKitManager;
-
-    protected Context context;
-
-    protected RoleManager roles;
-
-    protected Map componentHandlers = new HashMap();
-
-    /** Dynamic component handlers mapping. */
-    private Map componentMapping = new HashMap();
-
-
-    public void contextualize(Context context) {
-        super.contextualize(context);
-        this.context = context;
-    }
-
-    public void setRoleManager(RoleManager roleMgr) {
-        super.setRoleManager(roleMgr);
-        this.roles = roleMgr;
-    }
-
-    /**
-     * Configure the LogKitManager
-     */
-    public void setLogKitManager( final LogKitManager logkit ) {
-        super.setLogKitManager(logkit);
-        if (null == this.logKitManager) {
-             this.logKitManager = new LogkitLoggerManager( null, logkit );
-        }
-    }
-
-    /**
-     * Configure the LoggerManager.
+    protected ClassLoaderManager classManager;
+    
+    /* (non-Javadoc)
+     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
      */
-    public void setLoggerManager( final LoggerManager logkit ) {
-        super.setLoggerManager(logkit);
-        if (null ==  this.logKitManager) {
-             this.logKitManager = new LogkitLoggerManager( logkit, null );
-        }
-    }
+    public void service(ServiceManager manager) 
+    throws ServiceException {
+        super.service(manager);
 
-    public void compose (ComponentManager manager) throws ComponentException {
-        super.compose(manager);
-        this.manager = manager;
+        this.classManager = (ClassLoaderManager) manager.lookup(ClassLoaderManager.ROLE);
 
         try {
-            this.classManager = (ClassLoaderManager) manager.lookup(ClassLoaderManager.ROLE);
-        } catch (ComponentException cme) {
-            throw new ComponentException(ClassLoaderManager.ROLE, "GeneratorSelector", cme);
-        }
-
-        try {
-            this.classManager.addDirectory((File) this.m_context.get(Constants.CONTEXT_WORK_DIR));
+            this.classManager.addDirectory((File) this.context.get(Constants.CONTEXT_WORK_DIR));
         } catch (Exception e) {
-            throw new ComponentException(ROLE, "Could not add repository to ClassLoaderManager", e);
+            throw new ServiceException(ROLE, "Could not add repository to ClassLoaderManager", e);
         }
     }
 
-    public Component select(Object hint) throws ComponentException {
+    /* (non-Javadoc)
+     * @see org.apache.avalon.framework.service.ServiceSelector#select(java.lang.Object)
+     */
+    public Object select(Object hint) throws ServiceException {
 
-        ComponentHandler handler = (ComponentHandler) this.componentHandlers.get(hint);
+        AbstractComponentHandler handler = (AbstractComponentHandler) this.componentHandlers.get(hint);
         if (handler == null) {
-            throw new ComponentException(ROLE, "Could not find component for hint: " + hint);
+            throw new ServiceException(ROLE, "Could not find component for hint: " + hint);
         }
 
         try {
-            Component component = handler.get();
+            Object component = handler.get();
             componentMapping.put(component, handler);
             return component;
         } catch (Exception ce) {
-            if (getLogger().isDebugEnabled())
+            if (getLogger().isDebugEnabled()) {
                 getLogger().debug("Could not access component for hint: " + hint, ce);
-            throw new ComponentException(ROLE, "Could not access component for hint: " + hint, ce);
+            }
+            throw new ServiceException(ROLE, "Could not access component for hint: " + hint, ce);
         }
     }
 
-    public void release(Component component) {
-        ComponentHandler handler = (ComponentHandler)componentMapping.remove(component);
+    /* (non-Javadoc)
+     * @see org.apache.avalon.framework.service.ServiceSelector#release(java.lang.Object)
+     */
+    public void release(Object component) {
+        AbstractComponentHandler handler = (AbstractComponentHandler)componentMapping.remove(component);
         if (handler != null) {
             try {
                 handler.put(component);
@@ -142,13 +95,12 @@
         }
     }
 
-    public void addGenerator(ComponentManager newManager,
+    public void addGenerator(ServiceManager newManager,
                              Object hint, Program generator)
-            throws Exception {
+    throws Exception {
         try {
-            final ComponentHandler handler =
-                    generator.getHandler(newManager, this.context, this.roles, this.logKitManager);
-            handler.enableLogging(getLogger());
+            final AbstractComponentHandler handler =
+                    generator.getHandler(newManager, this.context );
             handler.initialize();
             this.componentHandlers.put(hint, handler);
             if (getLogger().isDebugEnabled()) {
@@ -164,7 +116,7 @@
     }
 
     public void removeGenerator(Object hint) {
-        ComponentHandler handler = (ComponentHandler) this.componentHandlers.remove(hint);
+        AbstractComponentHandler handler = (AbstractComponentHandler) this.componentHandlers.remove(hint);
         if (handler != null) {
             handler.dispose();
             this.classManager.reinstantiate();
@@ -174,8 +126,11 @@
         }
     }
 
+    /* (non-Javadoc)
+     * @see org.apache.avalon.framework.activity.Disposable#dispose()
+     */
     public void dispose() {
-        this.manager.release(this.classManager);
+        this.serviceManager.release(this.classManager);
 
         synchronized(this) {
             Iterator keys = this.componentHandlers.keySet().iterator();
@@ -183,8 +138,8 @@
 
             while(keys.hasNext()) {
                 Object key = keys.next();
-                ComponentHandler handler =
-                    (ComponentHandler)this.componentHandlers.get(key);
+                AbstractComponentHandler handler =
+                    (AbstractComponentHandler)this.componentHandlers.get(key);
 
                 handler.dispose();
 

Modified: cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/generator/ProgramGenerator.java
==============================================================================
--- cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/generator/ProgramGenerator.java	(original)
+++ cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/generator/ProgramGenerator.java	Thu Oct 21 13:36:33 2004
@@ -15,10 +15,9 @@
  */
 package org.apache.cocoon.components.language.generator;
 
-import org.apache.avalon.framework.component.Component;
-import org.apache.avalon.framework.component.ComponentManager;
 import org.apache.excalibur.source.Source;
 
+import org.apache.avalon.framework.service.ServiceManager;
 import org.apache.cocoon.environment.SourceResolver;
 
 /**
@@ -26,9 +25,9 @@
  * documents written in a <code>MarkupLanguage</code>
  *
  * @author <a href="mailto:ricardo@apache.org">Ricardo Rocha</a>
- * @version CVS $Id: ProgramGenerator.java,v 1.1 2004/03/10 12:58:04 stephan Exp $
+ * @version CVS $Id$
  */
-public interface ProgramGenerator extends Component {
+public interface ProgramGenerator {
 
     String ROLE = ProgramGenerator.class.getName();
 
@@ -47,7 +46,7 @@
      * @deprecated Pass Source object instead of file name.
      */
     CompiledComponent load(
-            ComponentManager newManager,
+            ServiceManager newManager,
             String fileName,
             String markupLanguage,
             String programmingLanguage,
@@ -67,7 +66,7 @@
      * @exception Exception If an error occurs during generation or loading
      */
     CompiledComponent load(
-            ComponentManager newManager,
+            ServiceManager newManager,
             Source source,
             String markupLanguage,
             String programmingLanguage,

Modified: cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/generator/ProgramGeneratorImpl.java
==============================================================================
--- cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/generator/ProgramGeneratorImpl.java	(original)
+++ cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/generator/ProgramGeneratorImpl.java	Thu Oct 21 13:36:33 2004
@@ -16,11 +16,6 @@
 package org.apache.cocoon.components.language.generator;
 
 import org.apache.avalon.framework.activity.Disposable;
-import org.apache.avalon.framework.component.ComponentException;
-import org.apache.avalon.framework.component.ComponentManager;
-import org.apache.avalon.framework.component.ComponentSelector;
-import org.apache.avalon.framework.component.Composable;
-import org.apache.avalon.framework.component.Recomposable;
 import org.apache.avalon.framework.context.Context;
 import org.apache.avalon.framework.context.ContextException;
 import org.apache.avalon.framework.context.Contextualizable;
@@ -28,6 +23,10 @@
 import org.apache.avalon.framework.parameters.ParameterException;
 import org.apache.avalon.framework.parameters.Parameterizable;
 import org.apache.avalon.framework.parameters.Parameters;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.avalon.framework.service.ServiceSelector;
+import org.apache.avalon.framework.service.Serviceable;
 import org.apache.avalon.framework.thread.ThreadSafe;
 import org.apache.cocoon.Constants;
 import org.apache.cocoon.ProcessingException;
@@ -53,10 +52,10 @@
  * @author <a href="mailto:ricardo@apache.org">Ricardo Rocha</a>
  * @author <a href="mailto:vgritsenko@apache.org">Vadim Gritsenko</a>
  * @author <a href="mailto:tcurdt@apache.org">Torsten Curdt</a>
- * @version CVS $Id: ProgramGeneratorImpl.java,v 1.3 2004/07/12 13:29:57 antonio Exp $
+ * @version CVS $Id$
  */
 public class ProgramGeneratorImpl extends AbstractLogEnabled
-    implements ProgramGenerator, Contextualizable, Composable, Parameterizable,
+    implements ProgramGenerator, Contextualizable, Serviceable, Parameterizable,
                Disposable, ThreadSafe {
 
     /** The auto-reloading option */
@@ -75,13 +74,13 @@
     protected GeneratorSelector cache;
 
     /** The component manager */
-    protected ComponentManager manager;
+    protected ServiceManager manager;
 
     /** The markup language component selector */
-    protected ComponentSelector markupSelector;
+    protected ServiceSelector markupSelector;
 
     /** The programming language component selector */
-    protected ComponentSelector languageSelector;
+    protected ServiceSelector languageSelector;
 
     /** The working directory */
     protected File workDir;
@@ -133,12 +132,12 @@
      * and programming languages.
      * @param manager The global component manager
      */
-    public void compose(ComponentManager manager) throws ComponentException {
+    public void service(ServiceManager manager) throws ServiceException {
         if (this.manager == null && manager != null) {
             this.manager = manager;
             this.cache = (GeneratorSelector) this.manager.lookup(GeneratorSelector.ROLE + "Selector");
-            this.markupSelector = (ComponentSelector)this.manager.lookup(MarkupLanguage.ROLE + "Selector");
-            this.languageSelector = (ComponentSelector)this.manager.lookup(ProgrammingLanguage.ROLE + "Selector");
+            this.markupSelector = (ServiceSelector)this.manager.lookup(MarkupLanguage.ROLE + "Selector");
+            this.languageSelector = (ServiceSelector)this.manager.lookup(ProgrammingLanguage.ROLE + "Selector");
             this.classManager = (ClassLoaderManager)this.manager.lookup(ClassLoaderManager.ROLE);
         }
     }
@@ -182,7 +181,7 @@
      * @exception Exception If an error occurs during generation or loading
      * @deprecated Pass Source object instead of file name.
      */
-    public CompiledComponent load(ComponentManager newManager,
+    public CompiledComponent load(ServiceManager newManager,
                                   String fileName,
                                   String markupLanguageName,
                                   String programmingLanguageName,
@@ -209,7 +208,7 @@
      * @return The loaded program instance
      * @exception Exception If an error occurs during generation or loading
      */
-    public CompiledComponent load(ComponentManager newManager,
+    public CompiledComponent load(ServiceManager newManager,
                                   Source source,
                                   String markupLanguageName,
                                   String programmingLanguageName,
@@ -367,22 +366,14 @@
                 }
             }
 
-            // Recompose with the new manager if program needs it.
-            // This is required to provide XSP with manager from the correct
-            // sitemap so it will be able to find all components declared in
-            // the sitemap.
-            if (programInstance instanceof Recomposable) {
-                ((Recomposable) programInstance).recompose(newManager);
-            }
-
-            return (programInstance);
+            return programInstance;
         } finally {
             this.markupSelector.release(markupLanguage);
             this.languageSelector.release(programmingLanguage);
         }
     }
 
-    private CompiledComponent loadProgram(ComponentManager newManager,
+    private CompiledComponent loadProgram(ServiceManager newManager,
                                           String normalizedName,
                                           MarkupLanguage markupLanguage,
                                           ProgrammingLanguage programmingLanguage)

Modified: cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/markup/MarkupLanguage.java
==============================================================================
--- cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/markup/MarkupLanguage.java	(original)
+++ cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/markup/MarkupLanguage.java	Thu Oct 21 13:36:33 2004
@@ -15,7 +15,6 @@
  */
 package org.apache.cocoon.components.language.markup;
 
-import org.apache.avalon.framework.component.Component;
 import org.apache.cocoon.components.language.programming.ProgrammingLanguage;
 import org.apache.excalibur.source.Source;
 
@@ -26,9 +25,9 @@
  *
  * @author <a href="mailto:ricardo@apache.org">Ricardo Rocha</a>
  * @author <a href="mailto:vgritsenko@apache.org">Vadim Gritsenko</a>
- * @version CVS $Id: MarkupLanguage.java,v 1.1 2004/03/10 12:58:04 stephan Exp $
+ * @version CVS $Id$
  */
-public interface MarkupLanguage extends Component {
+public interface MarkupLanguage {
 
     String ROLE = MarkupLanguage.class.getName();
 

Modified: cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/markup/xsp/SOAPHelper.java
==============================================================================
--- cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/markup/xsp/SOAPHelper.java	(original)
+++ cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/markup/xsp/SOAPHelper.java	Thu Oct 21 13:36:33 2004
@@ -15,8 +15,8 @@
  */
 package org.apache.cocoon.components.language.markup.xsp;
 
-import org.apache.avalon.framework.component.ComponentException;
-import org.apache.avalon.framework.component.ComponentManager;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
 import org.apache.cocoon.ProcessingException;
 import org.apache.cocoon.components.xscript.XScriptManager;
 import org.apache.cocoon.components.xscript.XScriptObject;
@@ -38,7 +38,7 @@
  *
  * @author <a href="mailto:ovidiu@cup.hp.com">Ovidiu Predescu</a>
  * @author <a href="mailto:vgritsenko@apache.org">Vadim Gritsenko</a>
- * @version CVS $Id: SOAPHelper.java,v 1.1 2004/03/10 12:58:05 stephan Exp $
+ * @version CVS $Id$
  * @since July 16, 2001
  */
 public class SOAPHelper {
@@ -48,9 +48,9 @@
     XScriptObject xscriptObject;
     String authorization = "";
 
-    public SOAPHelper(ComponentManager manager, String urlContext, String url,
+    public SOAPHelper(ServiceManager manager, String urlContext, String url,
                       String action, String authorization, XScriptObject xscriptObject)
-            throws MalformedURLException, ComponentException
+            throws MalformedURLException, ServiceException
     {
         this.xscriptManager = (XScriptManager) manager.lookup(XScriptManager.ROLE);
         URL context = new URL(urlContext);

Modified: cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/markup/xsp/XSPGenerator.java
==============================================================================
--- cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/markup/xsp/XSPGenerator.java	(original)
+++ cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/markup/xsp/XSPGenerator.java	Thu Oct 21 13:36:33 2004
@@ -15,7 +15,6 @@
  */
 package org.apache.cocoon.components.language.markup.xsp;
 
-import org.apache.avalon.excalibur.pool.Recyclable;
 import org.apache.avalon.framework.context.Context;
 import org.apache.avalon.framework.context.ContextException;
 import org.apache.avalon.framework.context.Contextualizable;
@@ -27,10 +26,13 @@
  * Base class for XSP-generated <code>ServerPagesGenerator</code> classes
  *
  * @author <a href="mailto:ricardo@apache.org">Ricardo Rocha</a>
- * @version CVS $Id: XSPGenerator.java,v 1.2 2004/05/24 12:37:52 cziegeler Exp $
+ * @version CVS $Id$
  */
-public abstract class XSPGenerator extends AbstractServerPage implements CompiledComponent, Contextualizable, Recyclable {
-    protected Context avalonContext = null;
+public abstract class XSPGenerator 
+extends AbstractServerPage
+implements CompiledComponent, Contextualizable {
+    
+    protected Context avalonContext;
 
     /** Contextualize this class */
     public void contextualize(Context context) throws ContextException  {

Modified: cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/markup/xsp/XSPUtil.java
==============================================================================
--- cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/markup/xsp/XSPUtil.java	(original)
+++ cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/markup/xsp/XSPUtil.java	Thu Oct 21 13:36:33 2004
@@ -16,8 +16,7 @@
 package org.apache.cocoon.components.language.markup.xsp;
 
 import org.apache.avalon.framework.CascadingRuntimeException;
-import org.apache.avalon.framework.component.Component;
-import org.apache.avalon.framework.component.ComponentManager;
+import org.apache.avalon.framework.service.ServiceManager;
 import org.apache.cocoon.components.source.SourceUtil;
 import org.apache.cocoon.environment.Context;
 import org.apache.cocoon.environment.ObjectModelHelper;
@@ -52,7 +51,7 @@
  * The XSP <code>Utility</code> object helper
  * @author <a href="mailto:ricardo@apache.org">Ricardo Rocha</a>
  * @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
- * @version CVS $Id: XSPUtil.java,v 1.2 2004/03/28 14:28:04 antonio Exp $
+ * @version CVS $Id$
  */
 public class XSPUtil {
 
@@ -250,13 +249,13 @@
         }
     }
 
-    public static void includeString(String string, ComponentManager manager, ContentHandler contentHandler)
+    public static void includeString(String string, ServiceManager manager, ContentHandler contentHandler)
             throws RuntimeException {
         XSPUtil.includeInputSource(new InputSource(new StringReader(String.valueOf(string))), manager,
                                    contentHandler);
     }
 
-    public static void includeFile(String name, ComponentManager manager, ContentHandler contentHandler, Map objectModel)
+    public static void includeFile(String name, ServiceManager manager, ContentHandler contentHandler, Map objectModel)
             throws RuntimeException {
         try {
             XSPUtil.includeInputSource(new InputSource(new FileReader(XSPUtil.relativeFilename(name, objectModel))),
@@ -266,7 +265,7 @@
         }
     }
 
-    public static void includeInputSource(InputSource source, ComponentManager manager, ContentHandler contentHandler)
+    public static void includeInputSource(InputSource source, ServiceManager manager, ContentHandler contentHandler)
             throws RuntimeException {
         SAXParser parser = null;
         try {
@@ -277,7 +276,7 @@
             throw new CascadingRuntimeException("Could not include page", e);
         } finally {
             if (parser != null) {
-                manager.release((Component)parser);
+                manager.release(parser);
             }
         }
     }

Modified: cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/programming/LanguageCompiler.java
==============================================================================
--- cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/programming/LanguageCompiler.java	(original)
+++ cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/programming/LanguageCompiler.java	Thu Oct 21 13:36:33 2004
@@ -15,8 +15,6 @@
  */
 package org.apache.cocoon.components.language.programming;
 
-import org.apache.avalon.framework.component.Component;
-
 import java.io.IOException;
 import java.util.List;
 
@@ -25,10 +23,10 @@
  * (Java-based) compiled languages
  *
  * @author <a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>
- * @version CVS $Id: LanguageCompiler.java,v 1.1 2004/03/10 12:58:07 stephan Exp $
+ * @version CVS $Id$
  * @since 2.0
  */
-public interface LanguageCompiler extends Component {
+public interface LanguageCompiler {
 
     /**
      * Set the name of the file containing the source program

Modified: cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/programming/Program.java
==============================================================================
--- cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/programming/Program.java	(original)
+++ cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/programming/Program.java	Thu Oct 21 13:36:33 2004
@@ -15,21 +15,18 @@
  */
 package org.apache.cocoon.components.language.programming;
 
-import org.apache.avalon.framework.component.ComponentManager;
 import org.apache.avalon.framework.context.Context;
-
-import org.apache.avalon.excalibur.component.ComponentHandler;
-import org.apache.avalon.excalibur.component.RoleManager;
-import org.apache.avalon.excalibur.component.LogkitLoggerManager;
+import org.apache.avalon.framework.service.ServiceManager;
 
 import org.apache.cocoon.components.language.generator.CompiledComponent;
+import org.apache.cocoon.core.container.AbstractComponentHandler;
 
 /**
  * This interface states the functionality of a program.
  * For compilable languages this is the wrapper for a Java Class object.
  *
  * @author <a href="mailto:vgritsenko@apache.org">Vadim Gritsenko</a>
- * @version CVS $Id: Program.java,v 1.1 2004/03/10 12:58:07 stephan Exp $
+ * @version CVS $Id$
  */
 public interface Program {
 
@@ -41,10 +38,8 @@
     /**
      * Get ComponentHandler which holds instances of this program.
      */
-    ComponentHandler getHandler(ComponentManager manager,
-                                Context context,
-                                RoleManager roles,
-                                LogkitLoggerManager logKitManager) throws Exception;
+    AbstractComponentHandler getHandler(ServiceManager manager,
+                                Context context) throws Exception;
 
     /**
      * Create new instance of the program.

Modified: cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/programming/ProgrammingLanguage.java
==============================================================================
--- cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/programming/ProgrammingLanguage.java	(original)
+++ cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/programming/ProgrammingLanguage.java	Thu Oct 21 13:36:33 2004
@@ -15,8 +15,6 @@
  */
 package org.apache.cocoon.components.language.programming;
 
-import org.apache.avalon.framework.component.Component;
-
 import org.apache.cocoon.components.language.LanguageException;
 import org.apache.cocoon.components.language.generator.CompiledComponent;
 
@@ -26,9 +24,9 @@
  * This interface states the functionality of a programming language processor
  *
  * @author <a href="mailto:ricardo@apache.org">Ricardo Rocha</a>
- * @version CVS $Id: ProgrammingLanguage.java,v 1.1 2004/03/10 12:58:07 stephan Exp $
+ * @version CVS $Id$
  */
-public interface ProgrammingLanguage extends Component {
+public interface ProgrammingLanguage {
 
     String ROLE = ProgrammingLanguage.class.getName();
 

Modified: cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/programming/java/JavaProgram.java
==============================================================================
--- cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/programming/java/JavaProgram.java	(original)
+++ cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/programming/java/JavaProgram.java	Thu Oct 21 13:36:33 2004
@@ -16,22 +16,19 @@
 package org.apache.cocoon.components.language.programming.java;
 
 import org.apache.avalon.framework.configuration.DefaultConfiguration;
-import org.apache.avalon.framework.component.ComponentManager;
 import org.apache.avalon.framework.context.Context;
-
-import org.apache.avalon.excalibur.component.ComponentHandler;
-import org.apache.avalon.excalibur.component.RoleManager;
-import org.apache.avalon.excalibur.component.LogkitLoggerManager;
+import org.apache.avalon.framework.service.ServiceManager;
 
 import org.apache.cocoon.components.language.generator.CompiledComponent;
 import org.apache.cocoon.components.language.programming.Program;
+import org.apache.cocoon.core.container.AbstractComponentHandler;
 
 /**
  * This represents program in Java language.
  * It wraps Java Class object.
  *
  * @author <a href="mailto:vgritsenko@apache.org">Vadim Gritsenko</a>
- * @version CVS $Id: JavaProgram.java,v 1.1 2004/03/10 12:58:07 stephan Exp $
+ * @version CVS $Id$
  */
 public class JavaProgram implements Program {
 
@@ -45,16 +42,14 @@
         return program.getName();
     }
 
-    public ComponentHandler getHandler(ComponentManager manager,
-                                       Context context,
-                                       RoleManager roles,
-                                       LogkitLoggerManager logKitManager)
-            throws Exception {
+    public AbstractComponentHandler getHandler(ServiceManager manager,
+                                       Context context)
+    throws Exception {
 
-        return ComponentHandler.getComponentHandler(
+        return AbstractComponentHandler.getComponentHandler(
                 program,
                 new DefaultConfiguration("", "GeneratorSelector"),
-                manager, context, roles, logKitManager, null, "N/A");
+                manager, context, null, null, null);
     }
 
     public CompiledComponent newInstance() throws Exception {

Modified: cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/programming/javascript/JavascriptProgram.java
==============================================================================
--- cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/programming/javascript/JavascriptProgram.java	(original)
+++ cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/language/programming/javascript/JavascriptProgram.java	Thu Oct 21 13:36:33 2004
@@ -15,17 +15,14 @@
  */
 package org.apache.cocoon.components.language.programming.javascript;
 
-import org.apache.avalon.framework.component.ComponentManager;
 import org.apache.avalon.framework.configuration.Configurable;
 import org.apache.avalon.framework.configuration.DefaultConfiguration;
 import org.apache.avalon.framework.context.Context;
-
-import org.apache.avalon.excalibur.component.ComponentHandler;
-import org.apache.avalon.excalibur.component.RoleManager;
-import org.apache.avalon.excalibur.component.LogkitLoggerManager;
+import org.apache.avalon.framework.service.ServiceManager;
 
 import org.apache.cocoon.components.language.generator.CompiledComponent;
 import org.apache.cocoon.components.language.programming.Program;
+import org.apache.cocoon.core.container.AbstractComponentHandler;
 
 import java.io.File;
 import java.util.Collection;
@@ -35,7 +32,7 @@
  * This class represents program in the Javascript language.
  *
  * @author <a href="mailto:vgritsenko@apache.org">Vadim Gritsenko</a>
- * @version CVS $Id: JavascriptProgram.java,v 1.1 2004/03/10 12:58:08 stephan Exp $
+ * @version CVS $Id$
  */
 public class JavascriptProgram implements Program {
 
@@ -65,14 +62,12 @@
         return file.toString();
     }
 
-    public ComponentHandler getHandler(ComponentManager manager,
-                                       Context context,
-                                       RoleManager roles,
-                                       LogkitLoggerManager logKitManager)
-            throws Exception {
+    public AbstractComponentHandler getHandler(ServiceManager manager,
+                                       Context context)
+    throws Exception {
 
-        return ComponentHandler.getComponentHandler(
-                clazz, config, manager, context, roles, logKitManager, null, "N/A");
+        return AbstractComponentHandler.getComponentHandler(
+                clazz, config, manager, context, null, null, null);
     }
 
     public CompiledComponent newInstance() throws Exception {

Modified: cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/xscript/XScriptManagerImpl.java
==============================================================================
--- cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/xscript/XScriptManagerImpl.java	(original)
+++ cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/components/xscript/XScriptManagerImpl.java	Thu Oct 21 13:36:33 2004
@@ -16,7 +16,6 @@
 package org.apache.cocoon.components.xscript;
 
 import org.apache.avalon.framework.activity.Disposable;
-import org.apache.avalon.framework.component.Component;
 import org.apache.avalon.framework.logger.AbstractLogEnabled;
 import org.apache.avalon.framework.parameters.ParameterException;
 import org.apache.avalon.framework.parameters.Parameterizable;
@@ -45,7 +44,7 @@
  */
 public class XScriptManagerImpl
         extends AbstractLogEnabled
-        implements XScriptManager, Serviceable, Component, Parameterizable, Contextualizable, ThreadSafe, Disposable
+        implements XScriptManager, Serviceable, Parameterizable, Contextualizable, ThreadSafe, Disposable
 {
     public static final String CONTEXT = "org.apache.cocoon.components.xscript.scope";
 

Modified: cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/generation/AbstractServerPage.java
==============================================================================
--- cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/generation/AbstractServerPage.java	(original)
+++ cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/generation/AbstractServerPage.java	Thu Oct 21 13:36:33 2004
@@ -15,10 +15,6 @@
  */
 package org.apache.cocoon.generation;
 
-import org.apache.avalon.framework.component.Recomposable;
-import org.apache.avalon.framework.component.ComponentManager;
-import org.apache.avalon.framework.component.ComponentException;
-
 import org.apache.cocoon.caching.CacheableProcessingComponent;
 import org.apache.cocoon.components.language.generator.CompiledComponent;
 import org.apache.cocoon.environment.Request;
@@ -37,11 +33,12 @@
  * declares variables that must be explicitly initialized by code generators.
  *
  * @author <a href="mailto:ricardo@apache.org">Ricardo Rocha</a>
- * @version CVS $Id: AbstractServerPage.java,v 1.2 2004/05/24 11:58:06 cziegeler Exp $
+ * @version CVS $Id$
  */
 public abstract class AbstractServerPage
   extends ServletGenerator 
-  implements CompiledComponent, CacheableProcessingComponent, Recomposable {
+  implements CompiledComponent, CacheableProcessingComponent {
+    
     /**
      * Code generators should produce a constructor
      * block that initializes the generator's
@@ -61,14 +58,6 @@
     protected long dateCreated = -1L;
     /** The dependency file list */
     protected File[] dependencies = null;
-
-    /**
-     * Recompose with the actual <code>ComponentManager</code> that should
-     * be used.
-     */
-    public void recompose(ComponentManager manager) throws ComponentException {
-        this.manager = manager;
-    }
 
     /**
      * Determines whether this generator's source files have changed

Modified: cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/generation/ServerPagesGenerator.java
==============================================================================
--- cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/generation/ServerPagesGenerator.java	(original)
+++ cocoon/trunk/src/blocks/xsp/java/org/apache/cocoon/generation/ServerPagesGenerator.java	Thu Oct 21 13:36:33 2004
@@ -16,13 +16,12 @@
 package org.apache.cocoon.generation;
 
 import org.apache.commons.collections.ArrayStack;
-import org.apache.avalon.framework.activity.Disposable;
-import org.apache.avalon.framework.component.ComponentException;
-import org.apache.avalon.framework.component.ComponentManager;
 import org.apache.avalon.framework.configuration.Configurable;
 import org.apache.avalon.framework.configuration.Configuration;
 import org.apache.avalon.framework.configuration.ConfigurationException;
 import org.apache.avalon.framework.parameters.Parameters;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
 import org.apache.cocoon.ProcessingException;
 import org.apache.cocoon.ResourceNotFoundException;
 import org.apache.cocoon.caching.CacheableProcessingComponent;
@@ -56,10 +55,10 @@
  *
  * @author <a href="mailto:ricardo@apache.org">Ricardo Rocha</a>
  * @author <a href="mailto:sylvain@apache.org">Sylvain Wallez</a>
- * @version CVS $Id: ServerPagesGenerator.java,v 1.1 2004/03/10 15:20:51 unico Exp $
+ * @version CVS $Id$
  */
 public class ServerPagesGenerator extends ServletGenerator
-        implements Disposable, CacheableProcessingComponent, Configurable {
+        implements CacheableProcessingComponent, Configurable {
     /**
      * The sitemap-defined server pages program generator
      */
@@ -73,13 +72,13 @@
     private CompletionPipe completionPipe;
 
     /**
-     * Set the global component manager. This method sets the sitemap-defined
+     * Set the global service manager. This method sets the sitemap-defined
      * program generator
      *
-     * @param manager The global component manager
+     * @param manager The global service manager
      */
-    public void compose(ComponentManager manager) throws ComponentException {
-        super.compose(manager);
+    public void service(ServiceManager manager) throws ServiceException {
+        super.service(manager);
 
         if (programGenerator == null) {
             this.programGenerator =
@@ -87,6 +86,9 @@
         }
     }
 
+    /* (non-Javadoc)
+     * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
+     */
     public void configure(Configuration config) throws ConfigurationException {
         boolean autoComplete = config.getChild("autocomplete-documents").getValueAsBoolean(false);
 
@@ -149,6 +151,9 @@
      */
     public final static String DEFAULT_PROGRAMMING_LANGUAGE = "java";
 
+    /* (non-Javadoc)
+     * @see org.apache.cocoon.sitemap.SitemapModelComponent#setup(org.apache.cocoon.environment.SourceResolver, java.util.Map, java.lang.String, org.apache.avalon.framework.parameters.Parameters)
+     */
     public void setup(SourceResolver resolver, Map objectModel, String src, Parameters par)
             throws ProcessingException, SAXException, IOException {
 
@@ -273,9 +278,11 @@
      * dispose
      */
     public void dispose() {
-        this.manager.release(this.programGenerator);
-        this.programGenerator = null;
-        this.manager = null;
+        if ( this.manager != null ) {
+            this.manager.release(this.programGenerator);
+            this.programGenerator = null;
+            this.manager = null;
+        }
     }
 
     /* Completion pipe */

Modified: cocoon/trunk/src/core/java/org/apache/cocoon/core/container/CocoonServiceManager.java
==============================================================================
--- cocoon/trunk/src/core/java/org/apache/cocoon/core/container/CocoonServiceManager.java	(original)
+++ cocoon/trunk/src/core/java/org/apache/cocoon/core/container/CocoonServiceManager.java	Thu Oct 21 13:36:33 2004
@@ -17,10 +17,8 @@
 package org.apache.cocoon.core.container;
 
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
-import java.util.Map;
 
 import org.apache.avalon.framework.configuration.Configurable;
 import org.apache.avalon.framework.configuration.Configuration;
@@ -29,9 +27,6 @@
 import org.apache.avalon.framework.context.Context;
 import org.apache.avalon.framework.service.ServiceException;
 import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.cocoon.components.SitemapConfigurable;
-import org.apache.cocoon.components.SitemapConfigurationHolder;
-import org.apache.cocoon.components.container.DefaultSitemapConfigurationHolder;
 
 /**
  * Default service manager for Cocoon's components.
@@ -43,20 +38,13 @@
 implements ServiceManager, Configurable {
     
     /** The parent ServiceManager */
-    private final ServiceManager parentManager;
+    protected ServiceManager parentManager;
 
     /** added component handlers before initialization to maintain
      *  the order of initialization
      */
     private final List newComponentHandlers = new ArrayList();
 
-    /** The {@link SitemapConfigurationHolder}s */
-    private Map sitemapConfigurationHolders = new HashMap(15);
-
-    /** Temporary list of parent-aware components.  Will be null for most of
-     * our lifecycle. */
-    private ArrayList parentAwareComponents = new ArrayList();
-
     /** Create the ServiceManager with a Classloader and parent ServiceManager */
     public CocoonServiceManager( final ServiceManager parent, 
                                  final ClassLoader loader ) {
@@ -168,6 +156,8 @@
             try {
                 handler.initialize();
                 component = handler.get();
+                
+                this.initialize( role, component );
             } catch( final ServiceException ce ) {
                 // Rethrow instead of wrapping a ComponentException with another one
                 throw ce;
@@ -196,27 +186,18 @@
         //  problem.  Checking to see if the put has already been done would be slower.
         this.componentMapping.put( component, handler );
 
-        if ( null != component && component instanceof SitemapConfigurable) {
-
-            // FIXME: how can we prevent that this is called over and over again?
-            SitemapConfigurationHolder holder;
-
-            holder = (SitemapConfigurationHolder)this.sitemapConfigurationHolders.get( role );
-            if ( null == holder ) {
-                // create new holder
-                holder = new DefaultSitemapConfigurationHolder( role, this.roleManager );
-                this.sitemapConfigurationHolders.put( role, holder );
-            }
-
-            try {
-                ((SitemapConfigurable)component).configure(holder);
-            } catch (ConfigurationException ce) {
-                throw new ServiceException(role, "Exception during setup of SitemapConfigurable.", ce);
-            }
-        }
         return component;
     }
 
+    /**
+     * Initialize the component
+     * @throws ServiceException
+     */
+    protected void initialize(String role, Object component) 
+    throws ServiceException {
+        // we do nothing here, can be used in subclasses
+    }
+    
     /* (non-Javadoc)
      * @see org.apache.avalon.framework.service.ServiceManager#hasService(java.lang.String)
      */
@@ -330,8 +311,7 @@
     throws Exception {
         super.initialize();
 
-        for( int i = 0; i < this.newComponentHandlers.size(); i++ )
-        {
+        for( int i = 0; i < this.newComponentHandlers.size(); i++ ) {
             final AbstractComponentHandler handler =
                 (AbstractComponentHandler)this.newComponentHandlers.get( i );
             try {
@@ -371,28 +351,6 @@
             }
         }
         this.newComponentHandlers.clear();
-
-        if (parentAwareComponents == null) {
-            throw new ServiceException(null, "CocoonServiceManager already initialized");
-        }
-        // Set parents for parentAware components
-        Iterator iter = parentAwareComponents.iterator();
-        while (iter.hasNext()) {
-            String role = (String)iter.next();
-            if ( parentManager != null && parentManager.hasService( role ) ) {
-                // lookup new component
-                Object component = null;
-                try {
-                    component = this.lookup( role );
-                    ((CocoonServiceSelector)component).setParentLocator( this.parentManager, role );
-                } catch (ServiceException ignore) {
-                    // we don't set the parent then
-                } finally {
-                    this.release( component );
-                }
-            }
-        }
-        parentAwareComponents = null;  // null to save memory, and catch logic bugs.
     }
 
     /* (non-Javadoc)
@@ -472,11 +430,6 @@
             throw se;
         } catch( final Exception e ) {
             throw new ServiceException( role.toString(), "Could not set up component handler.", e );
-        }
-        // Note that at this point, we're not initialized and cannot do
-        // lookups, so defer parental introductions to initialize().
-        if ( CocoonServiceSelector.class.isAssignableFrom( component ) ) {
-            this.parentAwareComponents.add(role);
         }
     }
 

Modified: cocoon/trunk/src/core/java/org/apache/cocoon/core/container/CocoonServiceSelector.java
==============================================================================
--- cocoon/trunk/src/core/java/org/apache/cocoon/core/container/CocoonServiceSelector.java	(original)
+++ cocoon/trunk/src/core/java/org/apache/cocoon/core/container/CocoonServiceSelector.java	Thu Oct 21 13:36:33 2004
@@ -41,7 +41,7 @@
     
     /** The application context for components
      */
-    private ServiceManager serviceManager;
+    protected ServiceManager serviceManager;
 
     /** The parent selector, if any */
     protected CocoonServiceSelector parentSelector;

Modified: cocoon/trunk/src/java/org/apache/cocoon/Cocoon.java
==============================================================================
--- cocoon/trunk/src/java/org/apache/cocoon/Cocoon.java	(original)
+++ cocoon/trunk/src/java/org/apache/cocoon/Cocoon.java	Thu Oct 21 13:36:33 2004
@@ -44,10 +44,10 @@
 import org.apache.avalon.framework.thread.ThreadSafe;
 
 import org.apache.cocoon.components.ContextHelper;
+import org.apache.cocoon.components.container.CocoonServiceManager;
 import org.apache.cocoon.components.container.ComponentContext;
 import org.apache.cocoon.components.source.SourceUtil;
 import org.apache.cocoon.components.source.impl.DelayedRefreshSourceWrapper;
-import org.apache.cocoon.core.container.CocoonServiceManager;
 import org.apache.cocoon.core.container.RoleManager;
 import org.apache.cocoon.environment.Environment;
 import org.apache.cocoon.environment.ObjectModelHelper;

Added: cocoon/trunk/src/java/org/apache/cocoon/components/container/CocoonServiceManager.java
==============================================================================
--- (empty file)
+++ cocoon/trunk/src/java/org/apache/cocoon/components/container/CocoonServiceManager.java	Thu Oct 21 13:36:33 2004
@@ -0,0 +1,128 @@
+/* 
+ * Copyright 2002-2004 The Apache Software Foundation
+ * Licensed  under the  Apache License,  Version 2.0  (the "License");
+ * you may not use  this file  except in  compliance with the License.
+ * You may obtain a copy of the License at 
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed  under the  License is distributed on an "AS IS" BASIS,
+ * WITHOUT  WARRANTIES OR CONDITIONS  OF ANY KIND, either  express  or
+ * implied.
+ * 
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.components.container;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.cocoon.components.SitemapConfigurable;
+import org.apache.cocoon.components.SitemapConfigurationHolder;
+import org.apache.cocoon.core.container.CocoonServiceSelector;
+
+/**
+ * Default service manager for Cocoon's components.
+ *
+ * @version CVS $Revision: 1.6 $Id: CocoonServiceManager.java 55165 2004-10-20 16:51:50Z cziegeler $
+ */
+public class CocoonServiceManager
+extends org.apache.cocoon.core.container.CocoonServiceManager {
+    
+    /** The {@link SitemapConfigurationHolder}s */
+    private Map sitemapConfigurationHolders = new HashMap(15);
+
+    /** Temporary list of parent-aware components.  Will be null for most of
+     * our lifecycle. */
+    private ArrayList parentAwareComponents = new ArrayList();
+
+    /** Create the ServiceManager with a Classloader and parent ServiceManager */
+    public CocoonServiceManager( final ServiceManager parent, 
+                                 final ClassLoader loader ) {
+        super( parent, loader);
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.cocoon.core.container.CocoonServiceManager#initialize(java.lang.String, java.lang.Object)
+     */
+    protected void initialize(String role, Object component) throws ServiceException {
+        super.initialize(role, component);
+        if ( null != component && component instanceof SitemapConfigurable) {
+
+            // FIXME: how can we prevent that this is called over and over again?
+            SitemapConfigurationHolder holder;
+
+            holder = (SitemapConfigurationHolder)this.sitemapConfigurationHolders.get( role );
+            if ( null == holder ) {
+                // create new holder
+                holder = new DefaultSitemapConfigurationHolder( role, this.roleManager );
+                this.sitemapConfigurationHolders.put( role, holder );
+            }
+
+            try {
+                ((SitemapConfigurable)component).configure(holder);
+            } catch (ConfigurationException ce) {
+                throw new ServiceException(role, "Exception during setup of SitemapConfigurable.", ce);
+            }
+        }
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.avalon.framework.activity.Initializable#initialize()
+     */
+    public void initialize()
+    throws Exception {
+        super.initialize();
+
+        if (this.parentAwareComponents == null) {
+            throw new ServiceException(null, "CocoonServiceManager already initialized");
+        }
+
+        // Set parents for parentAware components
+        Iterator iter = this.parentAwareComponents.iterator();
+        while (iter.hasNext()) {
+            String role = (String)iter.next();
+            if ( this.parentManager != null && this.parentManager.hasService( role ) ) {
+                // lookup new component
+                Object component = null;
+                try {
+                    component = this.lookup( role );
+                    ((CocoonServiceSelector)component).setParentLocator( this.parentManager, role );
+                } catch (ServiceException ignore) {
+                    // we don't set the parent then
+                } finally {
+                    this.release( component );
+                }
+            }
+        }
+        this.parentAwareComponents = null;  // null to save memory, and catch logic bugs.
+    }
+
+    /**
+     * Add a new component to the manager.
+     *
+     * @param role the role name for the new component.
+     * @param component the class of this component.
+     * @param configuration the configuration for this component.
+     */
+    public void addComponent( final Object role,
+                              final Class component,
+                              final Configuration configuration )
+    throws ServiceException {
+        super.addComponent( role, component, configuration );
+        // Note that at this point, we're not initialized and cannot do
+        // lookups, so defer parental introductions to initialize().
+        if ( CocoonServiceSelector.class.isAssignableFrom( component ) ) {
+            this.parentAwareComponents.add(role);
+        }
+    }
+
+}

Modified: cocoon/trunk/src/java/org/apache/cocoon/components/treeprocessor/sitemap/SitemapLanguage.java
==============================================================================
--- cocoon/trunk/src/java/org/apache/cocoon/components/treeprocessor/sitemap/SitemapLanguage.java	(original)
+++ cocoon/trunk/src/java/org/apache/cocoon/components/treeprocessor/sitemap/SitemapLanguage.java	Thu Oct 21 13:36:33 2004
@@ -30,13 +30,13 @@
 import org.apache.avalon.framework.configuration.DefaultConfiguration;
 import org.apache.avalon.framework.service.ServiceManager;
 import org.apache.cocoon.acting.Action;
+import org.apache.cocoon.components.container.CocoonServiceManager;
 import org.apache.cocoon.components.pipeline.ProcessingPipeline;
 import org.apache.cocoon.components.treeprocessor.CategoryNode;
 import org.apache.cocoon.components.treeprocessor.CategoryNodeBuilder;
 import org.apache.cocoon.components.treeprocessor.DefaultTreeBuilder;
 import org.apache.cocoon.components.treeprocessor.ProcessorComponentInfo;
 import org.apache.cocoon.components.treeprocessor.variables.VariableResolverFactory;
-import org.apache.cocoon.core.container.CocoonServiceManager;
 import org.apache.cocoon.generation.Generator;
 import org.apache.cocoon.matching.Matcher;
 import org.apache.cocoon.reading.Reader;

Modified: cocoon/trunk/src/java/org/apache/cocoon/generation/ServletGenerator.java
==============================================================================
--- cocoon/trunk/src/java/org/apache/cocoon/generation/ServletGenerator.java	(original)
+++ cocoon/trunk/src/java/org/apache/cocoon/generation/ServletGenerator.java	Thu Oct 21 13:36:33 2004
@@ -16,10 +16,10 @@
 package org.apache.cocoon.generation;
 
 import org.apache.avalon.framework.activity.Disposable;
-import org.apache.avalon.framework.component.ComponentException;
-import org.apache.avalon.framework.component.ComponentManager;
-import org.apache.avalon.framework.component.Composable;
 import org.apache.avalon.framework.parameters.Parameters;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.avalon.framework.service.Serviceable;
 
 import org.apache.cocoon.ProcessingException;
 import org.apache.cocoon.environment.Context;
@@ -39,22 +39,25 @@
  * @version CVS $Id$
  */
 public abstract class ServletGenerator extends AbstractGenerator
-implements Composable, Disposable {
+implements Serviceable, Disposable {
 
     protected Request request;
     protected Response response;
     protected Context context;
 
-    /** The component manager instance */
-    protected ComponentManager manager;
+    /** The service manager instance */
+    protected ServiceManager manager;
 
     /* (non-Javadoc)
-     * @see org.apache.avalon.framework.component.Composable#compose(org.apache.avalon.framework.component.ComponentManager)
+     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
      */
-    public void compose(ComponentManager manager) throws ComponentException {
+    public void service(ServiceManager manager) throws ServiceException {
         this.manager = manager;
     }
 
+    /* (non-Javadoc)
+     * @see org.apache.avalon.framework.activity.Disposable#dispose()
+     */
     public void dispose() {
         this.manager = null;
     }

Modified: cocoon/trunk/tools/targets/compile-build.xml
==============================================================================
--- cocoon/trunk/tools/targets/compile-build.xml	(original)
+++ cocoon/trunk/tools/targets/compile-build.xml	Thu Oct 21 13:36:33 2004
@@ -36,7 +36,7 @@
       </fileset>
     </copy>
 
-    <!-- compile core classes 
+    <!-- compile core classes -->
     <echo message="Compiling Cocoon Core"/>
     <javac srcdir="${src.core}"
            destdir="${build.dest}"
@@ -48,7 +48,6 @@
            nowarn="${compiler.nowarn}"
            compiler="${compiler}"
            classpathref="classpath"/>
-    -->
 
     <!-- compile mock classes -->
     <mkdir dir="${build.mocks}"/>
@@ -74,7 +73,6 @@
            nowarn="${compiler.nowarn}"
            compiler="${compiler}"
            classpathref="classpath">
-     <src path="${src.core}"/>
      <src path="${java}"/>
     </javac>