javax.portlet

## Interface PortletRequest

All Known Subinterfaces:
  ActionRequest, ClientDataRequest, EventRequest, RenderRequest, ResourceRequest

All Known Implementing Classes:
  ActionRequestWrapper, EventRequestWrapper, PortletRequestWrapper, RenderRequestWrapper, ResourceRequestWrapper

    public interface PortletRequest

The `PortletRequest` 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, `ActionRequest` and `RenderRequest`. The portlet container creates these objects and passes them as arguments to the portlet's `processAction` and `render` methods.

See Also:
  `ActionRequest`, `RenderRequest`

### Nested Class Summary

Nested Classes
`static class` `PortletRequest.P3PUserInfos` P3P user information constants.

### Field Summary

Fields
`static String` `ACTION_PHASE` String identifier for the portlet action lifecycle phase.
`static String` `ACTION_SCOPE_ID` The action scope ID that the portlet container uses for storing the current action scope as render parameter if the `javax.portlet.actionScopedRequestAttributes` container runtime option is used by the portlet.
`static String` `BASIC_AUTH` String identifier for Basic authentication.
`static String` `CCPP_PROFILE` Used to retrieve an instance of the `javax.ccpp.Profile` with the `getAttribute` call.
`static String` `CLIENT_CERT_AUTH` String identifier for Certification based authentication.
`static String` `DIGEST_AUTH` String identifier for Digest based authentication.
`static String` `EVENT_PHASE` String identifier for the portlet event lifecycle phase.
`static String` `FORM_AUTH` String identifier for Form based authentication.
`static String` `LIFECYCLE_PHASE` Provides the portlet lifecycle phase of the current request as request attribute.
`static String` `RENDER_HEADERS` 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.
`static String` `RENDER_MARKUP` 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.
`static String` `RENDER_PART` 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.
`static String` `RENDER_PHASE` String identifier for the portlet render lifecycle phase.
`static String` `RESOURCE_PHASE` String identifier for the portlet resource serving lifecycle phase.
`static String` `USER_INFO` Used to retrieve user information attributes with the `getAttribute` call.

### Method Summary

All Methods Instance Methods Abstract Methods
`Object` `getAttribute(String name)` Returns the value of the named attribute as an `Object`, or `null` if no attribute of the given name exists.
`Enumeration<String>` `getAttributeNames()` Returns an `Enumeration` containing the names of the attributes available to this request.
`String` `getAuthType()` Returns the name of the authentication scheme used for the connection between client and portal, for example, `BASIC_AUTH`, `CLIENT_CERT_AUTH`, a custom one or `null` if there was no authentication.
`String` `getContextPath()` Returns the context path which is the path prefix associated with the deployed portlet application.
`javax.servlet.http.Cookie[]` `getCookies()` Returns an array containing all of the Cookie properties.
`Locale` `getLocale()` Returns the preferred Locale in which the portal will accept content.
`Enumeration<Locale>` `getLocales()` 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.
`String` `getParameter(String name)` Returns the value of a request parameter as a `String`, or `null` if the parameter does not exist.
`Map<String,String[]>` `getParameterMap()` Returns a `Map` of the parameters of this request.
`Enumeration<String>` `getParameterNames()` Returns an `Enumeration` of `String` objects containing the names of the parameters contained in this request.
`String[]` `getParameterValues(String name)` Returns an array of `String` objects containing all of the values the given request parameter has, or `null` if the parameter does not exist.
`PortalContext` `getPortalContext()` Returns the context of the calling portal.
`PortletMode` `getPortletMode()` Returns the current portlet mode of the portlet.
`PortletSession` `getPortletSession()` Returns the current portlet session or, if there is no current session, creates one and returns the new session.
`PortletSession` `getPortletSession(boolean create)` Returns the current portlet session or, if there is no current session and the given flag is `true`, creates one and returns the new session.
`PortletPreferences` `getPreferences()` Returns the preferences object associated with the portlet.
`Map<String,String[]>` `getPrivateParameterMap()` Returns a `Map` of the private parameters of this request.
`Enumeration<String>` `getProperties(String name)` Returns all the values of the specified request property as a `Enumeration` of `String` objects.
`String` `getProperty(String name)` Returns the value of the specified request property as a `String`.
`Enumeration<String>` `getPropertyNames()` Returns a `Enumeration` of all the property names this request contains.
`Map<String,String[]>` `getPublicParameterMap()` Returns a `Map` of the public parameters of this request.
`String` `getRemoteUser()` Returns the login of the user making this request, if the user has been authenticated, or null if the user has not been authenticated.
`String` `getRequestedSessionId()` Returns the session ID indicated in the client request.
`String` `getResponseContentType()` Returns the portal preferred content type for the response.
`Enumeration<String>` `getResponseContentTypes()` Gets a list of content types which the portal accepts for the response.
`String` `getScheme()` Returns the name of the scheme used to make this request.
`String` `getServerName()` Returns the host name of the server that received the request.
`int` `getServerPort()` Returns the port number on which this request was received.
`Principal` `getUserPrincipal()` Returns a java.security.Principal object containing the name of the current authenticated user.
`String` `getWindowID()` Returns the portlet window ID.
`WindowState` `getWindowState()` Returns the current window state of the portlet.
`boolean` `isPortletModeAllowed(PortletMode mode)` Returns true, if the given portlet mode is a valid one to set for this portlet in the context of the current request.
`boolean` `isRequestedSessionIdValid()` Checks whether the requested session ID is still valid.
`boolean` `isSecure()` Returns a boolean indicating whether this request was made using a secure channel between client and the portal, such as HTTPS.
`boolean` `isUserInRole(String role)` Returns a boolean indicating whether the authenticated user is included in the specified logical "role".
`boolean` `isWindowStateAllowed(WindowState state)` Returns true, if the given window state is valid to be set for this portlet in the context of the current request.
`void` `removeAttribute(String name)` Removes an attribute from this request.
`void` `setAttribute(String name, Object o)` Stores an attribute in this request.

