[ 
https://issues.apache.org/jira/browse/TRINIDAD-2359?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13570626#comment-13570626
 ] 

Andy Schwartz commented on TRINIDAD-2359:
-----------------------------------------

More details on #2 above...

GlobalConfiguratorImpl._isSetRequestBugPresent() performs the following test:


          // Call getInitParameterMap() up front
          ec.getInitParameterMap();

          ec.setRequest(new TestRequest(orig));

          _sHasSetRequestBug = !TestRequest.isTestParamPresent(ec);

Where TestRequest looks like this:

  static private class TestRequest
    extends ServletRequestWrapper
  {
    public TestRequest(ServletRequest request)
    {
      super(request);
    }

    @Override
    public String getParameter(String string)
    {
      if (_TEST_PARAM.equals(string))
      {
        return "passed";
      }

      return super.getParameter(string);
    }

    static public final boolean isTestParamPresent(ExternalContext ec)
    {
      return RequestStateMap.getInstance(ec).get(_TEST_PARAM) != null;
    }

    static private String _TEST_PARAM = TestRequest.class.getName() + 
".TEST_PARAM";
  }

TestRequest.isTestParamPresent() is checking for the presence of this 
_TEST_PARAM in the RequestStateMap.  However, the _TEST_PARAM lives in the 
ServletRequest's "parameter" map.  As far as I can tell, these are different 
things - ie. the RequestStateMap does not actually delegate through to the 
ServletRequest's parameter map.  Thus isTestParamPresent() will always return 
false, even when the _TEST_PARAM is accessible via the request parameter map. 


                
> ClearRequestExternalContext wrapper applied unnecessarily
> ---------------------------------------------------------
>
>                 Key: TRINIDAD-2359
>                 URL: https://issues.apache.org/jira/browse/TRINIDAD-2359
>             Project: MyFaces Trinidad
>          Issue Type: Bug
>    Affects Versions: 2.0.1-core
>            Reporter: Andy Schwartz
>            Assignee: Andy Schwartz
>            Priority: Minor
>
> GlobalConfiguratorImpl wraps the ExternalContext with a 
> ClearRequestExternalContext if it detects that Mojarra issue 493 (fixed back 
> in Mojarra 1.2.04) is present.
> The Mojarra issue is described here:
> http://java.net/jira/browse/JAVASERVERFACES-493 setRequest does not reset 
> request maps
> Two problems with this:
> 1.  This issue was fixed in 2007, so it is unclear whether we should ever 
> bother applying this workaround.
> 2.  The code which detects the presence of this Mojarra issue is buggy.
> As a result of #2, GlobalConfiguratorImpl always adds a 
> ClearRequestExternalContext wrapper, regardless of whether the old Mojarra 
> issue is present or not.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to