public abstract class ExternalContext extends Object
This class allows the Faces API to be unaware of the nature of its containing application environment. In particular, this class allows JavaServer Faces based appications to run in either a Servlet or a Portlet environment.
The documentation for this class only
 specifies the behavior for the Servlet implementation of
 ExternalContext.  The Portlet implementation of
 ExternalContext is specified under the revision of the
 Portlet Bridge
 Specification for JavaServer Faces JSR that corresponds to
 this version of the JSF specification.  See the Preface of the
 "prose document", linked
 from the javadocs, for a reference.
If a reference to an
 ExternalContext is obtained during application startup or shutdown
 time, any method documented as "valid to call this method during
 application startup or shutdown" must be supported during application startup or shutdown
 time.  The result of calling a method during application startup or shutdown time
 that does not have this designation is undefined.
An ExternalContext can be injected into a CDI
 managed bean using @Inject ExternalContext externalContext;
 
| Modifier and Type | Field and Description | 
|---|---|
| static String | BASIC_AUTHString identifier for BASIC authentication. | 
| static String | CLIENT_CERT_AUTHString identifier for CLIENT_CERT authentication. | 
| static String | DIGEST_AUTHString identifier for DIGEST authentication. | 
| static String | FORM_AUTHString identifier for FORM authentication. | 
| Constructor and Description | 
|---|
| ExternalContext() | 
| Modifier and Type | Method and Description | 
|---|---|
| void | addResponseCookie(String name,
                 String value,
                 Map<String,Object> properties)Adds the cookie represented by the arguments to the response. | 
| void | addResponseHeader(String name,
                 String value)Add the given name and value to the response header. | 
| abstract void | dispatch(String path)Dispatch a request to the specified resource to create output
 for this response. | 
| abstract String | encodeActionURL(String url)Return the input URL, after performing any rewriting needed to
 ensure that it will correctly identify an addressable action in the
 current application. | 
| String | encodeBookmarkableURL(String baseUrl,
                     Map<String,List<String>> parameters)The purpose of this method is to generate a query string from the collection of Parameter objects provided by the parameters argument and append that query string to the baseUrl. | 
| abstract String | encodeNamespace(String name)Return the specified
 name, after prefixing it with a namespace that ensures that it
 will be unique within the context of a particular page. | 
| String | encodePartialActionURL(String url)Return the input URL, after performing any rewriting needed to ensure that it can be used in a partial page submission (ajax request) to correctly identify an addressable action in the current application. | 
| String | encodeRedirectURL(String baseUrl,
                 Map<String,List<String>> parameters)The purpose of this method is to generate a query string from the collection of Parameter
 objects provided by the parameters argument and append that query string to the baseUrl. | 
| abstract String | encodeResourceURL(String url)Return the input URL, after performing any rewriting needed to
 ensure that it will correctly identify an addressable resource in the
 current application. | 
| abstract String | encodeWebsocketURL(String url)
 Return the websocket URL, after performing any rewriting needed to
 ensure that it will correctly identify an addressable websocket in the
 current application. | 
| String | getApplicationContextPath()Return the name of the container context for this application. | 
| abstract Map<String,Object> | getApplicationMap()Return a mutable
  Maprepresenting the application scope attributes
 for the current application. | 
| abstract String | getAuthType()Return the name of the authentication scheme used to authenticate
 the current user, if any; otherwise, return  null. | 
| ClientWindow | getClientWindow()Return the  | 
| abstract Object | getContext()Return the
 application environment object instance for the current
 appication. | 
| String | getContextName()Return the name of the container context for this application. | 
| Flash | getFlash()Return the threadsafe  | 
| abstract String | getInitParameter(String name)Return the value of
 the specified application initialization parameter (if any). | 
| abstract Map<String,String> | getInitParameterMap()Return an
 immutable  Mapwhose keys are the set of application
 initialization parameter names configured for this application,
 and whose values are the corresponding parameter values. | 
| String | getMimeType(String file)Returns the MIME type of the
 specified file or  | 
| String | getRealPath(String path)Returns a String containing the real path for a given virtual path. | 
| abstract String | getRemoteUser()Return the login name of the user making the current request
 if any; otherwise, return  null. | 
| abstract Object | getRequest()Return the environment-specific object instance for the current
 request. | 
| String | getRequestCharacterEncoding() Return the character encoding currently being used
 to interpret this request. | 
| int | getRequestContentLength()Return the result
 of calling  | 
| String | getRequestContentType()Return the MIME Content-Type for this request. | 
| abstract String | getRequestContextPath()Return the portion of the request URI that identifies the web
 application context for this request. | 
| abstract Map<String,Object> | getRequestCookieMap()Return an immutable  Mapwhose keys are the set of
 cookie names included in the current request, and whose
 values (of typejavax.servlet.http.Cookie)
 are the first (or only) cookie for each cookie name
 returned by the underlying request. | 
| abstract Map<String,String> | getRequestHeaderMap()Return an immutable  Mapwhose keys are the set of
 request header names included in the current request, and whose
 values (of type String) are the first (or only) value for each
 header name returned by the underlying request. | 
| abstract Map<String,String[]> | getRequestHeaderValuesMap()Return an immutable  Mapwhose keys are the set of
 request header names included in the current request, and whose
 values (of type String[]) are all of the value for each
 header name returned by the underlying request. | 
| abstract Locale | getRequestLocale()Return the preferred  Localein which the client
 will accept content. | 
| abstract Iterator<Locale> | getRequestLocales()Return an  Iteratorover the preferredLocales specified in the request, in decreasing
 order of preference. | 
| abstract Map<String,Object> | getRequestMap()Return a mutable  Maprepresenting the request
 scope attributes for the current application. | 
