Vernon Singleton created PLUTO-659:
--------------------------------------
Summary: TCK: Contesting V2AddlFilterTests_SPEC2_20_Action_filter1
Key: PLUTO-659
URL: https://issues.apache.org/jira/browse/PLUTO-659
Project: Pluto
Issue Type: Bug
Components: tck
Affects Versions: 3.0.0
Reporter: Vernon Singleton
Assignee: Scott Nicklous
According to 4.2.1 Loading and Instantiation:
{quote}
The portlet container is responsible for loading and instantiating portlets.
The loading and
instantiation can occur when the portlet container starts the portlet
application, or can be
delayed until the portlet container determines the portlet is needed to service
a request.
{quote}
According to 16.2.1 Filter Lifecycle section:
{quote}
After deployment of the portlet application, and before a request causes the
portlet container to access a portlet, the portlet container must build an
ordered list of the portlet filters to be applied to the portlet as defined in
the portlet configuration. The portlet container must instantiate a filter of
the appropriate class for each applicable filter and called the filter
init(FilterConfig config) method.
{quote}
Since portlet.init() "can be delayed until" a request comes in, but
filter.init() must be called "before a request", the TCK should not assume that
portlet.init() is called before filter.init() is called.
Here we can see [the V2AddlFilterTests_SPEC2_20_Action_filter1
test|https://github.com/apache/portals-pluto/blob/8affd336c65fbfe86f78866f60bd4f8af6e7fe93/portlet-tck_3.0/V2AddlFilterTests/src/main/java/javax/portlet/tck/portlets/AddlFilterTests_SPEC2_20_Filter.java#L82-L102]
requiring the portletNameAction attribute to be set by portlet.init() before
the filter.init() method is called.
It looks like Pluto is doing its Post/Redirect/Get calling first the
portlet.init() in the post, and then later during the get, calling
filter.init(). This is fine to do, I guess, but we cannot assume that all
portal vendors will use this pattern.
Here is a thread dump showing pluto calling portlet.init() during the post:
{code}
"http-nio-8080-exec-14@9550" daemon prio=5 tid=0x68e nid=NA runnable
java.lang.Thread.State: RUNNABLE
at
javax.portlet.tck.portlets.AddlFilterTests_SPEC2_20_Filter.init(AddlFilterTests_SPEC2_20_Filter.java:108)
at
org.apache.pluto.driver.services.container.FilterChainImpl.doFilter(FilterChainImpl.java:185)
at
org.apache.pluto.driver.services.container.FilterChainImpl.processFilter(FilterChainImpl.java:153)
at
org.apache.pluto.driver.services.container.FilterManagerImpl.processFilter(FilterManagerImpl.java:142)
at
org.apache.pluto.container.driver.PortletServlet3.dispatch(PortletServlet3.java:517)
at
org.apache.pluto.container.driver.PortletServlet3.doPost(PortletServlet3.java:338)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
{code}
followed by the call to filter.init() during the get:
{code}
"http-nio-8080-exec-13@9531" daemon prio=5 tid=0x68d nid=NA runnable
java.lang.Thread.State: RUNNABLE
at
javax.portlet.tck.portlets.AddlFilterTests_SPEC2_20_Filter.init(AddlFilterTests_SPEC2_20_Filter.java:97)
at
org.apache.pluto.driver.services.container.FilterChainImpl.doFilter(FilterChainImpl.java:233)
at
org.apache.pluto.driver.services.container.FilterChainImpl.processFilter(FilterChainImpl.java:161)
at
org.apache.pluto.driver.services.container.FilterManagerImpl.processFilter(FilterManagerImpl.java:126)
at
org.apache.pluto.container.driver.PortletServlet3.dispatch(PortletServlet3.java:487)
at
org.apache.pluto.container.driver.PortletServlet3.doGet(PortletServlet3.java:333)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
{code}
Since it appears that the TCK is testing the pluto implementation in this case
instead of testing the specification, and the test case is invalid as defined,
I will update the ignore list to include
V2AddlFilterTests_SPEC2_20_Action_filter1 and issue a pull request, until a
better test can be written.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)