[jira] [Closed] (PLUTO-654) The initParams variable in FilterImpl.java does not preserve the order in which init-params are added

"Neil Griffin (JIRA)" <[email protected]>
Newsgroups gmane.comp.jakarta.pluto.devel
Message-ID <[email protected]>
     [ https://issues.apache.org/jira/browse/PLUTO-654?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Neil Griffin closed PLUTO-654.
------------------------------
    Resolution: Fixed

> The initParams variable in FilterImpl.java does not preserve the order in which init-params are added
> -----------------------------------------------------------------------------------------------------
>
>                 Key: PLUTO-654
>                 URL: https://issues.apache.org/jira/browse/PLUTO-654
>             Project: Pluto
>          Issue Type: Bug
>          Components: portlet container
>            Reporter: Neil Griffin
>            Assignee: Neil Griffin
>             Fix For: 3.0.0
>
>
> The FilterImpl.java class contains an in-memory representation of the filter configuration found in the portlet.xml descriptor. Here is an example from the TCK:
> {code:xml|title=portlet.xml}
> <filter>
> 	<filter-name>AddlFilterTests_SPEC2_20_Filter1</filter-name>
> 	<filter-class>javax.portlet.tck.portlets.AddlFilterTests_SPEC2_20_Filter</filter-class>
> 	<lifecycle>ACTION_PHASE</lifecycle>
> 	<lifecycle>EVENT_PHASE</lifecycle>
> 	<lifecycle>RESOURCE_PHASE</lifecycle>
> 	<init-param>
> 		<name>tr2</name>
> 		<value>true</value>
> 	</init-param>
> 	<init-param>
> 		<name>tr3</name>
> 		<value>true</value>
> 	</init-param>
> </filter>
> {code}
> The following TCK test case assumes that the "tr2" and "tr3" init-params appear in the order in which they appear in the portlet.xml descriptor:
> {code:java|title=AddlFilterTests_SPEC2_20_Filter.java}
> /* TestCase: V2AddlFilterTests_SPEC2_20_Action_filter11 */
> /* Details: "For multiple filter declarations for a single filter */
> /* class, the filter instance must receive only initialization */
> /* parameters defined in the filter declaration" */
> if (portletNameAction != null && portletNameAction.equals("AddlFilterTests_SPEC2_20_Action")
>     && filterName.equals("AddlFilterTests_SPEC2_20_Filter1")) {
>     Enumeration<String> initParams = config.getInitParameterNames();
>     if (initParams.nextElement().equals("tr2") && initParams.nextElement().equals("tr3")) {
>         ...
>     }
> }
> {code}
> The problem is that FilterImpl.java defines the initParams as java.util.HashMap which does not guarantee order:
> {code:java|title=FilterImpl.java}
> public class FilterImpl implements Filter {
>     ...
>     private final Map<String, InitParam> initParams = new HashMap<String, InitParam>();
> {code}
> In order for this test case to pass on all operating systems and JVMs, the initParams variable should be java.util.LinkedHashMap.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.