| abstract Map<String,String> | getRequestParameterMap()Return an immutable  Mapwhose keys are the set of
 request parameters names included in the current request, and whose
 values (of type String) are the first (or only) value for each
 parameter name returned by the underlying request. | 
| abstract Iterator<String> | getRequestParameterNames()Return an  Iteratorover the names of all request
 parameters included in the current request. | 
| abstract Map<String,String[]> | getRequestParameterValuesMap()Return an immutable  Mapwhose keys are the set of
 request parameters names included in the current request, and whose
 values (of type String[]) are all of the values for each
 parameter name returned by the underlying request. | 
| abstract String | getRequestPathInfo()Return the extra path information (if any) included in the
 request URI; otherwise, return  null. | 
| String | getRequestScheme()Returns the name of the scheme used to make this request, for example, http, https, or ftp. | 
| String | getRequestServerName()Returns the host name of the server to which the request was sent. | 
| int | getRequestServerPort()Returns the port number to which the request was sent. | 
| abstract String | getRequestServletPath()Return the servlet path information (if any) included in the
 request URI; otherwise, return  null. | 
| abstract URL | getResource(String path)Return a
  URLfor the application resource mapped to the
 specified path, if it exists; otherwise, returnnull. | 
| abstract InputStream | getResourceAsStream(String path)Return an
  InputStreamfor an application resource mapped to
 the specified path, if it exists; otherwise, returnnull. | 
| abstract Set<String> | getResourcePaths(String path)Return the
  Setof resource paths for all application resources
 whose resource path starts with the specified argument. | 
| abstract Object | getResponse()Return the environment-specific object instance for the current
 response. | 
| int | getResponseBufferSize()Return the buffer size for the current response. | 
| String | getResponseCharacterEncoding()Returns the name of
 the character encoding (MIME charset) used for the body sent in
 this response. | 
| String | getResponseContentType()Return the MIME Content-Type for this response. | 
| OutputStream | getResponseOutputStream()Returns an  | 
| Writer | getResponseOutputWriter()Returns a  | 
| abstract Object | getSession(boolean create)If the  createparameter istrue,
 create (if necessary) and return a session instance associated
 with the current request. | 
| String | getSessionId(boolean create)Return the id of the current session
 or the empty string if no session has been created and the 
  | 
| abstract Map<String,Object> | getSessionMap()Return a mutable  Maprepresenting the session
 scope attributes for the current application. | 
| int | getSessionMaxInactiveInterval()Returns the maximum time interval, in seconds, that the servlet container will keep this session open between client accesses. | 
| abstract Principal | getUserPrincipal()Return the  Principalobject containing the name of
 the current authenticated user, if any; otherwise, returnnull. | 
| void | invalidateSession()Invalidates this session then unbinds any objects bound to it. | 
| boolean | isResponseCommitted()Check if the current response has been committed. | 
| boolean | isSecure()Returns a boolean indicating whether this request was made using a secure channel, such as HTTPS. | 
| abstract boolean | isUserInRole(String role)Return  trueif the currently authenticated user is
 included in the specified role. | 
| abstract void | log(String message)Log the specified
 message to the application object. | 
| abstract void | log(String message,
   Throwable exception)Log the specified
 message and exception to the application object. | 
| abstract void | redirect(String url)Redirect a request 
 to the specified URL, and cause the
  responseComplete()method to be called on theFacesContextinstance for the current request. | 
| void | responseFlushBuffer()Flushes the buffered response content to the client. | 
| void | responseReset()Resets the current response. | 
| void | responseSendError(int statusCode,
                 String message)Sends an HTTP status code with message. | 
| void | setClientWindow(ClientWindow window)Associate this instance with a  | 
| void | setRequest(Object request)Set the environment-specific request to be returned by
 subsequent calls to  getRequest(). | 
| void | setRequestCharacterEncoding(String encoding)Overrides the name of the character 
 encoding used in the body of this request. | 
| void | setResponse(Object response)Set the environment-specific response to be returned by
 subsequent calls to  getResponse(). | 
| void | setResponseBufferSize(int size)Set the buffer size for the current response. | 
| void | setResponseCharacterEncoding(String encoding)Sets the character encoding (MIME charset) of the response being sent 
 to the client, for example, to UTF-8. | 
| void | setResponseContentLength(int length)Set the content length of the response. | 
| void | setResponseContentType(String contentType)Sets the content type of the response being sent to the client, if the response has not been committed yet. | 
| void | setResponseHeader(String name,
                 String value)Set the response header with the given name and value. | 
| void | setResponseStatus(int statusCode)Sets the HTTP status code for the response. | 
| void | setSessionMaxInactiveInterval(int interval)Specifies the time, in seconds, between client requests before the servlet container will invalidate this session. | 
public static final String BASIC_AUTH
String identifier for BASIC authentication.
public static final String CLIENT_CERT_AUTH
String identifier for CLIENT_CERT authentication.
public static final String DIGEST_AUTH
String identifier for DIGEST authentication.
public static final String FORM_AUTH
String identifier for FORM authentication.
public void addResponseCookie(String name, String value, Map<String,Object> properties)
Adds the cookie represented by the arguments to the response.
Servlet: This must be accomplished by calling the
 javax.servlet.http.HttpServletResponse method
 addCookie().  The Cookie argument must
 be constructed by passing the name and
 value parameters.  If the properties
 arugument is non-null and not empty, the
 Cookie instance must be initialized as described
 below.
| Key in "values" Map | Expected type of value. | Name of setter method on Cookieinstance to be
 set with the value from theMap. | 
