Hi,

Few small comments inline.

On Fri, Nov 6, 2020 at 7:38 PM <svenme...@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 <svenme...@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)
>
>

Reply via email to