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/20 16:03:31 UTC

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

Author: cziegeler
Date: Sun Aug 20 07:03:27 2006
New Revision: 432969

URL: http://svn.apache.org/viewvc?rev=432969&view=rev
Log:
Add new user service and clean up portal service

Added:
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/om/PortalUser.java
      - copied, changed from r432835, cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/PortalUser.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/UserService.java   (with props)
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/DefaultUserService.java   (with props)
Removed:
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/PortalComponentManager.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/DefaultPortalComponentManager.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/PortalUser.java
Modified:
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-auth-impl/src/main/java/org/apache/cocoon/auth/portal/StandardPortalApplication.java
    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/PortalManagerAspect.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/aspect/impl/ActionCounterEventAspect.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/impl/DefaultEventConverter.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/user/UserDidLoginEvent.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/user/UserEvent.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/user/UserEventUtil.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/user/UserIsAccessingEvent.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/user/UserWillLogoutEvent.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PageLabelManager.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/PortalServiceImpl.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/om/CopletInstanceFeatures.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ProfileManager.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/AbstractPortalUser.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/profile/impl/GroupBasedProfileManager.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/StaticProfileManager.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/CopletFactory.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/LayoutFactory.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/LinkService.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/PortletPreferencesProviderImpl.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/TestProfileManager.java
    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-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/factory/ActionRequestFactoryImpl.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/factory/ActionRequestImpl.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/factory/RenderRequestFactoryImpl.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/factory/RenderRequestImpl.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/om/PortletDefinitionRegistryImpl.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/java/org/apache/cocoon/portal/coplets/basket/BasketManagerImpl.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-tools-impl/src/main/java/org/apache/cocoon/portal/tools/PortalToolManager.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-tools-impl/src/main/java/org/apache/cocoon/portal/tools/acting/CheckAccessAction.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-tools-impl/src/main/java/org/apache/cocoon/portal/tools/helper/MultipleRoleMatcher.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-tools-impl/src/main/java/org/apache/cocoon/portal/tools/helper/PortalObjects.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-tools-impl/src/main/java/org/apache/cocoon/portal/tools/helper/RoleMatcher.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-tools-impl/src/main/java/org/apache/cocoon/portal/tools/helper/SingleRoleMatcher.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-tools-impl/src/main/java/org/apache/cocoon/portal/tools/service/UserRightsService.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-tools-impl/src/main/java/org/apache/cocoon/portal/tools/transformation/CheckAccessTransformer.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-tools-impl/src/main/java/org/apache/cocoon/portal/tools/userManagement/ContextGrabber.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-wsrp-impl/src/main/java/org/apache/cocoon/portal/wsrp/adapter/WSRPAdapter.java

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-auth-impl/src/main/java/org/apache/cocoon/auth/portal/StandardPortalApplication.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-auth-impl/src/main/java/org/apache/cocoon/auth/portal/StandardPortalApplication.java?rev=432969&r1=432968&r2=432969&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-auth-impl/src/main/java/org/apache/cocoon/auth/portal/StandardPortalApplication.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-auth-impl/src/main/java/org/apache/cocoon/auth/portal/StandardPortalApplication.java Sun Aug 20 07:03:27 2006
@@ -17,6 +17,8 @@
 package org.apache.cocoon.auth.portal;
 
 import java.security.Principal;
+import java.util.Collection;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
@@ -27,7 +29,7 @@
 import org.apache.avalon.framework.service.ServiceManager;
 import org.apache.cocoon.portal.PortalService;
 import org.apache.cocoon.portal.event.user.UserEventUtil;
-import org.apache.cocoon.portal.profile.PortalUser;
+import org.apache.cocoon.portal.om.PortalUser;
 import org.apache.cocoon.portal.profile.impl.AbstractPortalUser;
 import org.apache.cocoon.auth.StandardApplication;
 import org.apache.cocoon.auth.User;
@@ -146,21 +148,25 @@
         }
 
         /**
-         * @see org.apache.cocoon.portal.profile.PortalUser#isUserInRole(java.lang.String)
+         * @see org.apache.cocoon.portal.om.PortalUser#isUserInRole(java.lang.String)
          */
         public boolean isUserInRole(final String role) {
             return user.isUserInRole(role);
         }
 
         /**
-         * @see org.apache.cocoon.portal.profile.PortalUser#getGroup()
+         * @see org.apache.cocoon.portal.om.PortalUser#getGroups()
          */