### Field Detail

#### USER_INFO

    static final String USER_INFO

Used to retrieve user information attributes with the `getAttribute` call. The user information is returned as a `Map` object. The portlet must define the user information attribute it is interested in inside the `user-attribute` 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.
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 `null` value.

If the user-attribute is not defined for the current user it will not show up in the Map.

The value is `javax.portlet.userinfo`.

See Also:
  Constant Field Values

#### CCPP_PROFILE

    static final String CCPP_PROFILE

Used to retrieve an instance of the `javax.ccpp.Profile` with the `getAttribute` call. The returned profile is based on the current portlet request and may contain additional CC/PP information set by the portal / portlet container.

The value is `javax.portlet.ccpp`.

Since:
  2.0
See Also:
  Constant Field Values

#### BASIC_AUTH

    static final String BASIC_AUTH

String identifier for Basic authentication. Value "BASIC".

See Also:
  Constant Field Values

#### FORM_AUTH

    static final String FORM_AUTH

String identifier for Form based authentication. Value "FORM".

See Also:
  Constant Field Values

#### CLIENT_CERT_AUTH

    static final String CLIENT_CERT_AUTH

String identifier for Certification based authentication. Value "CLIENT_CERT".

See Also:
  Constant Field Values

#### DIGEST_AUTH

    static final String DIGEST_AUTH

String identifier for Digest based authentication. Value "DIGEST".

See Also:
  Constant Field Values

#### ACTION_PHASE

    static final String ACTION_PHASE

String identifier for the portlet action lifecycle phase. In this phase the portlet request and response are from type `ActionRequest` and `ActionResponse`.

The value of the constant is `ACTION_PHASE`.

Since:
  2.0
See Also:
  Constant Field Values

#### EVENT_PHASE

    static final String EVENT_PHASE

String identifier for the portlet event lifecycle phase. In this phase the portlet request and response are from type `EventRequest` and `EventResponse`.

The value of the constant is `EVENT_PHASE`.

Since:
  2.0
See Also:
  Constant Field Values

#### RENDER_PHASE

    static final String RENDER_PHASE

String identifier for the portlet render lifecycle phase. In this phase the portlet request and response are from type `RenderRequest` and `RenderResponse`.

The value of the constant is `RENDER_PHASE`.

Since:
  2.0
See Also:
  Constant Field Values

#### RESOURCE_PHASE

    static final String RESOURCE_PHASE

String identifier for the portlet resource serving lifecycle phase. In this phase the portlet request and response are from type `ResourceRequest` and `ResourceResponse`.

The value of the constant is `RESOURCE_PHASE`.

Since:
  2.0
See Also:
  Constant Field Values

#### LIFECYCLE_PHASE

    static final String LIFECYCLE_PHASE

Provides the portlet lifecycle phase of the current request as request attribute.

Valid values are: ACTION_PHASE, EVENT_PHASE, RENDER_PHASE, RESOURCE_SERVING_PHASE.

