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 2005/07/11 15:57:07 UTC

svn commit: r210134 - in /cocoon: blocks/portal/trunk/java/org/apache/cocoon/portal/ blocks/portal/trunk/java/org/apache/cocoon/portal/impl/ trunk/

Author: cziegeler
Date: Mon Jul 11 06:57:07 2005
New Revision: 210134

URL: http://svn.apache.org/viewcvs?rev=210134&view=rev
Log:
Portal block: Add portal manager aspects for more flexible portal processing.

Added:
    cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/PortalManagerAspect.java   (with props)
    cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/PortalManagerAspectPrepareContext.java   (with props)
    cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/PortalManagerAspectRenderContext.java   (with props)
    cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/impl/DefaultPortalManagerAspectContext.java   (with props)
    cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/impl/PortalManagerAspectChain.java   (with props)
Modified:
    cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/impl/PortalManagerImpl.java
    cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/impl/PortletPortalManager.java
    cocoon/trunk/status.xml

Added: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/PortalManagerAspect.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/PortalManagerAspect.java?rev=210134&view=auto
==============================================================================
--- cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/PortalManagerAspect.java (added)
+++ cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/PortalManagerAspect.java Mon Jul 11 06:57:07 2005
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2005 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.portal;
+
+import org.apache.avalon.framework.parameters.Parameters;
+import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.portal.PortalService;
+import org.xml.sax.ContentHandler;
+import org.xml.sax.SAXException;
+
+/**
+ * @since 2.1.8
+ * @version SVN $Id:$
+ */
+public interface PortalManagerAspect {
+
+    /** The role to lookup an aspect. */
+    String ROLE = PortalManagerAspect.class.getName();
+
+    void prepare(PortalManagerAspectPrepareContext context,
+                 PortalService service)
+    throws ProcessingException;
+
+    void render(PortalManagerAspectRenderContext context,
+                PortalService                  service,
+                ContentHandler                 ch,
+                Parameters                     parameters)
+    throws SAXException;
+}

Propchange: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/PortalManagerAspect.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/PortalManagerAspect.java
------------------------------------------------------------------------------
    svn:keywords = Id

Added: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/PortalManagerAspectPrepareContext.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/PortalManagerAspectPrepareContext.java?rev=210134&view=auto
==============================================================================
--- cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/PortalManagerAspectPrepareContext.java (added)
+++ cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/PortalManagerAspectPrepareContext.java Mon Jul 11 06:57:07 2005
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2005 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.portal;
+
+import java.util.Map;
+
+import org.apache.avalon.framework.parameters.Parameters;
+import org.apache.cocoon.ProcessingException;
+
+/**
+ * @since 2.1.8
+ * @version SVN $Id:$
+ */
+public interface PortalManagerAspectPrepareContext {
+
+    /**
+     * Invoke next aspect 
+     */
+    void invokeNext()
+    throws ProcessingException;
+
+    /** 
+     * Get the {@link Parameters} of the aspect.
+     */
+    Parameters getAspectParameters();
+
+    /**
+     * Get the object model.
+     */
+    Map getObjectModel();
+}

Propchange: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/PortalManagerAspectPrepareContext.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/PortalManagerAspectPrepareContext.java
------------------------------------------------------------------------------
    svn:keywords = Id

Added: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/PortalManagerAspectRenderContext.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/PortalManagerAspectRenderContext.java?rev=210134&view=auto
==============================================================================
--- cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/PortalManagerAspectRenderContext.java (added)
+++ cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/PortalManagerAspectRenderContext.java Mon Jul 11 06:57:07 2005
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2005 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.portal;
+
+import java.util.Map;
+
+import org.apache.avalon.framework.parameters.Parameters;
+import org.xml.sax.ContentHandler;
+import org.xml.sax.SAXException;
+
+/**
+ * @since 2.1.8
+ * @version SVN $Id:$
+ */
+public interface PortalManagerAspectRenderContext {
+
+    /**
+     * Invoke next aspect 
+     */
+    void invokeNext(ContentHandler ch,
+                    Parameters     parameters)
+    throws SAXException;
+
+    /** 
+     * Get the {@link Parameters} of the aspect.
+     */
+    Parameters getAspectParameters();
+
+    /**
+     * Get the object model.
+     */
+    Map getObjectModel();
+}

Propchange: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/PortalManagerAspectRenderContext.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/PortalManagerAspectRenderContext.java
------------------------------------------------------------------------------
    svn:keywords = Id