|---|---|---|
| comment | String | setComment | 
| domain | String | setDomain | 
| maxAge | Integer | setMaxAge | 
| secure | Boolean | setSecure | 
| path | String | setPath | 
| httpOnly | Boolean | setHttpOnly | 
The default implementation throws
 UnsupportedOperationException and is provided for
 the sole purpose of not breaking existing applications that
 extend this class.
name - To be passed as the first argument to the
 Cookie constructor.value - To be passed as the second argument to the
 Cookie constructor.properties - A Map containg key/value pairs to be passed
 as arguments to the setter methods as described above.IllegalArgumentException - if the properties
 Map is not-null and not empty and contains
 any keys that are not one of the keys listed above.public abstract void dispatch(String path) throws IOException
Dispatch a request to the specified resource to create output for this response.
Servlet: This must be accomplished by calling the
 javax.servlet.ServletContext method
 getRequestDispatcher(path), and calling the
 forward() method on the resulting object.
If the call to getRequestDisatcher(path) 
 returns null, send aServletResponse SC_NOT_FOUND 
 error code.
path - Context relative path to the specified resource,
  which must start with a slash ("/") characterFacesException - thrown if a ServletException occursIOException - if an input/output error occurspublic abstract String encodeActionURL(String url)
Return the input URL, after performing any rewriting needed to ensure that it will correctly identify an addressable action in the current application.
Encoding the ClientWindow
Call
ClientWindow.isClientWindowRenderModeEnabled(javax.faces.context.FacesContext). If the result isfalsetake no further action and return the rewritten URL. If the result istrue, callgetClientWindow(). If the result is non-null, callClientWindow.getId()and append the id to the query string of the URL, making the necessary allowances for a pre-existing query string or no query-string.Call
ClientWindow.getQueryURLParameters(javax.faces.context.FacesContext). If the result is non-null, for each parameter in the map, unconditionally add that parameter to the URL.The name of the query string parameter is given by the value of the constant
ResponseStateManager.CLIENT_WINDOW_URL_PARAM.
Servlet: This must be the value returned by the
 javax.servlet.http.HttpServletResponse method
 encodeURL(url).
url - The input URL to be encodedNullPointerException - if url
  is nullpublic abstract String encodeNamespace(String name)
Return the specified name, after prefixing it with a namespace that ensures that it will be unique within the context of a particular page.
Servlet: The input value must be returned unchanged.
name - Name to be encodedpublic abstract String encodeResourceURL(String url)
Return the input URL, after performing any rewriting needed to ensure that it will correctly identify an addressable resource in the current application.
Servlet: This must be the value returned by the
 javax.servlet.http.HttpServletResponse method
 encodeURL(url).
url - The input URL to be encodedNullPointerException - if url
  is nullpublic abstract String encodeWebsocketURL(String url)
Return the websocket URL, after performing any rewriting needed to ensure that it will correctly identify an addressable websocket in the current application.
 Servlet: This must ensure that the input URL is prefixed 
 with the correct websocket scheme, domain and port and then
 encoded by encodeResourceURL(String).
 
url - The input URL to be encoded.NullPointerException - if url is null.public abstract Map<String,Object> getApplicationMap()
Return a mutable
 Map representing the application scope attributes
 for the current application.  The returned Map must
 implement the entire contract for a modifiable map as described
 in the JavaDocs for java.util.Map.  Modifications
 made in the Map must cause the corresponding changes
 in the set of application scope attributes.  Particularly the
 clear(), remove(), put(),
 putAll(), and get() operations must
 take the appropriate action on the underlying data structure.
For any of the Map methods that cause an element
 to be removed from the underlying data structure, the following
 action regarding managed-beans must be taken.  If the element to
 be removed is a managed-bean, and it has one or more public
 no-argument void return methods annotated with
 javax.annotation.PreDestroy, each such method must
 be called before the element is removed from the underlying data
 structure.  Elements that are not managed-beans, but do happen to
 have methods with that annotation must not have those methods
 called on removal.  Any exception thrown by the
 PreDestroy annotated methods must by caught and not
 rethrown.  The exception may be logged.
It is valid to call this method
 during application startup or shutdown.  If called at startup or shutdown time, this
 method returns a Map that is backed by the same
 container context instance (ServletContext or
 PortletContext) as the one returned by calling
 getApplicationMap() on the
 ExternalContext returned by the
 FacesContext during an actual request.
Servlet:  This must be the set of attributes available via
 the javax.servlet.ServletContext methods
 getAttribute(), getAttributeNames(),
 removeAttribute(), and setAttribute().
ServletContext.public abstract String getAuthType()
Return the name of the authentication scheme used to authenticate
 the current user, if any; otherwise, return null.
 For standard authentication schemes, the returned value will match
 one of the following constants:
 BASIC_AUTH, CLIENT_CERT_AUTH,
 DIGEST_AUTH, or FORM_AUTH.
Servlet: This must be the value returned by the
 javax.servlet.http.HttpServletRequest method
 getAuthType().
public Flash getFlash()
Return the threadsafe Flash
 for this application.  The default implementation will throw
 UnsupportedOperationException.  Compliant JSF
 runtimes must provide an implementation of this method.
Flash for this application.public String getMimeType(String file)
Returns the MIME type of the
 specified file or null if the MIME type is not
 known.  The MIME type is determined by the container.
It is valid to call this method
 during application startup or shutdown.  If called during application
 startup or shutdown, this method calls through to the
 getMimeType() method on the same container
 context instance (ServletContext or
 PortletContext) as the one used when calling
 getMimeType() on the
 ExternalContext returned by the
 FacesContext during an actual request.
Servlet: This must be the value returned by the
 javax.servlet.ServletContext method
 getMimeType().