The value of the constant is `javax.portlet.lifecylce_phase`.

Since:
  2.0
See Also:
  Constant Field Values

#### RENDER_PART

    static final String RENDER_PART

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.

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.

The value of the constant is `javax.portlet.render_part`.

Since:
  2.0
See Also:
  Constant Field Values

#### RENDER_HEADERS

    static final String RENDER_HEADERS

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.

The value of the constant is `RENDER_HEADERS`.

Since:
  2.0
See Also:
  Constant Field Values

#### RENDER_MARKUP

    static final String RENDER_MARKUP

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.

The value of the constant is `RENDER_MARKUP`.

Since:
  2.0
See Also:
  Constant Field Values

#### ACTION_SCOPE_ID

    static final String ACTION_SCOPE_ID

The action scope ID that the portlet container uses for storing the current action scope as render parameter if the `javax.portlet.actionScopedRequestAttributes` container runtime option is used by the portlet.

The value is `javax.portlet.as`.

Since:
  2.0
See Also:
  Constant Field Values

### Method Detail

#### isWindowStateAllowed

    boolean isWindowStateAllowed(WindowState state)

Returns true, if the given window state is valid to be set for this portlet in the context of the current request.

Parameters:
  `state` - window state to checked
Returns:
  true, if it is valid for this portlet in this request to change to the given window state

#### isPortletModeAllowed

    boolean isPortletModeAllowed(PortletMode mode)

Returns true, if the given portlet mode is a valid one to set for this portlet in the context of the current request.

Parameters:
  `mode` - portlet mode to check
Returns:
  true, if it is valid for this portlet in this request to change to the given portlet mode

#### getPortletMode

    PortletMode getPortletMode()

Returns the current portlet mode of the portlet.

Returns:
  the portlet mode

#### getWindowState

    WindowState getWindowState()

Returns the current window state of the portlet.

Returns:
  the window state

#### getPreferences

    PortletPreferences getPreferences()

Returns the preferences object associated with the portlet.

Returns:
  the portlet preferences

#### getPortletSession

    PortletSession getPortletSession()

Returns the current portlet session or, if there is no current session, creates one and returns the new session.

Creating a new portlet session will result in creating a new `HttpSession` on which the portlet session is based on.

Returns:
  the portlet session

#### getPortletSession

    PortletSession getPortletSession(boolean create)

Returns the current portlet session or, if there is no current session and the given flag is `true`, creates one and returns the new session.

If the given flag is `false` and there is no current portlet session, this method returns `null`.

Creating a new portlet session will result in creating a new `HttpSession` on which the portlet session is based on.

Parameters:
  `create` - `true` to create a new session,
  `false` to return `null` if there is no current session
Returns:
  the portlet session

#### getProperty

    String getProperty(String name)

Returns the value of the specified request property as a `String`. If the request did not include a property of the specified name, this method returns `null`.

A portlet can access portal/portlet-container specific properties through this method and, if available, the headers of the HTTP client request.

This method should only be used if the property has only one value. If the property might have more than one value, use `getProperties(java.lang.String)`.

If this method is used with a multivalued parameter, the value returned is equal to the first value in the Enumeration returned by `getProperties`.

Parameters:
  `name` - a `String` specifying the property name
Returns:
  a `String` containing the value of the requested property, or `null` if the request does not have a property of that name.
Throws:
  `IllegalArgumentException` - if name is `null`.

#### getProperties

    Enumeration<String> getProperties(String name)

Returns all the values of the specified request property as a `Enumeration` of `String` objects.

If the request did not include any properties of the specified name, this method returns an empty `Enumeration`. The property name is case insensitive. You can use this method with any request property.

Parameters:
  `name` - a `String` specifying the property name
Returns:
  a `Enumeration` containing the values of the requested property. If the request does not have any properties of that name return an empty `Enumeration`.
Throws:
  `IllegalArgumentException` - if name is `null`.

#### getPropertyNames

    Enumeration<String> getPropertyNames()

Returns a `Enumeration` of all the property names this request contains. If the request has no properties, this method returns an empty `Enumeration`.

Returns:
  an `Enumeration` of all the property names sent with this request; if the request has no properties, an empty `Enumeration`.

#### getPortalContext

    PortalContext getPortalContext()

Returns the context of the calling portal.

Returns:
  the context of the calling portal

#### getAuthType

    String getAuthType()

Returns the name of the authentication scheme used for the connection between client and portal, for example, `BASIC_AUTH`, `CLIENT_CERT_AUTH`, a custom one or `null` if there was no authentication.