Added: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/impl/DefaultPortalManagerAspectContext.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/impl/DefaultPortalManagerAspectContext.java?rev=210134&view=auto
==============================================================================
--- cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/impl/DefaultPortalManagerAspectContext.java (added)
+++ cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/impl/DefaultPortalManagerAspectContext.java Mon Jul 11 06:57:07 2005
@@ -0,0 +1,90 @@
+/*
+ * Copyright 2005 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.portal.impl;
+
+import java.util.Iterator;
+import java.util.Map;
+
+import org.apache.avalon.framework.parameters.Parameters;
+import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.portal.PortalManagerAspect;
+import org.apache.cocoon.portal.PortalManagerAspectPrepareContext;
+import org.apache.cocoon.portal.PortalManagerAspectRenderContext;
+import org.apache.cocoon.portal.PortalService;
+import org.xml.sax.ContentHandler;
+import org.xml.sax.SAXException;
+
+/**
+ * The aspect context is passed to every aspect.
+ * @since 2.1.8
+ * @version SVN $Id:$
+ */
+public final class DefaultPortalManagerAspectContext
+    implements PortalManagerAspectRenderContext, PortalManagerAspectPrepareContext {
+
+    private final PortalService service;
+    private final Map objectModel;
+    private Iterator iterator;
+    private Iterator configIterator;
+    private Parameters config;
+    
+    public DefaultPortalManagerAspectContext(PortalManagerAspectChain chain,
+                                             PortalService service,
+                                             Map objectModel) {
+        this.service = service;
+        this.objectModel = objectModel;
+        this.iterator = chain.getIterator();
+        this.configIterator = chain.getConfigIterator();
+    }
+    
+	/**
+	 * @see org.apache.cocoon.portal.PortalManagerAspectPrepareContext#invokeNext()
+	 */
+	public void invokeNext() 
+    throws ProcessingException {
+        if (this.iterator.hasNext()) {
+            this.config = (Parameters)this.configIterator.next();
+            final PortalManagerAspect aspect = (PortalManagerAspect) iterator.next();
+            aspect.prepare(this, this.service);
+        }
+    }
+
+    /**
+     * @see org.apache.cocoon.portal.PortalManagerAspectPrepareContext#getAspectParameters()
+     */
+    public Parameters getAspectParameters() {
+        return this.config;
+    }
+
+    /**
+     * @see org.apache.cocoon.portal.PortalManagerAspectRenderContext#invokeNext(org.xml.sax.ContentHandler, org.apache.avalon.framework.parameters.Parameters)
+     */
+    public void invokeNext(ContentHandler ch, Parameters parameters) 
+    throws SAXException {
+        if (this.iterator.hasNext()) {
+            this.config = (Parameters)this.configIterator.next();
+            final PortalManagerAspect aspect = (PortalManagerAspect) iterator.next();
+            aspect.render(this, this.service, ch, parameters);
+        }
+    }
+
+    /**
+     * @see org.apache.cocoon.portal.layout.renderer.aspect.RendererAspectContext#getObjectModel()
+     */
+    public Map getObjectModel() {
+        return this.objectModel;
+    }
+}

Propchange: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/impl/DefaultPortalManagerAspectContext.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/impl/DefaultPortalManagerAspectContext.java
------------------------------------------------------------------------------
    svn:keywords = Id

Added: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/impl/PortalManagerAspectChain.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/impl/PortalManagerAspectChain.java?rev=210134&view=auto
==============================================================================
--- cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/impl/PortalManagerAspectChain.java (added)
+++ cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/impl/PortalManagerAspectChain.java Mon Jul 11 06:57:07 2005
@@ -0,0 +1,84 @@
+/*
+ * Copyright 2005 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.portal.impl;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+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.ServiceSelector;
+import org.apache.cocoon.portal.PortalManagerAspect;
+
+/**
+ * This chain holds all configured aspects for a portal manager.
+ * @since 2.1.8
+ * @version SVN $Id:$
+ */
+public final class PortalManagerAspectChain {
+    
+    protected List aspects = new ArrayList(3);
+    
+    protected List configs = new ArrayList(3);
+    
+    public void configure(ServiceSelector     selector,
+                          Configuration       conf,
+                          PortalManagerAspect endAspect,
+                          Parameters          endAspectParameters) 
+    throws ConfigurationException {
+        if ( conf != null ) {
+            Configuration[] aspects = conf.getChildren("aspect");
+            for(int i=0; i < aspects.length; i++) {
+                final Configuration current = aspects[i];
+                final String role = current.getAttribute("type");
+                if ( selector == null ) {
+                    throw new ConfigurationException("No selector for aspects defined.");
+                }
+                try {
+                    PortalManagerAspect pAspect = (PortalManagerAspect) selector.select(role);
+                    this.aspects.add(pAspect);               
+                    Parameters aspectConfiguration = Parameters.fromConfiguration(current);
+                    this.configs.add(aspectConfiguration);
+                    
+                } catch (ServiceException se) {
+                    throw new ConfigurationException("Unable to lookup aspect " + role, se);
+                }
+            }
+        }
+        this.aspects.add(endAspect);
+        this.configs.add(endAspectParameters);
+    }
+    
+    public Iterator getIterator() {
+        return this.aspects.iterator();
+    }
+    
+    public Iterator getConfigIterator() {
+        return this.configs.iterator();
+    }
+    
+    public void dispose(ServiceSelector selector) {
+        Iterator i = this.aspects.iterator();
+        while (i.hasNext()) {
+            selector.release(i.next()); 
+        }
+        this.aspects.clear();
+        this.configs.clear();
+    }
+}

