I added more dispatcher tests to the TCK. Most of them are implemented and
execute successfully on Pluto. The ones that don't work are concentrated in
two areas:

1) handling of query parameter strings specified when the request
dispatcher is obtained.

Example:
      PortletRequestDispatcher rd = getPortletContext
().getRequestDispatcher
("/WEB-INF/jsp/view.jsp?qparm1=Val1&qparm1=Val2&qparm2=Val3");

The JSR 286 spec states that the parameters from the query parameters
string be integrated into the portlet render parameters visible within the
servlet for the duration of the forward/include. This doesn't work on
Pluto. The query parameters are available from the servlet request object,
but not from the portlet request object.

2) The request attribute values are not being set properly. The spec
states:

=====
"The following request attributes must be set:

javax.servlet.forward.request_uri
javax.servlet.forward.context_path
javax.servlet.forward.servlet_path
javax.servlet.forward.path_info
javax.servlet.forward.query_string

The values of these attributes must be equal to the return values of the
HttpServletRequest methods getRequestURI, getContextPath, getServletPath,
getPathInfo, getQueryString respectively, invoked on the request object
passed to the first servlet object in the forward call chain"
=====

The spec also has a corresponding statement about the
"javax.servlet.forward..." attributes. However, the spec doesn't really
state which request the attributes are to be set on - the portlet request
or the servlet request. My take is that the attributes need to be set on
both of the request objects in order to maintain a correspondence between
the portlet request and the servlet request.

As it turns out, on Pluto, these attributes are only set on the servlet
request. I think this is an error.

-----

I am now nearly finished with the generated dispatcher tests. I just want
to add a few more:

* test if multiple includes works
* Check how attributes / parameters are handled in the case of multi-level
includes, in other words, when an included servlet includes/forwards to
another servlet.

Another point:

After adding this batch of tests, I started noticing a little flakiness in
the test driver. Sometimes the HtmlUnitDriver I am using seems to get into
a state where it can't locate any elements on the web page anymore. When
that occurs, there are lots of errors of the sort "... cannot find
link ...". This can occur at the beginning, in the middle, or at the end of
a run - I haven't yet noticed a pattern. If you immediately retry the exact
same run, it usually works. On the chance that it may have to do with
memory, I put a statement into the driver POM to increase the memory
available to the tester. After doing so, I have yet to see the problem ...
maybe it's fixed.

We now have 3875 test cases, of which 2002 succeed.

Mit freundlichen Grüßen, / Kind regards,
Scott Nicklous

WebSphere Portal Standardization Lead & Technology Consultant
Specification Lead, JSR 362 Portlet Specification 3.0
IBM Software Group, Application Integration Middleware
IBM Deutschland Research & Development GmbH / Vorsitzender des
Aufsichtsrats: Martina Koederitz / Geschäftsführung: Dirk Wittkopp
Sitz der Gesellschaft: Böblingen / Registergericht: Amtsgericht Stuttgart,
HRB 243294

Reply via email to