Returns:
  one of the static members `BASIC_AUTH`, `FORM_AUTH`, `CLIENT_CERT_AUTH`, `DIGEST_AUTH` (suitable for == comparison) indicating the authentication scheme, a custom one, or `null` if the request was not authenticated.

#### getContextPath

    String getContextPath()

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.

To encode a URL the `PortletResponse.encodeURL(java.lang.String)` method must be used.

Returns:
  a `String` specifying the portion of the request URL that indicates the context of the request
See Also:
  `PortletResponse.encodeURL(java.lang.String)`

#### getRemoteUser

    String getRemoteUser()

Returns the login of the user making this request, if the user has been authenticated, or null if the user has not been authenticated.

Returns:
  a `String` specifying the login of the user making this request, or `null` if the user login is not known.

#### getUserPrincipal

    Principal getUserPrincipal()

Returns a java.security.Principal object containing the name of the current authenticated user.

Returns:
  a `java.security.Principal` containing the name of the user making this request, or `null` if the user has not been authenticated.

#### isUserInRole

    boolean isUserInRole(String role)

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 `false`.

Parameters:
  `role` - a `String` specifying the name of the role
Returns:
  a `boolean` indicating whether the user making this request belongs to a given role; `false` if the user has not been authenticated.

#### getAttribute

    Object getAttribute(String name)

Returns the value of the named attribute as an `Object`, or `null` if no attribute of the given name exists.

Attribute names should follow the same conventions as package names. This specification reserves names matching `java.*`, and `javax.*`.

In a distributed portlet web application the `Object` needs to be serializable.

Parameters:
  `name` - a `String` specifying the name of the attribute
Returns:
  an `Object` containing the value of the attribute, or `null` if the attribute does not exist.
Throws:
  `IllegalArgumentException` - if name is `null`.

#### getAttributeNames

    Enumeration<String> getAttributeNames()

Returns an `Enumeration` containing the names of the attributes available to this request. This method returns an empty `Enumeration` if the request has no attributes available to it.

Returns:
  an `Enumeration` of strings containing the names of the request attributes, or an empty `Enumeration` if the request has no attributes available to it.

#### getParameter

    String getParameter(String name)

Returns the value of a request parameter as a `String`, or `null` if the parameter does not exist. Request parameters are extra information sent with the request. The returned parameter are "x-www-form-urlencoded" decoded.

Only parameters targeted to the current portlet are accessible.

This method should only be used if the parameter has only one value. If the parameter might have more than one value, use `getParameterValues(java.lang.String)`.

If this method is used with a multivalued parameter, the value returned is equal to the first value in the array returned by `getParameterValues`.

Parameters:
  `name` - a `String` specifying the name of the parameter
Returns:
  a `String` representing the single value of the parameter
Throws:
  `IllegalArgumentException` - if name is `null`.
See Also:
  `getParameterValues(java.lang.String)`

#### getParameterNames

    Enumeration<String> getParameterNames()

Returns an `Enumeration` of `String` objects containing the names of the parameters contained in this request. If the request has no parameters, the method returns an empty `Enumeration`.

Only parameters targeted to the current portlet are returned.

Returns:
  an `Enumeration` of `String` objects, each `String` containing the name of a request parameter; or an empty `Enumeration` if the request has no parameters.

#### getParameterValues

    String[] getParameterValues(String name)

Returns an array of `String` objects containing all of the values the given request parameter has, or `null` if the parameter does not exist. The returned parameters are "x-www-form-urlencoded" decoded.

If the parameter has a single value, the array has a length of 1.

Parameters:
  `name` - a `String` containing the name of the parameter the value of which is requested
Returns:
  an array of `String` objects containing the parameter values.
Throws:
  `IllegalArgumentException` - if name is `null`.
See Also:
  `getParameter(java.lang.String)`

#### getParameterMap

    Map<String,String[]> getParameterMap()

Returns a `Map` of the parameters of this request. Request parameters are extra information sent with the request. The returned parameters are "x-www-form-urlencoded" decoded.

The values in the returned `Map` are from type String array (`String[]`).

If no parameters exist this method returns an empty `Map`.

Returns:
  an immutable `Map` containing parameter names as keys and parameter values as map values, or an empty `Map` 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 (`String[]`).

#### isSecure

    boolean isSecure()

Returns a boolean indicating whether this request was made using a secure channel between client and the portal, such as HTTPS.

