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 2006/08/22 08:20:43 UTC

svn commit: r433542 [1/2] - in /cocoon/trunk/blocks/cocoon-portal: cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/ cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/ cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/eve...

Author: cziegeler
Date: Mon Aug 21 23:20:41 2006
New Revision: 433542

URL: http://svn.apache.org/viewvc?rev=433542&view=rev
Log:
Start cleaning up aspect configuration/implementation

Added:
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/BasicAspectContext.java   (with props)
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/PortalManagerAspect.java
      - copied, changed from r433231, cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/PortalManagerAspect.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/PortalManagerAspectPrepareContext.java
      - copied, changed from r433231, cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/PortalManagerAspectPrepareContext.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/PortalManagerAspectRenderContext.java
      - copied, changed from r433231, cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/PortalManagerAspectRenderContext.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/ProfileManagerAspect.java
      - copied, changed from r433231, cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ProfileManagerAspect.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/ProfileManagerAspectContext.java
      - copied, changed from r433231, cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ProfileManagerAspectContext.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/impl/
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/impl/PageLabelProfileManagerAspect.java
      - copied, changed from r433231, cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/PageLabelProfileManagerAspect.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/impl/PreloadPortalManagerAspect.java
      - copied, changed from r433231, cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PreloadPortalManagerAspect.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/impl/support/
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/impl/support/PortalManagerAspectContextImpl.java   (with props)
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/impl/support/ProfileManagerAspectContextImpl.java   (with props)
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/support/
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/support/AspectChain.java   (with props)
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/support/BasicAspectContextImpl.java   (with props)
Removed:
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/PortalManagerAspect.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/PortalManagerAspectPrepareContext.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/PortalManagerAspectRenderContext.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/impl/EventAspectChain.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/DefaultPortalManagerAspectContext.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PortalManagerAspectChain.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PreloadPortalManagerAspect.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ProfileManagerAspect.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ProfileManagerAspectContext.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/DefaultProfileManagerAspectContext.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/PageLabelProfileManagerAspect.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/ProfileManagerAspectChain.java
Modified:
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/PortalManager.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/PortalService.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/EventConverter.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/EventAspect.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/EventAspectContext.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/impl/AbstractContentEventAspect.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/impl/ActionCounterEventAspect.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/impl/NoClientCachingEventAspect.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/impl/PageLabelEventAspect.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/impl/RequestParameterEventAspect.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/impl/DefaultEventAspectContext.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/impl/DefaultEventManager.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PortalManagerImpl.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PortalServiceImpl.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/DefaultLinkService.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/spring/RegistrationBeanPostProcessor.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/resources/org/apache/cocoon/portal/portal.roles
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/adapter/PortletAdapter.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/xconf/cocoon-portal-sample.xconf
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/sitemap.xmap
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-wsrp-impl/src/main/java/org/apache/cocoon/portal/wsrp/adapter/WSRPEventAspect.java

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/PortalManager.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/PortalManager.java?rev=433542&r1=433541&r2=433542&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/PortalManager.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/PortalManager.java Mon Aug 21 23:20:41 2006
@@ -18,6 +18,7 @@
 import java.util.Properties;
 
 import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.portal.services.aspects.PortalManagerAspect;
 import org.xml.sax.ContentHandler;
 import org.xml.sax.SAXException;
 
@@ -62,4 +63,6 @@
     void showPortal(ContentHandler ch,
                     Properties     properties)
     throws SAXException;
+
+    void register(PortalManagerAspect aspect);
 }

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/PortalService.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/PortalService.java?rev=433542&r1=433541&r2=433542&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/PortalService.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/PortalService.java Mon Aug 21 23:20:41 2006
@@ -18,6 +18,7 @@
 import java.util.List;
 
 import org.apache.cocoon.portal.coplet.adapter.CopletAdapter;
+import org.apache.cocoon.portal.event.EventConverter;
 import org.apache.cocoon.portal.event.EventManager;
 import org.apache.cocoon.portal.layout.renderer.Renderer;
 import org.apache.cocoon.portal.profile.ProfileManager;
@@ -114,6 +115,9 @@
      * Get the event manager
      */
     EventManager getEventManager();