file - The file for which the mime type should be obtained.public abstract Object getContext()
Return the application environment object instance for the current appication.
It is valid to call this method
 during application startup or shutdown.  If called during application
 startup or shutdown, this returns the same container context instance
 (ServletContext or PortletContext) as
 the one returned when calling getContext() on the
 ExternalContext returned by the
 FacesContext during an actual request.
Servlet:  This must be the current application's
 javax.servlet.ServletContext instance.
ServletContext.public String getContextName()
Return the name of the container context for this application.
Return the result of calling
 getServletContextName() on the
 ServletContext instance for this application.  It is
 valid to call this method during application startup or shutdown.
The default implementation throws
 UnsupportedOperationException and is provided for
 the sole purpose of not breaking existing applications that
 extend this class.
ServletContext.public String getApplicationContextPath()
Return the name of the container context for this application.
Servlet:
 Return the result of calling
 getContextPath() on the
 ServletContext instance for this application.
It is valid to call this method during application startup or shutdown.
The default implementation throws
 UnsupportedOperationException and is provided for
 the sole purpose of not breaking existing applications that
 extend this class.
public abstract String getInitParameter(String name)
Return the value of the specified application initialization parameter (if any).
Servlet: This must be the result of the
 javax.servlet.ServletContext method
 getInitParameter(name).
It is valid to call this method during application startup or shutdown. If called during application startup or shutdown, this method calls through to the actual container context to return the init parameter value.
name - Name of the requested initialization parameterNullPointerException - if name
  is nullpublic abstract Map<String,String> getInitParameterMap()
Return an
 immutable Map whose keys are the set of application
 initialization parameter names configured for this application,
 and whose values are the corresponding parameter values.  The
 returned Map must implement the entire contract for
 an unmodifiable map as described in the JavaDocs for
 java.util.Map.
It is valid to call this method
 during application startup or shutdown.  If called during application
 startup or shutdown, this method returns a Map that is backed by
 the same container context instance (ServletContext
 or PortletContext) as the one returned by calling
 getInitParameterMap() on the
 ExternalContext returned by the
 FacesContext during an actual request.
Servlet: This result must be as if it were synthesized
 by calling the javax.servlet.ServletContext
 method getInitParameterNames, and putting
 each configured parameter name/value pair into the result.
public abstract String getRemoteUser()
Return the login name of the user making the current request
 if any; otherwise, return null.
Servlet: This must be the value returned by the
 javax.servlet.http.HttpServletRequest method
 getRemoteUser().
public abstract Object getRequest()
Return the environment-specific object instance for the current request.
Servlet:  This must be the current request's
 javax.servlet.http.HttpServletRequest instance.
public void setRequest(Object request)
Set the environment-specific request to be returned by
 subsequent calls to getRequest().  This may be used to
 install a wrapper for the request.
The default implementation throws 
 UnsupportedOperationException and is provided
 for the sole purpose of not breaking existing applications that extend
 this class.
request - the request object to be set.public String getRequestScheme()
Returns the name of the scheme used to make this request, for example, http, https, or ftp.
Servlet: This must be the value returned by the
 javax.servlet.ServletRequest method
 getScheme().
The default implementation throws
 UnsupportedOperationException and is provided for
 the sole purpose of not breaking existing applications that
 extend this class.
public String getRequestServerName()
Returns the host name of the server to which the request was sent.
Servlet: This must be the value returned by the
 javax.servlet.ServletRequest method
 getServerName().
The default implementation throws
 UnsupportedOperationException and is provided for
 the sole purpose of not breaking existing applications that
 extend this class.
public int getRequestServerPort()
Returns the port number to which the request was sent.
Servlet: This must be the value returned by the
 javax.servlet.ServletRequest method
 getServerPort().
The default implementation throws
 UnsupportedOperationException and is provided for
 the sole purpose of not breaking existing applications that
 extend this class.
public void setRequestCharacterEncoding(String encoding) throws UnsupportedEncodingException
Overrides the name of the character encoding used in the body of this request.
Calling this method after the request has been accessed will have no
 no effect, unless a Reader or Stream has been
 obtained from the request, in which case an IllegalStateException
 is thrown.
Servlet: This must call through to the
 javax.servlet.ServletRequest method
 setCharacterEncoding().
The default implementation throws 
 UnsupportedOperationException and is provided
 for the sole purpose of not breaking existing applications that extend
 this class.
encoding - the encoding name to be set.UnsupportedEncodingException - if this is not a valid
 encodingpublic String getRealPath(String path)
Returns a String containing the real path for a given virtual path.
It is valid to call this method
 during application startup or shutdown.  If called during application
 startup or shutdown, this method calls through to the
 getRealPath() method on the same container
 context instance (ServletContext or
 PortletContext) as the one used when calling
 getRealPath() on the
 ExternalContext returned by the
 FacesContext during an actual request.
 
Servlet: This must be the value returned by the
 javax.servlet.ServletContext method
 getRealPath().
The default implementation throws 
 UnsupportedOperationException and is provided
 for the sole purpose of not breaking existing applications that extend
 this class.
path - The context of the requested initialization parameterpublic abstract String getRequestContextPath()
Return the portion of the request URI that identifies the web application context for this request.
Servlet: This must be the value returned by the
 javax.servlet.http.HttpServletRequest method
 getContextPath().
public abstract Map<String,Object> getRequestCookieMap()
Return an immutable Map whose keys are the set of
 cookie names included in the current request, and whose
 values (of type javax.servlet.http.Cookie)
 are the first (or only) cookie for each cookie name
 returned by the underlying request.  The returned
 Map must implement the entire contract for an unmodifiable
 map as described in the JavaDocs for java.util.Map.
