Action "type" request are, Portlet 1.0 Action Request, servlet request, and eventually Resource Requests (Portlet 2.0). In the more updated vernacular in the command project, this essentially tests for a "client" request which is a request that comes directly from the client.
For Action and Servlet Requests this will return true. for all render request, INCLUDING THOSE THAT WRAP SERVLET REQUEST, it returns false. Look at the last line..
return (request instanceof ServletRequest && !_PORTLET_RENDER_REQUEST_CLASS.isInstance(request) ||
This says if it's a servlet request that us NOT an render request, or if it's an action request, return true. If this is not happening, it's a bug.
I'll again re-iterate, Trinidad treats this API as if it's a request that comes from the client. It tells us, for instance, whether we can receive an input stream, whether we are in the inital phases of a request. As I said, in the commons version of this class, it is essentially the isClientRequest flag. The definition of this and the isClientRequest flag are the same.
On the flipside is the isResponseWritable. These include Servlet Requests as well, but would also include a render request. Here is a list of, basically, all the objects we do (will soon) handle by the configurators and what they return..
isClientRequest (isAction in Trinidad) isResponseWritable (no equiv in Trinidad)
ServletRequest true true
ActionRequest true false
RenderRequest false true
ResourceRequest true true
EventRequest false false
How is this used? Most of the time within Trinidad, we need to check for whether something has access to headers or is in response to say a real request (like PPR Request or whatnot). Other times we need to know whether we are in a portlet environment. By far the fewest number of times do we have to check if we are in a portlet ACTION REQUEST specifically. In this case, the results of isPortlet and isAction need to be used together, OR the ExternalContextUtils in the commons should be used (it supports an enum for request type).