The second approuch looks like a step in the right direction. It would be
nice not to need a session to serve a request.
Ryan
On 4/11/07, Johan Compagner <[EMAIL PROTECTED]> wrote:
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
> >
> >
> >
> >
>