wicket-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From János Cserép (JIRA) <j...@apache.org>
Subject [jira] Issue Comment Edited: (WICKET-631) Resource.getParameters() empty when resource is mounted
Date Tue, 26 Jun 2007 14:53:26 GMT

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

János Cserép edited comment on WICKET-631 at 6/26/07 7:51 AM:
--------------------------------------------------------------

I think I've found the line that causes this problem. In Resource.java:

finally
		{
			// Really really really make sure parameters are cleared
			parameters.set(null);
		}

is called in the end of onResourceRequested(). This is called in the PROCESS_EVENTS step.

The code before this is:

cycle.setRequestTarget(new ResourceStreamRequestTarget(resourceStream));

Which sets a new RequestTarget but doesn't yet call my custom DynamicWebResource's getResourceState
method (where I'm calling getParameters())

When the lifecycle of the request continues we enter into the RESPOND step which eventually
calls my subclassed DynamicWebResource and it's getResourceStream method. At this time the
Resource's threadlocal for parameters is already null.

If the page is not mounted then Resource.getParameters() can still access the parameters through
RequestCycle.get().getRequest().getParameters(), but when the resource is mounted, this fails.

Can someone check out why you really really really have to make sure that the parameters are
cleared in the PROCESS_EVENTS step? I guess you didn't want to have objects lying around in
the ThreadLocal, but that should really be moved after the resource finished assembling the
response to the request.

Is calling Resource.getParameters() illegal from the getResourceState method of DynamicWebResource?


The hack in Resource.getParameters which falls back to the RequestCycle is also quite ugly
and I think should be reconsidered (I haven't found the code snippet which clears that when
the request is finished)

Thanks,

janos


 was:
I think I've found the line that causes this problem. In Resource.java:

finally
		{
			// Really really really make sure parameters are cleared
			parameters.set(null);
		}

is called in onResourceRequested(). This is called in the PROCESS_EVENTS step.

So in the RESPOND step my application doesn't see the parameters anymore.

If the page is not mounted then Resource.getParameters() can still access the parameters through
RequestCycle.get().getRequest().getParameters(), but when the resource is mounted, this fails.

Can someone check out why you really really really have to make sure that the parameters are
cleared in the PROCESS_EVENTS step? I guess you didn't want to have objects lying around in
the ThreadLocal, but that should really be moved after the resource finished assembling the
response to the request.

Thanks,

janos

> Resource.getParameters() empty when resource is mounted
> -------------------------------------------------------
>
>                 Key: WICKET-631
>                 URL: https://issues.apache.org/jira/browse/WICKET-631
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket
>    Affects Versions: 1.3.0-beta1
>         Environment: wicket 1.3.0-incubating-SNAPSHOT running on Glassfish and JDK 1.6.0
>            Reporter: János Cserép
>             Fix For: 1.3.0-beta3
>
>
> After migrating my application from 1.2.6 to 1.3.0-incubating-SNAPSHOT mounted shared
resources (rss feeds, uploaded images) stopped working.
> DynamicWebResource.getParameters().getXXX() returns with null if the resource is mounted
via Application.mountSharedResource but it works fine when the resource is not mounted.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message