You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by mg...@apache.org on 2015/01/06 19:51:52 UTC

isis git commit: ISIS-987 Introduce PageNavigationService - a service helping with navigation to other pages by PageType

Repository: isis
Updated Branches:
  refs/heads/ISIS-987-PageNavigationService [created] 38b3d2730


ISIS-987 Introduce PageNavigationService - a service helping with navigation to other pages by PageType


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/38b3d273
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/38b3d273
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/38b3d273

Branch: refs/heads/ISIS-987-PageNavigationService
Commit: 38b3d2730ec9565ea339d95c92f2ab608fe80405
Parents: 4225268
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Tue Jan 6 20:51:03 2015 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Tue Jan 6 20:51:03 2015 +0200

----------------------------------------------------------------------
 .../viewer/wicket/viewer/IsisWicketModule.java  |  3 +
 .../pages/PageNavigationServiceDefault.java     | 70 ++++++++++++++++++++
 ...ClassListDefault_RegistrationAndCaching.java | 14 ++--
 .../wicket/ui/pages/PageNavigationService.java  | 63 ++++++++++++++++++
 .../password_reset/PasswordResetEmailPanel.java | 12 +---
 .../password_reset/PasswordResetPanel.java      |  1 -
 .../ui/pages/accmngt/register/RegisterPage.java | 12 ++--
 .../accmngt/signup/RegistrationFormPage.java    |  9 ++-
 .../accmngt/signup/RegistrationFormPanel.java   | 12 +---
 9 files changed, 160 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/38b3d273/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketModule.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketModule.java b/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketModule.java
index 240f5ec..f2f670d0 100644
--- a/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketModule.java
+++ b/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketModule.java
@@ -32,11 +32,13 @@ import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistrar;
 import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistry;
 import org.apache.isis.viewer.wicket.ui.pages.PageClassList;
 import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistry;
+import org.apache.isis.viewer.wicket.ui.pages.PageNavigationService;
 import org.apache.isis.viewer.wicket.viewer.imagecache.ImageResourceCacheClassPath;
 import org.apache.isis.viewer.wicket.viewer.registries.components.ComponentFactoryRegistrarDefault;
 import org.apache.isis.viewer.wicket.viewer.registries.components.ComponentFactoryRegistryDefault;
 import org.apache.isis.viewer.wicket.viewer.registries.pages.PageClassListDefault;
 import org.apache.isis.viewer.wicket.viewer.registries.pages.PageClassRegistryDefault;