+
+    /** Get the event converter. */
+    EventConverter getEventConverter();
 
     /**
      * Get the portal manager

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/EventConverter.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/EventConverter.java?rev=433542&r1=433541&r2=433542&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/EventConverter.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/EventConverter.java Mon Aug 21 23:20:41 2006
@@ -25,8 +25,6 @@
  */
 public interface EventConverter {
 
-    String ROLE = EventConverter.class.getName();
-
     /**
      * Encode an event.
      * This is used to "activate" events using a link

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/EventAspect.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/EventAspect.java?rev=433542&r1=433541&r2=433542&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/EventAspect.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/EventAspect.java Mon Aug 21 23:20:41 2006
@@ -15,8 +15,6 @@
  */
 package org.apache.cocoon.portal.event.aspect;
 
-import org.apache.cocoon.portal.PortalService;
-
 /**
  *
  * @version $Id$
@@ -25,6 +23,5 @@
 
     String ROLE = EventAspect.class.getName();
 
-    void process(EventAspectContext context,
-                 PortalService  service);
+    void process(EventAspectContext context);
 }

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/EventAspectContext.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/EventAspectContext.java?rev=433542&r1=433541&r2=433542&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/EventAspectContext.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/EventAspectContext.java Mon Aug 21 23:20:41 2006
@@ -15,29 +15,17 @@
  */
 package org.apache.cocoon.portal.event.aspect;
 
-import java.util.Properties;
-
-import org.apache.cocoon.portal.PortalService;
-import org.apache.cocoon.portal.event.EventConverter;
+import org.apache.cocoon.portal.services.aspects.BasicAspectContext;
 
 /**
  *
  * @version $Id$
  */
-public interface EventAspectContext {
+public interface EventAspectContext
+    extends BasicAspectContext {
 
     /**
      * Invoke next aspect 
      */
-    void invokeNext(PortalService service);
-
-    /** 
-     * Get the {@link Properties} of the aspect.
-     */
-    Properties getAspectProperties();
-
-    /**
-     * Get the encoder
-     */
-    EventConverter getEventConverter();
+    void invokeNext();
 }

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/impl/AbstractContentEventAspect.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/impl/AbstractContentEventAspect.java?rev=433542&r1=433541&r2=433542&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/impl/AbstractContentEventAspect.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/impl/AbstractContentEventAspect.java Mon Aug 21 23:20:41 2006
@@ -75,19 +75,19 @@
     }
 
     /**
-     * @see org.apache.cocoon.portal.event.aspect.EventAspect#process(org.apache.cocoon.portal.event.aspect.EventAspectContext, org.apache.cocoon.portal.PortalService)
+     * @see org.apache.cocoon.portal.event.aspect.EventAspect#process(org.apache.cocoon.portal.event.aspect.EventAspectContext)
      */
-    public void process(EventAspectContext context, PortalService service) {
-        final Request request = ObjectModelHelper.getRequest(service.getProcessInfoProvider().getObjectModel());
+    public void process(EventAspectContext context) {
+        final Request request = ObjectModelHelper.getRequest(context.getPortalService().getProcessInfoProvider().getObjectModel());
         String[] values = request.getParameterValues(this.getRequestParameterName());
         if (values != null) {
-            final EventManager publisher = service.getEventManager();
+            final EventManager publisher = context.getPortalService().getEventManager();
             for (int i = 0; i < values.length; i++) {
                 // first try to make an event out of the value of the parameter
                 final String value = values[i];
                 Event e = null;
                 try {
-                    e = context.getEventConverter().decode(value);
+                    e = context.getPortalService().getEventConverter().decode(value);
                     if (null != e) {
                         publisher.send(e);
                     }
@@ -116,7 +116,7 @@
                             tokenNumber = tokenNumber + 1;
                         } 
 
-                        this.publish( service, eventValues );
+                        this.publish( context.getPortalService(), eventValues );
 
                     } else {
                         this.getLogger().warn("Data for Event is not set correctly");
@@ -125,6 +125,6 @@
             }
         }
         // and invoke next one
-        context.invokeNext(service);
+        context.invokeNext();
     }
 }

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/impl/ActionCounterEventAspect.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/impl/ActionCounterEventAspect.java?rev=433542&r1=433541&r2=433542&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/impl/ActionCounterEventAspect.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/impl/ActionCounterEventAspect.java Mon Aug 21 23:20:41 2006
@@ -23,7 +23,6 @@
 import org.apache.cocoon.environment.ObjectModelHelper;
 import org.apache.cocoon.environment.Request;
 import org.apache.cocoon.environment.Response;
-import org.apache.cocoon.portal.PortalService;
 import org.apache.cocoon.portal.event.aspect.EventAspect;
 import org.apache.cocoon.portal.event.aspect.EventAspectContext;
 
@@ -50,24 +49,24 @@
     protected String parameterName;
 
 	/**
-	 * @see org.apache.cocoon.portal.event.aspect.EventAspect#process(org.apache.cocoon.portal.event.aspect.EventAspectContext, org.apache.cocoon.portal.PortalService)
+	 * @see org.apache.cocoon.portal.event.aspect.EventAspect#process(org.apache.cocoon.portal.event.aspect.EventAspectContext)
 	 */
-	public void process(EventAspectContext context, PortalService service) {
+	public void process(EventAspectContext context) {
         final String requestParameterName = context.getAspectProperties().getProperty("parameter-name", this.parameterName);
 
         int actionCount;
 
-        Integer actionValue = (Integer) service.getUserService().getAttribute(ATTRIBUTE_NAME);
+        Integer actionValue = (Integer) context.getPortalService().getUserService().getAttribute(ATTRIBUTE_NAME);
         if (null == actionValue) {
             actionValue = new Integer(0);
-            service.getUserService().setAttribute(ATTRIBUTE_NAME, actionValue);
+            context.getPortalService().getUserService().setAttribute(ATTRIBUTE_NAME, actionValue);
             actionCount = 0;
         } else {
             actionCount = actionValue.intValue() + 1;
-            service.getUserService().setAttribute(ATTRIBUTE_NAME, new Integer(actionCount));
+            context.getPortalService().getUserService().setAttribute(ATTRIBUTE_NAME, new Integer(actionCount));
         }
 
-        final Request request = ObjectModelHelper.getRequest( service.getProcessInfoProvider().getObjectModel() );
+        final Request request = ObjectModelHelper.getRequest( context.getPortalService().getProcessInfoProvider().getObjectModel() );
         String value = request.getParameter( requestParameterName );
         if ( value != null && actionCount > 0) {
             // get number
@@ -80,12 +79,12 @@
 
             if ( number == actionCount - 1) {
                 // and invoke next one
-                context.invokeNext( service );
+                context.invokeNext();
             }
         }
-        service.getLinkService().addUniqueParameterToLink( requestParameterName, String.valueOf(actionCount));
+        context.getPortalService().getLinkService().addUniqueParameterToLink( requestParameterName, String.valueOf(actionCount));
 
-        final Response response = ObjectModelHelper.getResponse( service.getProcessInfoProvider().getObjectModel() );
+        final Response response = ObjectModelHelper.getResponse( context.getPortalService().getProcessInfoProvider().getObjectModel() );
         response.setHeader("Cache-Control", "no-cache");
         response.addHeader("Cache-Control", "no-store");
         response.setHeader("Pragma", "no-cache");

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/impl/NoClientCachingEventAspect.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/impl/NoClientCachingEventAspect.java?rev=433542&r1=433541&r2=433542&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/impl/NoClientCachingEventAspect.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/impl/NoClientCachingEventAspect.java Mon Aug 21 23:20:41 2006
@@ -19,7 +19,6 @@
 import org.apache.avalon.framework.thread.ThreadSafe;
 import org.apache.cocoon.environment.ObjectModelHelper;
 import org.apache.cocoon.environment.Response;
-import org.apache.cocoon.portal.PortalService;
 import org.apache.cocoon.portal.event.aspect.EventAspect;
 import org.apache.cocoon.portal.event.aspect.EventAspectContext;
 
@@ -35,17 +34,16 @@
 	implements EventAspect,
                ThreadSafe {
 
-    /**
-	 * @see org.apache.cocoon.portal.event.aspect.EventAspect#process(org.apache.cocoon.portal.event.aspect.EventAspectContext, org.apache.cocoon.portal.PortalService)
+	/**
+	 * @see org.apache.cocoon.portal.event.aspect.EventAspect#process(org.apache.cocoon.portal.event.aspect.EventAspectContext)
 	 */
-	public void process(EventAspectContext context, PortalService service) {
-
-        final Response response = ObjectModelHelper.getResponse( service.getProcessInfoProvider().getObjectModel() );
+	public void process(EventAspectContext context) {
+        final Response response = ObjectModelHelper.getResponse( context.getPortalService().getProcessInfoProvider().getObjectModel() );
         response.setHeader("Cache-Control", "no-cache");
         response.addHeader("Cache-Control", "no-store");
         response.setHeader("Pragma", "no-cache");
         response.setHeader("Expires", "Thu, 01 Jan 2000 00:00:00 GMT");
 
-        context.invokeNext(service);
+        context.invokeNext();
 	}
 }

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/impl/PageLabelEventAspect.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/impl/PageLabelEventAspect.java?rev=433542&r1=433541&r2=433542&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/impl/PageLabelEventAspect.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/impl/PageLabelEventAspect.java Mon Aug 21 23:20:41 2006
@@ -25,7 +25,6 @@
 import org.apache.avalon.framework.service.ServiceException;
 import org.apache.cocoon.environment.ObjectModelHelper;
 import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.portal.PortalService;
 import org.apache.cocoon.portal.impl.PageLabelManager;
 import org.apache.cocoon.portal.event.Event;
 import org.apache.cocoon.portal.event.EventManager;
@@ -69,12 +68,12 @@
     }
 
 	/**
-	 * @see org.apache.cocoon.portal.event.aspect.EventAspect#process(org.apache.cocoon.portal.event.aspect.EventAspectContext, org.apache.cocoon.portal.PortalService)
+	 * @see org.apache.cocoon.portal.event.aspect.EventAspect#process(org.apache.cocoon.portal.event.aspect.EventAspectContext)
 	 */
-	public void process(EventAspectContext context, PortalService service) {
+	public void process(EventAspectContext context) {
         if (this.labelManager != null) {
-            final EventManager publisher = service.getEventManager();
-            final Request request = ObjectModelHelper.getRequest(service.getProcessInfoProvider().getObjectModel());
+            final EventManager publisher = context.getPortalService().getEventManager();
+            final Request request = ObjectModelHelper.getRequest(context.getPortalService().getProcessInfoProvider().getObjectModel());
             final String parameterName = this.labelManager.getRequestParameterName();
 
             String label = request.getParameter(parameterName);
@@ -95,6 +94,6 @@
             }
         }
 
-        context.invokeNext( service );
+        context.invokeNext();
 	}
 }

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/impl/RequestParameterEventAspect.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/impl/RequestParameterEventAspect.java?rev=433542&r1=433541&r2=433542&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/impl/RequestParameterEventAspect.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/impl/RequestParameterEventAspect.java Mon Aug 21 23:20:41 2006
@@ -22,7 +22,6 @@
 import org.apache.avalon.framework.thread.ThreadSafe;
 import org.apache.cocoon.environment.ObjectModelHelper;
 import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.portal.PortalService;
 import org.apache.cocoon.portal.event.Event;
 import org.apache.cocoon.portal.event.EventManager;
 import org.apache.cocoon.portal.event.aspect.EventAspect;
@@ -38,15 +37,14 @@
 	implements EventAspect, ThreadSafe {
 
     protected void process(EventAspectContext context,
-                           PortalService      service,
                            Request            request, 
                            String             parameterName) {
         String[] values = request.getParameterValues( parameterName );
-        final EventManager publisher = service.getEventManager();
+        final EventManager publisher = context.getPortalService().getEventManager();
         if ( values != null ) {
             for(int i=0; i<values.length; i++) {
                 final String current = values[i];
-                final Event e = context.getEventConverter().decode(current);
+                final Event e = context.getPortalService().getEventConverter().decode(current);
                 if ( null != e) {
                     publisher.send(e);
                 }
@@ -63,24 +61,24 @@
     }
 
 	/**
-	 * @see org.apache.cocoon.portal.event.aspect.EventAspect#process(org.apache.cocoon.portal.event.aspect.EventAspectContext, org.apache.cocoon.portal.PortalService)
+	 * @see org.apache.cocoon.portal.event.aspect.EventAspect#process(org.apache.cocoon.portal.event.aspect.EventAspectContext)
 	 */
-	public void process(EventAspectContext context, PortalService service) {
-        final Request request = ObjectModelHelper.getRequest(service.getProcessInfoProvider().getObjectModel());
+	public void process(EventAspectContext context) {
+        final Request request = ObjectModelHelper.getRequest(context.getPortalService().getProcessInfoProvider().getObjectModel());
         final String requestParameterNames = context.getAspectProperties().getProperty("parameter-name", LinkService.DEFAULT_REQUEST_EVENT_PARAMETER_NAME);
         boolean processedDefault = false;
 
         StringTokenizer tokenizer = new StringTokenizer(requestParameterNames, ", ");
         while ( tokenizer.hasMoreTokens() ) {
             final String currentName = tokenizer.nextToken();
-            this.process(context, service, request, currentName);
+            this.process(context, request, currentName);
             if ( LinkService.DEFAULT_REQUEST_EVENT_PARAMETER_NAME.equals(currentName) ) {
                 processedDefault = true;
             }
         }
         if ( !processedDefault ) {
-            this.process( context, service, request, LinkService.DEFAULT_REQUEST_EVENT_PARAMETER_NAME );
+            this.process( context, request, LinkService.DEFAULT_REQUEST_EVENT_PARAMETER_NAME );
         }
-        context.invokeNext( service );        
+        context.invokeNext();        
 	}
 }

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/impl/DefaultEventAspectContext.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/impl/DefaultEventAspectContext.java?rev=433542&r1=433541&r2=433542&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/impl/DefaultEventAspectContext.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/impl/DefaultEventAspectContext.java Mon Aug 21 23:20:41 2006
@@ -15,62 +15,32 @@
  */
 package org.apache.cocoon.portal.event.impl;
 
-import java.util.Iterator;
-import java.util.Properties;
-
 import org.apache.cocoon.portal.PortalService;
-import org.apache.cocoon.portal.event.EventConverter;
 import org.apache.cocoon.portal.event.aspect.EventAspect;
 import org.apache.cocoon.portal.event.aspect.EventAspectContext;
+import org.apache.cocoon.portal.services.aspects.support.AspectChain;
+import org.apache.cocoon.portal.services.aspects.support.BasicAspectContextImpl;
 
 /**
  *
  * @version $Id$
  */
-public final class DefaultEventAspectContext 
+public final class DefaultEventAspectContext
+    extends BasicAspectContextImpl
     implements EventAspectContext {
 
-    private Iterator iterator;
-    private Iterator configIterator;
-    private Properties config;
-
-    private EventConverter converter;
-
-    public DefaultEventAspectContext(EventAspectChain chain) {
-        this.iterator = chain.getIterator();
-        this.configIterator = chain.getConfigIterator();
+    public DefaultEventAspectContext(PortalService service, AspectChain chain) {
+        super(service, chain);
     }
 
 	/**
-	 * @see org.apache.cocoon.portal.event.aspect.EventAspectContext#invokeNext(org.apache.cocoon.portal.PortalService)
+	 * @see org.apache.cocoon.portal.event.aspect.EventAspectContext#invokeNext()
 	 */
-	public void invokeNext(PortalService service) {
-		if (iterator.hasNext()) {
-            this.config = (Properties) this.configIterator.next();
-            final EventAspect aspect = (EventAspect) iterator.next();
-            aspect.process( this, service );
+	public void invokeNext() {
+        final EventAspect aspect = (EventAspect) this.getNext();
+		if (aspect != null ) {
+            aspect.process(this);
 		}
 
-	}
-
-	/**
-	 * @see org.apache.cocoon.portal.event.aspect.EventAspectContext#getAspectProperties()
-	 */
-	public Properties getAspectProperties() {
-		return this.config;
-	}
-
-    /**
-     * Get the encoder
-     */
-    public EventConverter getEventConverter(){
-        return this.converter;
-    }
-
-	/**
-	 * @param converter
-	 */
-	public void setEventConverter(EventConverter converter) {
-		this.converter = converter;
 	}
 }

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/impl/DefaultEventManager.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/impl/DefaultEventManager.java?rev=433542&r1=433541&r2=433542&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/impl/DefaultEventManager.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/impl/DefaultEventManager.java Mon Aug 21 23:20:41 2006
@@ -26,15 +26,15 @@
 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.service.ServiceException;
 import org.apache.cocoon.ProcessingException;
 import org.apache.cocoon.components.ContextHelper;
 import org.apache.cocoon.portal.PortalService;
 import org.apache.cocoon.portal.event.Event;
-import org.apache.cocoon.portal.event.EventConverter;
 import org.apache.cocoon.portal.event.EventManager;
 import org.apache.cocoon.portal.event.Receiver;
+import org.apache.cocoon.portal.event.aspect.EventAspect;
 import org.apache.cocoon.portal.impl.AbstractComponent;
+import org.apache.cocoon.portal.services.aspects.support.AspectChain;
 
 /**
  * This is the default implementation of the event manager.
@@ -59,7 +59,7 @@
     /** Our configuration. */
     protected Configuration configuration;
 
-    protected EventAspectChain chain;
+    protected AspectChain chain;
 
     /** Introspected receiver classes. */
     protected Map receiverClasses = new HashMap();
@@ -115,27 +115,15 @@
     throws ProcessingException {
         if ( this.configuration != null ) {
             try {
-                this.chain = new EventAspectChain();
-                this.chain.configure(this.manager, this.configuration.getChild("event-aspects"));
+                this.chain = new AspectChain();
+                this.chain.configure(this.manager, EventAspect.class, this.configuration);
             } catch (ConfigurationException ce) {
                 throw new ProcessingException("Unable configure component.", ce);
             }
             this.configuration = null;
         }
-        DefaultEventAspectContext eventContext = new DefaultEventAspectContext(this.chain);
-        EventConverter converter = null;
-        try {
-            converter = (EventConverter) this.manager.lookup(EventConverter.ROLE);
-
-            // Invoke aspects
-            eventContext.setEventConverter(converter);
-            eventContext.invokeNext( this.portalService );
-
-        } catch (ServiceException ce) {
-            throw new ProcessingException("Unable to lookup component.", ce);
-        } finally {
-            this.manager.release(converter);
-        }
+        DefaultEventAspectContext eventContext = new DefaultEventAspectContext(this.portalService, this.chain);
+        eventContext.invokeNext();
     }
 
     /**

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PortalManagerImpl.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PortalManagerImpl.java?rev=433542&r1=433541&r2=433542&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PortalManagerImpl.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PortalManagerImpl.java Mon Aug 21 23:20:41 2006
@@ -28,10 +28,6 @@
 import org.apache.cocoon.environment.Request;
 import org.apache.cocoon.portal.LayoutException;
 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.renderer.Renderer;
 import org.apache.cocoon.portal.om.CopletInstance;
@@ -39,6 +35,11 @@
 import org.apache.cocoon.portal.om.Layout;
 import org.apache.cocoon.portal.om.LayoutFeatures;
 import org.apache.cocoon.portal.profile.ProfileManager;
+import org.apache.cocoon.portal.services.aspects.PortalManagerAspect;
+import org.apache.cocoon.portal.services.aspects.PortalManagerAspectPrepareContext;
+import org.apache.cocoon.portal.services.aspects.PortalManagerAspectRenderContext;
+import org.apache.cocoon.portal.services.aspects.impl.support.PortalManagerAspectContextImpl;
+import org.apache.cocoon.portal.services.aspects.support.AspectChain;
 import org.apache.cocoon.xml.AttributesImpl;
 import org.apache.cocoon.xml.XMLUtils;
 import org.apache.commons.lang.StringUtils;
@@ -53,7 +54,7 @@
 	extends AbstractComponent
 	implements PortalManager, PortalManagerAspect, Configurable {
 
-    protected PortalManagerAspectChain chain;
+    protected AspectChain chain;
 
     /**
      * @see org.apache.avalon.framework.activity.Disposable#dispose()
@@ -72,9 +73,8 @@
      */
     public void process()
     throws ProcessingException {
-        DefaultPortalManagerAspectContext aspectContext =
-            new DefaultPortalManagerAspectContext(this.chain,
-                                                  this.portalService);
+        PortalManagerAspectContextImpl aspectContext =
+            new PortalManagerAspectContextImpl(this.portalService, this.chain);
         aspectContext.invokeNext();
     }
 
@@ -83,9 +83,8 @@
 	 */
 	public void showPortal(ContentHandler contentHandler, Properties properties) 
     throws SAXException {
-        DefaultPortalManagerAspectContext aspectContext =
-            new DefaultPortalManagerAspectContext(this.chain,
-                                                  this.portalService);
+        PortalManagerAspectContextImpl aspectContext =
+            new PortalManagerAspectContextImpl(this.portalService, this.chain);
         aspectContext.invokeNext(contentHandler, properties);
 	}
 
@@ -93,45 +92,42 @@
      * @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.manager, 
-                             conf.getChild("aspects"), 
-                             this, 
-                             new Properties());
+        this.chain = new AspectChain();
+        this.chain.configure(this.manager, PortalManagerAspect.class, conf);
+        this.chain.addAspect(this, null);
     }
 
     /**
-     * @see org.apache.cocoon.portal.PortalManagerAspect#prepare(org.apache.cocoon.portal.PortalManagerAspectPrepareContext, org.apache.cocoon.portal.PortalService)
+     * @see org.apache.cocoon.portal.services.aspects.PortalManagerAspect#prepare(org.apache.cocoon.portal.services.aspects.PortalManagerAspectPrepareContext)
      */
-    public void prepare(PortalManagerAspectPrepareContext renderContext, PortalService service) throws ProcessingException {
+    public void prepare(PortalManagerAspectPrepareContext renderContext) throws ProcessingException {
         EventManager eventManager = this.portalService.getEventManager();
         eventManager.processEvents();
     }
 
     /**
-     * @see org.apache.cocoon.portal.PortalManagerAspect#render(org.apache.cocoon.portal.PortalManagerAspectRenderContext, org.apache.cocoon.portal.PortalService, org.xml.sax.ContentHandler, java.util.Properties)
+     * @see org.apache.cocoon.portal.services.aspects.PortalManagerAspect#render(org.apache.cocoon.portal.services.aspects.PortalManagerAspectRenderContext, org.xml.sax.ContentHandler, java.util.Properties)
      */
     public void render(PortalManagerAspectRenderContext renderContext,
-                       PortalService                    service,
                        ContentHandler                   ch,
                        Properties                       properties)
     throws SAXException {
         final ProfileManager profileManager = this.portalService.getProfileManager();
 
         // test for ajax request
-        final Request req = ObjectModelHelper.getRequest(service.getProcessInfoProvider().getObjectModel());
+        final Request req = ObjectModelHelper.getRequest(this.portalService.getProcessInfoProvider().getObjectModel());
         if ( AjaxHelper.isAjaxRequest(req) ) {
             Layout rootLayout = profileManager.getLayout(null);
             ch.startDocument();
             XMLUtils.startElement(ch, "coplets");
-            final List changed = CopletInstanceFeatures.getChangedCopletInstanceDataObjects(service);
+            final List changed = CopletInstanceFeatures.getChangedCopletInstanceDataObjects(this.portalService);
             final Iterator i = changed.iterator();
             while ( i.hasNext() ) {
                 final CopletInstance current = (CopletInstance)i.next();
                 AttributesImpl a = new AttributesImpl();
                 a.addCDATAAttribute("id", current.getId());
                 XMLUtils.startElement(ch, "coplet", a);
-                final Layout l = LayoutFeatures.searchLayout(service, current.getId(), rootLayout);
+                final Layout l = LayoutFeatures.searchLayout(this.portalService, current.getId(), rootLayout);
                 Renderer portalLayoutRenderer = this.portalService.getRenderer( this.portalService.getLayoutFactory().getRendererName(l));
                 try {
                     portalLayoutRenderer.toSAX(l, this.portalService, ch);
@@ -154,14 +150,14 @@
             if ( StringUtils.isNotEmpty(copletId) ) {
                 final CopletInstance cid = profileManager.getCopletInstance(copletId);
                 if ( cid != null ) {
-                    portalLayout = LayoutFeatures.searchLayout(service, cid.getId(), profileManager.getLayout(null));
+                    portalLayout = LayoutFeatures.searchLayout(this.portalService, cid.getId(), profileManager.getLayout(null));
                 }
             } else if ( StringUtils.isNotEmpty(layoutId) ) {
                 portalLayout = profileManager.getLayout(layoutId);
             } else {
                 // first check for a full screen layout
                 Layout rootLayout = profileManager.getLayout(layoutId);
-                portalLayout = LayoutFeatures.getFullScreenInfo(service, rootLayout);
+                portalLayout = LayoutFeatures.getFullScreenInfo(this.portalService, rootLayout);
                 if ( portalLayout == null ) {
                     portalLayout = rootLayout;
                 }
@@ -184,5 +180,9 @@
         // although we should be the last in the queue,
         // let's invoke the next
         renderContext.invokeNext(ch, properties);
+    }
+
+    public void register(PortalManagerAspect aspect) {
+        this.chain.addAspect(aspect, null, 0);
     }
 }

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PortalServiceImpl.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PortalServiceImpl.java?rev=433542&r1=433541&r2=433542&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PortalServiceImpl.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PortalServiceImpl.java Mon Aug 21 23:20:41 2006
@@ -42,6 +42,7 @@
 import org.apache.cocoon.portal.PortalRuntimeException;
 import org.apache.cocoon.portal.PortalService;
 import org.apache.cocoon.portal.coplet.adapter.CopletAdapter;
+import org.apache.cocoon.portal.event.EventConverter;
 import org.apache.cocoon.portal.event.EventManager;
 import org.apache.cocoon.portal.layout.renderer.Renderer;
 import org.apache.cocoon.portal.om.SkinDescription;
@@ -124,7 +125,6 @@
     public void service(ServiceManager serviceManager) throws ServiceException {
         this.manager = serviceManager;
         this.processInfoProvider = (ProcessInfoProvider)this.manager.lookup(ProcessInfoProvider.ROLE);
-        this.userService = (UserService)this.manager.lookup(UserService.class.getName());
     }
 
     /**
@@ -408,6 +408,24 @@
      * @see org.apache.cocoon.portal.PortalService#getUserService()
      */
     public UserService getUserService() {
+        if ( this.userService == null ) {
+            try {
+                this.userService = (UserService)this.manager.lookup(UserService.class.getName());
+            } catch (ServiceException e) {
+                throw new PortalRuntimeException("Unable to lookup user service.", e);
+            }
+        }
         return this.userService;
+    }
+
+    /**
+     * @see org.apache.cocoon.portal.PortalService#getEventConverter()
+     */
+    public EventConverter getEventConverter() {
+        try {
+            return (EventConverter)this.manager.lookup(EventConverter.class.getName());
+        } catch (ServiceException e) {
+            throw new PortalRuntimeException("Unable to lookup event converter.", e);
+        }
     }
 }

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java?rev=433542&r1=433541&r2=433542&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java Mon Aug 21 23:20:41 2006
@@ -24,7 +24,6 @@
 import org.apache.avalon.framework.configuration.ConfigurationException;
 import org.apache.avalon.framework.service.ServiceException;
 import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.ServiceSelector;
 import org.apache.cocoon.portal.LayoutException;
 import org.apache.cocoon.portal.PortalService;
 import org.apache.cocoon.portal.coplet.adapter.CopletAdapter;
@@ -40,8 +39,10 @@
 import org.apache.cocoon.portal.om.Layout;
 import org.apache.cocoon.portal.om.PortalUser;
 import org.apache.cocoon.portal.profile.ProfileManager;
-import org.apache.cocoon.portal.profile.ProfileManagerAspect;
 import org.apache.cocoon.portal.scratchpad.Profile;
+import org.apache.cocoon.portal.services.aspects.ProfileManagerAspect;
+import org.apache.cocoon.portal.services.aspects.impl.support.ProfileManagerAspectContextImpl;
+import org.apache.cocoon.portal.services.aspects.support.AspectChain;
 
 /**
  * Base class for all profile managers.
@@ -56,17 +57,13 @@
     protected Configuration configuration;
 
     /** The chain for the configured profile manager aspects. */
-    protected ProfileManagerAspectChain chain;
-
-    /** The service selector for the profile manager aspects. */
-    protected ServiceSelector aspectSelector;
+    protected AspectChain chain;
 
     /**
      * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
      */
     public void service(ServiceManager aManager) throws ServiceException {
         super.service(aManager);
-        this.aspectSelector = (ServiceSelector) this.manager.lookup( ProfileManagerAspect.ROLE+"Selector");
     }
 
     /**
@@ -75,10 +72,8 @@
     public void dispose() {
         if (this.manager != null) {
             if ( this.chain != null) {
-                this.chain.dispose( this.aspectSelector );
+                this.chain.dispose( this.manager );
             }
-            this.manager.release( this.aspectSelector );
-            this.aspectSelector = null;
         }
         super.dispose();
     }
@@ -88,8 +83,8 @@
      */
     public void configure(Configuration config) throws ConfigurationException {
         this.configuration = config;
-        this.chain = new ProfileManagerAspectChain();
-        this.chain.configure(this.aspectSelector, config.getChild("aspects"));
+        this.chain = new AspectChain();
+        this.chain.configure(this.manager, ProfileManagerAspect.class, config);
     }
 
     /**
@@ -225,9 +220,8 @@
     protected Profile processProfile(Profile profile) {
         // FIXME we should add the calls to prepareObject here as well
         if ( this.chain.hasAspects() ) {
-            DefaultProfileManagerAspectContext aspectContext = new DefaultProfileManagerAspectContext(this.chain, this.portalService);
+            ProfileManagerAspectContextImpl aspectContext = new ProfileManagerAspectContextImpl(this.portalService, this.chain);
             aspectContext.invokeNext(profile);
-            return aspectContext.getProfile();
         }
         return profile;
     }

Added: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/BasicAspectContext.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/BasicAspectContext.java?rev=433542&view=auto
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/BasicAspectContext.java (added)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/BasicAspectContext.java Mon Aug 21 23:20:41 2006
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2006 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.services.aspects;
+
+import java.util.Properties;
+
+import org.apache.cocoon.portal.PortalService;
+
+/**
+ * The base interface for all aspect contexts.
+ *
+ * @since 2.2
+ * @version $Id$
+ */
+public interface BasicAspectContext {
+
+    /** 
+     * Get the {@link Properties} of the aspect.
+     */
+    Properties getAspectProperties();
+
+    /**
+     * Get the portal service.
+     */
+    PortalService getPortalService();
+}

Propchange: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/BasicAspectContext.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/BasicAspectContext.java
------------------------------------------------------------------------------
    svn:keywords = Id

Copied: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/PortalManagerAspect.java (from r433231, cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/PortalManagerAspect.java)
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/PortalManagerAspect.java?p2=cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/PortalManagerAspect.java&p1=cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/PortalManagerAspect.java&r1=433231&r2=433542&rev=433542&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/PortalManagerAspect.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/PortalManagerAspect.java Mon Aug 21 23:20:41 2006
@@ -13,12 +13,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.cocoon.portal;
+package org.apache.cocoon.portal.services.aspects;
 
 import java.util.Properties;
 
 import org.apache.cocoon.ProcessingException;
-import org.apache.cocoon.portal.PortalService;
 import org.xml.sax.ContentHandler;
 import org.xml.sax.SAXException;
 
@@ -28,13 +27,11 @@
  */
 public interface PortalManagerAspect {
 
-    void prepare(PortalManagerAspectPrepareContext context,
-                 PortalService service)
+    void prepare(PortalManagerAspectPrepareContext context)
     throws ProcessingException;
 
     void render(PortalManagerAspectRenderContext context,
-                PortalService                  service,
-                ContentHandler                 ch,
-                Properties                     properties)
+                ContentHandler                   ch,
+                Properties                       properties)
     throws SAXException;
 }

Copied: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/PortalManagerAspectPrepareContext.java (from r433231, cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/PortalManagerAspectPrepareContext.java)
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/PortalManagerAspectPrepareContext.java?p2=cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/PortalManagerAspectPrepareContext.java&p1=cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/PortalManagerAspectPrepareContext.java&r1=433231&r2=433542&rev=433542&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/PortalManagerAspectPrepareContext.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/PortalManagerAspectPrepareContext.java Mon Aug 21 23:20:41 2006
@@ -13,9 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.cocoon.portal;
-
-import java.util.Properties;
+package org.apache.cocoon.portal.services.aspects;
 
 import org.apache.cocoon.ProcessingException;
 
@@ -23,16 +21,12 @@
  * @since 2.1.8
  * @version $Id$
  */
-public interface PortalManagerAspectPrepareContext {
+public interface PortalManagerAspectPrepareContext
+    extends BasicAspectContext {
 
     /**
      * Invoke next aspect 
      */
     void invokeNext()
     throws ProcessingException;
-
-    /** 
-     * Get the {@link Properties} of the aspect.
-     */
-    Properties getAspectProperties();
 }

Copied: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/PortalManagerAspectRenderContext.java (from r433231, cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/PortalManagerAspectRenderContext.java)
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/PortalManagerAspectRenderContext.java?p2=cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/PortalManagerAspectRenderContext.java&p1=cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/PortalManagerAspectRenderContext.java&r1=433231&r2=433542&rev=433542&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/PortalManagerAspectRenderContext.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/PortalManagerAspectRenderContext.java Mon Aug 21 23:20:41 2006
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.cocoon.portal;
+package org.apache.cocoon.portal.services.aspects;
 
 import java.util.Properties;
 
@@ -24,7 +24,8 @@
  * @since 2.1.8
  * @version $Id$
  */
-public interface PortalManagerAspectRenderContext {
+public interface PortalManagerAspectRenderContext
+    extends BasicAspectContext {
 
     /**
      * Invoke next aspect 
@@ -32,9 +33,4 @@
     void invokeNext(ContentHandler ch,
                     Properties     parameters)
     throws SAXException;
-
-    /** 
-     * Get the {@link Properties} of the aspect.
-     */
-    Properties getAspectProperties();
 }

Copied: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/ProfileManagerAspect.java (from r433231, cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ProfileManagerAspect.java)
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/ProfileManagerAspect.java?p2=cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/ProfileManagerAspect.java&p1=cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ProfileManagerAspect.java&r1=433231&r2=433542&rev=433542&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ProfileManagerAspect.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/ProfileManagerAspect.java Mon Aug 21 23:20:41 2006
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.cocoon.portal.profile;
+package org.apache.cocoon.portal.services.aspects;
 
 import org.apache.cocoon.portal.scratchpad.Profile;
 
@@ -25,9 +25,6 @@
  * @version $Id$
  */
 public interface ProfileManagerAspect {
-
-    /** The role to lookup an aspect. */
-    String ROLE = ProfileManagerAspect.class.getName();
 
     void prepare(ProfileManagerAspectContext context,
                  Profile profile);

Copied: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/ProfileManagerAspectContext.java (from r433231, cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ProfileManagerAspectContext.java)
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/ProfileManagerAspectContext.java?p2=cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/ProfileManagerAspectContext.java&p1=cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ProfileManagerAspectContext.java&r1=433231&r2=433542&rev=433542&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ProfileManagerAspectContext.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/ProfileManagerAspectContext.java Mon Aug 21 23:20:41 2006
@@ -13,32 +13,20 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.cocoon.portal.profile;
+package org.apache.cocoon.portal.services.aspects;
 
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.cocoon.portal.PortalService;
 import org.apache.cocoon.portal.scratchpad.Profile;
 
 /**
- * The context for a {@link  ProfileManagerAspect}
+ * The context for a {@link  ProfileManagerAspect}.
  *
  * @since 2.2
  * @version $Id$
  */
-public interface ProfileManagerAspectContext {
+public interface ProfileManagerAspectContext extends BasicAspectContext {
 
     /**
      * Invoke next aspect .
      */
     void invokeNext(Profile profile);
-
-    /** 
-     * Get the {@link Parameters} of the aspect.
-     */
-    Parameters getAspectParameters();
-
-    /**
-     * Get the portal service.
-     */
-    PortalService getPortalService();
 }

Copied: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/impl/PageLabelProfileManagerAspect.java (from r433231, cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/PageLabelProfileManagerAspect.java)
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/impl/PageLabelProfileManagerAspect.java?p2=cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/impl/PageLabelProfileManagerAspect.java&p1=cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/PageLabelProfileManagerAspect.java&r1=433231&r2=433542&rev=433542&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/PageLabelProfileManagerAspect.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/impl/PageLabelProfileManagerAspect.java Mon Aug 21 23:20:41 2006
@@ -13,16 +13,16 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.cocoon.portal.profile.impl;
+package org.apache.cocoon.portal.services.aspects.impl;
 
 import org.apache.avalon.framework.thread.ThreadSafe;
 import org.apache.cocoon.portal.om.CompositeLayout;
 import org.apache.cocoon.portal.om.Item;
 import org.apache.cocoon.portal.om.Layout;
 import org.apache.cocoon.portal.om.NamedItem;
-import org.apache.cocoon.portal.profile.ProfileManagerAspect;
-import org.apache.cocoon.portal.profile.ProfileManagerAspectContext;
 import org.apache.cocoon.portal.scratchpad.Profile;
+import org.apache.cocoon.portal.services.aspects.ProfileManagerAspect;
+import org.apache.cocoon.portal.services.aspects.ProfileManagerAspectContext;
 
 /**
  * $Id$
@@ -31,7 +31,7 @@
     implements ProfileManagerAspect, ThreadSafe {
 
     /**
-     * @see org.apache.cocoon.portal.profile.ProfileManagerAspect#prepare(org.apache.cocoon.portal.profile.ProfileManagerAspectContext, org.apache.cocoon.portal.scratchpad.Profile)
+     * @see org.apache.cocoon.portal.services.aspects.ProfileManagerAspect#prepare(org.apache.cocoon.portal.services.aspects.ProfileManagerAspectContext, org.apache.cocoon.portal.scratchpad.Profile)
      */
     public void prepare(ProfileManagerAspectContext context, Profile profile) {
         final Layout rootLayout = profile.getRootLayout();

Copied: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/impl/PreloadPortalManagerAspect.java (from r433231, cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PreloadPortalManagerAspect.java)
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/impl/PreloadPortalManagerAspect.java?p2=cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/impl/PreloadPortalManagerAspect.java&p1=cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PreloadPortalManagerAspect.java&r1=433231&r2=433542&rev=433542&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PreloadPortalManagerAspect.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/impl/PreloadPortalManagerAspect.java Mon Aug 21 23:20:41 2006
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.cocoon.portal.impl;
+package org.apache.cocoon.portal.services.aspects.impl;
 
 import java.util.Iterator;
 import java.util.List;
@@ -21,13 +21,12 @@
 
 import org.apache.avalon.framework.logger.AbstractLogEnabled;
 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.apache.cocoon.portal.coplet.adapter.CopletAdapter;
 import org.apache.cocoon.portal.om.CopletInstance;
 import org.apache.cocoon.portal.om.CopletInstanceFeatures;
+import org.apache.cocoon.portal.services.aspects.PortalManagerAspect;
+import org.apache.cocoon.portal.services.aspects.PortalManagerAspectPrepareContext;
+import org.apache.cocoon.portal.services.aspects.PortalManagerAspectRenderContext;
 import org.xml.sax.ContentHandler;
 import org.xml.sax.SAXException;
 import org.xml.sax.helpers.DefaultHandler;
@@ -47,31 +46,29 @@
     protected static final ContentHandler nullHandler = new DefaultHandler();
 
     /**
-     * @see org.apache.cocoon.portal.PortalManagerAspect#prepare(org.apache.cocoon.portal.PortalManagerAspectPrepareContext, org.apache.cocoon.portal.PortalService)
+     * @see org.apache.cocoon.portal.services.aspects.PortalManagerAspect#prepare(org.apache.cocoon.portal.services.aspects.PortalManagerAspectPrepareContext)
      */
-    public void prepare(PortalManagerAspectPrepareContext context,
-                        PortalService                     service)
+    public void prepare(PortalManagerAspectPrepareContext context)
     throws ProcessingException {
         // let's just invoke the next
         context.invokeNext();
     }
 
     /**
-     * @see org.apache.cocoon.portal.PortalManagerAspect#render(org.apache.cocoon.portal.PortalManagerAspectRenderContext, org.apache.cocoon.portal.PortalService, org.xml.sax.ContentHandler, java.util.Properties)
+     * @see org.apache.cocoon.portal.services.aspects.PortalManagerAspect#render(org.apache.cocoon.portal.services.aspects.PortalManagerAspectRenderContext, org.xml.sax.ContentHandler, java.util.Properties)
      */
     public void render(PortalManagerAspectRenderContext context,
-                       PortalService                    service,
                        ContentHandler                   ch,
                        Properties                       properties)
     throws SAXException {
         // we should be the first aspect for rendering
         // preload all changed coplets
-        final List changedCoplets = CopletInstanceFeatures.getChangedCopletInstanceDataObjects(service);
+        final List changedCoplets = CopletInstanceFeatures.getChangedCopletInstanceDataObjects(context.getPortalService());
         final Iterator i = changedCoplets.iterator();
         while (i.hasNext()) {
             final CopletInstance cid = (CopletInstance)i.next();
             final String adapterName = cid.getCopletDefinition().getCopletType().getCopletAdapterName();
-            final CopletAdapter adapter = service.getCopletAdapter(adapterName);
+            final CopletAdapter adapter = context.getPortalService().getCopletAdapter(adapterName);
             adapter.toSAX(cid, nullHandler );
         }
         // start "real" rendering

Added: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/impl/support/PortalManagerAspectContextImpl.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/impl/support/PortalManagerAspectContextImpl.java?rev=433542&view=auto
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/impl/support/PortalManagerAspectContextImpl.java (added)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/impl/support/PortalManagerAspectContextImpl.java Mon Aug 21 23:20:41 2006
@@ -0,0 +1,66 @@
+/*
+ * 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.services.aspects.impl.support;
+
+import java.util.Properties;
+
+import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.portal.PortalService;
+import org.apache.cocoon.portal.services.aspects.PortalManagerAspect;
+import org.apache.cocoon.portal.services.aspects.PortalManagerAspectPrepareContext;
+import org.apache.cocoon.portal.services.aspects.PortalManagerAspectRenderContext;
+import org.apache.cocoon.portal.services.aspects.support.AspectChain;
+import org.apache.cocoon.portal.services.aspects.support.BasicAspectContextImpl;
+import org.xml.sax.ContentHandler;
+import org.xml.sax.SAXException;
+
+/**
+ * The aspect context is passed to every aspect.
+ * @since 2.1.8
+ * @version $Id$
+ */
+public final class PortalManagerAspectContextImpl
+    extends BasicAspectContextImpl
+    implements PortalManagerAspectRenderContext,
+               PortalManagerAspectPrepareContext {
+
+    public PortalManagerAspectContextImpl(PortalService service,
+                                          AspectChain    chain) {
+        super(service, chain);
+    }
+
+	/**
+	 * @see org.apache.cocoon.portal.services.aspects.PortalManagerAspectPrepareContext#invokeNext()
+	 */
+	public void invokeNext() 
+    throws ProcessingException {
+        final PortalManagerAspect aspect = (PortalManagerAspect)this.getNext();
+        if ( aspect != null ) {
+            aspect.prepare(this);
+        }
+    }
+
+    /**
+     * @see org.apache.cocoon.portal.services.aspects.PortalManagerAspectRenderContext#invokeNext(org.xml.sax.ContentHandler, org.apache.avalon.framework.parameters.Parameters)
+     */
+    public void invokeNext(ContentHandler ch, Properties properties) 
+    throws SAXException {
+        final PortalManagerAspect aspect = (PortalManagerAspect)this.getNext();
+        if ( aspect != null ) {
+            aspect.render(this, ch, properties);
+        }
+    }
+}

Propchange: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/impl/support/PortalManagerAspectContextImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/impl/support/PortalManagerAspectContextImpl.java
------------------------------------------------------------------------------
    svn:keywords = Id

Added: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/impl/support/ProfileManagerAspectContextImpl.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/impl/support/ProfileManagerAspectContextImpl.java?rev=433542&view=auto
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/impl/support/ProfileManagerAspectContextImpl.java (added)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/impl/support/ProfileManagerAspectContextImpl.java Mon Aug 21 23:20:41 2006
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2006 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.services.aspects.impl.support;
+
+import org.apache.cocoon.portal.PortalService;
+import org.apache.cocoon.portal.scratchpad.Profile;
+import org.apache.cocoon.portal.services.aspects.ProfileManagerAspect;
+import org.apache.cocoon.portal.services.aspects.ProfileManagerAspectContext;
+import org.apache.cocoon.portal.services.aspects.support.AspectChain;
+import org.apache.cocoon.portal.services.aspects.support.BasicAspectContextImpl;
+
+/**
+ * The aspect context is passed to every aspect.
+ * @since 2.2
+ * @version $Id$
+ */
+public final class ProfileManagerAspectContextImpl
+    extends BasicAspectContextImpl
+    implements ProfileManagerAspectContext {
+
+    public ProfileManagerAspectContextImpl(PortalService service,
+                                              AspectChain   chain) {
+        super(service, chain);
+    }
+
+	/**
+	 * @see org.apache.cocoon.portal.services.aspects.ProfileManagerAspectContext#invokeNext(org.apache.cocoon.portal.scratchpad.Profile)
+	 */
+	public void invokeNext(Profile portalProfile) {
+        final ProfileManagerAspect aspect = (ProfileManagerAspect)this.getNext();
+        if ( aspect != null ) {
+            aspect.prepare(this, portalProfile);
+        }
+    }
+}

Propchange: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/impl/support/ProfileManagerAspectContextImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/impl/support/ProfileManagerAspectContextImpl.java
------------------------------------------------------------------------------
    svn:keywords = Id

Added: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/support/AspectChain.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/support/AspectChain.java?rev=433542&view=auto
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/support/AspectChain.java (added)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/support/AspectChain.java Mon Aug 21 23:20:41 2006
@@ -0,0 +1,110 @@
+/*
+ * 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.services.aspects.support;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Properties;
+
+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;
+
+/**
+ * Reusable implementation of an aspect chain.
+ *
+ * @since 2.2
+ * @version $Id$
+ */
+public final class AspectChain {
+
+    protected static Properties EMPTY_PROPERTIES = new Properties();
+
+    /** The aspects. */
+    protected List aspects = new ArrayList(3);
+
+    /** The configuration for the aspects. */
+    protected List configs = new ArrayList(3);
+
+    /** Do we have any aspects? */
+    protected boolean process = false;
+
+    public void configure(ServiceManager manager,
+                          Class          aspectClass,
+                          Configuration  conf)
+    throws ConfigurationException {
+        if ( conf != null ) {
+            final Configuration[] aspectConfigs = conf.getChild("aspects").getChildren("aspect");
+            for(int i=0; i < aspectConfigs.length; i++) {
+                this.process = true;
+                final Configuration current = aspectConfigs[i];
+                final String role = current.getAttribute("type");
+                try {
+                    final Object aspect = manager.lookup(aspectClass.getName() + '/' + role);
+                    if ( !aspectClass.isInstance(aspect) ) {
+                        throw new ConfigurationException("Configured aspect is not an instance of class " + aspectClass.getName() + " : " + role);
+                    }
+                    this.aspects.add(aspect);               
+                    this.configs.add(Parameters.toProperties(Parameters.fromConfiguration(current)));
+
+                } catch (ServiceException se) {
+                    throw new ConfigurationException("Unable to lookup aspect (" + aspectClass.getName() + "): " + role, se);
+                }
+            }
+        }
+    }
+
+    public void addAspect(Object aspect, Properties config) {
+        this.addAspect(aspect, config, -1);
+    }
+
+    public void addAspect(Object aspect, Properties config, int index) {
+        final Properties aspectConfig = (config == null ? EMPTY_PROPERTIES : config);
+        this.process = true;
+        if ( index == -1 ) {
+            this.aspects.add(aspect);
+            this.configs.add(aspectConfig);
+        } else {
+            this.aspects.add(index, aspect);
+            this.configs.add(index, aspectConfig);
+        }
+    }
+
+    public boolean hasAspects() {
+        return this.process;
+    }
+
+    public Iterator getIterator() {
+        return this.aspects.iterator();
+    }
+
+    public Iterator getConfigIterator() {
+        return this.configs.iterator();
+    }
+
+    public void dispose(ServiceManager manager) {
+        final Iterator i = this.aspects.iterator();
+        while (i.hasNext()) {
+            final Object component = i.next();
+            manager.release(component);
+        }
+        this.aspects.clear();
+        this.configs.clear();
+    }
+}

Propchange: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/support/AspectChain.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/support/AspectChain.java
------------------------------------------------------------------------------
    svn:keywords = Id

Added: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/support/BasicAspectContextImpl.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/support/BasicAspectContextImpl.java?rev=433542&view=auto
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/support/BasicAspectContextImpl.java (added)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/support/BasicAspectContextImpl.java Mon Aug 21 23:20:41 2006
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2006 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.services.aspects.support;
+
+import java.util.Iterator;
+import java.util.Properties;
+
+import org.apache.cocoon.portal.PortalService;
+import org.apache.cocoon.portal.services.aspects.BasicAspectContext;
+
+/**
+ * Reusable implementation of the {@link BasicAspectContext}.
+ *
+ * @since 2.2
+ * @version $Id$
+ */
+public abstract class BasicAspectContextImpl implements BasicAspectContext {
+
+    /** The portal service. */
+    protected final PortalService portalService;
+
+    /** The iterator used to iterate over the aspects. */
+    protected final Iterator iterator;
+    /** The iterator used to iterate over the configuration of the aspects. */
+    protected final Iterator configIterator;
+
+    /** The current configuration. */
+    protected Properties aspectConfig;
+
+    public BasicAspectContextImpl(PortalService service,
+                                  AspectChain   chain) {
+        this.portalService = service;
+        this.iterator = chain.getIterator();
+        this.configIterator = chain.getConfigIterator();
+    }
+
+    /**
+     * @see org.apache.cocoon.portal.services.aspects.BasicAspectContext#getAspectProperties()
+     */
+    public Properties getAspectProperties() {
+        return this.aspectConfig;
+    }
+
+    /**
+     * @see org.apache.cocoon.portal.services.aspects.BasicAspectContext#getPortalService()
+     */
+    public PortalService getPortalService() {
+        return this.portalService;
+    }
+
+    protected Object getNext() {
+        if (this.iterator.hasNext()) {
+            this.aspectConfig = (Properties)this.configIterator.next();
+            return this.iterator.next();
+        }
+        return null;
+    }
+
+}

Propchange: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/support/BasicAspectContextImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/aspects/support/BasicAspectContextImpl.java
------------------------------------------------------------------------------
    svn:keywords = Id