[
https://issues.apache.org/jira/browse/TRINIDAD-1377?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12669478#action_12669478
]
Felix Röthenbacher commented on TRINIDAD-1377:
----------------------------------------------
The newly dependency is on the portlet bridge API only, not on the
implementation. As the portlet bridge API is sort of a specification (JSR 301)
I think this is viable. We already have a similar dependency on the portlet API.
I have no doubt that the 'instanceof' operator is faster than accessing a key
in the request hash map. For the sake of readable and simple code I'd
nethertheless tend to use the tools provided by the portlet bridge
specification. I.e. I'd even simplify my patch by using the
BridgeUtil.isPortlet() method. Again, this method is provided in the portlet
bridge API and doesn't need a dependency on a specific implementation.
> 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
> Assignee: Scott O'Bryan
> Attachments: TRINIDAD-1377-patch.txt
>
>
> 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.