ok i changed it back for now
But if we want to fix this then we need to change some flow

Now a RequestCycle is created by a Session object:


final WebRequest request = webApplication.newWebRequest(servletRequest);

// First, set the webapplication for this thread
Application.set(webApplication);

// Create a response object and set the output encoding according to
// org.apache.wicket's application setttings.
final WebResponse response = webApplication.newWebResponse(servletResponse);
response.setAjax(request.isAjax());
response.setCharacterEncoding(webApplication.getRequestCycleSettings
().getResponseRequestEncoding());

// Get session for request
final WebSession session = webApplication.getSession(request, response);

RequestCycle cycle = session.newRequestCycle(request, response);

we could do this:



final WebRequest request = webApplication.newWebRequest(servletRequest);

// First, set the webapplication for this thread
Application.set(webApplication);

// Create a response object and set the output encoding according to
// org.apache.wicket's application setttings.
final WebResponse response = webApplication.newWebResponse(servletResponse);
response.setAjax(request.isAjax());
response.setCharacterEncoding(webApplication.getRequestCycleSettings
().getResponseRequestEncoding());

RequestCycle cycle =
webApplication.getRequestCycleFactory().newRequestCycle(request,
response);

// Get session for request
final WebSession session = webApplication.getSession(request, response);


Then a request cycle is not a child anymore of the session.
So a request cycle doesn't get the session in its constructor anymore. (it
doesn't have access at all to a session object)

johan





On 4/11/07, Johan Compagner <[EMAIL PROTECTED]> wrote:

Looked at it some more
this needs to be rollbacked. This is really really bad code.

there are public methods called on the session object that is not fully
constructed yet
And the this is given to the newRequestCycle() method.. What if people
want to use there
own Session object in the RequestCycle create?? That is impossible because
the Session
object is not completely valid yet!

We need to find another solution for this because this can't be done.

On 4/11/07, Johan Compagner <[EMAIL PROTECTED]> wrote:
>
> in the constructor:
>
>     protected Session(Application application, Request request, Response
> response)
>     {
>         // Construct request cycle (which sets thread local)
>         getRequestCycleFactory().newRequestCycle(this, request,
> response);
>
>
> and ofcourse normally in the WicketFilter.doGet()
>
> please don't tell me this change of the Session constructor (suddenly a
> response object as a param)
> and the construction of that request cycle is because of UNIT TESTS????
> because that would be horrible that we change such a basic code just for
> unit testing.
>
> johan
>
>
>
>

Reply via email to