You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Martin Tzvetanov Grigorov (Jira)" <ji...@apache.org> on 2024/02/09 07:35:00 UTC
[jira] [Resolved] (WICKET-7095) WicketTester MockHttpServletRequest parameters are unobtainable via ServletWebRequest
[ https://issues.apache.org/jira/browse/WICKET-7095?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Martin Tzvetanov Grigorov resolved WICKET-7095.
-----------------------------------------------
Resolution: Cannot Reproduce
Closing for now!
We will reopen the ticket when test case is provided!
> WicketTester MockHttpServletRequest parameters are unobtainable via ServletWebRequest
> -------------------------------------------------------------------------------------
>
> Key: WICKET-7095
> URL: https://issues.apache.org/jira/browse/WICKET-7095
> Project: Wicket
> Issue Type: Improvement
> Components: wicket-core, wicket-tester
> Affects Versions: 9.15.0, 10.0.0-M2
> Reporter: John Tal
> Priority: Major
>
> Background from reading the Wicket code:
>
> In a TC, using WicketTester, set a parameter:
>
> wicketTester.getRequest()
> .setParameter(Apponstants.FOO_PARAMETER_NAME, "foo");
>
> Next, try to read that parameter in another class during the running of a test.
> This seems to be an issue with the parameter not being found.
>
> ServletWebRequest contains a MockHttpServletRequest through member variable httpServletRequest.
>
> But the method ServletWebRequest.getParameters() ignores the member MockHttpServletRequest.parameters, where 'foo' is located, and instead does this:
>
> public IRequestParameters getRequestParameters()
> { return new CombinedRequestParametersAdapter(new IRequestParameters[]\\{this.getPostParameters(), this.getQueryParameters()}
> );
> }
>
> You can get to this 'foo' parameter with an explicit cast of ServletWebRequest to (MockHttpServletRequest). But mainline web code should not cast to Mocks of Wicket Tester.
>
> Looking at the getCookies implementation in ServletWebRequest, it goes to a deeper level (into the httpServletRequest):
>
> public List<Cookie> getCookies()
> { Cookie[] cookies = this.httpServletRequest.getCookies(); List<Cookie> result = cookies == null ? Collections.emptyList() : Arrays.asList(cookies); return Collections.unmodifiableList(result); }
>
> Proposed Solutions:
>
> A) Modify HttpServletRequest to override getRequestParameters so it can retrieve it's own parameters
>
> OR
>
> B) Modify ServletWebRequest to add to the existing getRequestParameters method the parameters inside of this.httpServletRequest such as mockup below (needs work to bring in the map correctly):
>
> public IRequestParameters getRequestParameters()
> { return new CombinedRequestParametersAdapter(new IRequestParameters[]\\{this.getPostParameters(), this.getQueryParameters(), this.httpServletRequest.getParameterMap()}
> );
> }
>
> Please let me know if there is another combination of API that do allow WicketTester to set Request Parameters in a way readible during TCs through ServletWebRequest.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)