You are viewing a plain text version of this content. The canonical link for it is here.
Posted to general@portals.apache.org by ta...@apache.org on 2015/07/13 18:40:01 UTC
svn commit: r1690750 [3/6] - in
/portals/portlet-spec/trunk/portlet-api_2.1.0_spec: ./ src/ src/main/
src/main/appended-resources/ src/main/appended-resources/META-INF/
src/main/java/ src/main/java/META-INF/ src/main/java/javax/
src/main/java/javax/por...
Added: portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletException.java
URL: http://svn.apache.org/viewvc/portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletException.java?rev=1690750&view=auto
==============================================================================
--- portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletException.java (added)
+++ portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletException.java Mon Jul 13 16:39:59 2015
@@ -0,0 +1,97 @@
+/* Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+/*
+ * This source code implements specifications defined by the Java
+ * Community Process. In order to remain compliant with the specification
+ * DO NOT add / change / or delete method signatures!
+ */
+
+package javax.portlet;
+
+
+
+/**
+ * The <CODE>PortletException</CODE> class defines a general exception
+ * that a portlet can throw when it is unable to perform its operation
+ * successfully.
+ */
+
+public class PortletException extends java.lang.Exception
+{
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Constructs a new portlet exception.
+ */
+
+ public PortletException ()
+ {
+ super();
+ }
+
+ /**
+ * Constructs a new portlet exception with the given text. The
+ * portlet container may use the text write it to a log.
+ *
+ * @param text
+ * the exception text
+ */
+
+ public PortletException (String text)
+ {
+ super (text);
+ }
+
+ /**
+ * Constructs a new portlet exception when the portlet needs to do
+ * the following:
+ * <ul>
+ * <li>throw an exception
+ * <li>include the "root cause" exception
+ * <li>include a description message
+ * </ul>
+ *
+ * @param text
+ * the exception text
+ * @param cause
+ * the root cause
+ */
+
+ public PortletException (String text, Throwable cause)
+ {
+ super(text, cause);
+ }
+
+ /**
+ * Constructs a new portlet exception when the portlet needs to throw an
+ * exception. The exception's message is based on the localized message
+ * of the underlying exception.
+ *
+ * @param cause
+ * the root cause
+ */
+
+ public PortletException (Throwable cause)
+ {
+ super(cause);
+ }
+
+
+}
Added: portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletMode.java
URL: http://svn.apache.org/viewvc/portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletMode.java?rev=1690750&view=auto
==============================================================================
--- portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletMode.java (added)
+++ portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletMode.java Mon Jul 13 16:39:59 2015
@@ -0,0 +1,156 @@
+/* Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+/*
+ * This source code implements specifications defined by the Java
+ * Community Process. In order to remain compliant with the specification
+ * DO NOT add / change / or delete method signatures!
+ */
+
+package javax.portlet;
+
+import java.util.Locale;
+
+
+/**
+ * The <CODE>PortletMode</CODE> class represents
+ * the possible modes that a portlet can assume.
+ * <P>
+ * A portlet mode indicates the function a portlet is performing.
+ * Normally, portlets perform different tasks and create different
+ * content depending on the function they are currently performing.
+ * When invoking a portlet, the portlet container provides the
+ * current portlet mode to the portlet.
+ * <p>
+ * Portlets can programmatically change their portlet
+ * mode when processing an action request.
+ * <P>
+ * This class defines the default portlet modes <code>EDIT, HELP, VIEW</code>.
+ * Additional portlet modes may be defined by calling the constructor
+ * of this class. If a portal/portlet-container does not support a
+ * custom portlet mode defined in the portlet application deployment descriptor,
+ * the custom portlet mode will be ignored by the portal/portlet container.
+ */
+public class PortletMode
+{
+
+ /**
+ * The expected functionality for a portlet in <code>VIEW</code> portlet mode
+ * is to generate markup reflecting the current state of the portlet.
+ * For example, the <code>VIEW</code> portlet mode of a portlet may
+ * include one or more screens that the user can navigate and interact
+ * with, or it may consist of static content that does not require any
+ * user interaction.
+ * <P>
+ * This mode must be supported by the portlet.
+ * <p>
+ * The string value for this mode is <code>"view"</code>.
+ */
+ public final static PortletMode VIEW = new PortletMode ("view");
+
+ /**
+ * Within the <code>EDIT</code> portlet mode, a portlet should provide
+ * content and logic that lets a user customize the behavior of the portlet.
+ * The EDIT portlet mode may include one or more screens among which
+ * users can navigate to enter their customization data.
+ * <p>
+ * Typically, portlets in <code>EDIT</code> portlet mode will
+ * set or update portlet preferences.
+ * <P>
+ * This mode is optional.
+ * <p>
+ * The string value for this mode is <code>"edit"</code>.
+ */
+ public final static PortletMode EDIT = new PortletMode ("edit");
+
+ /**
+ * When in <code>HELP</code> portlet mode, a portlet should provide help
+ * information about the portlet. This help information could be
+ * a simple help screen explaining the entire portlet in
+ * coherent text or it could be context-sensitive help.
+ * <P>
+ * This mode is optional.
+ * <p>
+ * The string value for this mode is <code>"help"</code>.
+ */
+ public final static PortletMode HELP = new PortletMode ("help");
+
+
+
+
+ private String _name;
+
+
+ /**
+ * Creates a new portlet mode with the given name.
+ * <p>
+ * Upper case letters in the name are converted to
+ * lower case letters.
+ *
+ * @param name The name of the portlet mode
+ */
+ public PortletMode(String name) {
+ if (name==null) {
+ throw new IllegalArgumentException("PortletMode name can not be NULL");
+ }
+ _name = name.toLowerCase(Locale.ENGLISH);
+ }
+
+
+ /**
+ * Returns a String representation of this portlet mode.
+ * Portlet mode names are always lower case names.
+ *
+ * @return String representation of this portlet mode
+ */
+
+ public String toString() {
+ return _name;
+ }
+
+ /**
+ * Returns the hash code value for this portlet mode.
+ * The hash code is constructed by producing the
+ * hash value of the String value of this mode.
+ *
+ * @return hash code value for this portlet mode
+ */
+
+ public int hashCode() {
+ return _name.hashCode();
+ }
+
+ /**
+ * Compares the specified object with this portlet mode
+ * for equality. Returns <code>true</code> if the
+ * Strings <code>equals</code> method for the String
+ * representing the two portlet modes returns <code>true</code>.
+ *
+ * @param object the portlet mode to compare this portlet mode with
+ *
+ * @return true, if the specified object is equal with this portlet mode
+ */
+
+ public boolean equals(Object object) {
+ if ( object instanceof PortletMode )
+ return _name.equals(((PortletMode) object)._name);
+ else
+ return false;
+ }
+}
+
Added: portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletModeException.java
URL: http://svn.apache.org/viewvc/portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletModeException.java?rev=1690750&view=auto
==============================================================================
--- portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletModeException.java (added)
+++ portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletModeException.java Mon Jul 13 16:39:59 2015
@@ -0,0 +1,109 @@
+/* Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+/*
+ * This source code implements specifications defined by the Java
+ * Community Process. In order to remain compliant with the specification
+ * DO NOT add / change / or delete method signatures!
+ */
+
+package javax.portlet;
+
+/**
+ * The <CODE>PortletModeException</CODE> is thrown when a portlet
+ * tries to use or set a portlet mode that is not supported by the current
+ * runtime environment or the portlet.
+ */
+
+public class PortletModeException extends PortletException
+{
+
+ private transient PortletMode _mode = null;
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Constructs a new portlet mode exception with the given text and the
+ * portlet mode that caused this exception. The
+ * portlet container may use the text and portlet mode write it to a log.
+ *
+ * @param text
+ * the exception text
+ * @param mode
+ * the mode causing the exception
+ */
+
+ public PortletModeException (String text, PortletMode mode)
+ {
+ super (text);
+ _mode = mode;
+ }
+
+ /**
+ * Constructs a new portlet mode exception when the portlet needs to do
+ * the following:
+ * <ul>
+ * <li>throw an exception
+ * <li>include a message about the "root cause" that interfered
+ * with its normal operation
+ * <li>include a description message
+ * <li>include the portlet mode that caused this exception
+ * </ul>
+ *
+ * @param text
+ * the exception text
+ * @param cause
+ * the root cause
+ * @param mode
+ * the mode causing the exception
+ */
+
+ public PortletModeException (String text, Throwable cause, PortletMode mode)
+ {
+ super(text, cause);
+ _mode = mode;
+ }
+
+ /**
+ * Constructs a new portlet mode exception when the portlet needs to throw an
+ * exception. The exception message is based on the localized message
+ * of the underlying exception and the portlet mode that caused this exception.
+ *
+ * @param cause
+ * the root cause
+ * @param mode
+ * the mode causing the exception
+ */
+
+ public PortletModeException (Throwable cause, PortletMode mode)
+ {
+ super(cause);
+ _mode = mode;
+ }
+
+ /**
+ * Returns the unsupported portlet mode causing this exception.
+ *
+ * @return the portlet mode that caused this exception
+ */
+
+ public PortletMode getMode()
+ {
+ return _mode;
+ }
+}
Added: portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletPreferences.java
URL: http://svn.apache.org/viewvc/portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletPreferences.java?rev=1690750&view=auto
==============================================================================
--- portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletPreferences.java (added)
+++ portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletPreferences.java Mon Jul 13 16:39:59 2015
@@ -0,0 +1,280 @@
+/* Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+/*
+ * This source code implements specifications defined by the Java
+ * Community Process. In order to remain compliant with the specification
+ * DO NOT add / change / or delete method signatures!
+ */
+
+package javax.portlet;
+
+
+
+/**
+ * The <CODE>PortletPreferences</CODE> interface allows the portlet to store
+ * configuration data. It is not the
+ * purpose of this interface to replace general purpose databases.
+ * <p>
+ * There are two different types of preferences:
+ * <ul>
+ * <li>modifiable preferences - these preferences can be changed by the
+ * portlet in any standard portlet mode (<code>EDIT, HELP, VIEW</code>).
+ * Per default every preference is modifiable.
+ * <li>read-only preferences - these preferences cannot be changed by the
+ * portlet in any standard portlet mode, but may be changed by administrative modes.
+ * Preferences are read-only, if the are defined in the
+ * deployment descriptor with <code>read-only</code> set to <code>true</code>,
+ * or if the portlet container restricts write access.
+ * </ul>
+ * <p>
+ * Changes are persisted when the <code>store</code> method is called. The <code>store</code> method
+ * can only be invoked within the scope of a <code>processAction</code> call.
+ * Changes that are not persisted are discarded when the
+ * <code>processAction</code> or <code>render</code> method ends.
+ */
+public interface PortletPreferences
+{
+
+
+
+ /**
+ * Returns true, if the value of this key is defined as read-only and thus
+ * cannot be modified by the user.
+ * <p>
+ * Modifiable preferences can be changed by the
+ * portlet in any standard portlet mode (<code>EDIT, HELP, VIEW</code>).
+ * Per default every preference is modifiable.
+ * <p>
+ * Read-only preferences cannot be changed by the
+ * portlet in any standard portlet mode, but inside of custom modes,
+ * like the <code>CONFIG</code> mode, it may be allowed changing them.
+ * <p>
+ * Preferences are read-only, if they are defined in the
+ * deployment descriptor with <code>read-only</code> set to <code>true</code>,
+ * or if the portlet container restricts write access.
+ * <p>
+ * Note that even if this call returns <code>false</code> and the
+ * preference key is modifiable in general it does not mean that it
+ * is modifiable in the scope of the current request, e.g. if this
+ * request is a render request.
+ *
+ * @return false, if the value of this key can be changed, or
+ * if the key is not known
+ *
+ * @exception java.lang.IllegalArgumentException
+ * if <code>key</code> is <code>null</code>.
+ */
+ public boolean isReadOnly(String key);
+
+
+
+ /**
+ * Returns the first String value associated with the specified key of this preference.
+ * If there is one or more preference values associated with the given key
+ * it returns the first associated value.
+ * If there are no preference values associated with the given key, or the
+ * backing preference database is unavailable, it returns the given
+ * default value.
+ * A <code>null</code> value is treated as a non-existent value.
+ *
+ * @param key key for which the associated value is to be returned
+ * @param def the value to be returned in the event that there is no
+ * value available associated with this <code>key</code>.
+ *
+ * @return the value associated with <code>key</code>, or <code>def</code>
+ * if no value is associated with <code>key</code>, or the backing
+ * store is inaccessible.
+ *
+ * @exception java.lang.IllegalArgumentException
+ * if <code>key</code> is <code>null</code>. (A
+ * <code>null</code> value for <code>def</code> <i>is</i> permitted.)
+ *
+ * @see #getValues(String, String[])
+ */
+ public String getValue(String key, String def);
+
+
+ /**
+ * Returns the String array value associated with the specified key in this preference.
+ *
+ * <p>Returns the specified default if there is no value
+ * associated with the key, or if the backing store is inaccessible.
+ * A <code>null</code> value is treated as a non-existent value.
+ *
+ * <p>If the implementation supports <i>stored defaults</i> and such a
+ * default exists and is accessible, it is used in favor of the
+ * specified default.
+ *
+ *
+ * @param key key for which associated value is to be returned.
+ * @param def the value to be returned in the event that this
+ * preference node has no value associated with <code>key</code>
+ * or the associated value cannot be interpreted as a String array,
+ * or the backing store is inaccessible.
+ *
+ * @return the String array value associated with
+ * <code>key</code>, or <code>def</code> if the
+ * associated value does not exist.
+ *
+ * @exception java.lang.IllegalArgumentException if <code>key</code> is <code>null</code>. (A
+ * <code>null</code> value for <code>def</code> <i>is</i> permitted.)
+ *
+ * @see #getValue(String,String)
+ */
+
+ public String[] getValues(String key, String[] def);
+
+
+
+ /**
+ * Associates the specified String value with the specified key in this
+ * preference.
+ * <p>
+ * The key cannot be <code>null</code>, but <code>null</code> values
+ * for the value parameter are allowed.
+ * <p>
+ * If the same key contained already a <code>String</code> or <code>String[]</code>
+ * value it must be replaced by the new value.
+ *
+ * @param key key with which the specified value is to be associated.
+ * @param value value to be associated with the specified key.
+ *
+ * @exception ReadOnlyException
+ * if this preference cannot be modified for this request
+ * @exception java.lang.IllegalArgumentException if key is <code>null</code>,
+ * or <code>key.length()</code>
+ * or <code>value.length</code> are to long. The maximum length
+ * for key and value are implementation specific.
+ *
+ * @see #setValues(String, String[])
+ */
+ public void setValue(String key, String value) throws ReadOnlyException;
+
+
+
+
+ /**
+ * Associates the specified String array value with the specified key in this
+ * preference.
+ * <p>
+ * The key cannot be <code>null</code>, but <code>null</code> values
+ * in the values parameter are allowed.
+ * <p>
+ * If the same key contained already a <code>String</code> or <code>String[]</code>
+ * value it must be replaced by the new value.
+ *
+ * @param key key with which the value is to be associated
+ * @param values values to be associated with key
+ *
+ * @exception java.lang.IllegalArgumentException if key is <code>null</code>, or
+ * <code>key.length()</code>
+ * is to long or <code>value.size</code> is to large. The maximum
+ * length for key and maximum size for value are implementation specific.
+ * @exception ReadOnlyException
+ * if this preference cannot be modified for this request
+ *
+ * @see #setValue(String,String)
+ */
+
+ public void setValues(String key, String[] values) throws ReadOnlyException;
+
+
+ /**
+ * Returns all of the keys that have an associated value,
+ * or an empty <code>Enumeration</code> if no keys are
+ * available.
+ *
+ * @return an Enumeration of the keys that have an associated value,
+ * or an empty <code>Enumeration</code> if no keys are
+ * available.
+ */
+ public java.util.Enumeration<String> getNames();
+
+ /**
+ * Returns a <code>Map</code> of the preferences.
+ * <p>
+ * The values in the returned <code>Map</code> are from type
+ * String array (<code>String[]</code>).
+ * <p>
+ * If no preferences exist this method returns an empty <code>Map</code>.
+ *
+ * @return an immutable <code>Map</code> containing preference names as
+ * keys and preference values as map values, or an empty <code>Map</code>
+ * if no preference exist. The keys in the preference
+ * map are of type String. The values in the preference map are of type
+ * String array (<code>String[]</code>).
+ */
+
+ public java.util.Map<String, String[]> getMap();
+
+
+ /**
+ * Resets or removes the value associated with the specified key.
+ * <p>
+ * If this implementation supports stored defaults, and there is such
+ * a default for the specified preference, the given key will be
+ * reset to the stored default.
+ * <p>
+ * If there is no default available the key will be removed.
+ *
+ * @param key to reset
+ *
+ * @exception java.lang.IllegalArgumentException if key is <code>null</code>.
+ * @exception ReadOnlyException
+ * if this preference cannot be modified for this request
+ */
+
+ public void reset(String key) throws ReadOnlyException;
+
+
+ /**
+ * Commits all changes made to the preferences via the
+ * <code>set</code> methods in the persistent store.
+ * <P>
+ * If this call returns successful, all changes are made
+ * persistent. If this call fails, no changes are made
+ * in the persistent store. This call is an atomic operation
+ * regardless of how many preference attributes have been modified.
+ * <P>
+ * All changes made to preferences not followed by a call
+ * to the <code>store</code> method are discarded when the
+ * portlet finishes the <code>processAction</code> method.
+ * <P>
+ * If a validator is defined for this preferences in the
+ * deployment descriptor, this validator is called before
+ * the actual store is performed to check whether the given
+ * preferences are valid. If this check fails a
+ * <code>ValidatorException</code> is thrown.
+ *
+ * @exception java.io.IOException
+ * if changes cannot be written into
+ * the backend store
+ * @exception ValidatorException
+ * if the validation performed by the
+ * associated validator fails
+ * @exception java.lang.IllegalStateException
+ * if this method is called inside a render call
+ *
+ * @see PreferencesValidator
+ */
+
+ public void store() throws java.io.IOException, ValidatorException;
+
+
+}
Added: portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletRequest.java
URL: http://svn.apache.org/viewvc/portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletRequest.java?rev=1690750&view=auto
==============================================================================
--- portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletRequest.java (added)
+++ portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletRequest.java Mon Jul 13 16:39:59 2015
@@ -0,0 +1,944 @@
+/* Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+/*
+ * This source code implements specifications defined by the Java
+ * Community Process. In order to remain compliant with the specification
+ * DO NOT add / change / or delete method signatures!
+ */
+
+package javax.portlet;
+
+import java.util.Locale;
+
+
+/**
+ * The <CODE>PortletRequest</CODE> defines the base interface to provide client
+ * request information to a portlet. The portlet container uses two specialized
+ * versions of this interface when invoking a portlet, <CODE>ActionRequest</CODE>
+ * and <CODE>RenderRequest</CODE>. The portlet container creates these objects and
+ * passes them as arguments to the portlet's <CODE>processAction</CODE> and
+ * <CODE>render</CODE> methods.
+ *
+ * @see ActionRequest
+ * @see RenderRequest
+ */
+public interface PortletRequest
+{
+
+ /** Used to retrieve user information attributes with the
+ * <code>getAttribute</code> call. The user information is returned
+ * as a <code>Map</code> object. The portlet must define the
+ * user information attribute it is interested in inside the
+ * <code>user-attribute</code> section of the deployment descriptor.
+ * If an attribute is not supported
+ * by the current runtime system it will not show up in the user
+ * attribute map.<BR>
+ * If the user-attribute is supported by the runtime system, but not
+ * defined for a particular user, then for that user the attribute
+ * exists in the returned map and the attribute has a <code>null</code> value.
+ * <p>
+ * If the user-attribute is not defined for the current user it
+ * will not show up in the Map.
+ * <p>
+ * The value is <code>javax.portlet.userinfo</code>.
+ */
+ public static final String USER_INFO = "javax.portlet.userinfo";
+
+ /**
+ * Used to retrieve an instance of the <code>javax.ccpp.Profile</code>
+ * with the <code>getAttribute</code> call. The returned profile is based
+ * on the current portlet request and may contain additional CC/PP
+ * information set by the portal / portlet container.
+ * <p>
+ * The value is <code>javax.portlet.ccpp</code>.
+ *
+ * @since 2.0
+ */
+ public static final String CCPP_PROFILE = "javax.portlet.ccpp";
+
+ /**
+ * String identifier for Basic authentication. Value "BASIC".
+ */
+ public static final String BASIC_AUTH = "BASIC";
+
+ /**
+ * String identifier for Form based authentication. Value "FORM".
+ */
+ public static final String FORM_AUTH = "FORM";
+
+ /**
+ * String identifier for Certification based authentication. Value "CLIENT_CERT".
+ */
+ public static final String CLIENT_CERT_AUTH = "CLIENT_CERT";
+
+ /**
+ * String identifier for Digest based authentication. Value "DIGEST".
+ */
+ public static final String DIGEST_AUTH = "DIGEST";
+
+ /**
+ * P3P user information constants.
+ * <p>
+ * Note: these are only available in the Java SE 5.0 supported version
+ * of the API.
+ *
+ * @since 2.0
+ */
+ public enum P3PUserInfos {
+ USER_BDATE_YMD_YEAR("user.bdate.ymd.year"), USER_BDATE_YMD_MONTH("user.bdate.ymd.month"),
+ USER_BDATE_YMD_DAY("user.bdate.ymd.day"), USER_BDATE_HMS_HOUR("user.bdate.hms.hour"),
+ USER_BDATE_HMS_MINUTE("user.bdate.hms.minute"), USER_BDATE_HMS_SECOND("user.bdate.hms.second"),
+ USER_BDATE_FRACTIONSECOND("user.bdate.fractionsecond"), USER_BDATE_TIMEZONE("user.bdate.timezone"),
+ USER_GENDER("user.gender"), USER_EMPLOYER("user.employer"),
+ USER_DEPARTMENT("user.department"), USER_JOBTITLE("user.jobtitle"),
+ USER_NAME_PREFIX("user.name.prefix"), USER_NAME_GIVEN("user.name.given"),
+ USER_NAME_FAMILY("user.name.family"), USER_NAME_MIDDLE("user.name.middle"),
+ USER_NAME_SUFFIX("user.name.suffix"), USER_NAME_NICKNAME("user.name.nickName"),
+ USER_LOGIN_ID("user.login.id"),
+ USER_HOMEINFO_POSTAL_NAME("user.home-info.postal.name"),
+ USER_HOMEINFO_POSTAL_STREET("user.home-info.postal.street"),
+ USER_HOMEINFO_POSTAL_CITY("user.home-info.postal.city"),
+ USER_HOMEINFO_POSTAL_STATEPROV("user.home-info.postal.stateprov"),
+ USER_HOMEINFO_POSTAL_POSTALCODE("user.home-info.postal.postalcode"),
+ USER_HOMEINFO_POSTAL_COUNTRY("user.home-info.postal.country"),
+ USER_HOMEINFO_POSTAL_ORGANIZATION("user.home-info.postal.organization"),
+ USER_HOMEINFO_TELECOM_TELEPHONE_INTCODE("user.home-info.telecom.telephone.intcode"),
+ USER_HOMEINFO_TELECOM_TELEPHONE_LOCCODE("user.home-info.telecom.telephone.loccode"),
+ USER_HOMEINFO_TELECOM_TELEPHONE_NUMBER("user.home-info.telecom.telephone.number"),
+ USER_HOMEINFO_TELECOM_TELEPHONE_EXT("user.home-info.telecom.telephone.ext"),
+ USER_HOMEINFO_TELECOM_TELEPHONE_COMMENT("user.home-info.telecom.telephone.comment"),
+ USER_HOMEINFO_TELECOM_FAX_INTCODE("user.home-info.telecom.fax.intcode"),
+ USER_HOMEINFO_TELECOM_FAX_LOCCODE("user.home-info.telecom.fax.loccode"),
+ USER_HOMEINFO_TELECOM_FAX_NUMBER("user.home-info.telecom.fax.number"),
+ USER_HOMEINFO_TELECOM_FAX_EXT("user.home-info.telecom.fax.ext"),
+ USER_HOMEINFO_TELECOM_FAX_COMMENT("user.home-info.telecom.fax.comment"),
+ USER_HOMEINFO_TELECOM_MOBILE_INTCODE("user.home-info.telecom.mobile.intcode"),
+ USER_HOMEINFO_TELECOM_MOBILE_LOCCODE("user.home-info.telecom.mobile.loccode"),
+ USER_HOMEINFO_TELECOM_MOBILE_NUMBER("user.home-info.telecom.mobile.number"),
+ USER_HOMEINFO_TELECOM_MOBILE_EXT("user.home-info.telecom.mobile.ext"),
+ USER_HOMEINFO_TELECOM_MOBILE_COMMENT("user.home-info.telecom.mobile.comment"),
+ USER_HOMEINFO_TELECOM_PAGER_INTCODE("user.home-info.telecom.pager.intcode"),
+ USER_HOMEINFO_TELECOM_PAGER_LOCCODE("user.home-info.telecom.pager.loccode"),
+ USER_HOMEINFO_TELECOM_PAGER_NUMBER("user.home-info.telecom.pager.number"),
+ USER_HOMEINFO_TELECOM_PAGER_EXT("user.home-info.telecom.pager.ext"),
+ USER_HOMEINFO_TELECOM_PAGER_COMMENT("user.home-info.telecom.pager.comment"),
+ USER_HOMEINFO_ONLINE_EMAIL("user.home-info.online.email"),
+ USER_HOMEINFO_ONLINE_URI("user.home-info.online.uri"),
+ USER_BUSINESSINFO_POSTAL_NAME("user.business-info.postal.name"),
+ USER_BUSINESSINFO_POSTAL_STREET("user.business-info.postal.street"),
+ USER_BUSINESSINFO_POSTAL_CITY("user.business-info.postal.city"),
+ USER_BUSINESSINFO_POSTAL_STATEPROV("user.business-info.postal.stateprov"),
+ USER_BUSINESSINFO_POSTAL_POSTALCODE("user.business-info.postal.postalcode"),
+ USER_BUSINESSINFO_POSTAL_COUNTRY("user.business-info.postal.country"),
+ USER_BUSINESSINFO_POSTAL_ORGANIZATION("user.business-info.postal.organization"),
+ USER_BUSINESSINFO_TELECOM_TELEPHONE_INTCODE("user.business-info.telecom.telephone.intcode"),
+ USER_BUSINESSINFO_TELECOM_TELEPHONE_LOCCODE("user.business-info.telecom.telephone.loccode"),
+ USER_BUSINESSINFO_TELECOM_TELEPHONE_NUMBER("user.business-info.telecom.telephone.number"),
+ USER_BUSINESSINFO_TELECOM_TELEPHONE_EXT("user.business-info.telecom.telephone.ext"),
+ USER_BUSINESSINFO_TELECOM_TELEPHONE_COMMENT("user.business-info.telecom.telephone.comment"),
+ USER_BUSINESSINFO_TELECOM_FAX_INTCODE("user.business-info.telecom.fax.intcode"),
+ USER_BUSINESSINFO_TELECOM_FAX_LOCCODE("user.business-info.telecom.fax.loccode"),
+ USER_BUSINESSINFO_TELECOM_FAX_NUMBER("user.business-info.telecom.fax.number"),
+ USER_BUSINESSINFO_TELECOM_FAX_EXT("user.business-info.telecom.fax.ext"),
+ USER_BUSINESSINFO_TELECOM_FAX_COMMENT("user.business-info.telecom.fax.comment"),
+ USER_BUSINESSINFO_TELECOM_MOBILE_INTCODE("user.business-info.telecom.mobile.intcode"),
+ USER_BUSINESSINFO_TELECOM_MOBILE_LOCCODE("user.business-info.telecom.mobile.loccode"),
+ USER_BUSINESSINFO_TELECOM_MOBILE_NUMBER("user.business-info.telecom.mobile.number"),
+ USER_BUSINESSINFO_TELECOM_MOBILE_EXT("user.business-info.telecom.mobile.ext"),
+ USER_BUSINESSINFO_TELECOM_MOBILE_COMMENT("user.business-info.telecom.mobile.comment"),
+ USER_BUSINESSINFO_TELECOM_PAGER_INTCODE("user.business-info.telecom.pager.intcode"),
+ USER_BUSINESSINFO_TELECOM_PAGER_LOCCODE("user.business-info.telecom.pager.loccode"),
+ USER_BUSINESSINFO_TELECOM_PAGER_NUMBER("user.business-info.telecom.pager.number"),
+ USER_BUSINESSINFO_TELECOM_PAGER_EXT("user.business-info.telecom.pager.ext"),
+ USER_BUSINESSINFO_TELECOM_PAGER_COMMENT("user.business-info.telecom.pager.comment"),
+ USER_BUSINESSINFO_ONLINE_EMAIL("user.business-info.online.email"),
+ USER_BUSINESSINFO_ONLINE_URI("user.business-info.online.uri");
+ P3PUserInfos(String value) {this.value = value; }
+ private final String value;
+ public String toString() {return value;}
+ }
+
+ /**
+ * String identifier for the portlet action lifecycle phase. In this
+ * phase the portlet request and response are from type
+ * <code>ActionRequest</code> and <code>ActionResponse</code>.
+ * <p>
+ * The value of the constant is <code>ACTION_PHASE</code>.
+ *
+ * @since 2.0
+ */
+ public static final String ACTION_PHASE = "ACTION_PHASE";
+
+ /**
+ * String identifier for the portlet event lifecycle phase. In this
+ * phase the portlet request and response are from type
+ * <code>EventRequest</code> and <code>EventResponse</code>.
+ * <p>
+ * The value of the constant is <code>EVENT_PHASE</code>.
+ *
+ * @since 2.0
+ */
+ public static final String EVENT_PHASE = "EVENT_PHASE";
+
+ /**
+ * String identifier for the portlet render lifecycle phase. In this
+ * phase the portlet request and response are from type
+ * <code>RenderRequest</code> and <code>RenderResponse</code>.
+ * <p>
+ * The value of the constant is <code>RENDER_PHASE</code>.
+ *
+ * @since 2.0
+ */
+ public static final String RENDER_PHASE = "RENDER_PHASE";
+
+ /**
+ * String identifier for the portlet resource serving lifecycle phase. In this
+ * phase the portlet request and response are from type
+ * <code>ResourceRequest</code> and <code>ResourceResponse</code>.
+ * <p>
+ * The value of the constant is <code>RESOURCE_PHASE</code>.
+ *
+ * @since 2.0
+ */
+ public static final String RESOURCE_PHASE = "RESOURCE_PHASE";
+
+ /**
+ * Provides the portlet lifecycle phase of the current request
+ * as request attribute.
+ * <p>
+ * Valid values are: ACTION_PHASE, EVENT_PHASE, RENDER_PHASE,
+ * RESOURCE_SERVING_PHASE.
+ * <p>
+ * The value of the constant is <code>javax.portlet.lifecylce_phase</code>.
+ *
+ * @since 2.0
+ */
+ public static final String LIFECYCLE_PHASE = "javax.portlet.lifecycle_phase";
+
+
+ /**
+ * The RENDER_PART portlet request attribute is set by portals
+ * that are streaming based and therefore need to split the
+ * render phase into two parts: first the RENDER_HEADERS part
+ * where the portlet should only set the header related data
+ * and the portlet title, and second the RENDER_MARKUP part
+ * in which the portlet should produce its markup.
+ * <p>
+ * Non-streaming portals will not set this attribute and thus
+ * the portlet should set headers, portlet title and produce
+ * its markup in a single render request.
+ * <p>
+ * The value of the constant is <code>javax.portlet.render_part</code>.
+ *
+ * @since 2.0
+ */
+ public static final String RENDER_PART = "javax.portlet.render_part";
+
+ /**
+ * The RENDER_HEADERS is a possible value of the RENDER_PART
+ * request attribute and denotes that the portlet should set
+ * the intended headers and the portlet title of this render
+ * request.
+ * <p>
+ * The value of the constant is <code>RENDER_HEADERS</code>.
+ *
+ * @since 2.0
+ */
+ public static final String RENDER_HEADERS = "RENDER_HEADERS";
+
+ /**
+ * The RENDER_MARKUP is a possible value of the RENDER_PART
+ * request attribute and denotes that the portlet should
+ * produce its markup for this render request.
+ * <p>
+ * The value of the constant is <code>RENDER_MARKUP</code>.
+ *
+ * @since 2.0
+ */
+ public static final String RENDER_MARKUP = "RENDER_MARKUP";
+
+ /**
+ * The action scope ID that the portlet container uses
+ * for storing the current action scope as render parameter
+ * if the <code>javax.portlet.actionScopedRequestAttributes</code>
+ * container runtime option is used by the portlet.
+ * <p>
+ * The value is <code>javax.portlet.as</code>.
+ * @since 2.0
+ */
+ public static final String ACTION_SCOPE_ID = "javax.portlet.as";
+
+
+ /**
+ * Returns true, if the given window state is valid
+ * to be set for this portlet in the context
+ * of the current request.
+ *
+ * @param state window state to checked
+ *
+ * @return true, if it is valid for this portlet
+ * in this request to change to the
+ * given window state
+ *
+ */
+ public boolean isWindowStateAllowed(WindowState state);
+
+
+/**
+ * Returns true, if the given portlet mode is a valid
+ * one to set for this portlet in the context
+ * of the current request.
+ *
+ * @param mode portlet mode to check
+ *
+ * @return true, if it is valid for this portlet
+ * in this request to change to the
+ * given portlet mode
+ *
+ */
+
+ public boolean isPortletModeAllowed(PortletMode mode);
+
+
+ /**
+ * Returns the current portlet mode of the portlet.
+ *
+ * @return the portlet mode
+ */
+
+ public PortletMode getPortletMode ();
+
+
+ /**
+ * Returns the current window state of the portlet.
+ *
+ * @return the window state
+ */
+
+ public WindowState getWindowState ();
+
+
+ /**
+ * Returns the preferences object associated with the portlet.
+ *
+ * @return the portlet preferences
+ */
+ public PortletPreferences getPreferences ();
+
+
+ /**
+ * Returns the current portlet session or, if there is no current session,
+ * creates one and returns the new session.
+ * <p>
+ * Creating a new portlet session will result in creating
+ * a new <code>HttpSession</code> on which the portlet session is based on.
+ *
+ * @return the portlet session
+ */
+
+ public PortletSession getPortletSession ();
+
+
+ /**
+ * Returns the current portlet session or, if there is no current session
+ * and the given flag is <CODE>true</CODE>, creates one and returns
+ * the new session.
+ * <P>
+ * If the given flag is <CODE>false</CODE> and there is no current
+ * portlet session, this method returns <CODE>null</CODE>.
+ * <p>
+ * Creating a new portlet session will result in creating
+ * a new <code>HttpSession</code> on which the portlet session is based on.
+ *
+ * @param create
+ * <CODE>true</CODE> to create a new session, <BR>
+ * <CODE>false</CODE> to return <CODE>null</CODE> if there
+ * is no current session
+ * @return the portlet session
+ *
+ */
+
+ public PortletSession getPortletSession (boolean create);
+
+
+ /**
+ * Returns the value of the specified request property
+ * as a <code>String</code>. If the request did not include a property
+ * of the specified name, this method returns <code>null</code>.
+ * <p>
+ * A portlet can access portal/portlet-container specific properties
+ * through this method and, if available, the
+ * headers of the HTTP client request.
+ * <p>
+ * This method should only be used if the
+ * property has only one value. If the property might have
+ * more than one value, use {@link #getProperties}.
+ * <p>
+ * If this method is used with a multivalued
+ * parameter, the value returned is equal to the first value
+ * in the Enumeration returned by <code>getProperties</code>.
+ *
+ * @param name a <code>String</code> specifying the
+ * property name
+ *
+ * @return a <code>String</code> containing the
+ * value of the requested
+ * property, or <code>null</code>
+ * if the request does not
+ * have a property of that name.
+ *
+ * @exception java.lang.IllegalArgumentException
+ * if name is <code>null</code>.
+ */
+
+ public String getProperty(String name);
+
+
+ /**
+ * Returns all the values of the specified request property
+ * as a <code>Enumeration</code> of <code>String</code> objects.
+ * <p>
+ * If the request did not include any properties
+ * of the specified name, this method returns an empty
+ * <code>Enumeration</code>.
+ * The property name is case insensitive. You can use
+ * this method with any request property.
+ *
+ * @param name a <code>String</code> specifying the
+ * property name
+ *
+ * @return a <code>Enumeration</code> containing
+ * the values of the requested property. If
+ * the request does not have any properties of
+ * that name return an empty <code>Enumeration</code>.
+ *
+ * @exception java.lang.IllegalArgumentException
+ * if name is <code>null</code>.
+ */
+
+ public java.util.Enumeration<String> getProperties(String name);
+
+
+ /**
+ *
+ * Returns a <code>Enumeration</code> of all the property names
+ * this request contains. If the request has no
+ * properties, this method returns an empty <code>Enumeration</code>.
+ *
+ *
+ * @return an <code>Enumeration</code> of all the
+ * property names sent with this
+ * request; if the request has
+ * no properties, an empty <code>Enumeration</code>.
+ */
+
+ public java.util.Enumeration<String> getPropertyNames();
+
+
+ /**
+ * Returns the context of the calling portal.
+ *
+ * @return the context of the calling portal
+ */
+
+ public PortalContext getPortalContext();
+
+
+ /**
+ * Returns the name of the authentication scheme used for the
+ * connection between client and portal,
+ * for example, <code>BASIC_AUTH</code>, <code>CLIENT_CERT_AUTH</code>,
+ * a custom one or <code>null</code> if there was no authentication.
+ *
+ * @return one of the static members <code>BASIC_AUTH</code>,
+ * <code>FORM_AUTH</code>, <code>CLIENT_CERT_AUTH</code>,
+ * <code>DIGEST_AUTH</code> (suitable for == comparison)
+ * indicating the authentication scheme,
+ * a custom one, or
+ * <code>null</code> if the request was
+ * not authenticated.
+ */
+
+ public java.lang.String getAuthType();
+
+
+ /**
+ * Returns the context path which is the path prefix associated with the deployed
+ * portlet application. If the portlet application is rooted at the
+ * base of the web server URL namespace (also known as "default" context),
+ * this path must be an empty string. Otherwise, it must be the path the
+ * portlet application is rooted to, the path must start with a '/' and
+ * it must not end with a '/' character.
+ * <p>
+ * To encode a URL the {@link PortletResponse#encodeURL} method must be used.
+ *
+ * @return a <code>String</code> specifying the
+ * portion of the request URL that indicates the context
+ * of the request
+ *
+ * @see PortletResponse#encodeURL
+ */
+
+ public String getContextPath();
+
+
+ /**
+ * Returns the login of the user making this request, if the user
+ * has been authenticated, or null if the user has not been authenticated.
+ *
+ * @return a <code>String</code> specifying the login
+ * of the user making this request, or <code>null</code>
+ * if the user login is not known.
+ *
+ */
+
+ public java.lang.String getRemoteUser();
+
+
+ /**
+ * Returns a java.security.Principal object containing the name of the
+ * current authenticated user.
+ *
+ * @return a <code>java.security.Principal</code> containing
+ * the name of the user making this request, or
+ * <code>null</code> if the user has not been
+ * authenticated.
+ */
+
+ public java.security.Principal getUserPrincipal();
+
+
+ /**
+ * Returns a boolean indicating whether the authenticated user is
+ * included in the specified logical "role". Roles and role membership can be
+ * defined using deployment descriptors. If the user has not been
+ * authenticated, the method returns <code>false</code>.
+ *
+ * @param role a <code>String</code> specifying the name
+ * of the role
+ *
+ * @return a <code>boolean</code> indicating whether
+ * the user making this request belongs to a given role;
+ * <code>false</code> if the user has not been
+ * authenticated.
+ */
+
+ public boolean isUserInRole(java.lang.String role);
+
+
+ /**
+ *
+ * Returns the value of the named attribute as an <code>Object</code>,
+ * or <code>null</code> if no attribute of the given name exists.
+ * <p>
+ * Attribute names should follow the same conventions as package
+ * names. This specification reserves names matching <code>java.*</code>,
+ * and <code>javax.*</code>.
+ * <p>
+ * In a distributed portlet web application the <code>Object</code>
+ * needs to be serializable.
+ *
+ * @param name a <code>String</code> specifying the name of
+ * the attribute
+ *
+ * @return an <code>Object</code> containing the value
+ * of the attribute, or <code>null</code> if
+ * the attribute does not exist.
+ *
+ * @exception java.lang.IllegalArgumentException
+ * if name is <code>null</code>.
+ *
+ */
+
+ public Object getAttribute(String name);
+
+
+ /**
+ * Returns an <code>Enumeration</code> containing the
+ * names of the attributes available to this request.
+ * This method returns an empty <code>Enumeration</code>
+ * if the request has no attributes available to it.
+ *
+ *
+ * @return an <code>Enumeration</code> of strings
+ * containing the names
+ * of the request attributes, or an empty
+ * <code>Enumeration</code> if the request
+ * has no attributes available to it.
+ */
+
+ public java.util.Enumeration<String> getAttributeNames();
+
+
+ /**
+ * Returns the value of a request parameter as a <code>String</code>,
+ * or <code>null</code> if the parameter does not exist. Request parameters
+ * are extra information sent with the request. The returned parameter
+ * are "x-www-form-urlencoded" decoded.
+ * <p>
+ * Only parameters targeted to the current portlet are accessible.
+ * <p>
+ * This method should only be used if the
+ * parameter has only one value. If the parameter might have
+ * more than one value, use {@link #getParameterValues}.
+ * <p>
+ * If this method is used with a multivalued
+ * parameter, the value returned is equal to the first value
+ * in the array returned by <code>getParameterValues</code>.
+ *
+ *
+ *
+ * @param name a <code>String</code> specifying the
+ * name of the parameter
+ *
+ * @return a <code>String</code> representing the
+ * single value of the parameter
+ *
+ * @see #getParameterValues
+ *
+ * @exception java.lang.IllegalArgumentException
+ * if name is <code>null</code>.
+ *
+ */
+
+ public String getParameter(String name);
+
+
+ /**
+ *
+ * Returns an <code>Enumeration</code> of <code>String</code>
+ * objects containing the names of the parameters contained
+ * in this request. If the request has
+ * no parameters, the method returns an
+ * empty <code>Enumeration</code>.
+ * <p>
+ * Only parameters targeted to the current portlet are returned.
+ *
+ *
+ * @return an <code>Enumeration</code> of <code>String</code>
+ * objects, each <code>String</code> containing
+ * the name of a request parameter; or an
+ * empty <code>Enumeration</code> if the
+ * request has no parameters.
+ */
+
+ public java.util.Enumeration<String> getParameterNames();
+
+
+ /**
+ * Returns an array of <code>String</code> objects containing
+ * all of the values the given request parameter has, or
+ * <code>null</code> if the parameter does not exist.
+ * The returned parameters are "x-www-form-urlencoded" decoded.
+ * <p>
+ * If the parameter has a single value, the array has a length
+ * of 1.
+ *
+ *
+ * @param name a <code>String</code> containing the name of
+ * the parameter the value of which is requested
+ *
+ * @return an array of <code>String</code> objects
+ * containing the parameter values.
+ *
+ * @see #getParameter
+ *
+ * @exception java.lang.IllegalArgumentException
+ * if name is <code>null</code>.
+ *
+ */
+
+ public String[] getParameterValues(String name);
+
+
+ /**
+ * Returns a <code>Map</code> of the parameters of this request.
+ * Request parameters are extra information sent with the request.
+ * The returned parameters are "x-www-form-urlencoded" decoded.
+ * <p>
+ * The values in the returned <code>Map</code> are from type
+ * String array (<code>String[]</code>).
+ * <p>
+ * If no parameters exist this method returns an empty <code>Map</code>.
+ *
+ * @return an immutable <code>Map</code> containing parameter names as
+ * keys and parameter values as map values, or an empty <code>Map</code>
+ * if no parameters exist. The keys in the parameter
+ * map are of type String. The values in the parameter map are of type
+ * String array (<code>String[]</code>).
+ */
+
+ public java.util.Map<String, String[]> getParameterMap();
+
+
+ /**
+ * Returns a boolean indicating whether this request was made
+ * using a secure channel between client and the portal, such as HTTPS.
+ *
+ * @return true, if the request was made using a secure channel.
+ */
+
+ public boolean isSecure();
+
+
+ /**
+ * Stores an attribute in this request.
+ *
+ * <p>Attribute names should follow the same conventions as
+ * package names. Names beginning with <code>java.*</code>,
+ * <code>javax.*</code>, and <code>com.sun.*</code> are
+ * reserved.
+ *<br> If the value passed into this method is <code>null</code>,
+ * the effect is the same as calling {@link #removeAttribute}.
+ *
+ *
+ * @param name a <code>String</code> specifying
+ * the name of the attribute
+ *
+ * @param o the <code>Object</code> to be stored
+ *
+ *
+ * @exception java.lang.IllegalArgumentException
+ * if name is <code>null</code>.
+ */
+
+ public void setAttribute(String name, Object o);
+
+
+ /**
+ *
+ * Removes an attribute from this request. This method is not
+ * generally needed, as attributes only persist as long as the request
+ * is being handled.
+ *
+ * <p>Attribute names should follow the same conventions as
+ * package names. Names beginning with <code>java.*</code>,
+ * <code>javax.*</code>, and <code>com.sun.*</code> are
+ * reserved.
+ *
+ * @param name a <code>String</code> specifying
+ * the name of the attribute to be removed
+ *
+ *
+ * @exception java.lang.IllegalArgumentException
+ * if name is <code>null</code>.
+ */
+
+ public void removeAttribute(String name);
+
+
+ /**
+ *
+ * Returns the session ID indicated in the client request.
+ * This session ID may not be a valid one, it may be an old
+ * one that has expired or has been invalidated.
+ * If the client request
+ * did not specify a session ID, this method returns
+ * <code>null</code>.
+ *
+ * @return a <code>String</code> specifying the session
+ * ID, or <code>null</code> if the request did
+ * not specify a session ID
+ *
+ * @see #isRequestedSessionIdValid
+ *
+ */
+
+ public String getRequestedSessionId();
+
+
+ /**
+ *
+ * Checks whether the requested session ID is still valid.
+ *
+ * @return <code>true</code> if this
+ * request has an id for a valid session
+ * in the current session context;
+ * <code>false</code> otherwise
+ *
+ * @see #getRequestedSessionId
+ * @see #getPortletSession
+ */
+
+ public boolean isRequestedSessionIdValid();
+
+
+ /**
+ * Returns the portal preferred content type for the response.
+ * <p>
+ * The following restrictions apply:
+ * <ul>
+ * <li>The content type only includes the MIME type, not the
+ * character set. The character set of the response
+ * can be retrieved via the {@link RenderResponse#getCharacterEncoding}.</li>
+ * <li>Only content types that the portlet has defined in its
+ * deployment descriptor are valid return values for
+ * this method call. If the portlet has defined
+ * <code>'*'</code> or <code>'* / *'</code> as supported content
+ * types, these may also be valid return values.</li>
+ * </ul>
+ *
+ * @return preferred MIME type of the response
+ */
+
+ public String getResponseContentType();
+
+
+ /**
+ * Gets a list of content types which the portal accepts for the response.
+ * This list is ordered with the most preferable types listed first.
+ * <p>
+ * The following restrictions apply:
+ * <ul>
+ * <li>The content type only includes the MIME type, not the
+ * character set.</li>
+ * <li>Only content types that the portlet has defined in its
+ * deployment descriptor are valid return values for
+ * this method call. If the portlet has defined
+ * <code>'*'</code> or <code>'* / *'</code> as supported content
+ * types, these may also be valid return values.</li>
+ * </ul>
+ *
+ * @return ordered list of MIME types for the response
+ */
+
+ public java.util.Enumeration<String> getResponseContentTypes();
+
+
+ /**
+ * Returns the preferred Locale in which the portal will accept content.
+ * The Locale may be based on the Accept-Language header of the client.
+ *
+ * @return the preferred Locale in which the portal will accept content.
+ */
+
+ public java.util.Locale getLocale();
+
+
+ /**
+ * Returns an Enumeration of Locale objects indicating, in decreasing
+ * order starting with the preferred locale in which the portal will
+ * accept content for this request.
+ * The Locales may be based on the Accept-Language header of the client.
+ *
+ * @return an Enumeration of Locales, in decreasing order, in which
+ * the portal will accept content for this request
+ */
+
+ public java.util.Enumeration<Locale> getLocales();
+
+
+ /**
+ * Returns the name of the scheme used to make this request.
+ * For example, <code>http</code>, <code>https</code>, or <code>ftp</code>.
+ * Different schemes have different rules for constructing URLs,
+ * as noted in RFC 1738.
+ *
+ * @return a <code>String</code> containing the name
+ * of the scheme used to make this request
+ */
+
+ public String getScheme();
+
+
+ /**
+ * Returns the host name of the server that received the request.
+ *
+ * @return a <code>String</code> containing the name
+ * of the server to which the request was sent
+ */
+
+ public String getServerName();
+
+
+ /**
+ * Returns the port number on which this request was received.
+ *
+ * @return an integer specifying the port number
+ */
+
+ public int getServerPort();
+
+ /**
+ * Returns the portlet window ID. The portlet window ID is
+ * unique for this portlet window and is constant for the lifetime
+ * of the portlet window.
+ * <p>
+ * This ID is the same that is used by the portlet container for
+ * scoping the portlet-scope session attributes.
+ *
+ * @since 2.0
+ * @return the portlet window ID
+ */
+ public String getWindowID();
+
+
+ /**
+ * Returns an array containing all of the Cookie properties.
+ * <p>
+ * This method returns <code>null</code> if no cookies exist.
+ *
+ * @since 2.0
+ * @return array of cookie properties, or
+ * <code>null</code> if no cookies exist.
+ * @see MimeResponse#addProperty(Cookie)
+ */
+ public javax.servlet.http.Cookie[] getCookies();
+
+ /**
+ * Returns a <code>Map</code> of the private parameters of this request.
+ * Private parameters are not shared with other portlets or components.
+ * The returned parameters are "x-www-form-urlencoded" decoded.
+ * <p>
+ * The values in the returned <code>Map</code> are from type
+ * String array (<code>String[]</code>).
+ * <p>
+ * If no private parameters exist this method returns an empty <code>Map</code>.
+ *
+ * @since 2.0
+ * @return an immutable <code>Map</code> containing private parameter names as
+ * keys and private parameter values as map values, or an empty <code>Map</code>
+ * if no private parameters exist. The keys in the parameter
+ * map are of type String. The values in the parameter map are of type
+ * String array (<code>String[]</code>).
+ */
+ public java.util.Map<String, String[]> getPrivateParameterMap();
+
+ /**
+ * Returns a <code>Map</code> of the public parameters of this request.
+ * Public parameters may be shared with other portlets or components and
+ * defined in the portlet deployment descriptor with the
+ * <code>supported-public-render-parameter</code> element.
+ * The returned parameters are "x-www-form-urlencoded" decoded.
+ * <p>
+ * The values in the returned <code>Map</code> are from type
+ * String array (<code>String[]</code>).
+ * <p>
+ * If no public parameters exist this method returns an empty <code>Map</code>.
+ *
+ * @since 2.0
+ * @return an immutable <code>Map</code> containing public parameter names as
+ * keys and public parameter values as map values, or an empty <code>Map</code>
+ * if no public parameters exist. The keys in the parameter
+ * map are of type String. The values in the parameter map are of type
+ * String array (<code>String[]</code>).
+ */
+ public java.util.Map<String, String[]> getPublicParameterMap();
+
+}
Added: portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletRequestDispatcher.java
URL: http://svn.apache.org/viewvc/portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletRequestDispatcher.java?rev=1690750&view=auto
==============================================================================
--- portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletRequestDispatcher.java (added)
+++ portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletRequestDispatcher.java Mon Jul 13 16:39:59 2015
@@ -0,0 +1,142 @@
+/* Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+/*
+ * This source code implements specifications defined by the Java
+ * Community Process. In order to remain compliant with the specification
+ * DO NOT add / change / or delete method signatures!
+ */
+
+package javax.portlet;
+
+/**
+ * The <code>PortletRequestDispatcher</code> interface defines an object that
+ * receives requests from the client and sends them to the specified resources
+ * (such as a servlet, HTML file, or JSP file) on the server. The portlet
+ * container creates the <code>PortletRequestDispatcher</code> object, which
+ * is used as a wrapper around a server resource located at a particular path or
+ * given by a particular name.
+ *
+ */
+
+public interface PortletRequestDispatcher {
+
+ /**
+ *
+ * Includes the content of a resource (servlet, JSP page, HTML file) in the
+ * response. In essence, this method enables programmatic server-side
+ * includes.
+ * <p>
+ * The included servlet cannot set or change the response status code or set
+ * headers; any attempt to make a change is ignored.
+ * <p>
+ * This method is kept in order to provide backward compatibility with
+ * version 1.0. Please use {@link #include(PortletRequest, PortletResponse)} instead
+ * of this method.
+ *
+ * @param request
+ * a {@link RenderRequest} object that contains the client
+ * request. Must be either the render request passed to the
+ * portlet in <code>render</code> or a wrapped version of this
+ * render request.
+ *
+ * @param response
+ * a {@link RenderResponse} object that contains the render
+ * response. Must be either the render response passed to the
+ * portlet in <code>render</code> or a wrapped version of this
+ * render response.
+ *
+ * @exception PortletException
+ * if the included resource throws a ServletException, or
+ * other exceptions that are not Runtime- or IOExceptions.
+ *
+ * @exception java.io.IOException
+ * if the included resource throws this exception
+ *
+ *
+ */
+
+ public void include(RenderRequest request, RenderResponse response)
+ throws PortletException, java.io.IOException;
+
+ /**
+ *
+ * Includes the content of a resource (servlet, JSP page, HTML file) in the
+ * response. In essence, this method enables programmatic server-side
+ * includes.
+ * <p>
+ * The included servlet cannot set or change the response status code or set
+ * headers; any attempt to make a change is ignored.
+ *
+ *
+ * @param request
+ * a {@link PortletRequest} object that contains the portlet
+ * request. Must be either the original request passed to the
+ * portlet or a wrapped version of this request.
+ *
+ * @param response
+ * a {@link PortletResponse} object that contains the portlet
+ * response. Must be either the portlet response passed to the
+ * portlet or a wrapped version of this response.
+ *
+ * @exception PortletException
+ * if the included resource throws a ServletException, or
+ * other exceptions that are not Runtime- or IOExceptions.
+ *
+ * @exception java.io.IOException
+ * if the included resource throws this exception
+ *
+ * @since 2.0
+ */
+
+ public void include(PortletRequest request, PortletResponse response)
+ throws PortletException, java.io.IOException;
+
+ /**
+ * Forwards a portlet request from a portlet to another resource (servlet, JSP file, or HTML file)
+ * on the server. This method allows the portlet to do preliminary processing of a
+ * request and another resource to generate the response.
+ * <p>
+ * The <code>forward</code> method should be called before the response has been
+ * committed to the portlet container (before response body output has been flushed).
+ * If the response already has been committed, this method throws an
+ * <code>IllegalStateException</code>. Uncommitted output in the response buffer
+ * is automatically cleared before the forward.
+ * <p>
+ * The request and response parameters must be either the same objects as were passed to
+ * the calling portlet or be wrapped versions of these.
+ *
+ * @param request a request object that represents the request to the
+ * portlet
+ * @param response a reponse object that contains the portlet response
+ *
+ * @exception PortletException
+ * if the included resource throws a ServletException, or
+ * other exceptions that are not Runtime- or IOExceptions.
+ * @exception java.io.IOException
+ * if the included resource throws this exception
+ * @exception java.lang.IllegalStateException
+ * if the response was already committed
+ * @since 2.0
+ */
+ public void forward(PortletRequest request, PortletResponse response)
+ throws PortletException, java.io.IOException;
+
+
+
+}
Added: portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletResponse.java
URL: http://svn.apache.org/viewvc/portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletResponse.java?rev=1690750&view=auto
==============================================================================
--- portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletResponse.java (added)
+++ portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletResponse.java Mon Jul 13 16:39:59 2015
@@ -0,0 +1,196 @@
+/* Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+/*
+ * This source code implements specifications defined by the Java
+ * Community Process. In order to remain compliant with the specification
+ * DO NOT add / change / or delete method signatures!
+ */
+
+package javax.portlet;
+
+/**
+ * The <CODE>PortletResponse</CODE> defines the base interface to assist a
+ * portlet in creating and sending a response to the client. The portlet
+ * container uses specialized versions of this interface when invoking a
+ * portlet.
+ * The portlet container creates these objects and passes them as arguments to
+ * the portlet's <CODE>processAction, processEvent, serveResource</CODE> and <CODE>render</CODE> methods.
+ *
+ * @see ActionResponse
+ * @see RenderResponse
+ * @see EventResponse
+ * @see ResourceResponse
+ */
+public interface PortletResponse {
+
+
+ /**
+ * Adds a String property to an existing key to be returned to the portal.
+ * If there are no property values already associated with the key,
+ * a new key is created.
+ * <p>
+ * This method allows response properties to have multiple values.
+ * <p>
+ * Response properties can be viewed as header values set for the portal application.
+ * If these header values are intended to be transmitted to the client they should be
+ * set before the response is committed.
+ *
+ * @param key
+ * the key of the property to be returned to the portal
+ * @param value
+ * the value of the property to be returned to the portal
+ *
+ * @exception java.lang.IllegalArgumentException
+ * if key is <code>null</code>.
+ */
+
+ public void addProperty(String key, String value);
+
+
+ /**
+ * Sets a String property to be returned to the portal.
+ * <p>
+ * Response properties can be viewed as header values set for the portal application.
+ * If these header values are intended to be transmitted to the client they should be
+ * set before the response is committed.
+ * <p>
+ * This method resets all properties previously added with the same key.
+ *
+ * @param key
+ * the key of the property to be returned to the portal
+ * @param value
+ * the value of the property to be returned to the portal
+ *
+ * @exception java.lang.IllegalArgumentException
+ * if key is <code>null</code>.
+ */
+
+ public void setProperty(String key, String value);
+
+ /**
+ * Returns the encoded URL of the resource, like servlets, JSPs, images and
+ * other static files, at the given path.
+ * <p>
+ * Portlets should encode all resource URLs pointing to resources in the
+ * portlet application via this method in order to ensure that they get
+ * served via the portal application.
+ * <p>
+ * Some portal/portlet-container implementation may require those URLs to
+ * contain implementation specific data encoded in it. Because of that,
+ * portlets should use this method to create such URLs.
+ * <p>
+ * The <code>encodeURL</code> method may include the session ID and other
+ * portal/portlet-container specific information into the URL. If encoding
+ * is not needed, it returns the URL unchanged.
+ * <p>
+ * Portlet developer should be aware that the returned URL might not be a well formed
+ * URL but a special token at the time the portlet is generating its content.
+ * Thus portlets should not add additional parameters on the resulting URL or
+ * expect to be able to parse the URL. As a result, the outcome of the encodeURL
+ * call may be different than calling encodeURL in the servlet world.
+ *
+ * @param path
+ * the URI path to the resource. This must be either an absolute
+ * URL (e.g.
+ * <code>http://my.co/myportal/mywebap/myfolder/myresource.gif</code>)
+ * or a full path URI (e.g.
+ * <code>/myportal/mywebap/myfolder/myresource.gif</code>).
+ *
+ * @exception java.lang.IllegalArgumentException
+ * if path doesn't have a leading slash or is not an absolute
+ * URL
+ *
+ * @return the encoded resource URL as string, may not be a valid URL
+ */
+
+ public String encodeURL(String path);
+
+ /**
+ * The value returned by this method should be prefixed or appended to
+ * elements, such as JavaScript variables or function names, to ensure they
+ * are unique in the context of the portal page.
+ * <p>
+ * The namespace value must be constant for the lifetime of the portlet
+ * window.
+ *
+ * @return the namespace
+ */
+
+ public String getNamespace();
+
+ /**
+ * Adds a HTTP Cookie property to the response.<br>
+ * The portlet should note that the cookie may not make
+ * it to the client, but may be stored at the portal.
+ * <p>
+ * This method allows response properties to have multiple cookies.
+ * <p>
+ *
+ * @param cookie the cookie to be added to the response
+ *
+ * @exception java.lang.IllegalArgumentException
+ * if cookie is <code>null</code>.
+ * @since 2.0
+ */
+
+ public void addProperty(javax.servlet.http.Cookie cookie);
+
+
+ /**
+ * Adds an XML DOM element property to the response.
+ * <p>
+ * If a DOM element with the provided key already exists
+ * the provided element will be stored in addition to the
+ * existing element under the same key.
+ * <p>
+ * If the element is <code>null</code> the key is removed from
+ * the response.
+ * <p>
+ * Response XML DOM element properties can be viewed as
+ * additional response document sections
+ * set for the portal application.
+ * If these header values are intended to be transmitted to the client they should be
+ * set before the response is committed.
+ *
+ * @param key
+ * the key of the property to be returned to the portal
+ * @param element
+ * the XML DOM element to be added to the response
+ *
+ * @exception java.lang.IllegalArgumentException
+ * if key is <code>null</code>.
+ * @since 2.0
+ */
+ void addProperty(String key, org.w3c.dom.Element element);
+
+ /**
+ * Creates an element of the type specified to be used in the
+ * {@link #addProperty(String,Element)} method.
+ *
+ * @param tagName name of the element type to instantiate
+ * @return A new Element object with the nodeName attribute set to tagName,
+ * and localName, prefix, and namespaceURI set to null.
+ * @throws org.w3c.dom.DOMException
+ * INVALID_CHARACTER_ERR: Raised if the specified name
+ * contains an illegal character.
+ */
+ org.w3c.dom.Element createElement(String tagName) throws org.w3c.dom.DOMException;
+
+
+}
Added: portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletSecurityException.java
URL: http://svn.apache.org/viewvc/portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletSecurityException.java?rev=1690750&view=auto
==============================================================================
--- portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletSecurityException.java (added)
+++ portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletSecurityException.java Mon Jul 13 16:39:59 2015
@@ -0,0 +1,91 @@
+/* Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+/*
+ * This source code implements specifications defined by the Java
+ * Community Process. In order to remain compliant with the specification
+ * DO NOT add / change / or delete method signatures!
+ */
+
+package javax.portlet;
+
+/**
+ * A portlet should throw a <CODE>PortletSecurityException</CODE>
+ * when a call fails because of security reasons.<br>
+ * Additionally it can be thrown by the portal/portlet-container.
+ */
+
+public class PortletSecurityException extends PortletException
+{
+
+ private static final long serialVersionUID = 1L;
+
+ private PortletSecurityException ()
+ {
+ }
+
+ /**
+ * Constructs a new security exception with the given text. The
+ * portlet container may use the text write it to a log.
+ *
+ * @param text
+ * the exception text
+ */
+
+ public PortletSecurityException (String text)
+ {
+ super (text);
+ }
+
+ /**
+ * Constructs a new portlet security exception when the portlet needs to do
+ * the following:
+ * <ul>
+ * <il>throw an exception
+ * <li>include a message about the "root cause" that interfered
+ * with its normal operation
+ * <li>include a description message
+ * </ul>
+ *
+ * @param text
+ * the exception text
+ * @param cause
+ * the root cause
+ */
+
+ public PortletSecurityException (String text, Throwable cause)
+ {
+ super(text, cause);
+ }
+
+ /**
+ * Constructs a new portlet security exception when the portlet needs to throw an
+ * exception. The exception message is based on the localized message
+ * of the underlying exception.
+ *
+ * @param cause
+ * the root cause
+ */
+
+ public PortletSecurityException (Throwable cause)
+ {
+ super(cause);
+ }
+
+
+}