You are viewing a plain text version of this content. The canonical link for it is here.
Posted to pluto-scm@portals.apache.org by at...@apache.org on 2008/05/04 00:02:19 UTC
svn commit: r653151 - in
/portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto:
core/ internal/ internal/impl/ spi/optional/
Author: ate
Date: Sat May 3 15:02:19 2008
New Revision: 653151
URL: http://svn.apache.org/viewvc?rev=653151&view=rev
Log:
Refactoring of Preferences:
- PortletEntity.getDefaultPreferences() moved into PortletPreferencesService
- PortletEntity.getPreferencesValidator() moved into PortletPreferencesImpl
With these changes, PortletEntity is no longer tied to InternalPortletPreference and all preferences handling is abstracted away to the core and the PortletPreferencesService
Modified:
portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/core/DefaultPortletPreferencesService.java
portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/internal/InternalPortletPreference.java
portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/internal/PortletEntity.java
portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletEntityImpl.java
portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletPreferenceImpl.java
portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletPreferencesImpl.java
portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/spi/optional/PortletPreferencesService.java
Modified: portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/core/DefaultPortletPreferencesService.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/core/DefaultPortletPreferencesService.java?rev=653151&r1=653150&r2=653151&view=diff
==============================================================================
--- portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/core/DefaultPortletPreferencesService.java (original)
+++ portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/core/DefaultPortletPreferencesService.java Sat May 3 15:02:19 2008
@@ -26,6 +26,10 @@
import org.apache.pluto.PortletContainerException;
import org.apache.pluto.PortletWindow;
import org.apache.pluto.internal.InternalPortletPreference;
+import org.apache.pluto.internal.impl.PortletPreferenceImpl;
+import org.apache.pluto.om.portlet.Portlet;
+import org.apache.pluto.om.portlet.PortletPreference;
+import org.apache.pluto.om.portlet.PortletPreferences;
import org.apache.pluto.spi.optional.PortletPreferencesService;
/**
@@ -51,7 +55,7 @@
* The in-memory portlet preferences storage: key is the preference name as
* a string, value is an array of PortletPreference objects.
*/
- private Map storage = new HashMap();
+ private Map<String,InternalPortletPreference[]> storage = new HashMap<String,InternalPortletPreference[]>();
// Constructor -------------------------------------------------------------
@@ -66,6 +70,48 @@
// PortletPreferencesService Impl ------------------------------------------
+ /**
+ * Returns an array of default preferences for a PortletWindow. The default
+ * preferences are retrieved from the portlet application descriptor.
+ * <p>
+ * Data retrieved from <code>portlet.xml</code> are injected into the domain
+ * object <code>PortletPreferenceDefinition</code>. This method converts the domain
+ * objects into <code>PortletPreference</code> objects.
+ * </p>
+ * <p>
+ * Note that if no value is bound to a given preference key,
+ * <code>PortletPreferenceDefinition.getValues()</code> will return an empty string
+ * list, but the value array of <code>PortletPreference</code> should be set
+ * to null (instead of an empty array).
+ * </p>
+ * <p>
+ * This method never returns null, but the values held by PortletPreference
+ * may be null.
+ * </p>
+ * @return the preference set
+ *
+ * @see org.apache.pluto.descriptors.portlet.PortletPreferenceDD
+ */
+ public InternalPortletPreference[] getDefaultPreferences( PortletWindow portletWindow,
+ PortletRequest request )
+ throws PortletContainerException {
+ InternalPortletPreference[] preferences = null;
+ Portlet portletD = portletWindow.getPortletEntity().getPortletDefinition();
+ PortletPreferences prefsD = portletD.getPortletPreferences();
+ if (prefsD != null && prefsD.getPortletPreferences() != null) {
+ preferences = new InternalPortletPreference[prefsD.getPortletPreferences().size()];
+ int index = 0;
+ for (PortletPreference prefD : prefsD.getPortletPreferences()) {
+ String[] values = null;
+ if (prefD.getValues() != null && prefD.getValues().size() > 0) {
+ values = prefD.getValues().toArray(new String[prefD.getValues().size()]);
+ }
+ preferences[index++] = new PortletPreferenceImpl(prefD.getName(), values, prefD.isReadOnly());
+ }
+ }
+ return preferences;
+ }
+
/**
* Returns the stored portlet preferences array. The preferences managed by
* this service should be protected from being directly accessed, so this
@@ -81,8 +127,7 @@
PortletRequest request)
throws PortletContainerException {
String key = getFormattedKey(portletWindow, request);
- InternalPortletPreference[] preferences = (InternalPortletPreference[])
- storage.get(key);
+ InternalPortletPreference[] preferences = storage.get(key);
if (preferences == null) {
if (LOG.isDebugEnabled()) {
LOG.debug("No portlet preferences found for: " + key);
@@ -159,14 +204,11 @@
new InternalPortletPreference[preferences.length];
for (int i = 0; i < preferences.length; i++) {
if (preferences[i] != null) {
- copy[i] = (InternalPortletPreference) preferences[i].clone();
+ copy[i] = preferences[i].clone();
} else {
copy[i] = null;
}
}
return copy;
}
-
-}
-
-
+}
\ No newline at end of file
Modified: portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/internal/InternalPortletPreference.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/internal/InternalPortletPreference.java?rev=653151&r1=653150&r2=653151&view=diff
==============================================================================
--- portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/internal/InternalPortletPreference.java (original)
+++ portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/internal/InternalPortletPreference.java Sat May 3 15:02:19 2008
@@ -50,6 +50,6 @@
* Clone a copy of itself.
* @return a copy of itself.
*/
- public Object clone();
+ public InternalPortletPreference clone();
}
Modified: portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/internal/PortletEntity.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/internal/PortletEntity.java?rev=653151&r1=653150&r2=653151&view=diff
==============================================================================
--- portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/internal/PortletEntity.java (original)
+++ portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/internal/PortletEntity.java Sat May 3 15:02:19 2008
@@ -16,9 +16,6 @@
*/
package org.apache.pluto.internal;
-import javax.portlet.PreferencesValidator;
-import javax.portlet.ValidatorException;
-
import org.apache.pluto.om.portlet.Portlet;
/**
@@ -30,46 +27,11 @@
*
*/
public interface PortletEntity {
-
- /**
- * Returns an array of default preferences of this portlet. The default
- * preferences are retrieved from the portlet application descriptor.
- * <p>
- * Data retrieved from <code>portlet.xml</code> are injected into the domain
- * object <code>PortletPreferenceDD</code>. This method converts the domain
- * objects into <code>PortletPreference</code> objects.
- * </p>
- * <p>
- * Note that if no value is bound to a given preference key,
- * <code>PortletPreferenceDD.getValues()</code> will return an empty string
- * list, but the value array of <code>PortletPreference</code> should be set
- * to null (instead of an empty array).
- * </p>
- * <p>
- * This method never returns null, but the values held by PortletPreference
- * may be null.
- * </p>
- * @return the preference set
- *
- * @see org.apache.pluto.descriptors.portlet.PortletPreferenceDD
- */
- public InternalPortletPreference[] getDefaultPreferences();
-
/**
* Returns the portlet description. The return value cannot be NULL.
* @return the portlet description.
*/
public Portlet getPortletDefinition();
-
- /**
- * Returns the preferences validator instance for this portlet.
- * One validator instance is created per portlet definition.
- * @return the preferences validator instance for this portlet.
- * @throws ValidatorException if fail to instantiate the validator.
- */
- public PreferencesValidator getPreferencesValidator()
- throws ValidatorException;
-
}
Modified: portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletEntityImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletEntityImpl.java?rev=653151&r1=653150&r2=653151&view=diff
==============================================================================
--- portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletEntityImpl.java (original)
+++ portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletEntityImpl.java Sat May 3 15:02:19 2008
@@ -16,22 +16,12 @@
*/
package org.apache.pluto.internal.impl;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
import javax.portlet.PreferencesValidator;
import javax.portlet.ValidatorException;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.apache.pluto.core.PreferencesValidatorRegistry;
-import org.apache.pluto.internal.InternalPortletPreference;
import org.apache.pluto.internal.PortletEntity;
import org.apache.pluto.om.portlet.Portlet;
-import org.apache.pluto.om.portlet.PortletPreference;
-import org.apache.pluto.om.portlet.PortletPreferences;
-
/**
* The PortletEntity encapsulates all data pertaining to a single portlet
@@ -43,18 +33,11 @@
*/
public class PortletEntityImpl implements PortletEntity {
- /** Logger. */
- private static final Log LOG = LogFactory.getLog(PortletEntityImpl.class);
-
// Private Member Variables ------------------------------------------------
/** The cached PortletDD retrieved from the portlet descriptor registry. */
private Portlet portletDefinition;
- /** Default portlet preferences defined for this portlet. */
- private InternalPortletPreference[] defaultPreferences;
-
-
// Constructor -------------------------------------------------------------
public PortletEntityImpl(Portlet portletDefinition) {
@@ -65,75 +48,10 @@
// PortletEntity Impl ------------------------------------------------------
/**
- * Returns an array of default preferences of this portlet. The default
- * preferences are retrieved from the portlet application descriptor.
- * <p>
- * Data retrieved from <code>portlet.xml</code> are injected into the domain
- * object <code>PortletPreferenceDD</code>. This method converts the domain
- * objects into <code>PortletPreference</code> objects.
- * </p>
- * <p>
- * Note that if no value is bound to a given preference key,
- * <code>PortletPreferenceDD.getValues()</code> will return an empty string
- * list, but the value array of <code>PortletPreference</code> should be set
- * to null (instead of an empty array).
- * </p>
- * <p>
- * This method never returns null, but the values held by PortletPreference
- * may be null.
- * </p>
- * @return the preference set
- *
- * @see org.apache.pluto.descriptors.portlet.PortletPreferenceDD
- */
- public InternalPortletPreference[] getDefaultPreferences() {
- if (defaultPreferences == null) {
- Portlet portletDD = getPortletDefinition();
- PortletPreferences prefsDD = portletDD.getPortletPreferences();
- if (prefsDD != null) {
- List prefs = new ArrayList();
- if (prefsDD.getPortletPreferences() != null){
- for (Iterator it = prefsDD.getPortletPreferences().iterator();
- it.hasNext(); ) {
- PortletPreference prefDD = (PortletPreference) it.next();
- String[] values = null;
- if (prefDD.getValues()!=null){
- if (prefDD.getValues().size() > 0) {
- values = (String[]) prefDD.getValues().toArray(
- new String[prefDD.getValues().size()]);
- }
- }
- PortletPreferenceImpl pref = new PortletPreferenceImpl(
- prefDD.getName(), values, prefDD.isReadOnly());
- prefs.add(pref);
- }
- }
- defaultPreferences = (InternalPortletPreference[])
- prefs.toArray(new InternalPortletPreference[prefs.size()]);
- }
- }
- return defaultPreferences;
- }
-
- /**
* Returns the portlet description. The return value cannot be NULL.
* @return the portlet description.
*/
public Portlet getPortletDefinition() {
return portletDefinition;
}
-
- /**
- * Returns the preferences validator instance for this portlet.
- * One validator instance is created per portlet definition.
- * @return the preferences validator instance for this portlet.
- * @throws ValidatorException if fail to instantiate the validator.
- */
- public PreferencesValidator getPreferencesValidator()
- throws ValidatorException {
- PreferencesValidator validator = PreferencesValidatorRegistry
- .getRegistry()
- .getPreferencesValidator(getPortletDefinition());
- return validator;
- }
}
Modified: portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletPreferenceImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletPreferenceImpl.java?rev=653151&r1=653150&r2=653151&view=diff
==============================================================================
--- portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletPreferenceImpl.java (original)
+++ portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletPreferenceImpl.java Sat May 3 15:02:19 2008
@@ -89,7 +89,7 @@
this.readOnly = readOnly;
}
- public Object clone() {
+ public InternalPortletPreference clone() {
PortletPreferenceImpl copy = new PortletPreferenceImpl();
copy.name = this.name;
if (this.values != null) {
Modified: portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletPreferencesImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletPreferencesImpl.java?rev=653151&r1=653150&r2=653151&view=diff
==============================================================================
--- portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletPreferencesImpl.java (original)
+++ portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletPreferencesImpl.java Sat May 3 15:02:19 2008
@@ -17,11 +17,9 @@
package org.apache.pluto.internal.impl;
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.Map;
import java.util.Vector;
@@ -36,9 +34,10 @@
import org.apache.pluto.PortletContainer;
import org.apache.pluto.PortletContainerException;
import org.apache.pluto.PortletWindow;
+import org.apache.pluto.core.PreferencesValidatorRegistry;
import org.apache.pluto.internal.InternalPortletPreference;
import org.apache.pluto.internal.InternalPortletRequest;
-import org.apache.pluto.internal.PortletEntity;
+import org.apache.pluto.om.portlet.Portlet;
import org.apache.pluto.spi.optional.PortletPreferencesService;
import org.apache.pluto.util.StringManager;
@@ -77,7 +76,7 @@
* Current portlet preferences: key is the preference name as a string,
* value is the PortletPreference instance.
*/
- private final Map preferences = new HashMap();
+ private final Map<String, InternalPortletPreference> preferences = new HashMap<String, InternalPortletPreference>();
/** Current method used for managing these preferences. */
private Integer methodId;
@@ -108,36 +107,34 @@
+ preferencesService.getClass().getName());
}
- // Put default portlet preferences into preferences map.
- PortletEntity entity = window.getPortletEntity();
- defaultPreferences = entity.getDefaultPreferences();
- if (defaultPreferences!=null){
- for (int i = 0; i < defaultPreferences.length; i++) {
- preferences.put(defaultPreferences[i].getName(),
- defaultPreferences[i].clone());
- }
- }
- if (LOG.isDebugEnabled()) {
- LOG.debug("Loaded default preferences: " + toString());
- }
-
- // Merge stored portlet preferences into preferences map.
try {
- InternalPortletPreference[] storedPreferences = preferencesService
+ // Put default portlet preferences into preferences map.
+ defaultPreferences = preferencesService.getDefaultPreferences(window, request);
+ if (defaultPreferences != null) {
+ for (InternalPortletPreference p : defaultPreferences) {
+ preferences.put(p.getName(), p.clone());
+ }
+ }
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Loaded default preferences: " + toString());
+ }
+
+ // Merge stored portlet preferences into preferences map.
+
+ InternalPortletPreference[] storedPreferences = preferencesService
.getStoredPreferences(window, request);
- for (int i = 0; i < storedPreferences.length; i++) {
- if (LOG.isDebugEnabled()) {
- LOG.debug("Merging stored preference: "
- + storedPreferences[i].getName());
- }
- preferences.put(storedPreferences[i].getName(),
- storedPreferences[i]);
+ for (InternalPortletPreference p : storedPreferences) {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Merging stored preference: "
+ + p.getName());
+ }
+ preferences.put(p.getName(), p);
}
// Store the preferences retrieved from portlet.xml.
// Portlet preferences are stored everytime when a
// PortletPreferencesImpl instance is created.
// So here we do not check the portlet request method ID.
- if (storedPreferences.length >0)
+ if (storedPreferences.length > 0)
internalStore();
} catch (PortletContainerException ex) {
@@ -164,8 +161,7 @@
throw new IllegalArgumentException(
EXCEPTIONS.getString("error.null", "Preference key "));
}
- InternalPortletPreference pref = (InternalPortletPreference)
- preferences.get(key);
+ InternalPortletPreference pref = preferences.get(key);
return (pref != null && pref.isReadOnly());
}
@@ -187,8 +183,7 @@
EXCEPTIONS.getString("error.null", "Preference key "));
}
String[] values = null;
- InternalPortletPreference pref = (InternalPortletPreference)
- preferences.get(key);
+ InternalPortletPreference pref = preferences.get(key);
if (pref != null) {
values = pref.getValues();
}
@@ -203,8 +198,7 @@
throw new ReadOnlyException(EXCEPTIONS.getString(
"error.preference.readonly", key));
}
- InternalPortletPreference pref = (InternalPortletPreference)
- preferences.get(key);
+ InternalPortletPreference pref = preferences.get(key);
if (pref != null) {
pref.setValues(new String[] { value });
} else {
@@ -218,8 +212,7 @@
throw new ReadOnlyException(EXCEPTIONS.getString(
"error.preference.readonly"));
}
- InternalPortletPreference pref = (InternalPortletPreference)
- preferences.get(key);
+ InternalPortletPreference pref = preferences.get(key);
if (pref != null) {
pref.setValues(values);
} else {
@@ -228,16 +221,13 @@
}
}
- public Enumeration getNames() {
- return new Vector(preferences.keySet()).elements();
+ public Enumeration<String> getNames() {
+ return new Vector<String>(preferences.keySet()).elements();
}
- public Map getMap() {
- Map map = new HashMap();
- Iterator it = preferences.keySet().iterator();
- while (it.hasNext()) {
- InternalPortletPreference pref = (InternalPortletPreference)
- preferences.get(it.next());
+ public Map<String,String[]> getMap() {
+ Map<String,String[]> map = new HashMap<String,String[]>();
+ for (InternalPortletPreference pref : preferences.values()) {
map.put(pref.getName(),
pref.getValues() != null ? pref.getValues().clone() : null);
}
@@ -252,15 +242,15 @@
}
// Try to reset preference to the default values.
boolean resetDone = false;
- for (int i = 0; !resetDone && i < defaultPreferences.length; i++) {
- if (key.equals(defaultPreferences[i].getName())) {
- if (LOG.isDebugEnabled()) {
- LOG.debug("Resetting preference for key: " + key);
- }
- preferences.put(key,
- defaultPreferences[i].clone());
- resetDone = true;
- }
+ for (InternalPortletPreference p : defaultPreferences) {
+ if (key.equals(p.getName())) {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Resetting preference for key: " + key);
+ }
+ preferences.put(key,p.clone());
+ resetDone = true;
+ break;
+ }
}
// Remove preference if default values are not defined (PLT.14.1).
if (!resetDone) {
@@ -308,15 +298,18 @@
// Validate the preferences before storing, if a validator is defined.
// If the preferences cannot pass the validation,
// an ValidatorException will be thrown out.
- PreferencesValidator validator = window.getPortletEntity()
- .getPreferencesValidator();
+ Portlet portletD = window.getPortletEntity().getPortletDefinition();
+ PreferencesValidator validator = PreferencesValidatorRegistry.getRegistry()
+ .getPreferencesValidator(portletD);
if (validator != null) {
validator.validate(this);
}
// Store the portlet preferences.
- InternalPortletPreference[] prefs = (InternalPortletPreference[])
- (new ArrayList(preferences.values())).toArray(
- new InternalPortletPreference[preferences.size()]);
+ InternalPortletPreference[] prefs = new InternalPortletPreference[preferences.size()];
+ int index = 0;
+ for (InternalPortletPreference p : preferences.values()) {
+ prefs[index++] = p;
+ }
try {
preferencesService.store(window, request, prefs);
} catch (PortletContainerException ex) {
@@ -336,27 +329,25 @@
* @see java.lang.Object#toString()
*/
public String toString() {
- StringBuffer buffer = new StringBuffer();
+ StringBuffer buffer = new StringBuffer();
buffer.append(getClass().getName()).append("[");
- for (Enumeration en = getNames(); en.hasMoreElements(); ) {
- String name = (String) en.nextElement();
- buffer.append(name);
- buffer.append("(readOnly:").append(isReadOnly(name)).append(")=");
- String[] values = getValues(name, null);
- if (values != null) {
- for (int i = 0; i < values.length; i++) {
- buffer.append(values[i]);
- if (i < values.length - 1) {
- buffer.append(",");
- }
- }
- } else {
- buffer.append("NULL");
- }
- buffer.append(";");
+ for (InternalPortletPreference p : preferences.values()) {
+ buffer.append(p.getName());
+ buffer.append("(readOnly:").append(p.isReadOnly()).append(")=");
+ String[] values = p.getValues();
+ if (values != null) {
+ for (int i = 0; i < values.length; i++) {
+ buffer.append(values[i]);
+ if (i < values.length - 1) {
+ buffer.append(",");
+ }
+ }
+ } else {
+ buffer.append("NULL");
+ }
+ buffer.append(";");
}
buffer.append("]");
return buffer.toString();
}
-
}
Modified: portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/spi/optional/PortletPreferencesService.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/spi/optional/PortletPreferencesService.java?rev=653151&r1=653150&r2=653151&view=diff
==============================================================================
--- portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/spi/optional/PortletPreferencesService.java (original)
+++ portals/pluto/branches/2.0-spi-refactoring/pluto-container/src/main/java/org/apache/pluto/spi/optional/PortletPreferencesService.java Sat May 3 15:02:19 2008
@@ -30,6 +30,18 @@
*/
public interface PortletPreferencesService extends ContainerService {
+ /**
+ * Returns the default portlet preferences.
+ * @param portletWindow the portlet window.
+ * @param request the portlet request.
+ * @return the default portlet preferences.
+ * @throws PortletContainerException if fail to get default preferences.
+ */
+ public InternalPortletPreference[] getDefaultPreferences(
+ PortletWindow portletWindow,
+ PortletRequest request)
+ throws PortletContainerException;
+
/**
* Returns the stored portlet preferences.
* @param portletWindow the portlet window.