ActionRequest not properly detected.
------------------------------------

                 Key: TRINIDAD-1377
                 URL: https://issues.apache.org/jira/browse/TRINIDAD-1377
             Project: MyFaces Trinidad
          Issue Type: Bug
          Components: Portlet
    Affects Versions:  1.2.11-core
            Reporter: Felix Röthenbacher


The method ExternalContextUtils.isAction(final ExternalContext externalContext) 
does not reliably detect an action request.
If the object returned by ExternalContext.getRequest() implements the 
ServletRequest interface the method above returns
true. This can also apply for a RenderRequest which is not an ActionRequest.

The following fixes this:

  /**
   * Returns <code>true</code> if this externalContext represents an "action". 
An action request
   * is any ServletRequest or a portlet ActionRequest. It is assumed that the 
ExternalContext
   *
   * @return a boolean of <code>true</code> if this is a Portlet ActionRequest 
or an non-portlet
   *         request.
   */
  public static boolean isAction(final ExternalContext externalContext)
  {
    final Object request = externalContext.getRequest();

    if (_PORTLET_ACTION_REQUEST_CLASS == null)
    {
      _LOG
          .fine("Portlet API's are not on the classpath so isAction will only 
check for servlet request.");
      return request instanceof ServletRequest;
    }

    return (request instanceof ServletRequest && 
!_PORTLET_RENDER_REQUEST_CLASS.isInstance(request) ||
            _PORTLET_ACTION_REQUEST_CLASS.isInstance(request))  ;
  }

_PORTLET_RENDER_REQUEST_CLASS has to be properly initialized. Not sure why this 
method checks for ServletRequest.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to