Propchange: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/impl/PortalManagerAspectChain.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/impl/PortalManagerAspectChain.java
------------------------------------------------------------------------------
    svn:keywords = Id

Modified: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/impl/PortalManagerImpl.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/impl/PortalManagerImpl.java?rev=210134&r1=210133&r2=210134&view=diff
==============================================================================
--- cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/impl/PortalManagerImpl.java (original)
+++ cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/impl/PortalManagerImpl.java Mon Jul 11 06:57:07 2005
@@ -16,14 +16,25 @@
 package org.apache.cocoon.portal.impl;
 
 import org.apache.avalon.framework.activity.Disposable;
+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.context.Context;
+import org.apache.avalon.framework.context.ContextException;
+import org.apache.avalon.framework.context.Contextualizable;
 import org.apache.avalon.framework.logger.AbstractLogEnabled;
 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.ProcessingException;
+import org.apache.cocoon.components.ContextHelper;
 import org.apache.cocoon.portal.PortalManager;
+import org.apache.cocoon.portal.PortalManagerAspect;
+import org.apache.cocoon.portal.PortalManagerAspectPrepareContext;
+import org.apache.cocoon.portal.PortalManagerAspectRenderContext;
 import org.apache.cocoon.portal.PortalService;
 import org.apache.cocoon.portal.event.EventManager;
 import org.apache.cocoon.portal.layout.Layout;
@@ -40,7 +51,7 @@
  */
 public class PortalManagerImpl
 	extends AbstractLogEnabled