Servlet: This must be the value returned by the
 javax.servlet.http.HttpServletRequest method
 getCookies(), unless null was returned,
 in which case this must be a zero-length array.
public abstract Map<String,String> getRequestHeaderMap()
Return an immutable Map whose keys are the set of
 request header names included in the current request, and whose
 values (of type String) are the first (or only) value for each
 header name returned by the underlying request.  The returned
 Map must implement the entire contract for an unmodifiable
 map as described in the JavaDocs for java.util.Map.  In
 addition, key comparisons must be performed in a case insensitive
 manner.
Servlet: This must be the set of headers available via
 the javax.servlet.http.HttpServletRequest methods
 getHeader() and getHeaderNames().
public abstract Map<String,String[]> getRequestHeaderValuesMap()
Return an immutable Map whose keys are the set of
 request header names included in the current request, and whose
 values (of type String[]) are all of the value for each
 header name returned by the underlying request.  The returned
 Map must implement the entire contract for an unmodifiable
 map as described in the JavaDocs for java.util.Map.  In
 addition, key comparisons must be performed in a case insensitive
 manner.
Servlet: This must be the set of headers available via
 the javax.servlet.http.HttpServletRequest methods
 getHeaders() and getHeaderNames().
public abstract Locale getRequestLocale()
Return the preferred Locale in which the client
 will accept content.
Servlet: This must be the value returned by the
 javax.servlet.ServletRequest method
 getLocale().
Locale of the current request.public abstract Iterator<Locale> getRequestLocales()
Return an Iterator over the preferred
 Locales specified in the request, in decreasing
 order of preference.
Servlet: This must be an Iterator
 over the values returned by the javax.servlet.ServletRequest
 method getLocales().
Iterator of Locales of the current request.public abstract Map<String,Object> getRequestMap()
Return a mutable Map representing the request
 scope attributes for the current application.  The returned
 Map must implement the entire contract for a
 modifiable map as described in the JavaDocs for
 java.util.Map.  Modifications made in the
 Map must cause the corresponding changes in the set
 of request scope attributes.  Particularly the
 clear(), remove(), put(),
 putAll(), and get() operations must
 take the appropriate action on the underlying data structure.
For any of the Map methods that cause an element
 to be removed from the underlying data structure, the following
 action regarding managed-beans must be taken.  If the element to
 be removed is a managed-bean, and it has one or more public
 no-argument void return methods annotated with
 javax.annotation.PreDestroy, each such method must
 be called before the element is removed from the underlying data
 structure.  Elements that are not managed-beans, but do happen to
 have methods with that annotation must not have those methods
 called on removal.  Any exception thrown by the
 PreDestroy annotated methods must by caught and not
 rethrown.  The exception may be logged.
Servlet:  This must be the set of attributes available via
 the javax.servlet.ServletRequest methods
 getAttribute(), getAttributeNames(),
 removeAttribute(), and setAttribute().
public abstract Map<String,String> getRequestParameterMap()
Return an immutable Map whose keys are the set of
 request parameters names included in the current request, and whose
 values (of type String) are the first (or only) value for each
 parameter name returned by the underlying request.  The returned
 Map must implement the entire contract for an unmodifiable
 map as described in the JavaDocs for java.util.Map.
Servlet: This must be the set of parameters available via
 the javax.servlet.ServletRequest methods
 getParameter() and getParameterNames().
public abstract Iterator<String> getRequestParameterNames()
Return an Iterator over the names of all request
 parameters included in the current request.
Servlet: This must be an Iterator over the
 values returned by the javax.servlet.ServletRequest
 method getParameterNames().
Iterator for the names of the current request parameters.public abstract Map<String,String[]> getRequestParameterValuesMap()
Return an immutable Map whose keys are the set of
 request parameters names included in the current request, and whose
 values (of type String[]) are all of the values for each
 parameter name returned by the underlying request.  The returned
 Map must implement the entire contract for an unmodifiable
 map as described in the JavaDocs for java.util.Map.
Servlet: This must be the set of parameters available via
 the javax.servlet.ServletRequest methods
 getParameterValues() and
 getParameterNames().
public abstract String getRequestPathInfo()
Return the extra path information (if any) included in the
 request URI; otherwise, return null.
Servlet: This must be the value returned by the
 javax.servlet.http.HttpServletRequest method
 getPathInfo().
public abstract String getRequestServletPath()
Return the servlet path information (if any) included in the
 request URI; otherwise, return null.
Servlet: This must be the value returned by the
 javax.servlet.http.HttpServletRequest method
 getServletPath().
public String getRequestCharacterEncoding()
Return the character encoding currently being used to interpret this request.
Servlet: This must return the value returned by the
 javax.servlet.ServletRequest method
 getCharacterEncoding().
The default implementation throws 
 UnsupportedOperationException and is provided
 for the sole purpose of not breaking existing applications that extend
 this class.
public String getRequestContentType()
Return the MIME Content-Type for this request.  If not
 available, return null.
Servlet: This must return the value returned by the
 javax.servlet.ServletRequest method
 getContentType().
The default implementation throws 
 UnsupportedOperationException and is provided
 for the sole purpose of not breaking existing applications that extend
 this class.
public int getRequestContentLength()
Return the result
 of calling getContentLenth() on the
 ServletRequest instance for this request.
The default implementation throws
 UnsupportedOperationException and is provided for
 the sole purpose of not breaking existing applications that
 extend this class.
public String getResponseCharacterEncoding()
Returns the name of the character encoding (MIME charset) used for the body sent in this response.
Servlet: This must return the value returned by the
 javax.servlet.ServletResponse method
 getCharacterEncoding().