-        public String getGroup() {
-            return (String)this.user.getAttribute("group");
+        public Collection getGroups() {
+            final Collection c = (Collection) this.user.getAttribute("groups");
+            if ( c == null ) {
+                return Collections.EMPTY_LIST;
+            }
+            return c;
         }
 
         /**
-         * @see org.apache.cocoon.portal.profile.PortalUser#getUserName()
+         * @see org.apache.cocoon.portal.om.PortalUser#getUserName()
          */
         public String getUserName() {
             return this.user.getId();

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=432969&r1=432968&r2=432969&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 Sun Aug 20 07:03:27 2006
@@ -26,7 +26,7 @@
  * Invoke the request processing using the {@link #process()} method,
  * this starts the event handling for the current request (evaluating
  * request parameters etc.)
- * The section method {@link #showPortal(ContentHandler, Parameters)}
+ * The section method {@link #showPortal(ContentHandler, Properties)}
  * starts rendering the portal.
  *
  * @version $Id$
@@ -44,9 +44,6 @@
      * case only the coplet with the surrounding layout is rendered.
      */
     String PROPERTY_RENDER_COPLET = "render-coplet";
-
-    /** The bean name of this component. */
-    String ROLE = PortalManager.class.getName();
 
     /**
      * Start the first phase of the request handling.

Modified: 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/PortalManagerAspect.java?rev=432969&r1=432968&r2=432969&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/PortalManagerAspect.java Sun Aug 20 07:03:27 2006
@@ -28,9 +28,6 @@
  */
 public interface PortalManagerAspect {
 
-    /** The role to lookup an aspect. */
-    String ROLE = PortalManagerAspect.class.getName();
-
     void prepare(PortalManagerAspectPrepareContext context,
                  PortalService service)
     throws ProcessingException;

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=432969&r1=432968&r2=432969&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 Sun Aug 20 07:03:27 2006
@@ -15,19 +15,31 @@
  */
 package org.apache.cocoon.portal;
 
-import java.util.Iterator;
 import java.util.List;
 
+import org.apache.cocoon.portal.coplet.adapter.CopletAdapter;
+import org.apache.cocoon.portal.event.EventManager;
+import org.apache.cocoon.portal.layout.renderer.Renderer;
+import org.apache.cocoon.portal.profile.ProfileManager;
+import org.apache.cocoon.portal.services.CopletFactory;
+import org.apache.cocoon.portal.services.LayoutFactory;
+import org.apache.cocoon.portal.services.LinkService;
+import org.apache.cocoon.portal.services.UserService;
+import org.apache.cocoon.processing.ProcessInfoProvider;
+
 /**
- * This is the central component in the portal. It holds the configuration
- * of the portal, the current name etc.
- * The main use of this component is to get other components of the portal,
- * like the link service or the event manager.
- * This component is a singleton.
+ * This is the central component of the portal. It holds the global configuration,
+ * the current name of the portal and other important information.
+ * Apart from configuration, the main purpose if this component is to provide a unique
+ * and simple access to other portal components and services like the link
+ * service or the event manager. A portal component should never lookup these services by
+ * itself. It must only lookup the portal service and get the components/services
+ * from there.
+ * The portal service is a singleton.
  *
  * @version $Id$
  */
-public interface PortalService extends PortalComponentManager {
+public interface PortalService {
 
     /** The role to lookup this component. */
     String ROLE = PortalService.class.getName();
@@ -38,93 +50,92 @@
     String getPortalName();
 
     /**
-     * Return the value of an attribute.
-     * @param key The key of the attribute
-     * @return The value of the attribute or null.
+     * Return all skins
+     */
+    List getSkinDescriptions();
+
+    /**
+     * Get a configuration value.
+     * @param key The key for the configuration.
+     * @return The value of the configuration or null.
+     * @since 2.2
      */
-    Object getAttribute(String key);
+    String getConfiguration(String key);
 
     /**
-     * Set an attribute.
-     * @param key    The key of the attribute
-     * @param value  The new value
+     * Get a configuration value.
+     * @param key The key for the configuration.
+     * @param defaultValue The default value if no configuration for the key is available.
+     * @return The value of the configuration or the default value.
+     * @since 2.2
      */
-    void setAttribute(String key, Object value);
+    String getConfiguration(String key, String defaultValue);
 
     /**
-     * Remove an attribute.
-     * @param key The key of the attribute
+     * Get a configuration value as a boolean.
+     * @param key The key for the configuration.
+     * @param defaultValue The default value if no configuration for the key is available.
+     * @return The value of the configuration or the default value.
+     * @since 2.2
      */
-    Object removeAttribute(String key);
+    boolean getConfigurationAsBoolean(String key, boolean defaultValue);
 
     /**
-     * Return the names of all attributes.
+     * Get the link service.
      */
-    Iterator getAttributeNames();
+    LinkService getLinkService();
 
     /**
-     * Return the value of a temporary attribute.
-     * @param key The key of the attribute
-     * @return The value of the attribute or null.
+     * Get the current profile manager.
      */
-    Object getTemporaryAttribute(String key);
+    ProfileManager getProfileManager();
 
     /**
-     * Set a temporary attribute.
-     * @param key    The key of the attribute
-     * @param value  The new value
+     * Get the renderer.
      */
-    void setTemporaryAttribute(String key, Object value);
+    Renderer getRenderer(String name);
 
     /**
-     * Remove a temporary attribute.
-     * @param key The key of the attribute
+     * Get the coplet adapter.
      */
-    Object removeTemporaryAttribute(String key);
+    CopletAdapter getCopletAdapter(String name);
 
     /**
-     * Return the names of all temporary attributes.
+     * Get the coplet factory.
      */
-    Iterator getTemporaryAttributeNames();
+    CopletFactory getCopletFactory();
 
     /**
-     * Change the default layout key for most functions
+     * Get the layout factory
      */
-    void setDefaultLayoutKey(String layoutKey);
+    LayoutFactory getLayoutFactory();
 
     /**
-     * Get the default layout key
+     * Get the event manager
      */
-    String getDefaultLayoutKey();
+    EventManager getEventManager();
 
     /**
-     * Return all skins
+     * Get the portal manager
+     * @since 2.1.8
      */
-    List getSkinDescriptions();
+    PortalManager getPortalManager();
 
     /**
-     * Get a configuration value.
-     * @param key The key for the configuration.
-     * @return The value of the configuration or null.
+     * Register a renderer.
      * @since 2.2
      */
-    String getConfiguration(String key);
+    void register(String name, Renderer renderer);
 
     /**
-     * Get a configuration value.
-     * @param key The key for the configuration.
-     * @param defaultValue The default value if no configuration for the key is available.
-     * @return The value of the configuration or the default value.
+     * Get the process info provider for accessing request
+     * information.
      * @since 2.2
      */
-    String getConfiguration(String key, String defaultValue);
+    ProcessInfoProvider getProcessInfoProvider();
 
     /**
-     * Get a configuration value as a boolean.
-     * @param key The key for the configuration.
-     * @param defaultValue The default value if no configuration for the key is available.
-     * @return The value of the configuration or the default value.
-     * @since 2.2
+     * Get the user service.
      */
-    boolean getConfigurationAsBoolean(String key, boolean defaultValue);
+    UserService getUserService();
 }

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=432969&r1=432968&r2=432969&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 Sun Aug 20 07:03:27 2006
@@ -57,14 +57,14 @@
 
         int actionCount;
 
-        Integer actionValue = (Integer) service.getAttribute(ATTRIBUTE_NAME);
+        Integer actionValue = (Integer) service.getUserService().getAttribute(ATTRIBUTE_NAME);
         if (null == actionValue) {
             actionValue = new Integer(0);
-            service.setAttribute(ATTRIBUTE_NAME, actionValue);
+            service.getUserService().setAttribute(ATTRIBUTE_NAME, actionValue);
             actionCount = 0;
         } else {
             actionCount = actionValue.intValue() + 1;
-            service.setAttribute(ATTRIBUTE_NAME, new Integer(actionCount));
+            service.getUserService().setAttribute(ATTRIBUTE_NAME, new Integer(actionCount));
         }
 
         final Request request = ObjectModelHelper.getRequest( service.getProcessInfoProvider().getObjectModel() );

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/impl/DefaultEventConverter.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/impl/DefaultEventConverter.java?rev=432969&r1=432968&r2=432969&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/impl/DefaultEventConverter.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/impl/DefaultEventConverter.java Sun Aug 20 07:03:27 2006
@@ -164,7 +164,7 @@
             }
             return o.toString() + ':' + data;
         }
-        List list = (List)this.portalService.getAttribute(EVENT_LIST);
+        List list = (List)this.portalService.getUserService().getAttribute(EVENT_LIST);
         if ( null == list ) {
             list = new ArrayList();
         }
@@ -172,7 +172,7 @@
         if ( index == -1 ) {
             list.add(event);
             index = list.size() - 1;
-            this.portalService.setAttribute(EVENT_LIST, list);
+            this.portalService.getUserService().setAttribute(EVENT_LIST, list);
         }
         return String.valueOf(index);
     }
@@ -213,7 +213,7 @@
                     return converter.decode(data);
                 }
             }
-            List list = (List)this.portalService.getAttribute(EVENT_LIST);
+            List list = (List)this.portalService.getUserService().getAttribute(EVENT_LIST);
             if ( null != list ) {
                 int index = new Integer(value).intValue();
                 if (index < list.size()) {

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/user/UserDidLoginEvent.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/user/UserDidLoginEvent.java?rev=432969&r1=432968&r2=432969&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/user/UserDidLoginEvent.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/user/UserDidLoginEvent.java Sun Aug 20 07:03:27 2006
@@ -15,7 +15,7 @@
  */
 package org.apache.cocoon.portal.event.user;
 
-import org.apache.cocoon.portal.profile.PortalUser;
+import org.apache.cocoon.portal.om.PortalUser;
 
 /**
  * This event is send when a new user logs into the portal.

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/user/UserEvent.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/user/UserEvent.java?rev=432969&r1=432968&r2=432969&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/user/UserEvent.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/user/UserEvent.java Sun Aug 20 07:03:27 2006
@@ -16,7 +16,7 @@
 package org.apache.cocoon.portal.event.user;
 
 import org.apache.cocoon.portal.event.Event;
-import org.apache.cocoon.portal.profile.PortalUser;
+import org.apache.cocoon.portal.om.PortalUser;
 
 /**
  * This interface marks an event as a user related event.

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/user/UserEventUtil.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/user/UserEventUtil.java?rev=432969&r1=432968&r2=432969&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/user/UserEventUtil.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/user/UserEventUtil.java Sun Aug 20 07:03:27 2006
@@ -17,7 +17,7 @@
 
 import org.apache.cocoon.portal.PortalService;
 import org.apache.cocoon.portal.event.Event;
-import org.apache.cocoon.portal.profile.PortalUser;
+import org.apache.cocoon.portal.om.PortalUser;
 
 /**
  * Utility class for user events.

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/user/UserIsAccessingEvent.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/user/UserIsAccessingEvent.java?rev=432969&r1=432968&r2=432969&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/user/UserIsAccessingEvent.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/user/UserIsAccessingEvent.java Sun Aug 20 07:03:27 2006
@@ -15,7 +15,7 @@
  */
 package org.apache.cocoon.portal.event.user;
 
-import org.apache.cocoon.portal.profile.PortalUser;
+import org.apache.cocoon.portal.om.PortalUser;
 
 /**
  * This event is send when a user is accessing(using) the portal.

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/user/UserWillLogoutEvent.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/user/UserWillLogoutEvent.java?rev=432969&r1=432968&r2=432969&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/user/UserWillLogoutEvent.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/user/UserWillLogoutEvent.java Sun Aug 20 07:03:27 2006
@@ -15,7 +15,7 @@
  */
 package org.apache.cocoon.portal.event.user;
 
-import org.apache.cocoon.portal.profile.PortalUser;
+import org.apache.cocoon.portal.om.PortalUser;
 
 /**
  * This event is send when a user logs out from the portal.

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PageLabelManager.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PageLabelManager.java?rev=432969&r1=432968&r2=432969&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PageLabelManager.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PageLabelManager.java Sun Aug 20 07:03:27 2006
@@ -151,10 +151,10 @@
         PortalService service = null;
         try {
             service = (PortalService) this.manager.lookup(PortalService.ROLE);
-            Map map = (Map) service.getAttribute(EVENT_MAP);
+            Map map = (Map) service.getUserService().getAttribute(EVENT_MAP);
             if (null == map) {
                 map = new HashMap();
-                service.setAttribute(EVENT_MAP, map);
+                service.getUserService().setAttribute(EVENT_MAP, map);
             }
 
             return map;
@@ -176,10 +176,10 @@
         PortalService service = null;
         try {
             service = (PortalService) this.manager.lookup(PortalService.ROLE);
-            Map map = (Map) service.getAttribute(LABEL_MAP);
+            Map map = (Map) service.getUserService().getAttribute(LABEL_MAP);
             if (null == map) {
                 map = initializeLabels(service);
-                service.setAttribute(LABEL_MAP, map);
+                service.getUserService().setAttribute(LABEL_MAP, map);
             }
 
             List list = (List) map.get(pageLabel);
@@ -204,10 +204,10 @@
         PortalService service = null;
         try {
             service = (PortalService) this.manager.lookup(PortalService.ROLE);
-            String[] labels = (String[]) service.getAttribute(LABEL_ARRAY);
+            String[] labels = (String[]) service.getUserService().getAttribute(LABEL_ARRAY);
             if (null == labels) {
                 labels = new String[2];
-                service.setAttribute(LABEL_ARRAY, labels);
+                service.getUserService().setAttribute(LABEL_ARRAY, labels);
             }
             return labels;
         }

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PortalManagerAspectChain.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PortalManagerAspectChain.java?rev=432969&r1=432968&r2=432969&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PortalManagerAspectChain.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PortalManagerAspectChain.java Sun Aug 20 07:03:27 2006
@@ -52,7 +52,7 @@
                 PortalManagerAspect pAspect;
                 if ( role != null ) {
                     try {
-                        pAspect = (PortalManagerAspect) manager.lookup(PortalManagerAspect.ROLE + '/' + role);                        
+                        pAspect = (PortalManagerAspect) manager.lookup(PortalManagerAspect.class.getName() + '/' + role);                        
                     } catch (ServiceException se) {
                         throw new ConfigurationException("Unable to lookup aspect " + role, current, se);
                     }

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=432969&r1=432968&r2=432969&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 Sun Aug 20 07:03:27 2006
@@ -18,7 +18,7 @@
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.Enumeration;
+import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -38,10 +38,8 @@
 import org.apache.avalon.framework.service.Serviceable;
 import org.apache.avalon.framework.thread.ThreadSafe;
 import org.apache.cocoon.Constants;
-import org.apache.cocoon.components.ContextHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.environment.Session;
 import org.apache.cocoon.portal.PortalManager;
+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.EventManager;
@@ -51,6 +49,7 @@
 import org.apache.cocoon.portal.services.CopletFactory;
 import org.apache.cocoon.portal.services.LayoutFactory;
 import org.apache.cocoon.portal.services.LinkService;
+import org.apache.cocoon.portal.services.UserService;
 import org.apache.cocoon.processing.ProcessInfoProvider;
 import org.apache.excalibur.source.Source;
 import org.apache.excalibur.source.SourceResolver;
@@ -80,142 +79,59 @@
     /** The service locator. */
     protected ServiceManager manager;
 
-    /** The manager for some core portal components. */
-    protected DefaultPortalComponentManager portalComponentManager;
-
     /** The list of skins. */
     protected List skinList = new ArrayList();
 
     /** The name of the portal. */
     protected String portalName;
 
-    /** The default layout key. */
-    protected String defaultLayoutKey;
-
-    /** The attribute prefix used to prefix attributes in the session and request. */
-    protected String attributePrefix;
-
-    final protected static String KEY = PortalServiceImpl.class.getName();
-
     /** The portal configuration. */
     protected Configuration configuration;
 
-    /**
-     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
-     */
-    public void service(ServiceManager serviceManager) throws ServiceException {
-        this.manager = serviceManager;
-        this.portalComponentManager = new DefaultPortalComponentManager(this.manager);
-    }
+    /** The profile manager. */
+    protected ProfileManager profileManager;
 
-    /**
-     * @see org.apache.cocoon.portal.PortalService#getPortalName()
-     */
-    public String getPortalName() {
-        return this.portalName;
-    }
+    /** The link service. */
+    protected LinkService linkService;
 
-    /**
-     * @see org.apache.cocoon.portal.PortalService#getAttribute(java.lang.String)
-     */
-    public Object getAttribute(String key) {
-        final Session session = ContextHelper.getRequest(this.context).getSession(false);
-        if (session == null) {
-            return null;
-        }
-        return session.getAttribute( this.attributePrefix + key);
-    }
+    /** The used renderers. */
+    protected Map renderers = new HashMap();
 
-    /**
-     * @see org.apache.cocoon.portal.PortalService#setAttribute(java.lang.String, java.lang.Object)
-     */
-    public void setAttribute(String key, Object value) {
-        final Session session = ContextHelper.getRequest(this.context).getSession();
-        session.setAttribute( this.attributePrefix + key, value);
-    }
+    /** The used coplet adapters. */
+    protected Map copletAdapters = new HashMap();
 
-    /**
-     * @see org.apache.cocoon.portal.PortalService#removeAttribute(java.lang.String)
-     */
-    public Object removeAttribute(String key) {
-        final Session session = ContextHelper.getRequest(this.context).getSession(false);
-        if ( session != null ) {
-            Object value = session.getAttribute(this.attributePrefix + key);
-            if ( value != null ) {
-                session.removeAttribute( this.attributePrefix + key );
-            }
-            return value;
-        }
-        return null;
-    }
+    /** The coplet factory. */
+    protected CopletFactory copletFactory;
 
-    /**
-     * @see org.apache.cocoon.portal.PortalService#getAttributeNames()
-     */
-    public Iterator getAttributeNames() {
-        final Session session = ContextHelper.getRequest(this.context).getSession(false);
-        if ( session != null ) {
-            List names = new ArrayList();
-            Enumeration e = session.getAttributeNames();
-            final int pos = this.attributePrefix.length() + 1;
-            if ( e != null ) {
-                while ( e.hasMoreElements() ) {
-                    final String name = (String)e.nextElement();
-                    if ( name.startsWith( this.attributePrefix )) {
-                        names.add( name.substring( pos ) );
-                    }
-                }
-            }
-            return names.iterator();
-        }
-        return Collections.EMPTY_MAP.keySet().iterator();
-    }
+    /** The layout factory. */
+    protected LayoutFactory layoutFactory;
 
-    /**
-     * @see org.apache.cocoon.portal.PortalService#getTemporaryAttribute(java.lang.String)
-     */
-    public Object getTemporaryAttribute(String key) {
-        final Request request = ContextHelper.getRequest(this.context);
-        return request.getAttribute(this.attributePrefix + key);
-    }
+    /** The event manager. */
+    protected EventManager eventManager;
 
-    /**
-     * @see org.apache.cocoon.portal.PortalService#setTemporaryAttribute(java.lang.String, java.lang.Object)
-     */
-    public void setTemporaryAttribute(String key, Object value) {
-        final Request request = ContextHelper.getRequest(this.context);
-        request.setAttribute( this.attributePrefix + key, value );
-    }
+    /** The portal manager. */
+    protected PortalManager portalManager;
+
+    /** The process info provider. */
+    protected ProcessInfoProvider processInfoProvider;
+
+    /** The user service. */
+    protected UserService userService;
 
     /**
-     * @see org.apache.cocoon.portal.PortalService#removeTemporaryAttribute(java.lang.String)
+     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
      */
-    public Object removeTemporaryAttribute(String key) {
-        final Request request = ContextHelper.getRequest(this.context);
-        final Object oldValue = request.getAttribute(this.attributePrefix + key);
-        if ( oldValue != null ) {
-            request.removeAttribute( this.attributePrefix + key );
-        }
-        return oldValue;
+    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());
     }
 
     /**
-     * @see org.apache.cocoon.portal.PortalService#getTemporaryAttributeNames()
+     * @see org.apache.cocoon.portal.PortalService#getPortalName()
      */
-    public Iterator getTemporaryAttributeNames() {
-        final Request request = ContextHelper.getRequest(this.context);
-        List names = new ArrayList();
-        Enumeration e = request.getAttributeNames();
-        final int pos = this.attributePrefix.length() + 1;
-        if ( e != null ) {
-            while ( e.hasMoreElements() ) {
-                final String name = (String)e.nextElement();
-                if ( name.startsWith( this.attributePrefix )) {
-                    names.add( name.substring( pos ) );
-                }
-            }
-        }
-        return names.iterator();
+    public String getPortalName() {
+        return this.portalName;
     }
 
     /**
@@ -239,9 +155,6 @@
      * @see org.apache.avalon.framework.activity.Disposable#dispose()
      */
     public void dispose() {
-        if ( this.portalComponentManager != null ) {
-            this.portalComponentManager.dispose();
-        }
         // remove the portal service from the servlet context - if available
         if ( this.context != null ) {
             try {
@@ -251,6 +164,31 @@
                 // we ignore the context exception
             }
         }
+        if ( this.manager != null ) {
+            this.renderers.clear();
+            Iterator i = this.copletAdapters.values().iterator();
+            while (i.hasNext()) {
+                this.manager.release(i.next());
+            }
+            this.copletAdapters.clear();
+            this.manager.release(this.profileManager);
+            this.profileManager = null;
+            this.manager.release(this.linkService);
+            this.linkService = null;
+            this.manager.release(this.copletFactory);
+            this.copletFactory = null;
+            this.manager.release(this.layoutFactory);
+            this.layoutFactory = null;
+            this.manager.release(this.eventManager);
+            this.eventManager = null;
+            this.manager.release(this.portalManager);
+            this.portalManager = null;
+            this.manager.release(this.processInfoProvider);
+            this.processInfoProvider = null;
+            this.manager.release(this.userService);
+            this.userService = null;
+            this.manager = null;
+        }
     }
 
     /**
@@ -262,8 +200,6 @@
             throw new ConfigurationException("No portal configured.", config);
         }
         this.portalName = portal.getAttribute("name");
-        this.defaultLayoutKey = portal.getAttribute("default-layout-key", "portal");
-        this.attributePrefix = this.getClass().getName() + '/' + this.portalName + '/';
         this.configuration = portal.getChild("configuration");
         this.configureSkins(this.getConfiguration(org.apache.cocoon.portal.Constants.CONFIGURATION_SKINS_PATH,
                                                   org.apache.cocoon.portal.Constants.DEFAULT_CONFIGURATION_SKINS_PATH));
@@ -316,29 +252,6 @@
     }
 
     /**
-     * @see org.apache.cocoon.portal.PortalService#setDefaultLayoutKey(java.lang.String)
-     */
-    public void setDefaultLayoutKey(String layoutKey) {
-        if ( layoutKey == null ) {
-            this.removeAttribute("default-layout-key");
-        } else {
-            this.setAttribute("default-layout-key", layoutKey);
-        }
-    }
-
-    /**
-     * @see org.apache.cocoon.portal.PortalService#getDefaultLayoutKey()
-     */
-    public String getDefaultLayoutKey() {
-        String key = (String)this.getAttribute("default-layout-key");
-        if ( key == null ) {
-            key = this.defaultLayoutKey;
-            this.setDefaultLayoutKey(key);
-        }
-        return key;
-    }
-
-    /**
      * @see org.apache.cocoon.portal.PortalService#getSkinDescriptions()
      */
     public List getSkinDescriptions() {
@@ -367,72 +280,134 @@
     }
 
     /**
-     * @see org.apache.cocoon.portal.PortalComponentManager#getCopletAdapter(java.lang.String)
+     * @see org.apache.cocoon.portal.PortalService#getLinkService()
      */
-    public CopletAdapter getCopletAdapter(String name) {
-        return this.portalComponentManager.getCopletAdapter(name);
+    public LinkService getLinkService() {
+        if ( null == this.linkService ) {
+            try {
+                this.linkService = (LinkService)this.manager.lookup( LinkService.class.getName() );
+            } catch (ServiceException e) {
+                throw new PortalRuntimeException("Unable to lookup link service.", e);
+            }
+        }
+        return this.linkService;
     }
 
     /**
-     * @see org.apache.cocoon.portal.PortalComponentManager#getCopletFactory()
+     * @see org.apache.cocoon.portal.PortalService#getProfileManager()
      */
-    public CopletFactory getCopletFactory() {
-        return this.portalComponentManager.getCopletFactory();
+    public ProfileManager getProfileManager() {
+        if ( null == this.profileManager ) {
+            try {
+                this.profileManager = (ProfileManager)this.manager.lookup( ProfileManager.class.getName() );
+            } catch (ServiceException e) {
+                throw new PortalRuntimeException("Unable to lookup profile manager.", e);
+            }
+        }
+        return this.profileManager;
     }
 
     /**
-     * @see org.apache.cocoon.portal.PortalComponentManager#getEventManager()
+     * @see org.apache.cocoon.portal.PortalService#getEventManager()
      */
     public EventManager getEventManager() {
-        return this.portalComponentManager.getEventManager();
+        if ( null == this.eventManager ) {
+            try {
+                this.eventManager = (EventManager)this.manager.lookup( EventManager.ROLE );
+            } catch (ServiceException e) {
+                throw new PortalRuntimeException("Unable to lookup event manager.", e);
+            }
+        }
+        return this.eventManager;
     }
 
     /**
-     * @see org.apache.cocoon.portal.PortalComponentManager#getLayoutFactory()
+     * @see org.apache.cocoon.portal.PortalService#getRenderer(java.lang.String)
      */
-    public LayoutFactory getLayoutFactory() {
-        return this.portalComponentManager.getLayoutFactory();
+    public Renderer getRenderer(String name) {
+        final Renderer o = (Renderer) this.renderers.get( name );
+        if ( o == null ) {
+            throw new PortalRuntimeException("Unable to lookup renderer with name " + name);
+        }
+        return o;
     }
 
     /**
-     * @see org.apache.cocoon.portal.PortalComponentManager#getLinkService()
+     * @see org.apache.cocoon.portal.PortalService#getCopletAdapter(java.lang.String)
      */
-    public LinkService getLinkService() {
-        return this.portalComponentManager.getLinkService();
+    public CopletAdapter getCopletAdapter(String name) {
+        CopletAdapter o = (CopletAdapter) this.copletAdapters.get( name );
+        if ( o == null ) {
+            try {
+                o = (CopletAdapter) this.manager.lookup( CopletAdapter.ROLE + '/' + name );
+                this.copletAdapters.put( name, o );
+            } catch (ServiceException e) {
+                throw new PortalRuntimeException("Unable to lookup coplet adapter with name " + name, e);
+            }
+        }
+        return o;
     }
 
     /**
-     * @see org.apache.cocoon.portal.PortalComponentManager#getPortalManager()
+     * @see org.apache.cocoon.portal.PortalService#getCopletFactory()
      */
-    public PortalManager getPortalManager() {
-        return this.portalComponentManager.getPortalManager();
+    public CopletFactory getCopletFactory() {
+        if ( null == this.copletFactory ) {
+            try {
+                this.copletFactory = (CopletFactory)this.manager.lookup( CopletFactory.class.getName() );
+            } catch (ServiceException e) {
+                throw new PortalRuntimeException("Unable to lookup coplet factory.", e);
+            }
+        }
+        return this.copletFactory;
     }
 
     /**
-     * @see org.apache.cocoon.portal.PortalComponentManager#getProfileManager()
+     * @see org.apache.cocoon.portal.PortalService#getLayoutFactory()
      */
-    public ProfileManager getProfileManager() {
-        return this.portalComponentManager.getProfileManager();
+    public LayoutFactory getLayoutFactory() {
+        if ( null == this.layoutFactory ) {
+            try {
+                this.layoutFactory = (LayoutFactory)this.manager.lookup( LayoutFactory.class.getName() );
+            } catch (ServiceException e) {
+                throw new PortalRuntimeException("Unable to lookup layout factory.", e);
+            }
+        }
+        return this.layoutFactory;
     }
 
     /**
-     * @see org.apache.cocoon.portal.PortalComponentManager#getRenderer(java.lang.String)
+     * @see org.apache.cocoon.portal.PortalService#getPortalManager()
      */
-    public Renderer getRenderer(String name) {
-        return this.portalComponentManager.getRenderer(name);
+    public PortalManager getPortalManager() {
+        if ( null == this.portalManager ) {
+            try {
+                this.portalManager = (PortalManager)this.manager.lookup( PortalManager.class.getName() );
+            } catch (ServiceException e) {
+                throw new PortalRuntimeException("Unable to lookup portal manager.", e);
+            }
+        }
+        return this.portalManager;
     }
 
     /**
-     * @see org.apache.cocoon.portal.PortalComponentManager#register(java.lang.String, org.apache.cocoon.portal.layout.renderer.Renderer)
+     * @see org.apache.cocoon.portal.PortalService#register(String, org.apache.cocoon.portal.layout.renderer.Renderer)
      */
     public void register(String name, Renderer renderer) {
-        this.portalComponentManager.register(name, renderer);
+        this.renderers.put(name, renderer);
     }
 
     /**
-     * @see org.apache.cocoon.portal.PortalComponentManager#getProcessInfoProvider()
+     * @see org.apache.cocoon.portal.PortalService#getProcessInfoProvider()
      */
     public ProcessInfoProvider getProcessInfoProvider() {
-        return this.portalComponentManager.getProcessInfoProvider();
+        return this.processInfoProvider;
+    }
+
+    /**
+     * @see org.apache.cocoon.portal.PortalService#getUserService()
+     */
+    public UserService getUserService() {
+        return this.userService;
     }
 }

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/om/CopletInstanceFeatures.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/om/CopletInstanceFeatures.java?rev=432969&r1=432968&r2=432969&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/om/CopletInstanceFeatures.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/om/CopletInstanceFeatures.java Sun Aug 20 07:03:27 2006
@@ -66,7 +66,7 @@
     }
 
     public static List getChangedCopletInstanceDataObjects(PortalService service) {
-        List list = (List)service.getTemporaryAttribute(CHANGED_COPLETS_ATTRIBUTE_NAME);
+        List list = (List)service.getUserService().getTemporaryAttribute(CHANGED_COPLETS_ATTRIBUTE_NAME);
         if ( list == null ) {
             return Collections.EMPTY_LIST;
         }
@@ -75,14 +75,14 @@
 
     public static void addChangedCopletInstanceData(PortalService service,
                                                     CopletInstance cid) {
-        List list = (List)service.getTemporaryAttribute(CHANGED_COPLETS_ATTRIBUTE_NAME);
+        List list = (List)service.getUserService().getTemporaryAttribute(CHANGED_COPLETS_ATTRIBUTE_NAME);
         if ( list == null ) {
             list = new ArrayList();
         }
         if ( !list.contains(cid) ) {
             list.add(cid);
         }
-        service.setTemporaryAttribute(CHANGED_COPLETS_ATTRIBUTE_NAME, list);
+        service.getUserService().setTemporaryAttribute(CHANGED_COPLETS_ATTRIBUTE_NAME, list);
     }
 
     public static String sizeToString(int value) {

Copied: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/om/PortalUser.java (from r432835, cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/PortalUser.java)
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/om/PortalUser.java?p2=cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/om/PortalUser.java&p1=cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/PortalUser.java&r1=432835&r2=432969&rev=432969&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/PortalUser.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/om/PortalUser.java Sun Aug 20 07:03:27 2006
@@ -13,9 +13,10 @@
  * 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.om;
 
 import java.security.Principal;
+import java.util.Collection;
 import java.util.Map;
 
 /**
@@ -32,9 +33,9 @@
     boolean isAnonymous();
 
     /**
-     * @return Returns the group.
+     * @return Return all groups.
      */
-    String getGroup();
+    Collection getGroups();
 
     /**
      * @return Returns the userName.
@@ -75,4 +76,10 @@
      * @return A string specifying the mechanism or null.
      */
     String getAuthType();
+
+    /**
+     * Return the default layout key for this user.
+     * @return The default layout key or null if the portal wide default should be used.
+     */
+    String getDefaultLayoutKey();
 }

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ProfileManager.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ProfileManager.java?rev=432969&r1=432968&r2=432969&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ProfileManager.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ProfileManager.java Sun Aug 20 07:03:27 2006
@@ -33,8 +33,6 @@
  */
 public interface ProfileManager {
 
-    String ROLE = ProfileManager.class.getName();
-
     /**
      * Get the portal layout defined by the layout id.
      * @param layoutID    The id of a layout object or null for the root object
@@ -92,9 +90,4 @@
      * Get a specific coplet type for the current user.
      */
     CopletType getCopletType(String id);
-
-    /**
-     * Get current user information.
-     */
-    PortalUser getUser();
 }

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/AbstractPortalUser.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/AbstractPortalUser.java?rev=432969&r1=432968&r2=432969&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/AbstractPortalUser.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/AbstractPortalUser.java Sun Aug 20 07:03:27 2006
@@ -17,10 +17,11 @@
 
 import java.io.Serializable;
 import java.security.Principal;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.Map;
 
-import org.apache.cocoon.portal.profile.PortalUser;
+import org.apache.cocoon.portal.om.PortalUser;
 
 /**
  * Information about the current user.
@@ -35,7 +36,7 @@
     /** The unique name of the user. */
     protected String userName;
 
-    protected String group;
+    protected Collection groups = Collections.EMPTY_LIST;
 
     protected Map userInfo = Collections.EMPTY_MAP;
 
@@ -47,7 +48,7 @@
     }
 
     /**
-     * @see org.apache.cocoon.portal.profile.PortalUser#isAnonymous()
+     * @see org.apache.cocoon.portal.om.PortalUser#isAnonymous()
      */
     public boolean isAnonymous() {
         return this.anonymous;
@@ -58,17 +59,17 @@
     }
 
     /**
-     * @return Returns the group.
+     * @see org.apache.cocoon.portal.om.PortalUser#getGroups()
      */
-    public String getGroup() {
-        return group;
+    public Collection getGroups() {
+        return groups;
     }
 
     /**
      * @param group The group to set.
      */
-    public void setGroup(String group) {
-        this.group = group;
+    public void setGroups(Collection groups) {
+        this.groups = groups;
     }
 
     /**
@@ -86,21 +87,21 @@
     }
 
     /**
-     * @see org.apache.cocoon.portal.profile.PortalUser#getUserInfo(java.lang.String)
+     * @see org.apache.cocoon.portal.om.PortalUser#getUserInfo(java.lang.String)
      */
     public Object getUserInfo(String key) {
         return this.userInfo.get(key);
     }
 
     /**
-     * @see org.apache.cocoon.portal.profile.PortalUser#getUserInfos()
+     * @see org.apache.cocoon.portal.om.PortalUser#getUserInfos()
      */
     public Map getUserInfos() {
         return this.userInfo;
     }
 
     public void setUserInfos(Map infos) {
-        if ( infos == null ) {
+        if ( infos == null || infos.size() == 0) {
             this.userInfo = Collections.EMPTY_MAP;
         } else {
             this.userInfo = Collections.unmodifiableMap(infos);
@@ -108,16 +109,23 @@
     }
 
     /**
-     * @see org.apache.cocoon.portal.profile.PortalUser#getUserPrincipal()
+     * @see org.apache.cocoon.portal.om.PortalUser#getUserPrincipal()
      */
     public Principal getUserPrincipal() {
         return null;
     }
 
     /**
-     * @see org.apache.cocoon.portal.profile.PortalUser#getAuthType()
+     * @see org.apache.cocoon.portal.om.PortalUser#getAuthType()
      */
     public String getAuthType() {
+        return null;
+    }
+
+    /**
+     * @see org.apache.cocoon.portal.om.PortalUser#getDefaultLayoutKey()
+     */
+    public String getDefaultLayoutKey() {
         return null;
     }
 }

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=432969&r1=432968&r2=432969&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 Sun Aug 20 07:03:27 2006
@@ -38,7 +38,7 @@
 import org.apache.cocoon.portal.om.CopletLayout;
 import org.apache.cocoon.portal.om.Item;
 import org.apache.cocoon.portal.om.Layout;
-import org.apache.cocoon.portal.profile.PortalUser;
+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;
@@ -52,9 +52,6 @@
     extends AbstractComponent 
     implements ProfileManager, Receiver, Configurable {
 
-    /** Attribute to store the current user. */
-    public static final String USER_ATTRIBUTE = AbstractProfileManager.class.getName() + "/User";
-
     /** The configuration. */
     protected Configuration configuration;
 
@@ -100,7 +97,6 @@
      * @see Receiver
      */
     public void inform(UserEvent event, PortalService service) {
-        this.portalService.setTemporaryAttribute(USER_ATTRIBUTE, event.getPortalUser());
         if ( event instanceof UserDidLoginEvent ) {
             this.login(event.getPortalUser());
         } else if ( event instanceof UserWillLogoutEvent ) {

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java?rev=432969&r1=432968&r2=432969&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java Sun Aug 20 07:03:27 2006
@@ -44,7 +44,7 @@
 import org.apache.cocoon.portal.om.CopletType;
 import org.apache.cocoon.portal.om.Layout;
 import org.apache.cocoon.portal.om.LayoutInstance;
-import org.apache.cocoon.portal.profile.PortalUser;
+import org.apache.cocoon.portal.om.PortalUser;
 import org.apache.cocoon.portal.profile.ProfileException;
 import org.apache.cocoon.portal.profile.ProfileLS;
 import org.apache.cocoon.portal.scratchpad.Profile;
@@ -132,28 +132,28 @@
 
     protected ProfileImpl getUserProfile(String layoutKey) {
         if ( layoutKey == null ) {
-            layoutKey = this.portalService.getDefaultLayoutKey();
+            layoutKey = this.portalService.getUserService().getDefaultLayoutKey();
         }
 
-        return (ProfileImpl)this.portalService.getAttribute(KEY_PREFIX + layoutKey);
+        return (ProfileImpl)this.portalService.getUserService().getAttribute(KEY_PREFIX + layoutKey);
     }
 
     protected void removeUserProfiles() {
         // TODO: remove all profiles - we have to rememember all used layout keys
-        final String layoutKey = this.portalService.getDefaultLayoutKey();
+        final String layoutKey = this.portalService.getUserService().getDefaultLayoutKey();
 
-        this.portalService.removeAttribute(KEY_PREFIX + layoutKey);
+        this.portalService.getUserService().removeAttribute(KEY_PREFIX + layoutKey);
     }
 
     protected void storeUserProfile(String layoutKey, Profile profile) {
         if ( layoutKey == null ) {
-            layoutKey = this.portalService.getDefaultLayoutKey();
+            layoutKey = this.portalService.getUserService().getDefaultLayoutKey();
         }
-        this.portalService.setAttribute(KEY_PREFIX + layoutKey, profile);
+        this.portalService.getUserService().setAttribute(KEY_PREFIX + layoutKey, profile);
     }
 
     /**
-     * @see org.apache.cocoon.portal.profile.impl.AbstractProfileManager#login(org.apache.cocoon.portal.profile.PortalUser)
+     * @see org.apache.cocoon.portal.profile.impl.AbstractProfileManager#login(org.apache.cocoon.portal.om.PortalUser)
      */
     protected void login(PortalUser user) {
         super.login(user);
@@ -163,7 +163,7 @@
     }
 
     /**
-     * @see org.apache.cocoon.portal.profile.impl.AbstractProfileManager#logout(org.apache.cocoon.portal.profile.PortalUser)
+     * @see org.apache.cocoon.portal.profile.impl.AbstractProfileManager#logout(org.apache.cocoon.portal.om.PortalUser)
      */
     protected void logout(PortalUser user) {
         final Profile profile = this.getUserProfile(null);
@@ -279,7 +279,7 @@
     }
 
     public Layout getLayout(String layoutId) {
-        final String layoutKey = this.portalService.getDefaultLayoutKey();
+        final String layoutKey = this.portalService.getUserService().getDefaultLayoutKey();
 
         Profile profile = this.getUserProfile(layoutKey);
         if ( profile == null ) {
@@ -325,7 +325,7 @@
      */
     protected Profile loadProfile(final String layoutKey) 
     throws Exception {
-        final PortalUser info = (PortalUser)this.portalService.getTemporaryAttribute(USER_ATTRIBUTE);
+        final PortalUser info = this.portalService.getUserService().getUser();
         ProfileImpl profile = new ProfileImpl(layoutKey);
 
         // first "load" the global data
@@ -334,7 +334,7 @@
 
         // now load the user/group specific data
         if ( !this.getCopletInstanceDatas(profile, info, CATEGORY_USER, layoutKey) ) {
-            if ( info.getGroup() == null || !this.getCopletInstanceDatas(profile, info, CATEGORY_GROUP, layoutKey)) {
+            if ( info.getGroups().size() == 0 || !this.getCopletInstanceDatas(profile, info, CATEGORY_GROUP, layoutKey)) {
                 if ( !this.getCopletInstanceDatas(profile, info, CATEGORY_GLOBAL, layoutKey) ) {
                     throw new ProcessingException("No profile for copletinstancedatas found.");
                 }
@@ -342,7 +342,7 @@
         }
 
         if ( !this.getLayout(profile, info, CATEGORY_USER, layoutKey) ) {
-            if ( info.getGroup() == null || !this.getLayout(profile, info, CATEGORY_GROUP, layoutKey)) {
+            if ( info.getGroups().size() == 0 || !this.getLayout(profile, info, CATEGORY_GROUP, layoutKey)) {
                 if ( !this.getLayout(profile, info, CATEGORY_GLOBAL, layoutKey) ) {
                     throw new ProcessingException("No profile for layout found.");
                 }
@@ -541,7 +541,9 @@
         key.put("layout", layoutKey);
         key.put("type", category);
         if ( CATEGORY_GROUP.equals(category) ) {
-            key.put("group", info.getGroup());
+            // TODO Groups is a collection!
+            key.put("group", "none");
+            //key.put("group", info.getGroups());
         } else if ( CATEGORY_USER.equals(category) ) {
             key.put("user", info.getUserName());
         }
@@ -550,24 +552,17 @@
     }
 
     /**
-     * @see org.apache.cocoon.portal.profile.ProfileManager#getUser()
-     */
-    public PortalUser getUser() {
-        return (PortalUser)this.portalService.getTemporaryAttribute(USER_ATTRIBUTE);
-    }
-
-    /**
      * @see org.apache.cocoon.portal.profile.impl.AbstractProfileManager#saveUserCopletInstanceDatas(java.lang.String)
      */
     public void saveUserCopletInstanceDatas(String layoutKey) {
         try {
             if (layoutKey == null) {
-                layoutKey = this.portalService.getDefaultLayoutKey();
+                layoutKey = this.portalService.getUserService().getDefaultLayoutKey();
             }
             final ProfileImpl profile = this.getUserProfile(layoutKey);
             final Map key = this.buildKey(CATEGORY_USER,
                                           ProfileLS.PROFILETYPE_COPLETINSTANCE,
-                                          this.getUser(),
+                                          this.portalService.getUserService().getUser(),
                                           false,
                                           layoutKey);
             this.loader.saveProfile(key, ProfileLS.PROFILETYPE_COPLETINSTANCE, profile.getCopletInstances());
@@ -583,12 +578,12 @@
     public void saveUserLayout(String layoutKey) {
         try {
             if (layoutKey == null) {
-                layoutKey = this.portalService.getDefaultLayoutKey();
+                layoutKey = this.portalService.getUserService().getDefaultLayoutKey();
             }
             final Profile profile = this.getUserProfile(layoutKey);
             final Map key = this.buildKey(CATEGORY_USER,
                                           ProfileLS.PROFILETYPE_LAYOUT, 
-                                          this.getUser(), 
+                                          this.portalService.getUserService().getUser(),
                                           false,
                                           layoutKey);
             this.loader.saveProfile(key, ProfileLS.PROFILETYPE_LAYOUT, profile.getRootLayout());
@@ -615,7 +610,7 @@
         if ( this.copletTypes.objects == null ) {
             try {
                 // first "load" the global data
-                this.getGlobalBaseDatas(this.portalService.getDefaultLayoutKey());
+                this.getGlobalBaseDatas(this.portalService.getUserService().getDefaultLayoutKey());
             } catch (Exception e) {
                 throw new ProfileException("Unable to load global base datas.", e);
             }            

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/StaticProfileManager.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/StaticProfileManager.java?rev=432969&r1=432968&r2=432969&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/StaticProfileManager.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/StaticProfileManager.java Sun Aug 20 07:03:27 2006
@@ -31,7 +31,6 @@
 import org.apache.cocoon.portal.om.Item;
 import org.apache.cocoon.portal.om.Layout;
 import org.apache.cocoon.portal.om.LayoutInstance;
-import org.apache.cocoon.portal.profile.PortalUser;
 import org.apache.cocoon.portal.profile.ProfileLS;
 import org.apache.cocoon.portal.profile.ProfileException;
 import org.apache.cocoon.portal.PortalRuntimeException;
@@ -56,18 +55,16 @@
 
     protected static final String LAYOUTKEY_PREFIX = StaticProfileManager.class.getName() + "/Layout/";
 
-    protected final PortalUser portalUser = new StaticPortalUser();
-
     /**
      * @see org.apache.cocoon.portal.profile.ProfileManager#getLayout(java.lang.String)
      */
     public Layout getLayout(String layoutID) {
         ProfileLS adapter = null;
         try {
-            final String layoutKey = this.portalService.getDefaultLayoutKey();
+            final String layoutKey = this.portalService.getUserService().getDefaultLayoutKey();
 
             String serviceKey = LAYOUTKEY_PREFIX + layoutKey;
-            Object[] objects = (Object[]) this.portalService.getAttribute(serviceKey);
+            Object[] objects = (Object[]) this.portalService.getUserService().getAttribute(serviceKey);
 
             // check if the layout is already cached and still valid
             int valid = SourceValidity.INVALID;
@@ -113,7 +110,7 @@
             // store the new values in the service
             if (newValidity != null) {
                 objects = new Object[] { layouts, newValidity };
-                this.portalService.setAttribute(serviceKey, objects);
+                this.portalService.getUserService().setAttribute(serviceKey, objects);
             }
 
             return (Layout) layouts.get(layoutID);
@@ -303,28 +300,6 @@
             return this.getCopletInstanceDataManager();
         } catch (Exception e) {
             throw new ProfileException("Error in getCopletInstanceDatas.", e);
-        }
-    }
-
-    /**
-     * @see org.apache.cocoon.portal.profile.ProfileManager#getUser()
-     */
-    public PortalUser getUser() {
-        return this.portalUser;
-    }
-
-    protected static final class StaticPortalUser extends AbstractPortalUser {
-
-        public StaticPortalUser() {
-            this.setUserName("static");
-            this.setAnonymous(true);
-        }
-
-        /**
-         * @see org.apache.cocoon.portal.profile.PortalUser#isUserInRole(java.lang.String)
-         */
-        public boolean isUserInRole(String role) {
-            return false;
         }
     }
 

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/CopletFactory.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/CopletFactory.java?rev=432969&r1=432968&r2=432969&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/CopletFactory.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/CopletFactory.java Sun Aug 20 07:03:27 2006
@@ -27,8 +27,6 @@
  */
 public interface CopletFactory  {
 
-    String ROLE = CopletFactory.class.getName();
-
     /** 
      * Create a new coplet instance.
      * This is also registered at the profile manager.

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/LayoutFactory.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/LayoutFactory.java?rev=432969&r1=432968&r2=432969&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/LayoutFactory.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/LayoutFactory.java Sun Aug 20 07:03:27 2006
@@ -29,8 +29,6 @@
  */
 public interface LayoutFactory  {
 
-    String ROLE = LayoutFactory.class.getName();
-
     /**
      * Return all available types.
      */

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/LinkService.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/LinkService.java?rev=432969&r1=432968&r2=432969&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/LinkService.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/LinkService.java Sun Aug 20 07:03:27 2006
@@ -27,8 +27,6 @@
  */
 public interface LinkService {
 
-    String ROLE = LinkService.class.getName();
-
     String DEFAULT_REQUEST_EVENT_PARAMETER_NAME = "cocoon-portal-event";
 
     static class ParameterDescription {

Added: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/UserService.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/UserService.java?rev=432969&view=auto
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/UserService.java (added)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/UserService.java Sun Aug 20 07:03:27 2006
@@ -0,0 +1,92 @@
+/*
+ * 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;
+
+import java.util.Collection;
+
+import org.apache.cocoon.portal.om.PortalUser;
+
+
+/**
+ * The user service provides access to the portal user object (which is a wrapper around the
+ * portal application specific user object).
+ * The user service can store user specific attributes which have the lifetime of the user
+ * session or the current request (temporary attributes).
+ *
+ * @version $Id$
+ */
+public interface UserService {
+
+    /**
+     * Get current user object.
+     */
+    PortalUser getUser();
+
+    /**
+     * Return the value of an attribute.
+     * @param key The key of the attribute
+     * @return The value of the attribute or null.
+     */
+    Object getAttribute(String key);
+
+    /**
+     * Set an attribute.
+     * @param key    The key of the attribute
+     * @param value  The new value
+     */
+    void setAttribute(String key, Object value);
+
+    /**
+     * Remove an attribute.
+     * @param key The key of the attribute
+     */
+    Object removeAttribute(String key);
+
+    /**
+     * Return the names of all attributes.
+     */
+    Collection getAttributeNames();
+
+    /**
+     * Return the value of a temporary attribute.
+     * @param key The key of the attribute
+     * @return The value of the attribute or null.
+     */
+    Object getTemporaryAttribute(String key);
+
+    /**
+     * Set a temporary attribute.
+     * @param key    The key of the attribute
+     * @param value  The new value
+     */
+    void setTemporaryAttribute(String key, Object value);
+
+    /**
+     * Remove a temporary attribute.
+     * @param key The key of the attribute
+     */
+    Object removeTemporaryAttribute(String key);
+
+    /**
+     * Return the names of all temporary attributes.
+     */
+    Collection getTemporaryAttributeNames();
+
+    /**
+     * Return the default layout key for the specific user.
+     */
+    String getDefaultLayoutKey();
+}
\ No newline at end of file

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

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

Added: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/DefaultUserService.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/DefaultUserService.java?rev=432969&view=auto
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/DefaultUserService.java (added)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/DefaultUserService.java Sun Aug 20 07:03:27 2006
@@ -0,0 +1,215 @@
+/*
+ * 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.impl;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.cocoon.components.ContextHelper;
+import org.apache.cocoon.environment.Request;
+import org.apache.cocoon.environment.Session;
+import org.apache.cocoon.portal.PortalService;
+import org.apache.cocoon.portal.event.Receiver;
+import org.apache.cocoon.portal.event.user.UserEvent;
+import org.apache.cocoon.portal.impl.AbstractComponent;
+import org.apache.cocoon.portal.om.PortalUser;
+import org.apache.cocoon.portal.services.UserService;
+
+
+/**
+ * @version $Id$
+ */
+public class DefaultUserService
+    extends AbstractComponent
+    implements UserService, Receiver {
+
+    /** Attribute to store the current user. */
+    protected static final String USER_ATTRIBUTE = DefaultUserService.class.getName() + "/User";
+
+    /** The attribute prefix used to prefix attributes in the session and request. */
+    protected String attributeName;
+
+    /** The default layout key. */
+    protected String defaultLayoutKey;
+
+    /**
+     * @see org.apache.cocoon.portal.impl.AbstractComponent#initialize()
+     */
+    public void initialize() throws Exception {
+        super.initialize();
+        this.attributeName = DefaultUserService.class.getName() + '/' + this.portalService.getPortalName();
+        this.defaultLayoutKey = this.portalService.getConfiguration("default-layout-key", "portal");
+    }
+
+    /**
+     * Receives any user related event and invokes login, logout etc.
+     * @see Receiver
+     */
+    public void inform(UserEvent event, PortalService service) {
+        this.setTemporaryAttribute(USER_ATTRIBUTE, event.getPortalUser());
+    }
+
+    protected Map getSessionMap() {
+        final Session session = ContextHelper.getRequest(this.context).getSession(false);
+        if ( session == null ) {
+            return null;
+        }
+        final Map map = (Map) session.getAttribute(this.attributeName);
+        return map;
+    }
+
+    protected Map getRequestMap() {
+        final Request request = ContextHelper.getRequest(this.context);
+        final Map map = (Map) request.getAttribute(this.attributeName);
+        return map;
+    }
+
+    protected void setSessionMap(Map map) {
+        final Session session = ContextHelper.getRequest(this.context).getSession(true);
+        session.setAttribute(this.attributeName, map);
+    }
+
+    protected void setRequestMap(Map map) {
+        final Request request = ContextHelper.getRequest(this.context);
+        request.setAttribute(this.attributeName, map);
+    }
+
+    /**
+     * @see org.apache.cocoon.portal.services.UserService#getAttribute(java.lang.String)
+     */
+    public Object getAttribute(String key) {
+        Map map = this.getSessionMap();
+        if ( map != null ) {
+            return map.get(key);
+        }
+        return null;
+    }
+
+    /**
+     * @see org.apache.cocoon.portal.services.UserService#getAttributeNames()
+     */
+    public Collection getAttributeNames() {
+        Map map = this.getSessionMap();
+        if ( map != null ) {
+            return map.keySet();
+        }
+        return Collections.EMPTY_LIST;
+    }
+
+    /**
+     * @see org.apache.cocoon.portal.services.UserService#getTemporaryAttribute(java.lang.String)
+     */
+    public Object getTemporaryAttribute(String key) {
+        Map map = this.getRequestMap();
+        if ( map != null ) {
+            return map.get(key);
+        }
+        return null;
+    }
+
+    /**
+     * @see org.apache.cocoon.portal.services.UserService#getTemporaryAttributeNames()
+     */
+    public Collection getTemporaryAttributeNames() {
+        Map map = this.getRequestMap();
+        if ( map != null ) {
+            return map.keySet();
+        }
+        return Collections.EMPTY_LIST;
+    }
+
+    /**
+     * @see org.apache.cocoon.portal.services.UserService#getUser()
+     */
+    public PortalUser getUser() {
+        return (PortalUser)this.getTemporaryAttribute(USER_ATTRIBUTE);
+    }
+
+    /**
+     * @see org.apache.cocoon.portal.services.UserService#removeAttribute(java.lang.String)
+     */
+    public Object removeAttribute(String key) {
+        Map map = this.getSessionMap();
+        if ( map != null ) {
+            final Object result = map.remove(key);
+            this.setSessionMap(map);
+            return result;
+        }
+        return null;
+    }
+
+    /**
+     * @see org.apache.cocoon.portal.services.UserService#removeTemporaryAttribute(java.lang.String)
+     */
+    public Object removeTemporaryAttribute(String key) {
+        Map map = this.getRequestMap();
+        if ( map != null ) {
+            final Object result = map.remove(key);
+            this.setRequestMap(map);
+            return result;
+        }
+        return null;
+    }
+
+    /**
+     * @see org.apache.cocoon.portal.services.UserService#setAttribute(java.lang.String, java.lang.Object)
+     */
+    public void setAttribute(String key, Object value) {
+        Map map = this.getSessionMap();
+        if ( map == null ) {
+            synchronized ( this ) {
+                map = this.getSessionMap();
+                if ( map == null ) {
+                    map = new HashMap();
+                    this.setSessionMap(map);
+                }
+            }
+        }
+        map.put(key, value);
+        this.setSessionMap(map);
+    }
+
+    /**
+     * @see org.apache.cocoon.portal.services.UserService#setTemporaryAttribute(java.lang.String, java.lang.Object)
+     */
+    public void setTemporaryAttribute(String key, Object value) {
+        Map map = this.getRequestMap();
+        if ( map == null ) {
+            synchronized ( this ) {
+                map = this.getRequestMap();
+                if ( map == null ) {
+                    map = new HashMap();
+                    this.setRequestMap(map);
+                }
+            }
+        }
+        map.put(key, value);
+        this.setRequestMap(map);
+    }
+
+    /**
+     * @see org.apache.cocoon.portal.services.UserService#getDefaultLayoutKey()
+     */
+    public String getDefaultLayoutKey() {
+        String key = this.getUser().getDefaultLayoutKey();
+        if ( key == null ) {
+            return this.defaultLayoutKey;
+        }
+        return key;
+    }
+}
\ No newline at end of file

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

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

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/resources/org/apache/cocoon/portal/portal.roles
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/resources/org/apache/cocoon/portal/portal.roles?rev=432969&r1=432968&r2=432969&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/resources/org/apache/cocoon/portal/portal.roles (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/resources/org/apache/cocoon/portal/portal.roles Sun Aug 20 07:03:27 2006
@@ -183,6 +183,14 @@
           shorthand="portal-manager"/>
 
   <!--+
+      | User Service.
+      |
+      +-->
+    <role name="org.apache.cocoon.portal.services.UserService"
+          default-class="org.apache.cocoon.portal.services.impl.DefaultUserService"
+          shorthand="user-service"/>
+
+  <!--+
       | Event Manager.
       |
       +-->

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/PortletPreferencesProviderImpl.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/PortletPreferencesProviderImpl.java?rev=432969&r1=432968&r2=432969&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/PortletPreferencesProviderImpl.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/PortletPreferencesProviderImpl.java Sun Aug 20 07:03:27 2006
@@ -97,7 +97,7 @@
         key.put("portal", this.portalService.getPortalName());
         key.put("type", "user");
         key.put("instance", "copletId");
-        key.put("user", this.portalService.getProfileManager().getUser().getUserName());
+        key.put("user", this.portalService.getUserService().getUser().getUserName());
 
         return key;
     }

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/TestProfileManager.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/TestProfileManager.java?rev=432969&r1=432968&r2=432969&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/TestProfileManager.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/TestProfileManager.java Sun Aug 20 07:03:27 2006
@@ -31,7 +31,7 @@
 import org.apache.cocoon.portal.om.CopletInstance;
 import org.apache.cocoon.portal.om.CopletLayout;
 import org.apache.cocoon.portal.om.Item;
-import org.apache.cocoon.portal.profile.PortalUser;
+import org.apache.cocoon.portal.om.PortalUser;
 import org.apache.cocoon.portal.profile.impl.GroupBasedProfileManager;
 import org.apache.cocoon.portal.scratchpad.Profile;
 import org.apache.cocoon.portal.scratchpad.ProfileImpl;
@@ -58,7 +58,7 @@
 
     protected Profile loadProfile(final String layoutKey) 
     throws Exception {
-        final PortalUser info = (PortalUser)this.portalService.getTemporaryAttribute(USER_ATTRIBUTE);
+        final PortalUser info = this.portalService.getUserService().getUser();
         if ( info.getUserName().equals("test") ) {
             // if the request parameter 'portletName' is available we only
             // display the portlets specified with the parameter. Otherwise