-	implements PortalManager, Serviceable, Disposable, ThreadSafe {
+	implements PortalManager, Serviceable, Disposable, ThreadSafe, Contextualizable, PortalManagerAspect, Configurable {
 
     /** The service manager */
     protected ServiceManager manager;
@@ -48,6 +59,13 @@
     /** The portal service */
     protected PortalService portalService;
 
+    protected PortalManagerAspectChain chain;
+
+    protected ServiceSelector aspectSelector;
+
+    /** The component context. */
+    protected Context context;
+
     /**
      * @see org.apache.avalon.framework.service.Serviceable#service(ServiceManager)
      */
@@ -55,6 +73,9 @@
     throws ServiceException {
         this.manager = serviceManager;
         this.portalService = (PortalService)this.manager.lookup(PortalService.ROLE);
+        if ( this.manager.hasService(PortalManagerAspect.ROLE+"Selector") ) {
+            this.aspectSelector = (ServiceSelector) this.manager.lookup( PortalManagerAspect.ROLE+"Selector");
+        }
     }
 
     /**
@@ -65,6 +86,12 @@
             this.manager.release(this.portalService);
             this.portalService = null;
             this.manager = null;
+            if ( this.chain != null) {
+                this.chain.dispose( this.aspectSelector );
+            }
+            this.manager.release( this.aspectSelector );
+            this.aspectSelector = null;
+            this.manager = null;
         }
     }
 
@@ -73,8 +100,11 @@
      */
     public void process()
     throws ProcessingException {
-        EventManager eventManager = this.portalService.getComponentManager().getEventManager();
-        eventManager.processEvents();
+        DefaultPortalManagerAspectContext aspectContext =
+            new DefaultPortalManagerAspectContext(this.chain,
+                                                  this.portalService,
+                                                  ContextHelper.getObjectModel(this.context));
+        aspectContext.invokeNext();
     }
 
 	/**
@@ -82,6 +112,40 @@
 	 */
 	public void showPortal(ContentHandler contentHandler, Parameters parameters) 
     throws SAXException {
+        DefaultPortalManagerAspectContext aspectContext =
+            new DefaultPortalManagerAspectContext(this.chain,
+                                                  this.portalService,
+                                                  ContextHelper.getObjectModel(this.context));
+        aspectContext.invokeNext(contentHandler, parameters);
+	}
+
+    /**
+     * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
+     */
+    public void configure(Configuration conf) throws ConfigurationException {
+        this.chain = new PortalManagerAspectChain();
+        this.chain.configure(this.aspectSelector, conf.getChild("aspects"), this, new Parameters());
+    }
+
+    /**
+     * @see org.apache.avalon.framework.context.Contextualizable#contextualize(org.apache.avalon.framework.context.Context)
+     */
+    public void contextualize(Context context) throws ContextException {
+        this.context = context;
+    }
+
+    /**
+     * @see org.apache.cocoon.portal.PortalManagerAspect#prepare(org.apache.cocoon.portal.PortalManagerAspectPrepareContext, org.apache.cocoon.portal.PortalService)
+     */
+    public void prepare(PortalManagerAspectPrepareContext context, PortalService service) throws ProcessingException {
+        EventManager eventManager = this.portalService.getComponentManager().getEventManager();
+        eventManager.processEvents();
+    }
+
+    /**
+     * @see org.apache.cocoon.portal.PortalManagerAspect#render(org.apache.cocoon.portal.PortalManagerAspectRenderContext, org.apache.cocoon.portal.PortalService, org.xml.sax.ContentHandler, org.apache.avalon.framework.parameters.Parameters)
+     */
+    public void render(PortalManagerAspectRenderContext context, PortalService service, ContentHandler ch, Parameters parameters) throws SAXException {
         // first check for a full screen layout
         Layout portalLayout = this.portalService.getEntryLayout(null);
         if ( portalLayout == null ) {
@@ -90,8 +154,8 @@
 
         Renderer portalLayoutRenderer = this.portalService.getComponentManager().getRenderer( portalLayout.getRendererName());       
 
-        contentHandler.startDocument();
-        portalLayoutRenderer.toSAX(portalLayout, this.portalService, contentHandler);
-        contentHandler.endDocument();
-	}
+        ch.startDocument();
+        portalLayoutRenderer.toSAX(portalLayout, this.portalService, ch);
+        ch.endDocument();
+    }
 }

Modified: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/impl/PortletPortalManager.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/impl/PortletPortalManager.java?rev=210134&r1=210133&r2=210134&view=diff
==============================================================================
--- cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/impl/PortletPortalManager.java (original)
+++ cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/impl/PortletPortalManager.java Mon Jul 11 06:57:07 2005
@@ -24,12 +24,10 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import org.apache.avalon.framework.activity.Disposable;
 import org.apache.avalon.framework.activity.Initializable;
 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.parameters.Parameters;
 import org.apache.avalon.framework.service.ServiceException;
 import org.apache.avalon.framework.service.ServiceManager;
@@ -65,7 +63,7 @@
  */
 public class PortletPortalManager
 	extends PortalManagerImpl
-	implements Initializable, Contextualizable, Disposable, Receiver {
+	implements Initializable, Receiver {
 
     public static final ThreadLocal copletInstanceData = new InheritableThreadLocal();
     
@@ -78,14 +76,11 @@
     /** The Portlet Container environment */
     protected PortletContainerEnvironmentImpl portletContainerEnvironment;
     
-    /** The component context */
-    protected Context context;
-    
-    /* (non-Javadoc)
+    /**
      * @see org.apache.avalon.framework.context.Contextualizable#contextualize(org.apache.avalon.framework.context.Context)
      */
     public void contextualize(Context context) throws ContextException {
-        this.context = context;
+        super.contextualize(context);
         try {
             this.servletConfig = (ServletConfig) context.get(CocoonServlet.CONTEXT_SERVLET_CONFIG);
             // we have to somehow pass this component down to other components!
@@ -100,7 +95,7 @@
         }
     }
 
-    /* (non-Javadoc)
+    /**
      * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
      */
     public void service(ServiceManager manager) throws ServiceException {
@@ -114,7 +109,7 @@
         }
     }
 
-    /* (non-Javadoc)
+    /**
      * @see org.apache.avalon.framework.activity.Disposable#dispose()
      */
     public void dispose() {
@@ -143,7 +138,7 @@
             this.servletConfig.getServletContext().removeAttribute(PortalManager.ROLE);
             this.servletConfig = null;
         }
-        this.manager = null;
+        super.dispose();
     }
 
     /* (non-Javadoc)

Modified: cocoon/trunk/status.xml
URL: http://svn.apache.org/viewcvs/cocoon/trunk/status.xml?rev=210134&r1=210133&r2=210134&view=diff
==============================================================================
--- cocoon/trunk/status.xml (original)
+++ cocoon/trunk/status.xml Mon Jul 11 06:57:07 2005
@@ -480,6 +480,9 @@
    </action>
   </release>
   <release version="2.1.8" date="TBD">
+    <action dev="CZ" type="fix">
+      Portal block: Add portal manager aspects for more flexible portal processing.
+    </action>
     <action dev="CZ" type="add">
       CForms block: Add isValid() method to a Widget.
     </action>