You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by sv...@apache.org on 2020/11/06 17:38:54 UTC
[wicket] 01/01: WICKET-6847 onEndRequest before flush
This is an automated email from the ASF dual-hosted git repository.
svenmeier pushed a commit to branch WICKET-6847-onEndRequest-before-flush
in repository https://gitbox.apache.org/repos/asf/wicket.git
commit 15a6cedfb8b855c004b2ece201d9eac063ef770e
Author: Sven Meier <sv...@apache.org>
AuthorDate: Fri Nov 6 18:36:16 2020 +0100
WICKET-6847 onEndRequest before flush
allows RequestPageStore to check for stateful pages
---
pom.xml | 12 ++++++++++++
.../src/main/java/org/apache/wicket/Application.java | 6 ++++++
.../java/org/apache/wicket/page/IPageManager.java | 6 ++++++
.../java/org/apache/wicket/page/PageManager.java | 6 ++++++
.../apache/wicket/pageStore/DelegatingPageStore.java | 6 ++++++
.../java/org/apache/wicket/pageStore/IPageStore.java | 9 +++++++++
.../apache/wicket/pageStore/RequestPageStore.java | 19 ++++++++++++++-----
.../apache/wicket/request/cycle/RequestCycle.java | 20 ++++++++++----------
8 files changed, 69 insertions(+), 15 deletions(-)
diff --git a/pom.xml b/pom.xml
index 0c7cfd5..4e0c912 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1133,6 +1133,18 @@
<comparisonVersion>9.0.0</comparisonVersion>
<failOnError>true</failOnError>
<logResults>true</logResults>
+ <ignored>
+ <difference>
+ <differenceType>7012</differenceType>
+ <className>org/apache/wicket/page/IPageManager</className>
+ <method>void end()</method>
+ </difference>
+ <difference>
+ <differenceType>7012</differenceType>
+ <className>org/apache/wicket/pageStore/IPageStore</className>
+ <method>void end(org.apache.wicket.pageStore.IPageContext)</method>
+ </difference>
+ </ignored>
</configuration>
<executions>
<execution>
diff --git a/wicket-core/src/main/java/org/apache/wicket/Application.java b/wicket-core/src/main/java/org/apache/wicket/Application.java
index 78fd57f..fa4ce29 100644
--- a/wicket-core/src/main/java/org/apache/wicket/Application.java
+++ b/wicket-core/src/main/java/org/apache/wicket/Application.java
@@ -1567,6 +1567,12 @@ public abstract class Application implements UnboundListener, IEventSink, IMetad
requestCycle.getListeners().add(new IRequestCycleListener()
{
@Override
+ public void onEndRequest(RequestCycle cycle)
+ {
+ internalGetPageManager().end();
+ }
+
+ @Override
public void onDetach(final RequestCycle requestCycle)
{
internalGetPageManager().detach();
diff --git a/wicket-core/src/main/java/org/apache/wicket/page/IPageManager.java b/wicket-core/src/main/java/org/apache/wicket/page/IPageManager.java
index c675cd9..ef6094a 100644
--- a/wicket-core/src/main/java/org/apache/wicket/page/IPageManager.java
+++ b/wicket-core/src/main/java/org/apache/wicket/page/IPageManager.java
@@ -73,6 +73,12 @@ public interface IPageManager
void clear();
/**
+ * End the request.
+ */
+ default void end() {
+ }
+
+ /**
* Detach at end of request.
*/
void detach();
diff --git a/wicket-core/src/main/java/org/apache/wicket/page/PageManager.java b/wicket-core/src/main/java/org/apache/wicket/page/PageManager.java
index 642b3c1..02bf13c 100644
--- a/wicket-core/src/main/java/org/apache/wicket/page/PageManager.java
+++ b/wicket-core/src/main/java/org/apache/wicket/page/PageManager.java
@@ -80,6 +80,12 @@ public class PageManager implements IPageManager
}
@Override
+ public void end()
+ {
+ store.end(createPageContext());
+ }
+
+ @Override
public void detach()
{
store.detach(createPageContext());
diff --git a/wicket-core/src/main/java/org/apache/wicket/pageStore/DelegatingPageStore.java b/wicket-core/src/main/java/org/apache/wicket/pageStore/DelegatingPageStore.java
index 5ec3a79..3402b2c 100644
--- a/wicket-core/src/main/java/org/apache/wicket/pageStore/DelegatingPageStore.java
+++ b/wicket-core/src/main/java/org/apache/wicket/pageStore/DelegatingPageStore.java
@@ -76,6 +76,12 @@ public abstract class DelegatingPageStore implements IPageStore
}
@Override
+ public void end(IPageContext context)
+ {
+ delegate.end(context);
+ }
+
+ @Override
public void detach(IPageContext context)
{
delegate.detach(context);
diff --git a/wicket-core/src/main/java/org/apache/wicket/pageStore/IPageStore.java b/wicket-core/src/main/java/org/apache/wicket/pageStore/IPageStore.java
index 3872c8a..19f4079 100644
--- a/wicket-core/src/main/java/org/apache/wicket/pageStore/IPageStore.java
+++ b/wicket-core/src/main/java/org/apache/wicket/pageStore/IPageStore.java
@@ -94,6 +94,15 @@ public interface IPageStore
IManageablePage getPage(IPageContext context, int id);
/**
+ * End the current context.
+ *
+ * @param context
+ */
+ default void end(IPageContext context)
+ {
+ }
+
+ /**
* Detach from the current context.
*
* @param context
diff --git a/wicket-core/src/main/java/org/apache/wicket/pageStore/RequestPageStore.java b/wicket-core/src/main/java/org/apache/wicket/pageStore/RequestPageStore.java
index 54dc9da..d5c4d78 100644
--- a/wicket-core/src/main/java/org/apache/wicket/pageStore/RequestPageStore.java
+++ b/wicket-core/src/main/java/org/apache/wicket/pageStore/RequestPageStore.java
@@ -59,11 +59,6 @@ public class RequestPageStore extends DelegatingPageStore
@Override
public void addPage(IPageContext context, IManageablePage page)
{
- // make sure an HTTP session is bound before committing the response
- if (isPageStateless(page) == false)
- {
- context.getSessionId(true);
- }
getRequestData(context).add(page);
}
@@ -92,6 +87,20 @@ public class RequestPageStore extends DelegatingPageStore
}
@Override
+ public void end(IPageContext context)
+ {
+ RequestData requestData = getRequestData(context);
+ for (IManageablePage page : requestData.pages())
+ {
+ if (isPageStateless(page) == false)
+ {
+ // last opportunity to create a session
+ context.getSessionId(true);
+ }
+ }
+ }
+
+ @Override
public void detach(IPageContext context)
{
RequestData requestData = getRequestData(context);
diff --git a/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java b/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
index b9f9841..d913a92 100644
--- a/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
+++ b/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
@@ -261,6 +261,16 @@ public class RequestCycle implements IRequestCycle, IEventSink, IMetadataContext
}
finally
{
+ try
+ {
+ onEndRequest();
+ listeners.onEndRequest(this);
+ }
+ catch (RuntimeException e)
+ {
+ log.error("Exception occurred during onEndRequest", e);
+ }
+
set(null);
}
@@ -648,16 +658,6 @@ public class RequestCycle implements IRequestCycle, IEventSink, IMetadataContext
{
try
{
- onEndRequest();
- listeners.onEndRequest(this);
- }
- catch (RuntimeException e)
- {
- log.error("Exception occurred during onEndRequest", e);
- }
-
- try
- {
requestHandlerExecutor.detach();
}
catch (RuntimeException exception)
Re: [wicket] 01/01: WICKET-6847 onEndRequest before flush
Posted by Sven Meier <sv...@meiers.net>.
Thanks,
>+ if (isPageStateless(page) == false)
>+ {
>+ // last opportunity to create a session
>+ context.getSessionId(true);
>
>break ?
good point.
>+ * End the current context.
>+ *
>+ * @param context
>+ */
>+ default void end(IPageContext context)
>
>again endRequest(IPageContext) ?
I thought about that, but IMHO this method name fits better with the other methods.
But I don't care too much about the name either.
Regards
Sven
On 09.11.20 07:15, Martin Grigorov wrote:
> Hi,
>
> Few small comments inline.
>
> On Fri, Nov 6, 2020 at 7:38 PM <sv...@apache.org> wrote:
>
>> This is an automated email from the ASF dual-hosted git repository.
>>
>> svenmeier pushed a commit to branch WICKET-6847-onEndRequest-before-flush
>> in repository https://gitbox.apache.org/repos/asf/wicket.git
>>
>> commit 15a6cedfb8b855c004b2ece201d9eac063ef770e
>> Author: Sven Meier <sv...@apache.org>
>> AuthorDate: Fri Nov 6 18:36:16 2020 +0100
>>
>> WICKET-6847 onEndRequest before flush
>>
>> allows RequestPageStore to check for stateful pages
>> ---
>> pom.xml | 12 ++++++++++++
>> .../src/main/java/org/apache/wicket/Application.java | 6 ++++++
>> .../java/org/apache/wicket/page/IPageManager.java | 6 ++++++
>> .../java/org/apache/wicket/page/PageManager.java | 6 ++++++
>> .../apache/wicket/pageStore/DelegatingPageStore.java | 6 ++++++
>> .../java/org/apache/wicket/pageStore/IPageStore.java | 9 +++++++++
>> .../apache/wicket/pageStore/RequestPageStore.java | 19
>> ++++++++++++++-----
>> .../apache/wicket/request/cycle/RequestCycle.java | 20
>> ++++++++++----------
>> 8 files changed, 69 insertions(+), 15 deletions(-)
>>
>> diff --git a/pom.xml b/pom.xml
>> index 0c7cfd5..4e0c912 100644
>> --- a/pom.xml
>> +++ b/pom.xml
>> @@ -1133,6 +1133,18 @@
>>
>> <comparisonVersion>9.0.0</comparisonVersion>
>>
>> <failOnError>true</failOnError>
>>
>> <logResults>true</logResults>
>> + <ignored>
>> + <difference>
>> +
>> <differenceType>7012</differenceType>
>> +
>> <className>org/apache/wicket/page/IPageManager</className>
>> +
>> <method>void end()</method>
>> + </difference>
>> + <difference>
>> +
>> <differenceType>7012</differenceType>
>> +
>> <className>org/apache/wicket/pageStore/IPageStore</className>
>> +
>> <method>void end(org.apache.wicket.pageStore.IPageContext)</method>
>> + </difference>
>> + </ignored>
>> </configuration>
>> <executions>
>> <execution>
>> diff --git a/wicket-core/src/main/java/org/apache/wicket/Application.java
>> b/wicket-core/src/main/java/org/apache/wicket/Application.java
>> index 78fd57f..fa4ce29 100644
>> --- a/wicket-core/src/main/java/org/apache/wicket/Application.java
>> +++ b/wicket-core/src/main/java/org/apache/wicket/Application.java
>> @@ -1567,6 +1567,12 @@ public abstract class Application implements
>> UnboundListener, IEventSink, IMetad
>> requestCycle.getListeners().add(new IRequestCycleListener()
>> {
>> @Override
>> + public void onEndRequest(RequestCycle cycle)
>> + {
>> + internalGetPageManager().end();
>> + }
>> +
>> + @Override
>> public void onDetach(final RequestCycle
>> requestCycle)
>> {
>> internalGetPageManager().detach();
>> diff --git
>> a/wicket-core/src/main/java/org/apache/wicket/page/IPageManager.java
>> b/wicket-core/src/main/java/org/apache/wicket/page/IPageManager.java
>> index c675cd9..ef6094a 100644
>> --- a/wicket-core/src/main/java/org/apache/wicket/page/IPageManager.java
>> +++ b/wicket-core/src/main/java/org/apache/wicket/page/IPageManager.java
>> @@ -73,6 +73,12 @@ public interface IPageManager
>> void clear();
>>
>> /**
>> + * End the request.
>> + */
>> + default void end() {
>>
> endRequest() ?
>
>
>> + }
>> +
>> + /**
>> * Detach at end of request.
>> */
>> void detach();
>> diff --git
>> a/wicket-core/src/main/java/org/apache/wicket/page/PageManager.java
>> b/wicket-core/src/main/java/org/apache/wicket/page/PageManager.java
>> index 642b3c1..02bf13c 100644
>> --- a/wicket-core/src/main/java/org/apache/wicket/page/PageManager.java
>> +++ b/wicket-core/src/main/java/org/apache/wicket/page/PageManager.java
>> @@ -80,6 +80,12 @@ public class PageManager implements IPageManager
>> }
>>
>> @Override
>> + public void end()
>> + {
>> + store.end(createPageContext());
>> + }
>> +
>> + @Override
>> public void detach()
>> {
>> store.detach(createPageContext());
>> diff --git
>> a/wicket-core/src/main/java/org/apache/wicket/pageStore/DelegatingPageStore.java
>> b/wicket-core/src/main/java/org/apache/wicket/pageStore/DelegatingPageStore.java
>> index 5ec3a79..3402b2c 100644
>> ---
>> a/wicket-core/src/main/java/org/apache/wicket/pageStore/DelegatingPageStore.java
>> +++
>> b/wicket-core/src/main/java/org/apache/wicket/pageStore/DelegatingPageStore.java
>> @@ -76,6 +76,12 @@ public abstract class DelegatingPageStore implements
>> IPageStore
>> }
>>
>> @Override
>> + public void end(IPageContext context)
>> + {
>> + delegate.end(context);
>> + }
>> +
>> + @Override
>> public void detach(IPageContext context)
>> {
>> delegate.detach(context);
>> diff --git
>> a/wicket-core/src/main/java/org/apache/wicket/pageStore/IPageStore.java
>> b/wicket-core/src/main/java/org/apache/wicket/pageStore/IPageStore.java
>> index 3872c8a..19f4079 100644
>> --- a/wicket-core/src/main/java/org/apache/wicket/pageStore/IPageStore.java
>> +++ b/wicket-core/src/main/java/org/apache/wicket/pageStore/IPageStore.java
>> @@ -94,6 +94,15 @@ public interface IPageStore
>> IManageablePage getPage(IPageContext context, int id);
>>
>> /**
>> + * End the current context.
>> + *
>> + * @param context
>> + */
>> + default void end(IPageContext context)
>>
> again endRequest(IPageContext) ?
>
>
>> + {
>> + }
>> +
>> + /**
>> * Detach from the current context.
>> *
>> * @param context
>> diff --git
>> a/wicket-core/src/main/java/org/apache/wicket/pageStore/RequestPageStore.java
>> b/wicket-core/src/main/java/org/apache/wicket/pageStore/RequestPageStore.java
>> index 54dc9da..d5c4d78 100644
>> ---
>> a/wicket-core/src/main/java/org/apache/wicket/pageStore/RequestPageStore.java
>> +++
>> b/wicket-core/src/main/java/org/apache/wicket/pageStore/RequestPageStore.java
>> @@ -59,11 +59,6 @@ public class RequestPageStore extends
>> DelegatingPageStore
>> @Override
>> public void addPage(IPageContext context, IManageablePage page)
>> {
>> - // make sure an HTTP session is bound before committing
>> the response
>> - if (isPageStateless(page) == false)
>> - {
>> - context.getSessionId(true);
>> - }
>> getRequestData(context).add(page);
>> }
>>
>> @@ -92,6 +87,20 @@ public class RequestPageStore extends
>> DelegatingPageStore
>> }
>>
>> @Override
>> + public void end(IPageContext context)
>> + {
>> + RequestData requestData = getRequestData(context);
>> + for (IManageablePage page : requestData.pages())
>> + {
>> + if (isPageStateless(page) == false)
>> + {
>> + // last opportunity to create a session
>> + context.getSessionId(true);
>>
> break ?
>
>
>> + }
>> + }
>> + }
>> +
>> + @Override
>> public void detach(IPageContext context)
>> {
>> RequestData requestData = getRequestData(context);
>> diff --git
>> a/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
>> b/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
>> index b9f9841..d913a92 100644
>> ---
>> a/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
>> +++
>> b/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
>> @@ -261,6 +261,16 @@ public class RequestCycle implements IRequestCycle,
>> IEventSink, IMetadataContext
>> }
>> finally
>> {
>> + try
>> + {
>> + onEndRequest();
>> + listeners.onEndRequest(this);
>> + }
>> + catch (RuntimeException e)
>> + {
>> + log.error("Exception occurred during
>> onEndRequest", e);
>> + }
>> +
>> set(null);
>> }
>>
>> @@ -648,16 +658,6 @@ public class RequestCycle implements IRequestCycle,
>> IEventSink, IMetadataContext
>> {
>> try
>> {
>> - onEndRequest();
>> - listeners.onEndRequest(this);
>> - }
>> - catch (RuntimeException e)
>> - {
>> - log.error("Exception occurred during
>> onEndRequest", e);
>> - }
>> -
>> - try
>> - {
>> requestHandlerExecutor.detach();
>> }
>> catch (RuntimeException exception)
>>
>>
Re: [wicket] 01/01: WICKET-6847 onEndRequest before flush
Posted by Martin Grigorov <mg...@apache.org>.
Hi,
Few small comments inline.
On Fri, Nov 6, 2020 at 7:38 PM <sv...@apache.org> wrote:
> This is an automated email from the ASF dual-hosted git repository.
>
> svenmeier pushed a commit to branch WICKET-6847-onEndRequest-before-flush
> in repository https://gitbox.apache.org/repos/asf/wicket.git
>
> commit 15a6cedfb8b855c004b2ece201d9eac063ef770e
> Author: Sven Meier <sv...@apache.org>
> AuthorDate: Fri Nov 6 18:36:16 2020 +0100
>
> WICKET-6847 onEndRequest before flush
>
> allows RequestPageStore to check for stateful pages
> ---
> pom.xml | 12 ++++++++++++
> .../src/main/java/org/apache/wicket/Application.java | 6 ++++++
> .../java/org/apache/wicket/page/IPageManager.java | 6 ++++++
> .../java/org/apache/wicket/page/PageManager.java | 6 ++++++
> .../apache/wicket/pageStore/DelegatingPageStore.java | 6 ++++++
> .../java/org/apache/wicket/pageStore/IPageStore.java | 9 +++++++++
> .../apache/wicket/pageStore/RequestPageStore.java | 19
> ++++++++++++++-----
> .../apache/wicket/request/cycle/RequestCycle.java | 20
> ++++++++++----------
> 8 files changed, 69 insertions(+), 15 deletions(-)
>
> diff --git a/pom.xml b/pom.xml
> index 0c7cfd5..4e0c912 100644
> --- a/pom.xml
> +++ b/pom.xml
> @@ -1133,6 +1133,18 @@
>
> <comparisonVersion>9.0.0</comparisonVersion>
>
> <failOnError>true</failOnError>
>
> <logResults>true</logResults>
> + <ignored>
> + <difference>
> +
> <differenceType>7012</differenceType>
> +
> <className>org/apache/wicket/page/IPageManager</className>
> +
> <method>void end()</method>
> + </difference>
> + <difference>
> +
> <differenceType>7012</differenceType>
> +
> <className>org/apache/wicket/pageStore/IPageStore</className>
> +
> <method>void end(org.apache.wicket.pageStore.IPageContext)</method>
> + </difference>
> + </ignored>
> </configuration>
> <executions>
> <execution>
> diff --git a/wicket-core/src/main/java/org/apache/wicket/Application.java
> b/wicket-core/src/main/java/org/apache/wicket/Application.java
> index 78fd57f..fa4ce29 100644
> --- a/wicket-core/src/main/java/org/apache/wicket/Application.java
> +++ b/wicket-core/src/main/java/org/apache/wicket/Application.java
> @@ -1567,6 +1567,12 @@ public abstract class Application implements
> UnboundListener, IEventSink, IMetad
> requestCycle.getListeners().add(new IRequestCycleListener()
> {
> @Override
> + public void onEndRequest(RequestCycle cycle)
> + {
> + internalGetPageManager().end();
> + }
> +
> + @Override
> public void onDetach(final RequestCycle
> requestCycle)
> {
> internalGetPageManager().detach();
> diff --git
> a/wicket-core/src/main/java/org/apache/wicket/page/IPageManager.java
> b/wicket-core/src/main/java/org/apache/wicket/page/IPageManager.java
> index c675cd9..ef6094a 100644
> --- a/wicket-core/src/main/java/org/apache/wicket/page/IPageManager.java
> +++ b/wicket-core/src/main/java/org/apache/wicket/page/IPageManager.java
> @@ -73,6 +73,12 @@ public interface IPageManager
> void clear();
>
> /**
> + * End the request.
> + */
> + default void end() {
>
endRequest() ?
> + }
> +
> + /**
> * Detach at end of request.
> */
> void detach();
> diff --git
> a/wicket-core/src/main/java/org/apache/wicket/page/PageManager.java
> b/wicket-core/src/main/java/org/apache/wicket/page/PageManager.java
> index 642b3c1..02bf13c 100644
> --- a/wicket-core/src/main/java/org/apache/wicket/page/PageManager.java
> +++ b/wicket-core/src/main/java/org/apache/wicket/page/PageManager.java
> @@ -80,6 +80,12 @@ public class PageManager implements IPageManager
> }
>
> @Override
> + public void end()
> + {
> + store.end(createPageContext());
> + }
> +
> + @Override
> public void detach()
> {
> store.detach(createPageContext());
> diff --git
> a/wicket-core/src/main/java/org/apache/wicket/pageStore/DelegatingPageStore.java
> b/wicket-core/src/main/java/org/apache/wicket/pageStore/DelegatingPageStore.java
> index 5ec3a79..3402b2c 100644
> ---
> a/wicket-core/src/main/java/org/apache/wicket/pageStore/DelegatingPageStore.java
> +++
> b/wicket-core/src/main/java/org/apache/wicket/pageStore/DelegatingPageStore.java
> @@ -76,6 +76,12 @@ public abstract class DelegatingPageStore implements
> IPageStore
> }
>
> @Override
> + public void end(IPageContext context)
> + {
> + delegate.end(context);
> + }
> +
> + @Override
> public void detach(IPageContext context)
> {
> delegate.detach(context);
> diff --git
> a/wicket-core/src/main/java/org/apache/wicket/pageStore/IPageStore.java
> b/wicket-core/src/main/java/org/apache/wicket/pageStore/IPageStore.java
> index 3872c8a..19f4079 100644
> --- a/wicket-core/src/main/java/org/apache/wicket/pageStore/IPageStore.java
> +++ b/wicket-core/src/main/java/org/apache/wicket/pageStore/IPageStore.java
> @@ -94,6 +94,15 @@ public interface IPageStore
> IManageablePage getPage(IPageContext context, int id);
>
> /**
> + * End the current context.
> + *
> + * @param context
> + */
> + default void end(IPageContext context)
>
again endRequest(IPageContext) ?
> + {
> + }
> +
> + /**
> * Detach from the current context.
> *
> * @param context
> diff --git
> a/wicket-core/src/main/java/org/apache/wicket/pageStore/RequestPageStore.java
> b/wicket-core/src/main/java/org/apache/wicket/pageStore/RequestPageStore.java
> index 54dc9da..d5c4d78 100644
> ---
> a/wicket-core/src/main/java/org/apache/wicket/pageStore/RequestPageStore.java
> +++
> b/wicket-core/src/main/java/org/apache/wicket/pageStore/RequestPageStore.java
> @@ -59,11 +59,6 @@ public class RequestPageStore extends
> DelegatingPageStore
> @Override
> public void addPage(IPageContext context, IManageablePage page)
> {
> - // make sure an HTTP session is bound before committing
> the response
> - if (isPageStateless(page) == false)
> - {
> - context.getSessionId(true);
> - }
> getRequestData(context).add(page);
> }
>
> @@ -92,6 +87,20 @@ public class RequestPageStore extends
> DelegatingPageStore
> }
>
> @Override
> + public void end(IPageContext context)
> + {
> + RequestData requestData = getRequestData(context);
> + for (IManageablePage page : requestData.pages())
> + {
> + if (isPageStateless(page) == false)
> + {
> + // last opportunity to create a session
> + context.getSessionId(true);
>
break ?
> + }
> + }
> + }
> +
> + @Override
> public void detach(IPageContext context)
> {
> RequestData requestData = getRequestData(context);
> diff --git
> a/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
> b/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
> index b9f9841..d913a92 100644
> ---
> a/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
> +++
> b/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
> @@ -261,6 +261,16 @@ public class RequestCycle implements IRequestCycle,
> IEventSink, IMetadataContext
> }
> finally
> {
> + try
> + {
> + onEndRequest();
> + listeners.onEndRequest(this);
> + }
> + catch (RuntimeException e)
> + {
> + log.error("Exception occurred during
> onEndRequest", e);
> + }
> +
> set(null);
> }
>
> @@ -648,16 +658,6 @@ public class RequestCycle implements IRequestCycle,
> IEventSink, IMetadataContext
> {
> try
> {
> - onEndRequest();
> - listeners.onEndRequest(this);
> - }
> - catch (RuntimeException e)
> - {
> - log.error("Exception occurred during
> onEndRequest", e);
> - }
> -
> - try
> - {
> requestHandlerExecutor.detach();
> }
> catch (RuntimeException exception)
>
>