Portlet: if this method is called
 during a lifecycle phase other than RENDER_RESPONSE, this must
 return null.  If called during RENDER_RESPONSE,
 return the response encoding of the portlet response.
The default implementation throws 
 UnsupportedOperationException and is provided
 for the sole purpose of not breaking existing applications that extend
 this class.
public String getResponseContentType()
Return the MIME Content-Type for this response.  If not
 available, return null.
Servlet: This must return the value returned by the
 javax.servlet.ServletResponse method
 getContentType().
The default implementation throws 
 UnsupportedOperationException and is provided
 for the sole purpose of not breaking existing applications that extend
 this class.
public abstract URL getResource(String path) throws MalformedURLException
Return a
 URL for the application resource mapped to the
 specified path, if it exists; otherwise, return
 null.
It is valid to call this method
 during application startup or shutdown.  If called during application
 startup or shutdown, this method calls through to the
 getResource() method on the same container
 context instance (ServletContext or
 PortletContext) as the one used when calling
 getResource() on the
 ExternalContext returned by the
 FacesContext during an actual request.
Servlet: This must be the value returned by the
 javax.servlet.ServletContext method
 getResource(path).
path - The path to the requested resource, which must
  start with a slash ("/" characterMalformedURLException - if the specified path
  is not in the correct formNullPointerException - if path
  is nullpublic abstract InputStream getResourceAsStream(String path)
Return an
 InputStream for an application resource mapped to
 the specified path, if it exists; otherwise, return
 null.
It is valid to call this method
 during application startup or shutdown.  If called during application
 startup or shutdown, this method calls through to the
 getResourceAsStream() method on the same container
 context instance (ServletContext or
 PortletContext) as the one used when calling
 getResourceAsStream() on the
 ExternalContext returned by the
 FacesContext during an actual request.
Servlet: This must be the value returned by the
 javax.servlet.ServletContext method
 getResourceAsStream(path).
path - The path to the requested resource, which must
  start with a slash ("/" characterInputStream for the application resource.NullPointerException - if path
  is nullpublic abstract Set<String> getResourcePaths(String path)
Return the
 Set of resource paths for all application resources
 whose resource path starts with the specified argument.
It is valid to call this method
 during application startup or shutdown.  If called during application
 startup or shutdown, this method calls through to the
 getResourcePaths() method on the same container
 context instance (ServletContext or
 PortletContext) as the one used when calling
 getResourcePaths() on the
 ExternalContext returned by the
 FacesContext during an actual request.
Servlet: This must be the value returned by the
 javax.servlet.ServletContext method
 getResourcePaths(path).
path - Partial path used to match resources, which must
  start with a slash ("/") characterSet of resource paths for the application resources.NullPointerException - if path
  is nullpublic abstract Object getResponse()
Return the environment-specific object instance for the current response.
Servlet:  This is the current request's
 javax.servlet.http.HttpServletResponse instance.
javax.servlet.http.HttpServletResponse.public void setResponse(Object response)
Set the environment-specific response to be returned by
 subsequent calls to getResponse().  This may be used to
 install a wrapper for the response.
The default implementation throws 
 UnsupportedOperationException and is provided
 for the sole purpose of not breaking existing applications that extend
 this class.
response - the response instance to be set.public OutputStream getResponseOutputStream() throws IOException
Returns an OutputStream
 suitable for writing binary data to the user-agent.
Servlet: This must return the value returned by the
 javax.servlet.ServletResponse method
 getOutputStream().
The default implementation throws
 UnsupportedOperationException and is provided for
 the sole purpose of not breaking existing applications that
 extend this class.
OutputStream for the current response.IOException - any IO related exception.public Writer getResponseOutputWriter() throws IOException
Returns a Writer
 suitable for writing character data to the user-agent.
Servlet: This must return the value returned by the
 ServletResponse.getWriter().
The default implementation throws
 UnsupportedOperationException and is provided for
 the sole purpose of not breaking existing applications that
 extend this class.
Writer for the current response.IOException - any IO related exception.public void setResponseCharacterEncoding(String encoding)
Sets the character encoding (MIME charset) of the response being sent to the client, for example, to UTF-8.
Servlet: This must call through to the
 javax.servlet.ServletResponse method
 setCharacterEncoding().
The default implementation throws 
 UnsupportedOperationException and is provided
 for the sole purpose of not breaking existing applications that extend
 this class.
encoding - the character encoding to be sent by the current response.public void setResponseContentType(String contentType)
Sets the content type of the response being sent to the client, if the response has not been committed yet.
Servlet: This must call
 setContentType() on the underlying
 javax.servlet.ServletResponse instance.
The default implementation throws
 UnsupportedOperationException and is provided for
 the sole purpose of not breaking existing applications that
 extend this class.
contentType - The content type to be set as the contentType
 of the response.public abstract Object getSession(boolean create)
If the create parameter is true,
 create (if necessary) and return a session instance associated
 with the current request.  If the create parameter
 is false return any existing session instance
 associated with the current request, or return null if
 there is no such session.
Servlet: This must return the result of calling
 getSession(create) on the underlying
 javax.servlet.http.HttpServletRequest instance.
create - Flag indicating whether or not a new session should be
  created if there is no session associated with the current requestpublic String getSessionId(boolean create)
Return the id of the current session
 or the empty string if no session has been created and the 
 create parameter is false.
Servlet: If create is true, obtain
 a reference to the HttpSession for the current request
 (creating the session if necessary) and return its id.  If 
 create is false, obtain a reference to the
 current session, if one exists, and return its id.  If no session exists,
 return the empty string.
create - Flag indicating whether or not a new session should be
  created if there is no session associated with the current requestpublic int getSessionMaxInactiveInterval()
Returns the maximum time interval, in seconds, that
 the servlet container will keep this session open between client accesses.
 After this interval, the servlet container will invalidate the session.
 The maximum time interval can be set with the
 setSessionMaxInactiveInterval(int) method. 
A return value of zero or less indicates that the session will never timeout.
Servlet: This must return the result of calling
 getMaxInactiveInterval on the underlying
 javax.servlet.http.HttpSession instance.
The default implementation throws
 UnsupportedOperationException and is provided
 for the sole purpose of not breaking existing applications that extend
 this class.
public abstract Map<String,Object> getSessionMap()
Return a mutable Map representing the session
 scope attributes for the current application.  The returned
 Map must implement the entire contract for a
 modifiable map as described in the JavaDocs for
 java.util.Map.  Modifications made in the
 Map must cause the corresponding changes in the set
 of session scope attributes.  Particularly the
 clear(), remove(), put(),
 and get() operations must take the appropriate
 action on the underlying data structure.  Accessing attributes
 via this Map must cause the creation of a session
 associated with the current request, if such a session does not
 already exist.
For any of the Map methods that cause an element
 to be removed from the underlying data structure, the following
 action regarding managed-beans must be taken.  If the element to
 be removed is a managed-bean, and it has one or more public
 no-argument void return methods annotated with
 javax.annotation.PreDestroy, each such method must
 be called before the element is removed from the underlying data
 structure.  Elements that are not managed-beans, but do happen to
 have methods with that annotation must not have those methods
 called on removal.  Any exception thrown by the
 PreDestroy annotated methods must by caught and not
 rethrown.  The exception may be logged.
Servlet:  This must be the set of attributes available via
 the javax.servlet.http.HttpSession methods
 getAttribute(), getAttributeNames(),
 removeAttribute(), and setAttribute().
public abstract Principal getUserPrincipal()
Return the Principal object containing the name of
 the current authenticated user, if any; otherwise, return
 null.
Servlet: This must be the value returned by the
 javax.servlet.http.HttpServletRequest method
 getUserPrincipal().
Principal object.public ClientWindow getClientWindow()
Return the ClientWindow set in a preceding
 call to setClientWindow(javax.faces.lifecycle.ClientWindow), or null if no such call has
 been made.
ClientWindow.public void invalidateSession()
Invalidates this session then unbinds any objects bound to it.
Servlet: This must be the value returned by the
 javax.servlet.http.HttpSession method
 invalidate().
The default implementation throws
 UnsupportedOperationException and is provided for
 the sole purpose of not breaking existing applications that
 extend this class.
public abstract boolean isUserInRole(String role)
Return true if the currently authenticated user is
 included in the specified role.  Otherwise, return false.
 
Servlet: This must be the value returned by the
 javax.servlet.http.HttpServletRequest method
 isUserInRole(role).
role - Logical role name to be checkedNullPointerException - if role
  is nullpublic abstract void log(String message)
Log the specified message to the application object.
It is valid to call this method
 during application startup or shutdown.  If called during application
 startup or shutdown, this calls the log() method on the same
 container context instance (ServletContext or
 PortletContext) as the one used during a call to
 log() on the ExternalContext returned
 by the FacesContext during an actual request.
Servlet: This must be performed by calling the
 javax.servlet.ServletContext method
 log(String).
message - Message to be loggedNullPointerException - if message
  is nullpublic abstract void log(String message, Throwable exception)
Log the specified message and exception to the application object.
It is valid to call this method
 during application startup or shutdown.  If called during application
 startup or shutdown, this calls the log() method on the same
 container context instance (ServletContext or
 PortletContext) as the one used when calling
 log() on the ExternalContext returned
 by the FacesContext during an actual request.
Servlet: This must be performed by calling the
 javax.servlet.ServletContext method
 log(String,Throwable).
message - Message to be loggedexception - Exception to be loggedNullPointerException - if message
  or exception is nullpublic abstract void redirect(String url) throws IOException
Redirect a request 
 to the specified URL, and cause the
 responseComplete() method to be called on the
 FacesContext instance for the current request.
The implementation must determine if
 the request is an Ajax request by obtaining a  
 PartialViewContext instance from the FacesContext and
 calling PartialViewContext.isAjaxRequest().
Servlet: For
 non Ajax requests, this must be accomplished by calling 
 the javax.servlet.http.HttpServletResponse method
 sendRedirect(). 
PartialResponseWriter instance from the 
 FacesContext.setResponseContentType(java.lang.String) with text/xmlsetResponseCharacterEncoding(java.lang.String) with UTF-8addResponseHeader(java.lang.String, java.lang.String) with Cache-Control, 
 no-cachePartialResponseWriter.startDocument()PartialResponseWriter.redirect(java.lang.String) with the url
 argument.PartialResponseWriter.endDocument()url - Absolute URL to which the client should be redirectedIllegalArgumentException - if the specified url is relativeIllegalStateException - if, in a portlet environment,
  the current response object is a RenderResponse
  instead of an ActionResponseIllegalStateException - if, in a servlet environment,
  the current response has already been committedIOException - if an input/output error occurspublic void setResponseHeader(String name, String value)
Set the response header with the given name and value.
Servlet:This must be performed by calling the 
 javax.servlet.http.HttpServletResponse setHeader
 method.
The default implementation throws
 UnsupportedOperationException and is provided for
 the sole purpose of not breaking existing applications that
 extend this class.
name - The name of the response header.value - The value of the response header.public void addResponseHeader(String name, String value)
Add the given name and value to the response header.
Servlet:This must be performed by calling the 
 javax.servlet.http.HttpServletResponse addHeader
 method.
The default implementation throws
 UnsupportedOperationException and is provided for
 the sole purpose of not breaking existing applications that
 extend this class.
name - The name of the response header.value - The value of the response header.public void setResponseBufferSize(int size)
Set the buffer size for the current response.
Servlet: This must be performed by calling the
 javax.servlet.http.HttpServletResponse setBufferSize
 method.
The default implementation throws
 UnsupportedOperationException and is provided for
 the sole purpose of not breaking existing applications that
 extend this class.
size - the new buffer sizepublic int getResponseBufferSize()
Return the buffer size for the current response.
Servlet: This must be performed by calling the
 javax.servlet.http.HttpServletResponse getBufferSize
 method.
The default implementation throws
 UnsupportedOperationException and is provided for
 the sole purpose of not breaking existing applications that
 extend this class.
public boolean isResponseCommitted()
Check if the current response has been committed.
Servlet: This must be performed by calling the
 javax.servlet.http.HttpServletResponse isCommitted
 method.
The default implementation throws
 UnsupportedOperationException and is provided for
 the sole purpose of not breaking existing applications that
 extend this class.
public void responseReset()
Resets the current response.
Servlet: This must be performed by calling the
 javax.servlet.http.HttpServletResponse reset
 method.
The default implementation throws
 UnsupportedOperationException and is provided for
 the sole purpose of not breaking existing applications that
 extend this class.
public void responseSendError(int statusCode,
                              String message)
                       throws IOException
Sends an HTTP status code with message.
Servlet: This must be performed by calling the
 javax.servlet.http.HttpServletResponse sendError
 method.
The default implementation throws
 UnsupportedOperationException and is provided for
 the sole purpose of not breaking existing applications that
 extend this class.
statusCode - an HTTP status codemessage - an option message to detail the cause of the codeIOException - any IO related exceptions.public void setResponseStatus(int statusCode)
Sets the HTTP status code for the response.
Servlet: This must be performed by calling the
 javax.servlet.http.HttpServletResponse setStatus
 method.
The default implementation throws
 UnsupportedOperationException and is provided for
 the sole purpose of not breaking existing applications that
 extend this class.
statusCode - an HTTP status codepublic void setSessionMaxInactiveInterval(int interval)
Specifies the time, in seconds, between client requests before the servlet container will invalidate this session.
An interval value of zero or less indicates that the session should never timeout.
Servlet: This must call
 setMaxInactiveInterval on the underlying
 javax.servlet.http.HttpServletRequest instance.
The default implementation throws
 UnsupportedOperationException and is provided
 for the sole purpose of not breaking existing applications that extend
 this class.
interval - the value to be set.public void setClientWindow(ClientWindow window)
Associate this instance with a ClientWindow.
window - the window with which this instance is associated.public void responseFlushBuffer()
                         throws IOException
Flushes the buffered response content to the client.
Servlet: This must be performed by calling the
 javax.servlet.http.HttpServletResponse flushBuffer
 method.
The default implementation throws
 UnsupportedOperationException and is provided for
 the sole purpose of not breaking existing applications that
 extend this class.
IOException - any IO related exception.public void setResponseContentLength(int length)
Set the content length of the response.
Servlet: This must be performed by calling the
 javax.servlet.http.HttpServletResponse setContentLength
 method.
The default implementation throws
 UnsupportedOperationException and is provided for
 the sole purpose of not breaking existing applications that
 extend this class.
length - the value to be set.public String encodeBookmarkableURL(String baseUrl, Map<String,List<String>> parameters)
The purpose of this method is to generate a query string from the collection of Parameter objects provided by the parameters argument and append that query string to the baseUrl. This method must be able to encode the parameters to a baseUrl that may or may not have existing query parameters. The parameter values should be encoded appropriately for the environment so that the resulting URL can be used as the target of a link (e.g., in an href attribute) in a JSF response. It's possible for an ExternalContext implementation to override this method in any way that would make the URL bookmarkable in that environment.
See encodeActionURL(java.lang.String) 
 for the required specification of how to encode the ClientWindow.
 
 The default implementation throws
 UnsupportedOperationException and is provided for
 the sole purpose of not breaking existing applications that
 extend this class.
 
baseUrl - The base URL onto which the query string generated by this method will be appended. The URL may contain query parameters.parameters - The collection of Parameter objects, representing name=value pairs that are used to produce a query stringpublic String encodeRedirectURL(String baseUrl, Map<String,List<String>> parameters)
See encodeActionURL(java.lang.String) 
 for the required specification of how to encode the ClientWindow.
 
baseUrl - The base URL onto which the query string generated by this method will be appended. The URL may contain query parameters.parameters - The collection of Parameter objects, representing name=value pairs that are used to produce a query stringpublic String encodePartialActionURL(String url)
Return the input URL, after performing any rewriting needed to ensure that it can be used in a partial page submission (ajax request) to correctly identify an addressable action in the current application.
See encodeActionURL(java.lang.String) 
 for the required specification of how to encode the ClientWindow.
 
Servlet:Returns the same encoded URL as the
 encodeActionURL(String url) method.
Portlet:Returns an encoded URL that, upon HTTP POST, will invoke the RESOURCE_PHASE of the portlet lifecycle.
url - The input URL to be encodedNullPointerException - if url
  is nullpublic boolean isSecure()
Returns a boolean indicating whether this request was made using a secure channel, such as HTTPS.
Servlet: This must return the result of calling
 isSecure on the underlying
 javax.servlet.http.HttpServletRequest instance.
The default implementation throws
 UnsupportedOperationException and is provided
 for the sole purpose of not breaking existing applications that extend
 this class.
Copyright © 2019 JBoss by Red Hat. All rights reserved.