Returns:
  true, if the request was made using a secure channel.

#### setAttribute

    void setAttribute(String name,
                      Object o)

Stores an attribute in this request.

Attribute names should follow the same conventions as package names. Names beginning with `java.*`, `javax.*`, and `com.sun.*` are reserved.
If the value passed into this method is `null`, the effect is the same as calling `removeAttribute(java.lang.String)`.

Parameters:
  `name` - a `String` specifying the name of the attribute
  `o` - the `Object` to be stored
Throws:
  `IllegalArgumentException` - if name is `null`.

#### removeAttribute

    void removeAttribute(String name)

Removes an attribute from this request. This method is not generally needed, as attributes only persist as long as the request is being handled.

Attribute names should follow the same conventions as package names. Names beginning with `java.*`, `javax.*`, and `com.sun.*` are reserved.

Parameters:
  `name` - a `String` specifying the name of the attribute to be removed
Throws:
  `IllegalArgumentException` - if name is `null`.

#### getRequestedSessionId

    String getRequestedSessionId()

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 `null`.

Returns:
  a `String` specifying the session ID, or `null` if the request did not specify a session ID
See Also:
  `isRequestedSessionIdValid()`

#### isRequestedSessionIdValid

    boolean isRequestedSessionIdValid()

Checks whether the requested session ID is still valid.

Returns:
  `true` if this request has an id for a valid session in the current session context; `false` otherwise
See Also:
  `getRequestedSessionId()`, `getPortletSession()`

#### getResponseContentType

    String getResponseContentType()

Returns the portal preferred content type for the response.

The following restrictions apply:

- The content type only includes the MIME type, not the character set. The character set of the response can be retrieved via the `MimeResponse.getCharacterEncoding()`.
- 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 `'*'` or `'* / *'` as supported content types, these may also be valid return values.

Returns:
  preferred MIME type of the response

#### getResponseContentTypes

    Enumeration<String> getResponseContentTypes()

Gets a list of content types which the portal accepts for the response. This list is ordered with the most preferable types listed first.

The following restrictions apply:

- The content type only includes the MIME type, not the character set.
- 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 `'*'` or `'* / *'` as supported content types, these may also be valid return values.

Returns:
  ordered list of MIME types for the response

#### getLocale

    Locale getLocale()

Returns the preferred Locale in which the portal will accept content. The Locale may be based on the Accept-Language header of the client.

Returns:
  the preferred Locale in which the portal will accept content.

#### getLocales

    Enumeration<Locale> getLocales()

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.

Returns:
  an Enumeration of Locales, in decreasing order, in which the portal will accept content for this request

#### getScheme

    String getScheme()

Returns the name of the scheme used to make this request. For example, `http`, `https`, or `ftp`. Different schemes have different rules for constructing URLs, as noted in RFC 1738.

Returns:
  a `String` containing the name of the scheme used to make this request

#### getServerName

    String getServerName()

Returns the host name of the server that received the request.

Returns:
  a `String` containing the name of the server to which the request was sent

#### getServerPort

    int getServerPort()

Returns the port number on which this request was received.

Returns:
  an integer specifying the port number

#### getWindowID

    String getWindowID()

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.

This ID is the same that is used by the portlet container for scoping the portlet-scope session attributes.

Returns:
  the portlet window ID
Since:
  2.0

#### getCookies

    javax.servlet.http.Cookie[] getCookies()

Returns an array containing all of the Cookie properties.

This method returns `null` if no cookies exist.

Returns:
  array of cookie properties, or `null` if no cookies exist.
Since:
  2.0
See Also:
  `PortletResponse.addProperty(Cookie)`

#### getPrivateParameterMap

    Map<String,String[]> getPrivateParameterMap()

Returns a `Map` 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.

The values in the returned `Map` are from type String array (`String[]`).

If no private parameters exist this method returns an empty `Map`.

Returns:
  an immutable `Map` containing private parameter names as keys and private parameter values as map values, or an empty `Map` 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 (`String[]`).
Since:
  2.0

#### getPublicParameterMap

    Map<String,String[]> getPublicParameterMap()

Returns a `Map` 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 `supported-public-render-parameter` element. The returned parameters are "x-www-form-urlencoded" decoded.

The values in the returned `Map` are from type String array (`String[]`).

If no public parameters exist this method returns an empty `Map`.

Returns:
  an immutable `Map` containing public parameter names as keys and public parameter values as map values, or an empty `Map` 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 (`String[]`).
Since:
  2.0