+import org.apache.isis.viewer.wicket.viewer.registries.pages.PageNavigationServiceDefault;
 import org.apache.isis.viewer.wicket.viewer.settings.WicketViewerSettingsDefault;
 
 /**
@@ -67,6 +69,7 @@ public class IsisWicketModule extends AbstractModule {
     protected void configure() {
         bind(ComponentFactoryRegistry.class).to(ComponentFactoryRegistryDefault.class);
         bind(PageClassRegistry.class).to(PageClassRegistryDefault.class);
+        bind(PageNavigationService.class).to(PageNavigationServiceDefault.class);
         bind(PageClassList.class).to(PageClassListDefault.class);
         bind(ComponentFactoryRegistrar.class).to(ComponentFactoryRegistrarDefault.class);
         bind(ImageResourceCache.class).to(ImageResourceCacheClassPath.class);

http://git-wip-us.apache.org/repos/asf/isis/blob/38b3d273/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/pages/PageNavigationServiceDefault.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/pages/PageNavigationServiceDefault.java b/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/pages/PageNavigationServiceDefault.java
new file mode 100644
index 0000000..ab45158
--- /dev/null
+++ b/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/pages/PageNavigationServiceDefault.java
@@ -0,0 +1,70 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.viewer.wicket.viewer.registries.pages;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+import org.apache.wicket.Page;
+import org.apache.wicket.RestartResponseAtInterceptPageException;
+import org.apache.wicket.RestartResponseException;
+import org.apache.wicket.request.cycle.RequestCycle;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.apache.isis.viewer.wicket.model.models.PageType;
+import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistry;
+import org.apache.isis.viewer.wicket.ui.pages.PageNavigationService;
+
+/**
+ * Default implementation of {@link org.apache.isis.viewer.wicket.ui.pages.PageNavigationService}
+ */
+@Singleton
+public class PageNavigationServiceDefault implements PageNavigationService {
+
+    private static final long serialVersionUID = 1L;
+
+    private final PageClassRegistry pageClassRegistry;
+
+    @Inject
+    public PageNavigationServiceDefault(final PageClassRegistry pageClassRegistry) {
+        this.pageClassRegistry = pageClassRegistry;
+    }
+
+    @Override
+    public void navigateTo(PageType pageType) {
+        navigateTo(pageType, new PageParameters());
+    }
+
+    @Override
+    public void navigateTo(PageType pageType, PageParameters parameters) {
+        Class<? extends Page> pageClass = pageClassRegistry.getPageClass(pageType);
+        RequestCycle.get().setResponsePage(pageClass, parameters);
+    }
+
+    @Override
+    public void restartAt(PageType pageType) {
+        Class<? extends Page> pageClass = pageClassRegistry.getPageClass(pageType);
+        throw new RestartResponseException(pageClass);
+    }
+
+    @Override
+    public void interceptAndRestartAt(PageType pageType) {
+        Class<? extends Page> pageClass = pageClassRegistry.getPageClass(pageType);
+        throw new RestartResponseAtInterceptPageException(pageClass);
+    }
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/38b3d273/component/viewer/wicket/impl/src/test/java/org/apache/isis/viewer/wicket/viewer/pages/PageClassListDefault_RegistrationAndCaching.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/impl/src/test/java/org/apache/isis/viewer/wicket/viewer/pages/PageClassListDefault_RegistrationAndCaching.java b/component/viewer/wicket/impl/src/test/java/org/apache/isis/viewer/wicket/viewer/pages/PageClassListDefault_RegistrationAndCaching.java
index 6d17907..b482435 100644
--- a/component/viewer/wicket/impl/src/test/java/org/apache/isis/viewer/wicket/viewer/pages/PageClassListDefault_RegistrationAndCaching.java
+++ b/component/viewer/wicket/impl/src/test/java/org/apache/isis/viewer/wicket/viewer/pages/PageClassListDefault_RegistrationAndCaching.java
@@ -19,21 +19,21 @@
 
 package org.apache.isis.viewer.wicket.viewer.pages;
 
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.not;
-import static org.hamcrest.Matchers.nullValue;
-import static org.junit.Assert.assertThat;
-
 import org.apache.wicket.Page;
 import org.junit.Before;
 import org.junit.Test;
-
 import org.apache.isis.viewer.wicket.model.models.ActionModel;
 import org.apache.isis.viewer.wicket.model.models.PageType;
 import org.apache.isis.viewer.wicket.ui.pages.actionprompt.ActionPromptPage;
 import org.apache.isis.viewer.wicket.viewer.registries.pages.PageClassListDefault;
 import org.apache.isis.viewer.wicket.viewer.registries.pages.PageClassRegistryDefault;
 
+import static org.hamcrest.Matchers.instanceOf;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.not;
+import static org.hamcrest.Matchers.nullValue;
+import static org.junit.Assert.assertThat;
+
 public class PageClassListDefault_RegistrationAndCaching {
 
     private PageClassRegistryDefault registryImpl;
@@ -62,7 +62,7 @@ public class PageClassListDefault_RegistrationAndCaching {
         registryImpl.registerPage(PageType.ACTION_PROMPT, TestingActionPage.class);
 
         final Class<? extends Page> pageClass = registryImpl.getPageClass(PageType.ACTION_PROMPT);
-        assertThat(pageClass.equals(TestingActionPage.class), is(true));
+        assertThat(pageClass, is(instanceOf(TestingActionPage.class)));
     }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/38b3d273/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageNavigationService.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageNavigationService.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageNavigationService.java
new file mode 100644
index 0000000..194509b
--- /dev/null
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageNavigationService.java
@@ -0,0 +1,63 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.isis.viewer.wicket.ui.pages;
+
+import java.io.Serializable;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.apache.isis.viewer.wicket.model.models.PageType;
+
+/**
+ * A service helping with the navigation to pages by type
+ */
+public interface PageNavigationService extends Serializable {
+
+    /**
+     * Schedules a page with a given {@link org.apache.isis.viewer.wicket.model.models.PageType type}
+     * to provide the response
+     *
+     * @param pageType The type of the page that should provide the response
+     */
+    void navigateTo(PageType pageType);
+
+    /**
+     * Schedules a page with a given {@link org.apache.isis.viewer.wicket.model.models.PageType type}
+     * and {@link org.apache.wicket.request.mapper.parameter.PageParameters parameters} to provide the response
+     *
+     * @param pageType The type of the page that should provide the response
+     * @param parameters The page parameters for the page that should provide the response
+     */
+    void navigateTo(PageType pageType, PageParameters parameters);
+
+    /**
+     * Restarts the current request cycle and schedules another page to provide the response
+     *
+     * @param pageType The type of the page that should provide the response
+     */
+    void restartAt(PageType pageType);
+
+    /**
+     * Restarts the current request cycle and schedules another page to provide the response.
+     * Information about the current page url and request parameters is preserved so that
+     * the application can return later by using {@link org.apache.wicket.Component#continueToOriginalDestination()}
+     *
+     * @param pageType The type of the page that should provide the response
+     */
+    void interceptAndRestartAt(PageType pageType);
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/38b3d273/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/password_reset/PasswordResetEmailPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/password_reset/PasswordResetEmailPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/password_reset/PasswordResetEmailPanel.java
index 6f9e5f6..c3a0a3a 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/password_reset/PasswordResetEmailPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/password_reset/PasswordResetEmailPanel.java
@@ -24,7 +24,6 @@ import java.util.Map;
 import java.util.UUID;
 import javax.inject.Inject;
 import com.google.inject.name.Named;
-import org.apache.wicket.Page;
 import org.apache.wicket.markup.html.form.Button;
 import org.apache.wicket.markup.html.form.RequiredTextField;
 import org.apache.wicket.markup.html.form.StatelessForm;
@@ -42,7 +41,7 @@ import org.apache.isis.applib.services.userreg.EmailNotificationService;
 import org.apache.isis.applib.services.userreg.events.PasswordResetEvent;
 import org.apache.isis.viewer.wicket.model.models.PageType;
 import org.apache.isis.viewer.wicket.ui.components.widgets.bootstrap.FormGroup;
-import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistry;
+import org.apache.isis.viewer.wicket.ui.pages.PageNavigationService;
 import org.apache.isis.viewer.wicket.ui.pages.accmngt.AccountConfirmationMap;
 import org.apache.isis.viewer.wicket.ui.pages.accmngt.AccountManagementPageAbstract;
 import org.apache.isis.viewer.wicket.ui.pages.accmngt.EmailAvailableValidator;
@@ -102,7 +101,7 @@ public class PasswordResetEmailPanel extends Panel {
 
                     CookieUtils cookieUtils = new CookieUtils();
                     cookieUtils.save(AccountManagementPageAbstract.FEEDBACK_COOKIE_NAME, emailSentMessage);
-                    goToSignInPage();
+                    pageNavigationService.navigateTo(PageType.SIGN_IN);
                 }
             }
         };
@@ -127,18 +126,13 @@ public class PasswordResetEmailPanel extends Panel {
         return fullUrl;
     }
 
-    private void goToSignInPage() {
-        Class<? extends Page> signInPage = pageClassRegistry.getPageClass(PageType.SIGN_IN);
-        setResponsePage(signInPage);
-    }
-
     @Inject
     private EmailNotificationService emailNotificationService;
     @Inject
     private EmailService emailService;
 
     @Inject
-    private PageClassRegistry pageClassRegistry;
+    private PageNavigationService pageNavigationService;
 
     @Inject
     @Named("applicationName")

http://git-wip-us.apache.org/repos/asf/isis/blob/38b3d273/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/password_reset/PasswordResetPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/password_reset/PasswordResetPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/password_reset/PasswordResetPanel.java
index a49429f..8001c1e 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/password_reset/PasswordResetPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/password_reset/PasswordResetPanel.java
@@ -26,7 +26,6 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.Callable;
 import javax.inject.Inject;
-import com.google.inject.name.Named;
 import org.apache.wicket.Page;
 import org.apache.wicket.markup.html.form.Button;
 import org.apache.wicket.markup.html.form.PasswordTextField;

http://git-wip-us.apache.org/repos/asf/isis/blob/38b3d273/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/register/RegisterPage.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/register/RegisterPage.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/register/RegisterPage.java
index 6afa6d0..550f575 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/register/RegisterPage.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/register/RegisterPage.java
@@ -29,6 +29,7 @@ import org.apache.wicket.util.string.StringValue;
 import org.apache.wicket.util.string.Strings;
 import org.apache.isis.viewer.wicket.model.models.PageType;
 import org.apache.isis.viewer.wicket.ui.errors.ExceptionModel;
+import org.apache.isis.viewer.wicket.ui.pages.PageNavigationService;
 import org.apache.isis.viewer.wicket.ui.pages.accmngt.AccountManagementPageAbstract;
 import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistry;
 import org.apache.isis.viewer.wicket.ui.pages.accmngt.AccountConfirmationMap;
@@ -56,25 +57,20 @@ public class RegisterPage extends AccountManagementPageAbstract {
 
         final StringValue uuidValue = getPageParameters().get(0);
         if (uuidValue.isEmpty()) {
-            goToSignUpPage();
+            pageNavigationService.navigateTo(PageType.SIGN_IN);
         } else {
             String uuid = uuidValue.toString();
 
             AccountConfirmationMap accountConfirmationMap = getApplication().getMetaData(AccountConfirmationMap.KEY);
             final String email = accountConfirmationMap.get(uuid);
             if (Strings.isEmpty(email)) {
-                goToSignUpPage();
+                pageNavigationService.navigateTo(PageType.SIGN_IN);
             } else {
                 addOrReplace(new RegisterPanel("content", uuidValue.toString()));
             }
         }
     }
 
-    private void goToSignUpPage() {
-        Class<? extends Page> signUpPageClass = pageClassRegistry.getPageClass(PageType.SIGN_UP);
-        throw new RestartResponseException(signUpPageClass);
-    }
-
     @Inject
-    private PageClassRegistry pageClassRegistry;
+    private PageNavigationService pageNavigationService;
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/38b3d273/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/signup/RegistrationFormPage.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/signup/RegistrationFormPage.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/signup/RegistrationFormPage.java
index 242febe..bc65037 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/signup/RegistrationFormPage.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/signup/RegistrationFormPage.java
@@ -19,9 +19,11 @@
 
 package org.apache.isis.viewer.wicket.ui.pages.accmngt.signup;
 
-import org.apache.wicket.RestartResponseAtInterceptPageException;
+import com.google.inject.Inject;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.apache.isis.viewer.wicket.model.models.PageType;
 import org.apache.isis.viewer.wicket.ui.errors.ExceptionModel;
+import org.apache.isis.viewer.wicket.ui.pages.PageNavigationService;
 import org.apache.isis.viewer.wicket.ui.pages.accmngt.AccountManagementPageAbstract;
 import org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage;
 
@@ -32,6 +34,9 @@ public class RegistrationFormPage extends AccountManagementPageAbstract {
     
     private static final long serialVersionUID = 1L;
 
+    @Inject
+    private PageNavigationService pageNavigationService;
+
     public RegistrationFormPage(final PageParameters parameters) {
         this(parameters, getAndClearExceptionModelIfAny());
     }
@@ -41,7 +46,7 @@ public class RegistrationFormPage extends AccountManagementPageAbstract {
 
         boolean suppressSignUp = getConfiguration().getBoolean(WicketSignInPage.ISIS_VIEWER_WICKET_SUPPRESS_SIGN_UP, false);
         if(suppressSignUp) {
-            throw new RestartResponseAtInterceptPageException(WicketSignInPage.class);
+            pageNavigationService.interceptAndRestartAt(PageType.SIGN_IN);
         }
 
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/38b3d273/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/signup/RegistrationFormPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/signup/RegistrationFormPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/signup/RegistrationFormPanel.java
index f3a5d86..7b1c46a 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/signup/RegistrationFormPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/signup/RegistrationFormPanel.java
@@ -26,7 +26,6 @@ import java.util.Map;
 import java.util.UUID;
 import javax.inject.Inject;
 import com.google.inject.name.Named;
-import org.apache.wicket.Page;
 import org.apache.wicket.markup.html.form.Button;
 import org.apache.wicket.markup.html.form.RequiredTextField;
 import org.apache.wicket.markup.html.form.StatelessForm;
@@ -43,7 +42,7 @@ import org.apache.isis.applib.services.userreg.EmailNotificationService;
 import org.apache.isis.applib.services.userreg.events.EmailRegistrationEvent;
 import org.apache.isis.viewer.wicket.model.models.PageType;
 import org.apache.isis.viewer.wicket.ui.components.widgets.bootstrap.FormGroup;
-import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistry;
+import org.apache.isis.viewer.wicket.ui.pages.PageNavigationService;
 import org.apache.isis.viewer.wicket.ui.pages.accmngt.AccountConfirmationMap;
 import org.apache.isis.viewer.wicket.ui.pages.accmngt.AccountManagementPageAbstract;
 import org.apache.isis.viewer.wicket.ui.pages.accmngt.EmailAvailableValidator;
@@ -104,7 +103,7 @@ public class RegistrationFormPanel extends Panel {
 
                     CookieUtils cookieUtils = new CookieUtils();
                     cookieUtils.save(AccountManagementPageAbstract.FEEDBACK_COOKIE_NAME, emailSentMessage);
-                    goToSignInPage();
+                    pageNavigationService.navigateTo(PageType.SIGN_IN);
                 }
             }
         };
@@ -129,18 +128,13 @@ public class RegistrationFormPanel extends Panel {
         return fullUrl;
     }
 
-    private void goToSignInPage() {
-        Class<? extends Page> signInPage = pageClassRegistry.getPageClass(PageType.SIGN_IN);
-        setResponsePage(signInPage);
-    }
-
     @Inject
     private EmailNotificationService emailNotificationService;
     @Inject
     private EmailService emailService;
 
     @Inject
-    private PageClassRegistry pageClassRegistry;
+    private PageNavigationService pageNavigationService;
 
     @Inject
     @Named("applicationName")