[ 
https://issues.apache.org/jira/browse/WICKET-6714?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16989834#comment-16989834
 ] 

Hans Schäfer commented on WICKET-6714:
--------------------------------------

Hi Sven, 

You are right: "." is not correct. "null"  is semantical more precise ("I dont 
know it") but with the drawback of not supporting resource-loading via 
MockServletContext (as it is implemented now). So improving MockServletContext 
in a way, so that it supports resource-loading from META-INF/resources in the 
classpath with appBase = null, is a good way.

Otherwise: Especially in test-code you have to make good default guesses. If 
you take a look at the affected lines of code in BaseWicketTester:

servletContext = servletCtx != null ? servletCtx
 // If it's provided from the container it's not necessary to mock.
 : !init && application.getServletContext() != null ? 
application.getServletContext()
 : new MockServletContext(application, null);

This is just a reasonable approach for determining a ServletContext with good 
guesses. It guesses that "MockServletContext(application, null)" is a good 
default. I also think "." is a better guess for a context root than "null", so 
"MockServletContext(application, ".") is a better guess for a good default.

Regardless of whether BaseWicketTester or MockServletContext is changed or even 
both: I think there won't be much tests affected. Resource-related methods of 
ServletContext are rarely used.

Best regards

Hans

 

 

 

> Please add better getResource-Support for MockServletContext
> ------------------------------------------------------------
>
>                 Key: WICKET-6714
>                 URL: https://issues.apache.org/jira/browse/WICKET-6714
>             Project: Wicket
>          Issue Type: Improvement
>          Components: wicket-core
>    Affects Versions: 8.0.0, 9.0.0-M3
>            Reporter: Hans Schäfer
>            Priority: Minor
>         Attachments: wicket-case-include.tar
>
>
> Hello!
> WicketTester does not provide a useful MockServletContext#getResource(). As 
> WicketTester always instantiates MockServletContext passing a null-Value as 
> path (webappRoot), the method MockServletContext#getResource always returns 
> null, even if a resource in the classpath exists.
> My proposal for the implementation of Method MockServletContext#getResource() 
> is:
> URL result = {color:#000080}null{color};
> {color:#000080}if {color}(name.startsWith({color:#008000}"/"{color})) {
>    name = name.substring({color:#0000ff}1{color});
> }
> if (webappRoot != null) {
>   final File f = {color:#000080}new 
> {color}File({color:#660e7a}webappRoot{color}, name);
> {color:#000080}  if {color}(f.exists()) {
>      result = f.toURI().toURL();
> }
> {color:#000080}if {color}(result == {color:#000080}null{color}) {
>    result = 
> getClass().getClassLoader().getResource({color:#008000}"META-INF/resources/" 
> {color}+ name);
> }
> {color:#000080}return {color}result;
> Best regards
> Hans



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to