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)

Reply via email to