Since #onRedirect() is final currently, I'm +1 to remove IRedirectListener.

Sven

On 02/20/2014 11:03 AM, Martin Grigorov wrote:
I've missed RedirectPage in my search the first time. Thanks!

Here is a better version:

diff --git
i/wicket-core/src/main/java/org/apache/wicket/markup/html/pages/RedirectPage.java
w/wicket-core/src/main/java/org/apache/wicket/markup/html/pages/RedirectPage.java
index 9b60bea..57f6f1f 100644
---
i/wicket-core/src/main/java/org/apache/wicket/markup/html/pages/RedirectPage.java
+++
w/wicket-core/src/main/java/org/apache/wicket/markup/html/pages/RedirectPage.java
@@ -17,8 +17,9 @@
  package org.apache.wicket.markup.html.pages;

  import org.apache.wicket.AttributeModifier;
-import org.apache.wicket.IRedirectListener;
  import org.apache.wicket.Page;
+import org.apache.wicket.core.request.handler.PageProvider;
+import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
  import org.apache.wicket.markup.html.WebMarkupContainer;
  import org.apache.wicket.markup.html.WebPage;
  import org.apache.wicket.model.Model;
@@ -57,7 +58,7 @@ public class RedirectPage extends WebPage
         {
                 final WebMarkupContainer redirect = new
WebMarkupContainer("redirect");
                 final String content = waitBeforeRedirectInSeconds +
";URL=" + url;
-               redirect.add(new AttributeModifier("content", new
Model<String>(content)));
+               redirect.add(new AttributeModifier("content", new
Model<>(content)));
                 add(redirect);
         }

@@ -69,7 +70,7 @@ public class RedirectPage extends WebPage
          */
         public RedirectPage(final Page page)
         {
-               this(page.urlFor(IRedirectListener.INTERFACE,
page.getPageParameters()), 0);
+               this(page, 0);
         }

         /**
@@ -83,7 +84,7 @@ public class RedirectPage extends WebPage
          */
         public RedirectPage(final Page page, final int
waitBeforeRedirectInSeconds)
         {
-               this(page.urlFor(IRedirectListener.INTERFACE,
page.getPageParameters()),
+               this(page.urlFor(new RenderPageRequestHandler(new
PageProvider(page))),
                         waitBeforeRedirectInSeconds);
         }


I think it is better because it will create a "nice looking" url if there
is #mountPage() for this page.

Martin Grigorov
Wicket Training and Consulting


On Thu, Feb 20, 2014 at 11:52 AM, Ernesto Reinaldo Barreiro <
[email protected]> wrote:

Martin,

I cannot find where IRedirectListener#onRedirect is actually called except
when page is visited via RedirectPage... So, to me is just a marker...
Maybe making it not final might make sense as a page could do something
when some other RedirectPage redirects to it?


On Thu, Feb 20, 2014 at 10:30 AM, Martin Grigorov <[email protected]
wrote:
Hi,

I have the following patch here:

-public abstract class Page extends MarkupContainer implements
IRedirectListener, IRequestablePage
+public abstract class Page extends MarkupContainer implements
IRequestablePage
  {
         /** True if the page hierarchy has been modified in the current
request. */
         private static final int FLAG_IS_DIRTY = FLAG_RESERVED3;
@@ -497,16 +497,6 @@ public abstract class Page extends MarkupContainer
implements IRedirectListener,
         }

         /**
-        * Redirect to this page.
-        *
-        * @see org.apache.wicket.IRedirectListener#onRedirect()
-        */
-       @Override
-       public final void onRedirect()
-       {
-       }
-


o.a.w.Page currently implements IRedirectListener but does nothing in
#onRedirect() and the method is final.
What is the idea here ? Maybe to forbid page specializations to use
IRedirectListener ?!

With my patch there are no other implementations of IRedirectListener, so
we can remove it completely. Can you imagine a use case when IRL is
needed
?


Martin Grigorov
Wicket Training and Consulting



--
Regards - Ernesto Reinaldo Barreiro


Reply via email to