You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by rg...@apache.org on 2004/11/24 19:53:25 UTC

svn commit: r106442 - in cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal: coplet layout pluto/om pluto/om/common pluto/test profile profile/impl

Author: rgoers
Date: Wed Nov 24 10:53:23 2004
New Revision: 106442

URL: http://svn.apache.org/viewcvs?view=rev&rev=106442
Log:
Added support for JSR-168 Portlet Preferences. Saving and rereading user profiles also works properly.

Modified:
   cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/CopletInstanceData.java
   cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/copletinstancedata.xml
   cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractLayout.java
   cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractParameters.java
   cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/layout.xml
   cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/pluto/om/PortletApplicationDefinitionImpl.java
   cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/pluto/om/PortletEntityImpl.java
   cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/pluto/om/common/PreferenceSetImpl.java
   cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/pluto/om/portletdefinitionmapping.xml
   cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/pluto/test/TestPortlet.java
   cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/ProfileManager.java
   cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java
   cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AuthenticationProfileManager.java

Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/CopletInstanceData.java
Url: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/CopletInstanceData.java?view=diff&rev=106442&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/CopletInstanceData.java&r1=106441&p2=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/CopletInstanceData.java&r2=106442
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/CopletInstanceData.java	(original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/CopletInstanceData.java	Wed Nov 24 10:53:23 2004
@@ -17,8 +17,16 @@
 
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Collection;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.Iterator;
 
 import org.apache.cocoon.portal.factory.impl.AbstractProducible;
+import org.apache.cocoon.portal.pluto.om.common.PreferenceSetImpl;
+import org.apache.cocoon.portal.profile.ProfileManager;
+import org.apache.cocoon.portal.util.AttributedMapItem;
+import org.apache.pluto.om.common.PreferenceSet;
 
 
 /**
@@ -39,6 +47,11 @@
     /** Temporary attributes are not persisted */
     protected Map temporaryAttributes = new HashMap();
 
+    /** Portlet preferences */
+    protected PreferenceSetImpl preferences = new PreferenceSetImpl();
+
+    protected ProfileManager profileManager;
+
     private String title = null;
 
 	/**
@@ -79,6 +92,24 @@
         return this.attributes;
     }
 
+    public final Collection getCastorAttributes() {
+        Set set = new HashSet(this.attributes.size());
+        Iterator iterator = this.attributes.entrySet().iterator();
+        Map.Entry entry;
+        while (iterator.hasNext()) {
+            entry = (Map.Entry) iterator.next();
+            AttributedMapItem item = new AttributedMapItem();
+            item.setKey((String) entry.getKey());
+            item.setValue((String) entry.getValue());
+            set.add(item);
+        }
+        return set;
+    }
+
+    public void addAttribute(AttributedMapItem item) {
+        this.attributes.put(item.getKey(), item.getValue());
+    }
+
     public Object getTemporaryAttribute(String key) {
         return this.temporaryAttributes.get(key);
     }
@@ -110,6 +141,31 @@
         this.title = title;
     }
 
+    public void setPreferences(PreferenceSetImpl preferences) {
+        this.preferences = preferences;
+    }
+
+    public PreferenceSet getPreferences() {
+        return this.preferences;
+    }
+
+    public PreferenceSet getCastorPreferences() {
+        return getPreferences();
+    }
+
+    public void setCastorPreferences(PreferenceSet castorPreferences) {
+        setPreferences((PreferenceSetImpl)castorPreferences);
+    }
+
+    public void setProfileManager(ProfileManager manager) {
+        this.profileManager = manager;
+    }
+
+    public ProfileManager getProfileManager() {
+        return this.profileManager;
+    }
+
+
     /* (non-Javadoc)
      * @see java.lang.Object#clone()
      */
@@ -119,7 +175,9 @@
         clone.copletData = this.copletData;
         clone.attributes = new HashMap(this.attributes);
         clone.temporaryAttributes = new HashMap(this.temporaryAttributes);
-        
+        clone.preferences = new PreferenceSetImpl();
+        clone.preferences.addAll(this.preferences.getPreferences());
+
         return clone;
     }
     

Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/copletinstancedata.xml
Url: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/copletinstancedata.xml?view=diff&rev=106442&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/copletinstancedata.xml&r1=106441&p2=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/copletinstancedata.xml&r2=106442
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/copletinstancedata.xml	(original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/copletinstancedata.xml	Wed Nov 24 10:53:23 2004
@@ -33,6 +33,25 @@
         </field>
     </class>
 
+  <class name="org.apache.cocoon.portal.pluto.om.common.PreferenceImpl">
+    <field name="name" type="java.lang.String" required="true">
+      <bind-xml name="name" node="element"/>
+    </field>
+    <field name="castorValues" type="java.lang.String" collection="collection" required="true">
+      <bind-xml name="value" node="element"/>
+    </field>
+
+  </class>
+
+
+  <class name="org.apache.cocoon.portal.pluto.om.common.PreferenceSetImpl">
+    <field name="preferences" type="org.apache.cocoon.portal.pluto.om.common.PreferenceImpl"
+      collection="set">
+      <bind-xml name="preference" node="element"/>
+    </field>
+
+  </class>
+
 	<class name="org.apache.cocoon.portal.profile.impl.CopletInstanceDataManager">
 		<map-to xml="coplets" />
 
@@ -47,10 +66,15 @@
 
 		<field name="copletData" type="java.lang.String" handler="org.apache.cocoon.portal.util.CopletDataReferenceFieldHandler"/>
 
-		<field name="attributes" type="org.exolab.castor.mapping.MapItem" collection="map" handler="org.apache.cocoon.portal.util.AttributesFieldHandler">
-			<bind-xml name="attribute"/>
+		<field name="attributes" type="org.apache.cocoon.portal.util.AttributedMapItem" collection="collection"
+           get-method="getCastorAttributes" set-method="addAttribute">
+			<bind-xml name="attribute" node="element"/>
 		</field>
 
+    <field name="castorPreferences" type="org.apache.cocoon.portal.pluto.om.common.PreferenceSetImpl">
+      <bind-xml name="preferences" node="element"/>
+    </field>
+
     <field name="title" type="java.lang.String" get-method="getInstanceTitle" set-method="setTitle">
       <bind-xml name="title"/>
     </field>
@@ -65,6 +89,16 @@
 			<bind-xml name="value"/>
 		</field>
 	</class>
+
+  <class name="org.apache.cocoon.portal.util.AttributedMapItem">
+    <field name="key" type="java.lang.String">
+      <bind-xml name="name" node="attribute"/>
+    </field>
+
+    <field name="value">
+      <bind-xml name="value" node="attribute"/>
+    </field>
+  </class>
 
 </mapping>
 

Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractLayout.java
Url: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractLayout.java?view=diff&rev=106442&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractLayout.java&r1=106441&p2=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractLayout.java&r2=106442
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractLayout.java	(original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractLayout.java	Wed Nov 24 10:53:23 2004
@@ -16,9 +16,15 @@
 package org.apache.cocoon.portal.layout;
 
 import java.util.Map;
+import java.util.Collection;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.Iterator;
 
 import org.apache.cocoon.portal.factory.impl.AbstractProducible;
+import org.apache.cocoon.portal.pluto.om.common.ParameterImpl;
 import org.apache.commons.collections.map.LinkedMap;
+import org.apache.pluto.om.common.Parameter;
 
 /**
  *
@@ -27,7 +33,7 @@
  * 
  * @version CVS $Id$
  */
-public abstract class AbstractLayout 
+public abstract class AbstractLayout
     extends AbstractProducible 
     implements Layout, Parameters {
     
@@ -42,6 +48,27 @@
      */
     public final Map getParameters() {
         return parameters;
+    }
+
+    public final Set getCastorParameters()
+    {
+        Set set = new HashSet(this.parameters.size());
+        Iterator iterator = this.parameters.entrySet().iterator();
+        Map.Entry entry;
+        while (iterator.hasNext())
+        {
+            entry = (Map.Entry) iterator.next();
+            ParameterImpl param = new ParameterImpl();
+            param.setName((String) entry.getKey());
+            param.setValue((String) entry.getValue());
+            set.add(param);
+        }
+        return set;
+    }
+
+    public void addParameter(Parameter parameter)
+    {
+        parameters.put(parameter.getName(), parameter.getValue());
     }
 
     /**

Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractParameters.java
Url: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractParameters.java?view=diff&rev=106442&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractParameters.java&r1=106441&p2=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractParameters.java&r2=106442
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractParameters.java	(original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractParameters.java	Wed Nov 24 10:53:23 2004
@@ -16,8 +16,14 @@
 package org.apache.cocoon.portal.layout;
 
 import java.util.Map;
+import java.util.Iterator;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
 
 import org.apache.commons.collections.map.LinkedMap;
+import org.apache.pluto.om.common.Parameter;
+import org.apache.cocoon.portal.pluto.om.common.ParameterImpl;
 
 /**
  *
@@ -37,7 +43,26 @@
     public final Map getParameters() {
         return parameters;
     }
-    
+
+    public final Set getCastorParameters() {
+        Set set = new HashSet(this.parameters.size());
+        Iterator iterator = this.parameters.entrySet().iterator();
+        Map.Entry entry;
+        while (iterator.hasNext())
+        {
+            entry = (Map.Entry) iterator.next();
+            ParameterImpl param = new ParameterImpl();
+            param.setName((String)entry.getKey());
+            param.setValue((String)entry.getValue());
+            set.add(param);
+        }
+        return set;
+    }
+
+    public void addParameter(Parameter parameter) {
+        parameters.put(parameter.getName(), parameter.getValue());
+    }
+
     /* (non-Javadoc)
      * @see java.lang.Object#clone()
      */

Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/layout.xml
Url: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/layout.xml?view=diff&rev=106442&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/layout.xml&r1=106441&p2=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/layout.xml&r2=106442
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/layout.xml	(original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/layout.xml	Wed Nov 24 10:53:23 2004
@@ -15,109 +15,110 @@
   limitations under the License.
 -->
 <mapping>
-    <description>Portalprofile mapping file</description>
+  <description>Portalprofile mapping file</description>
 
+  <class name="org.apache.cocoon.portal.aspect.impl.AbstractAspectalizable">
+    <field name="persistentAspectData" type="org.exolab.castor.mapping.MapItem" collection="map" handler="org.apache.cocoon.portal.util.AspectDataFieldHandler">
+      <bind-xml name="aspect"/>
+    </field>
+  </class>
+
+  <class name="org.apache.cocoon.portal.factory.impl.AbstractProducible"
+    extends="org.apache.cocoon.portal.aspect.impl.AbstractAspectalizable">
+    <field name="name" type="java.lang.String">
+      <bind-xml name="name" node="attribute"/>
+    </field>
+    <field name="id" type="java.lang.String">
+      <bind-xml name="id" node="attribute"/>
+    </field>
+  </class>
+
+  <class name="org.apache.cocoon.portal.layout.AbstractParameters">
+    <field name="parameters" type="org.apache.cocoon.portal.pluto.om.common.ParameterImpl" collection="set"
+      get-method="getCastorParameters" set-method="addParameter">
+      <bind-xml name="parameter" node="element"/>
+    </field>
+  </class>
+
+  <class name="org.apache.cocoon.portal.layout.AbstractLayout"
+    extends="org.apache.cocoon.portal.factory.impl.AbstractProducible">
+    <field name="layoutRendererName" type="java.lang.String">
+      <bind-xml name="layout-renderer-name" node="attribute"/>
+    </field>
+    <field name="parameters" type="org.apache.cocoon.portal.pluto.om.common.ParameterImpl" collection="set"
+      get-method="getCastorParameters" set-method="addParameter">
+      <bind-xml name="parameter" node="element"/>
+    </field>
+  </class>
+
+  <class name="org.apache.cocoon.portal.layout.impl.LinkLayout"
+    extends="org.apache.cocoon.portal.layout.AbstractLayout">
+    <map-to xml="link-layout"/>
+    <field name="layoutKey" type="java.lang.String">
+      <bind-xml name="layout-key" node="attribute"/>
+    </field>
+    <field name="layoutId" type="java.lang.String">
+      <bind-xml name="layout-id" node="attribute"/>
+    </field>
+  </class>
+
+  <class name="org.apache.cocoon.portal.layout.impl.CompositeLayoutImpl"
+    extends="org.apache.cocoon.portal.layout.AbstractLayout">
+    <map-to xml="composite-layout"/>
+    <field name="items" type="org.apache.cocoon.portal.layout.Item"
+      collection="collection"
+      set-method="addItem"
+      get-method="getItems">
+      <bind-xml auto-naming="deriveByClass"/>
+    </field>
+  </class>
+
+  <class name="org.apache.cocoon.portal.layout.impl.FrameLayout"
+    extends="org.apache.cocoon.portal.layout.AbstractLayout">
+    <map-to xml="frame-layout"/>
+    <field name="source" type="java.lang.String"/>
+  </class>
+
+  <class name="org.apache.cocoon.portal.layout.Item"
+    extends="org.apache.cocoon.portal.layout.AbstractParameters">
+    <field name="layout" type="org.apache.cocoon.portal.layout.Layout">
+      <bind-xml auto-naming="deriveByClass"/>
+    </field>
+  </class>
+
+  <class name="org.apache.cocoon.portal.layout.NamedItem"
+    extends="org.apache.cocoon.portal.layout.Item">
+    <map-to xml="named-item"/>
+    <field name="name" type="java.lang.String">
+      <bind-xml name="name" node="attribute"/>
+    </field>
+  </class>
+
+  <class name="org.apache.cocoon.portal.pluto.om.common.ParameterImpl">
+    <field name="name" type="java.lang.String">
+      <bind-xml name="name" node="attribute"/>
+    </field>
+
+    <field name="value">
+      <bind-xml name="value" node="attribute"/>
+    </field>
+  </class>
+
+  <class name="org.exolab.castor.mapping.MapItem">
+    <field name="key" type="java.lang.String">
+      <bind-xml name="name"/>
+    </field>
+
+    <field name="value">
+      <bind-xml name="value"/>
+    </field>
+  </class>
+
+  <class name="org.apache.cocoon.portal.layout.impl.CopletLayout" auto-complete="false"
+    extends="org.apache.cocoon.portal.layout.AbstractLayout">
+    <map-to xml="coplet-layout"/>
 
-	<class name="org.apache.cocoon.portal.aspect.impl.AbstractAspectalizable">
-        <field name="persistentAspectData" type="org.exolab.castor.mapping.MapItem" collection="map" handler="org.apache.cocoon.portal.util.AspectDataFieldHandler">
-            <bind-xml name="aspect"/>
-        </field>
-    </class>
-
-	<class name="org.apache.cocoon.portal.factory.impl.AbstractProducible"
-	       extends="org.apache.cocoon.portal.aspect.impl.AbstractAspectalizable">
-        <field name="name" type="java.lang.String">
-            <bind-xml name="name" node="attribute" />
-        </field>
-        <field name="id" type="java.lang.String" >
-            <bind-xml name="id" node="attribute" />
-        </field>
-    </class>
-
-	<class name="org.apache.cocoon.portal.layout.AbstractParameters">
-        <field name="parameters" type="org.apache.cocoon.portal.util.AttributedMapItem" collection="map" handler="org.apache.cocoon.portal.util.ParameterFieldHandler">
-            <bind-xml name="parameter" />
-        </field>
-    </class>
-    
-    <class name="org.apache.cocoon.portal.layout.AbstractLayout"
-           extends="org.apache.cocoon.portal.factory.impl.AbstractProducible">
-        <field name="layoutRendererName" type="java.lang.String">
-            <bind-xml name="layout-renderer-name" node="attribute" />
-        </field>
-        <field name="parameters" type="org.exolab.castor.mapping.MapItem" collection="map" handler="org.apache.cocoon.portal.util.ParameterFieldHandler">
-            <bind-xml name="parameter" />
-        </field>
-    </class>
-    
-    <class name="org.apache.cocoon.portal.layout.impl.LinkLayout"
-           extends="org.apache.cocoon.portal.layout.AbstractLayout">
-        <map-to xml="link-layout" />
-        <field name="layoutKey" type="java.lang.String">
-            <bind-xml name="layout-key" node="attribute" />
-        </field>
-        <field name="layoutId" type="java.lang.String">
-            <bind-xml name="layout-id" node="attribute" />
-        </field>
-    </class>
-
-    <class name="org.apache.cocoon.portal.layout.impl.CompositeLayoutImpl"
-           extends="org.apache.cocoon.portal.layout.AbstractLayout">
-        <map-to xml="composite-layout"/>
-        <field name="items" type="org.apache.cocoon.portal.layout.Item" 
-               collection="collection" 
-               set-method="addItem"
-               get-method="getItems">
-            <bind-xml auto-naming="deriveByClass" />
-        </field>
-    </class>
-
-   <class name="org.apache.cocoon.portal.layout.impl.FrameLayout"
-           extends="org.apache.cocoon.portal.layout.AbstractLayout">
-        <map-to xml="frame-layout" />
-        <field name="source" type="java.lang.String" />
-    </class>
-
-    <class name="org.apache.cocoon.portal.layout.Item"
-           extends="org.apache.cocoon.portal.layout.AbstractParameters">
-        <field name="layout" type="org.apache.cocoon.portal.layout.Layout">
-            <bind-xml auto-naming="deriveByClass" />
-        </field>
-    </class>
-
-    <class name="org.apache.cocoon.portal.layout.NamedItem"
-           extends="org.apache.cocoon.portal.layout.Item">
-        <map-to xml="named-item" />
-        <field name="name" type="java.lang.String">
-            <bind-xml name="name" node="attribute" />
-        </field>
-    </class>
-
-	<class name="org.exolab.castor.mapping.MapItem">
-		<field name="key" type="java.lang.String">
-			<bind-xml name="name"/>
-		</field>
-
-		<field name="value">
-			<bind-xml name="value"/>
-		</field>
-	</class>
-
-	<class name="org.apache.cocoon.portal.util.AttributedMapItem">
-		<field name="key" type="java.lang.String">
-			<bind-xml name="name" node="attribute"/>
-		</field>
-
-		<field name="value" type="java.lang.String">
-			<bind-xml name="value" node="attribute"/>
-		</field>
-	</class>
-
-    <class name="org.apache.cocoon.portal.layout.impl.CopletLayout" auto-complete="false"
-           extends="org.apache.cocoon.portal.layout.AbstractLayout">
-        <map-to xml="coplet-layout" />
-
-		<field name="copletInstanceData" type="java.lang.String" handler="org.apache.cocoon.portal.util.CopletInstanceDataReferenceFieldHandler"/>
-    </class>
+    <field name="copletInstanceData" type="java.lang.String" handler="org.apache.cocoon.portal.util.CopletInstanceDataReferenceFieldHandler"/>
+  </class>
 
 </mapping>

Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/pluto/om/PortletApplicationDefinitionImpl.java
Url: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/pluto/om/PortletApplicationDefinitionImpl.java?view=diff&rev=106442&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/pluto/om/PortletApplicationDefinitionImpl.java&r1=106441&p2=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/pluto/om/PortletApplicationDefinitionImpl.java&r2=106442
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/pluto/om/PortletApplicationDefinitionImpl.java	(original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/pluto/om/PortletApplicationDefinitionImpl.java	Wed Nov 24 10:53:23 2004
@@ -26,6 +26,7 @@
 import org.apache.pluto.om.servlet.WebApplicationDefinition;
 import org.apache.cocoon.portal.pluto.om.common.AbstractSupportSet;
 import org.apache.cocoon.portal.pluto.om.common.Support;
+import org.apache.cocoon.portal.PortalService;
 
 /**
  * 
@@ -42,8 +43,9 @@
 
     protected String appId;
     protected String version;
+    protected PortletDefinitionRegistryImpl registry;
+
 
-    
     private ArrayList customPortletMode = new ArrayList();
     private ArrayList customPortletState = new ArrayList();
     private ArrayList userAttribute = new ArrayList();
@@ -56,6 +58,22 @@
     private ObjectID objectId;
 
     private String contextPath;
+
+    /*
+     * (non-Javadoc)
+     * @return The PortletDefinitionRegistryImpl.
+     */
+    public PortletDefinitionRegistryImpl getRegistry() {
+        return this.registry;
+    }
+
+    /*
+     * (non-Javadoc)
+     * @param service The PortletDefnitionRegistryImpl.
+     */
+    public void setRegistry(PortletDefinitionRegistryImpl registry) {
+        this.registry = registry;
+    }
 
     /* (non-Javadoc)
      * @see org.apache.pluto.om.portlet.PortletApplicationDefinition#getId()

Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/pluto/om/PortletEntityImpl.java
Url: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/pluto/om/PortletEntityImpl.java?view=diff&rev=106442&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/pluto/om/PortletEntityImpl.java&r1=106441&p2=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/pluto/om/PortletEntityImpl.java&r2=106442
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/pluto/om/PortletEntityImpl.java	(original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/pluto/om/PortletEntityImpl.java	Wed Nov 24 10:53:23 2004
@@ -19,6 +19,7 @@
 import java.util.Locale;
 
 import org.apache.cocoon.portal.coplet.CopletInstanceData;
+import org.apache.cocoon.portal.pluto.om.common.PreferenceSetImpl;
 import org.apache.pluto.om.common.Description;
 import org.apache.pluto.om.common.ObjectID;
 import org.apache.pluto.om.common.PreferenceSet;
@@ -33,7 +34,7 @@
  *
  * @author <a href="mailto:cziegeler@apache.org">Carsten Ziegeler</a>
  * 
- * @version CVS $Id: PortletEntityImpl.java,v 1.2 2004/03/05 13:02:15 bdelacretaz Exp $
+ * @version CVS $Id$
  */
 public class PortletEntityImpl implements PortletEntity, PortletEntityCtrl {
 
@@ -95,7 +96,7 @@
      * @see org.apache.pluto.om.entity.PortletEntity#getPreferenceSet()
      */
     public PreferenceSet getPreferenceSet() {
-        return this.definition.getPreferenceSet();
+        return this.coplet.getPreferences();
     }
 
     /**
@@ -110,28 +111,28 @@
      * @see org.apache.pluto.om.entity.PortletEntityCtrl#reset()
      */
     public void reset() throws IOException {
-        // TODO Auto-generated method stub
+        // This method doesn't seem to be called by anything.
     }
 
     /* (non-Javadoc)
      * @see org.apache.pluto.om.entity.PortletEntityCtrl#setId(java.lang.String)
      */
     public void setId(String id) {
-        // TODO Auto-generated method stub
+        // This method doesn't seem to be called by anything.
     }
 
-    /* (non-Javadoc)
+    /* (non-Javadoc) This method doesn't seem to be called by anything.
      * @see org.apache.pluto.om.entity.PortletEntityCtrl#setPortletDefinition(org.apache.pluto.om.portlet.PortletDefinition)
      */
     public void setPortletDefinition(PortletDefinition portletDefinition) {
-        // TODO Auto-generated method stub
+        // This method doesn't seem to be called by anything
     }
 
     /* (non-Javadoc)
      * @see org.apache.pluto.om.entity.PortletEntityCtrl#store()
      */
     public void store() throws IOException {
-        // TODO Auto-generated method stub
+        coplet.getProfileManager().saveUserCopletInstance(null);
     }
 
 }

Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/pluto/om/common/PreferenceSetImpl.java
Url: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/pluto/om/common/PreferenceSetImpl.java?view=diff&rev=106442&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/pluto/om/common/PreferenceSetImpl.java&r1=106441&p2=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/pluto/om/common/PreferenceSetImpl.java&r2=106442
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/pluto/om/common/PreferenceSetImpl.java	(original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/pluto/om/common/PreferenceSetImpl.java	Wed Nov 24 10:53:23 2004
@@ -19,6 +19,7 @@
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Set;
 
 import javax.portlet.PreferencesValidator;
 
@@ -34,17 +35,18 @@
  * 
  * @version CVS $Id$
  */
-public class PreferenceSetImpl extends HashSet
+public class PreferenceSetImpl
 implements PreferenceSet, PreferenceSetCtrl, java.io.Serializable {
 
     private String castorPreferencesValidator; 
     private ClassLoader classLoader;
+    private Set preferences = new HashSet();
 
     // PreferenceSet implementation.
 
     public Preference get(String name)
     {
-        Iterator iterator = this.iterator();
+        Iterator iterator = this.preferences.iterator();
         while (iterator.hasNext()) {
             Preference preference = (Preference)iterator.next();
             if (preference.getName().equals(name)) {
@@ -54,6 +56,10 @@
         return null;
     }
 
+    public Iterator iterator() {
+        return this.preferences.iterator();
+    }
+
     public PreferencesValidator getPreferencesValidator()
     {
         if (this.classLoader == null)
@@ -80,18 +86,23 @@
         preference.setName(name);
         preference.setValues(values);
 
-        super.add(preference);
+        this.preferences.add(preference);
 
         return preference;
     }
 
+    public boolean add(Preference preference) {
+        return this.preferences.add(preference);
+    }
+
+
     public Preference remove(String name)
     {
         Iterator iterator = this.iterator();
         while (iterator.hasNext()) {
             Preference preference = (Preference)iterator.next();
             if (preference.getName().equals(name)) {
-                super.remove(preference);
+                this.preferences.remove(preference);
                 return preference;
             }
         }
@@ -100,7 +111,7 @@
 
     public void remove(Preference preference)
     {
-        super.remove(preference);
+        this.preferences.remove(preference);
     }
 
     // additional methods.
@@ -136,9 +147,9 @@
         this.castorPreferencesValidator = castorPreferencesValidator;
     }
 
-    public Collection getCastorPreferences()
+    public Set getPreferences()
     {
-        return this;
+        return this.preferences;
     }
 
     public void setClassLoader(ClassLoader loader)

Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/pluto/om/portletdefinitionmapping.xml
Url: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/pluto/om/portletdefinitionmapping.xml?view=diff&rev=106442&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/pluto/om/portletdefinitionmapping.xml&r1=106441&p2=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/pluto/om/portletdefinitionmapping.xml&r2=106442
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/pluto/om/portletdefinitionmapping.xml	(original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/pluto/om/portletdefinitionmapping.xml	Wed Nov 24 10:53:23 2004
@@ -104,7 +104,7 @@
 
   <class name="org.apache.cocoon.portal.pluto.om.common.PreferenceSetImpl">
       
-    <field name="castorPreferences" type="org.apache.cocoon.portal.pluto.om.common.PreferenceImpl" collection="collection">
+    <field name="preferences" type="org.apache.cocoon.portal.pluto.om.common.PreferenceImpl" collection="set">
       <bind-xml name="portlet:preference" node="element"/>
     </field>
     <field name="castorPreferencesValidator" type="java.lang.String">
@@ -172,8 +172,7 @@
       <bind-xml name="portlet:portlet-info" node="element"/>
     </field>
 
-   <field name="castorPreferences"
-           type="org.apache.cocoon.portal.pluto.om.common.PreferenceSetImpl">
+   <field name="castorPreferences" type="org.apache.cocoon.portal.pluto.om.common.PreferenceSetImpl">
       <bind-xml name="portlet:portlet-preferences" node="element"/>
     </field>
     <field name="castorInitSecurityRoleRefs"

Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/pluto/test/TestPortlet.java
Url: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/pluto/test/TestPortlet.java?view=diff&rev=106442&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/pluto/test/TestPortlet.java&r1=106441&p2=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/pluto/test/TestPortlet.java&r2=106442
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/pluto/test/TestPortlet.java	(original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/pluto/test/TestPortlet.java	Wed Nov 24 10:53:23 2004
@@ -17,6 +17,8 @@
 
 import java.io.IOException;
 import java.io.Writer;
+import java.util.Map;
+import java.util.Iterator;
 
 import javax.portlet.ActionRequest;
 import javax.portlet.ActionResponse;
@@ -28,13 +30,14 @@
 import javax.portlet.RenderRequest;
 import javax.portlet.RenderResponse;
 import javax.portlet.WindowState;
+import javax.portlet.PortletPreferences;
 
 /**
  * This is a very simple test portlet
  *
  * @author <a href="mailto:cziegeler@apache.org">Carsten Ziegeler</a>
  * 
- * @version CVS $Id: TestPortlet.java,v 1.6 2004/03/16 15:56:43 cziegeler Exp $
+ * @version CVS $Id$
  */
 public class TestPortlet implements Portlet  {
     
@@ -57,7 +60,19 @@
      */
     public void processAction(ActionRequest req, ActionResponse res)
     throws PortletException, IOException {
-        // nothing to do
+
+        PortletPreferences prefs = req.getPreferences();
+        String key = req.getParameter("name");
+        String value = req.getParameter("value");
+        if (key != null && value != null) {
+            prefs.setValue(key, value);
+            try {
+              prefs.store();
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+         // nothing to do
     }
 
     /* (non-Javadoc)
@@ -72,12 +87,46 @@
         writer.write("<p>I'm running in: " + req.getPortalContext().getPortalInfo());
         writer.write("<p>Current portlet mode: " + req.getPortletMode() + "</p>");
         writer.write("<p>Current window state: " + req.getWindowState() + "</p>");
-        writer.write("<table><tr><td>Change Portlet Mode:</td>");
+        writer.write("<p>Portlet Preferences:</p>");
+        PortletPreferences prefs = req.getPreferences();
+        Map map = prefs.getMap();
+        Iterator iter = map.keySet().iterator();
+        while (iter.hasNext()) {
+            String key = (String)iter.next();
+            String[] values = (String [])map.get(key);
+            if (values.length == 1) {
+                writer.write("    Key: " + key + " Value: " + values[0] + "<br />");
+            } else if (values.length > 1) {
+                writer.write("    Key: " + key + " Value: " + values[0] + "<br />");
+                for (int i=1; i < values.length; ++i) {
+                    writer.write("       ");
+                    for (int j=0; j < key.length(); ++j) {
+                        writer.write(" ");
+                    }
+                    writer.write(" Value: " + values[i] + "<br />");
+                }
+            } else {
+                writer.write("    Key: " + key + " Value: <br />");
+            }
+        }
+
         PortletURL url;
+        url = res.createActionURL();
+        url.setPortletMode(PortletMode.EDIT);
+
+        writer.write("<form method=\"POST\" action=\"" + url.toString() + "\"><br />");
+        writer.write("Update Preferences: <br />");
+        writer.write("  Key: <input type=\"text\" name=\"name\" size=\"16\" maxlength=\"16\">");
+        writer.write("  Value: <input type=\"text\" name=\"value\" size=\"32\" maxlength=\"32\">");
+        writer.write("<br /><input type=\"submit\" value=\"Update Preferences\"/>");
+        writer.write("</form>");
+        writer.write("<table><tr><td>Change Portlet Mode:</td>");
+
         url = res.createRenderURL();
         url.setPortletMode(PortletMode.EDIT);
         this.writeLink(writer, url, "Edit");
-        
+
+
         url = res.createRenderURL();
         url.setPortletMode(PortletMode.HELP);
         this.writeLink(writer, url, "Help");

Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/ProfileManager.java
Url: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/ProfileManager.java?view=diff&rev=106442&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/ProfileManager.java&r1=106441&p2=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/ProfileManager.java&r2=106442
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/ProfileManager.java	(original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/ProfileManager.java	Wed Nov 24 10:53:23 2004
@@ -93,7 +93,19 @@
      * Save the profile
      */
     void saveUserProfiles(String layoutKey);
-    
+
+    /**
+     * Save the layout
+     * @param layoutKey
+     */
+    void saveUserLayout(String layoutKey);
+
+    /**
+     * Save the coplet instance
+     * @param layoutKey
+     */
+    void saveUserCopletInstance(String layoutKey);
+
     /**
      * Get all instances
      */

Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java
Url: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java?view=diff&rev=106442&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java&r1=106441&p2=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java&r2=106442
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java	(original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java	Wed Nov 24 10:53:23 2004
@@ -62,7 +62,22 @@
      * @see org.apache.cocoon.portal.profile.ProfileManager#saveUserProfiles(String)
      */
     public void saveUserProfiles(String layoutKey) {
-        // overwrite in subclass
+        saveUserCopletInstance(layoutKey);
+        saveUserLayout(layoutKey);
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.cocoon.portal.profile.ProfileManager#saveUserCopletInstance(String)
+     */
+    public void saveUserCopletInstance(String layoutKey) {
+        // override in subclass
+    }
+
+    /* (non-Javadoc)
+    * @see org.apache.cocoon.portal.profile.ProfileManager#saveUserLayout(String)
+    */
+    public void saveUserLayout(String layoutKey) {
+        // override in subclass
     }
 
     /* (non-Javadoc)

Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AuthenticationProfileManager.java
Url: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AuthenticationProfileManager.java?view=diff&rev=106442&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AuthenticationProfileManager.java&r1=106441&p2=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AuthenticationProfileManager.java&r2=106442
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AuthenticationProfileManager.java	(original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AuthenticationProfileManager.java	Wed Nov 24 10:53:23 2004
@@ -135,6 +135,7 @@
         Iterator iter =  copletInstanceDataManager.getCopletInstanceData().values().iterator();
         while ( iter.hasNext() ) {
             CopletInstanceData cid = (CopletInstanceData) iter.next();
+            cid.setProfileManager(this);
             CopletAdapter adapter = null;
             try {
                 adapter = (CopletAdapter) adapterSelector.select(cid.getCopletData().getCopletBaseData().getCopletAdapterName());
@@ -146,47 +147,82 @@
         
         return layout;
     }
-    
-    public void saveUserProfiles(String layoutKey) {
-		ProfileLS adapter = null;
-		PortalService service = null;
-		try {
-			adapter = (ProfileLS) this.manager.lookup(ProfileLS.ROLE);
-			service = (PortalService) this.manager.lookup(PortalService.ROLE);
-            if ( layoutKey == null ) {
+
+    public void saveUserCopletInstance(String layoutKey) {
+        ProfileLS adapter = null;
+        PortalService service = null;
+        try {
+            adapter = (ProfileLS) this.manager.lookup(ProfileLS.ROLE);
+            service = (PortalService) this.manager.lookup(PortalService.ROLE);
+            if (layoutKey == null) {
                 layoutKey = service.getDefaultLayoutKey();
             }
-            
+
             RequestState state = this.getRequestState();
             UserHandler handler = state.getHandler();
 
-			HashMap parameters = new HashMap();
-			parameters.put("type", "user");
-            parameters.put("config", state.getApplicationConfiguration().getConfiguration("portal").getChild("profiles"));
+            HashMap parameters = new HashMap();
+            parameters.put("type", "user");
+            parameters.put("config",
+                state.getApplicationConfiguration().getConfiguration("portal").getChild("profiles"));
             parameters.put("handler", handler);
             parameters.put("profiletype", "copletinstancedata");
 
-			Map key = this.buildKey(service, parameters, layoutKey, false);
-	
-			// save coplet instance data
-            CopletInstanceDataManager profileManager = ((CopletInstanceDataManager)service.getAttribute("CopletInstanceData:" + layoutKey));
-			adapter.saveProfile(key, parameters, profileManager);
+            Map key = this.buildKey(service, parameters, layoutKey, false);
+
+            // save coplet instance data
+            CopletInstanceDataManager profileManager = ((CopletInstanceDataManager) service.getAttribute("CopletInstanceData:" +
+                layoutKey));
+            adapter.saveProfile(key, parameters, profileManager);
+        }
+        catch (Exception e) {
+            // TODO
+            throw new CascadingRuntimeException("Exception during save profile", e);
+        }
+        finally {
+            this.manager.release(adapter);
+            this.manager.release(service);
+        }
+    }
+
+    public void saveUserLayout(String layoutKey) {
+        ProfileLS adapter = null;
+        PortalService service = null;
+        try {
+            adapter = (ProfileLS) this.manager.lookup(ProfileLS.ROLE);
+            service = (PortalService) this.manager.lookup(PortalService.ROLE);
+            if (layoutKey == null) {
+                layoutKey = service.getDefaultLayoutKey();
+            }
 
-			// save coplet instance data
-			parameters.put("profiletype", "layout");
+            RequestState state = this.getRequestState();
+            UserHandler handler = state.getHandler();
+
+            HashMap parameters = new HashMap();
+            parameters.put("type", "user");
+            parameters.put("config",
+                state.getApplicationConfiguration().getConfiguration("portal").getChild("profiles"));
+            parameters.put("handler", handler);
+
+            Map key = this.buildKey(service, parameters, layoutKey, false);
+
+            // save layout data
+            parameters.put("profiletype", "layout");
             key = this.buildKey(service, parameters, layoutKey, false);
-			Layout layout = (Layout)service.getAttribute("Layout:" + layoutKey);
-			adapter.saveProfile(key, parameters, layout);
-            
-		} catch (Exception e) {
-			// TODO
-			throw new CascadingRuntimeException("Exception during save profile", e);
-		} finally {
-			this.manager.release(adapter);
-			this.manager.release(service);
-		}
+            Layout layout = (Layout) service.getAttribute("Layout:" + layoutKey);
+            adapter.saveProfile(key, parameters, layout);
+
+        }
+        catch (Exception e) {
+            // TODO
+            throw new CascadingRuntimeException("Exception during save profile", e);
+        }
+        finally {
+            this.manager.release(adapter);
+            this.manager.release(service);
+        }
     }
-    
+
 	/**
 	 * Gets a profile and applies possible user and role deltas to it.
 	 */
@@ -331,6 +367,9 @@
 			}
 
 			return new Object[] {object, Boolean.TRUE};
+        } catch (SourceNotFoundException se) {
+            this.getLogger().warn("Unable to locate profile: " + se.getMessage());
+            throw se;
         } catch (ProfileException pe) {
             this.getLogger().error("Error loading profile: " + pe.getMessage(), pe);
             throw pe;