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/03/14 21:45:09 UTC
svn commit: r385883 - in
/cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal:
pluto/ pluto/om/ profile/impl/
Author: cziegeler
Date: Tue Mar 14 12:45:07 2006
New Revision: 385883
URL: http://svn.apache.org/viewcvs?rev=385883&view=rev
Log:
Continue work on preferences
Modified:
cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/PortletPreferencesProvider.java
cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/PortletPreferencesProviderImpl.java
cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/om/PortletEntityImpl.java
cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java
Modified: cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/PortletPreferencesProvider.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/PortletPreferencesProvider.java?rev=385883&r1=385882&r2=385883&view=diff
==============================================================================
--- cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/PortletPreferencesProvider.java (original)
+++ cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/PortletPreferencesProvider.java Tue Mar 14 12:45:07 2006
@@ -25,5 +25,5 @@
PreferenceSet getPreferenceSet(CopletInstanceData cid);
- void storePreferenceSet(CopletInstanceData cid);
+ void storePreferenceSet(CopletInstanceData cid, PreferenceSet prefs);
}
Modified: cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/PortletPreferencesProviderImpl.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/PortletPreferencesProviderImpl.java?rev=385883&r1=385882&r2=385883&view=diff
==============================================================================
--- cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/PortletPreferencesProviderImpl.java (original)
+++ cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/PortletPreferencesProviderImpl.java Tue Mar 14 12:45:07 2006
@@ -15,26 +15,51 @@
*/
package org.apache.cocoon.portal.pluto;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.avalon.framework.parameters.ParameterException;
+import org.apache.avalon.framework.parameters.Parameterizable;
+import org.apache.avalon.framework.parameters.Parameters;
import org.apache.avalon.framework.service.ServiceException;
import org.apache.avalon.framework.service.ServiceManager;
import org.apache.cocoon.portal.coplet.CopletInstanceData;
import org.apache.cocoon.portal.impl.AbstractComponent;
import org.apache.cocoon.portal.pluto.om.common.PreferenceSetImpl;
import org.apache.cocoon.portal.profile.ProfileLS;
+import org.apache.commons.collections.map.LinkedMap;
import org.apache.pluto.om.common.PreferenceSet;
/**
- * FIXME - We will use the ProfileLS for this with our own type:
+ * FIXME - Configure this component and test it.
+ * This component manages the portlet preferences for a user.
+ * The default implementation will read/write one xml document
+ * for all instances of a portlet (TODO).
+ * In future version we will provide different implementations
+ * based on the coplet configuration: the preferences can then
+ * either be per instance or per user!
+ *
* $Id$
*/
public class PortletPreferencesProviderImpl
extends AbstractComponent
- implements PortletPreferencesProvider {
+ implements Parameterizable, PortletPreferencesProvider {
protected static final String PROFILETYPE_PREFERENCES = "portletpreferences";
+ /** The component for loading/saving the profiles. */
protected ProfileLS loader;
+ /** The configuration for this component. */
+ protected Parameters configuration;
+
+ /**
+ * @see org.apache.avalon.framework.parameters.Parameterizable#parameterize(org.apache.avalon.framework.parameters.Parameters)
+ */
+ public void parameterize(Parameters params) throws ParameterException {
+ this.configuration = params;
+ }
+
/**
* @see org.apache.cocoon.portal.impl.AbstractComponent#dispose()
*/
@@ -54,22 +79,54 @@
this.loader = (ProfileLS)this.manager.lookup(ProfileLS.ROLE);
}
+ protected Map buildKey(boolean load, String copletId)
+ throws ParameterException {
+ final StringBuffer config = new StringBuffer(PROFILETYPE_PREFERENCES);
+ config.append('-');
+ config.append("user");
+ config.append('-');
+ if ( load ) {
+ config.append("load");
+ } else {
+ config.append("save");
+ }
+ final String uri = this.configuration.getParameter(config.toString());
+
+ final Map key = new LinkedMap();
+ key.put("baseuri", uri);
+ key.put("separator", "?");
+ key.put("portal", this.portalService.getPortalName());
+ key.put("type", "user");
+ key.put("instance", "copletId");
+ key.put("user", this.portalService.getProfileManager().getUser().getUserName());
+
+ return key;
+ }
+
/**
* @see org.apache.cocoon.portal.pluto.PortletPreferencesProvider#getPreferenceSet(org.apache.cocoon.portal.coplet.CopletInstanceData)
*/
public PreferenceSet getPreferenceSet(CopletInstanceData cid) {
- //final Map parameters = new HashMap();
- //parameters.put(ProfileLS.PARAMETER_PROFILETYPE, PROFILETYPE_PREFERENCES);
- //this.loader.loadProfile(key, parameters);
+ final Map parameters = new HashMap();
+ parameters.put(ProfileLS.PARAMETER_PROFILETYPE, PROFILETYPE_PREFERENCES);
+ try {
+ return (PreferenceSet)this.loader.loadProfile(this.buildKey(true, cid.getId()), parameters);
+ } catch (Exception ignore) {
+ // we ignore all exceptions for now (TODO)
+ }
return new PreferenceSetImpl();
}
/**
- * @see org.apache.cocoon.portal.pluto.PortletPreferencesProvider#storePreferenceSet(org.apache.cocoon.portal.coplet.CopletInstanceData)
+ * @see org.apache.cocoon.portal.pluto.PortletPreferencesProvider#storePreferenceSet(org.apache.cocoon.portal.coplet.CopletInstanceData, org.apache.pluto.om.common.PreferenceSet)
*/
- public void storePreferenceSet(CopletInstanceData cid) {
- //final Map parameters = new HashMap();
- //parameters.put(ProfileLS.PARAMETER_PROFILETYPE, PROFILETYPE_PREFERENCES);
- //this.loader.loadProfile(key, parameters);
+ public void storePreferenceSet(CopletInstanceData cid, PreferenceSet prefs) {
+ final Map parameters = new HashMap();
+ parameters.put(ProfileLS.PARAMETER_PROFILETYPE, PROFILETYPE_PREFERENCES);
+ try {
+ this.loader.saveProfile(this.buildKey(false, cid.getId()), parameters, prefs);
+ } catch (Exception ignore) {
+ // we ignore all exceptions for now (TODO)
+ }
}
}
Modified: cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/om/PortletEntityImpl.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/om/PortletEntityImpl.java?rev=385883&r1=385882&r2=385883&view=diff
==============================================================================
--- cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/om/PortletEntityImpl.java (original)
+++ cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/om/PortletEntityImpl.java Tue Mar 14 12:45:07 2006
@@ -45,6 +45,8 @@
protected final PortalService service;
protected final PortletPreferencesProvider prefProvider;
+ protected static final String ATTR_PREFERENCES = PortletEntityImpl.class.getName() + "/Preferences";
+
/**
* Constructor.
*/
@@ -101,7 +103,12 @@
* @see org.apache.pluto.om.entity.PortletEntity#getPreferenceSet()
*/
public PreferenceSet getPreferenceSet() {
- return this.prefProvider.getPreferenceSet(this.coplet);
+ PreferenceSet prefs = (PreferenceSet)this.coplet.getTemporaryAttribute(ATTR_PREFERENCES);
+ if ( prefs == null ) {
+ prefs = this.prefProvider.getPreferenceSet(this.coplet);
+ this.coplet.setTemporaryAttribute(ATTR_PREFERENCES, prefs);
+ }
+ return prefs;
}
/**
@@ -137,7 +144,7 @@
* @see org.apache.pluto.om.entity.PortletEntityCtrl#store()
*/
public void store() throws IOException {
- this.prefProvider.storePreferenceSet(this.coplet);
+ this.prefProvider.storePreferenceSet(this.coplet, (PreferenceSet)this.coplet.getTemporaryAttribute(ATTR_PREFERENCES));
}
}
Modified: cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java?rev=385883&r1=385882&r2=385883&view=diff
==============================================================================
--- cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java (original)
+++ cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java Tue Mar 14 12:45:07 2006
@@ -562,7 +562,7 @@
}
/**
- * @see org.apache.cocoon.portal.profile.ProfileManager#saveUserCopletInstanceDatas(java.lang.String)
+ * @see org.apache.cocoon.portal.profile.impl.AbstractProfileManager#saveUserCopletInstanceDatas(java.lang.String)
*/
public void saveUserCopletInstanceDatas(String layoutKey) {
try {
@@ -588,7 +588,7 @@
}
/**
- * @see org.apache.cocoon.portal.profile.ProfileManager#saveUserLayout(java.lang.String)
+ * @see org.apache.cocoon.portal.profile.impl.AbstractProfileManager#saveUserLayout(java.lang.String)
*/
public void saveUserLayout(String layoutKey) {
try {