You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2019/12/21 12:23:28 UTC

[isis] branch master updated: ISIS-2158: wicket: remove injection points from PasswordResetEmailPanel

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/master by this push:
     new 01f889e  ISIS-2158: wicket: remove injection points from PasswordResetEmailPanel
01f889e is described below

commit 01f889ec96bc7df188a0643cdcf1fd1a0e38129b
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sat Dec 21 13:23:19 2019 +0100

    ISIS-2158: wicket: remove injection points from PasswordResetEmailPanel
---
 .../password_reset/PasswordResetEmailPanel.java    | 78 +++++++++-------------
 .../isis/viewer/wicket/ui/panels/PanelBase.java    | 18 +++++
 .../extensions/restclient/RestfulClientConfig.java | 53 +--------------
 3 files changed, 54 insertions(+), 95 deletions(-)

diff --git a/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/password_reset/PasswordResetEmailPanel.java b/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/password_reset/PasswordResetEmailPanel.java
index d791d3d..23a455f 100644
--- a/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/password_reset/PasswordResetEmailPanel.java
+++ b/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/password_reset/PasswordResetEmailPanel.java
@@ -22,8 +22,6 @@ package org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset;
 import java.util.HashMap;
 import java.util.Map;
 
-import javax.inject.Inject;
-
 import org.apache.wicket.markup.html.form.Button;
 import org.apache.wicket.markup.html.form.RequiredTextField;
 import org.apache.wicket.markup.html.form.StatelessForm;
@@ -33,16 +31,15 @@ import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.util.cookies.CookieUtils;
 import org.apache.wicket.validation.validator.EmailAddressValidator;
 
-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.EmailVerificationUrlService;
-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.accmngt.EmailAvailableValidator;
 import org.apache.isis.viewer.wicket.ui.panels.PanelBase;
 
+import lombok.val;
+
 /**
  * A panel with a form for creation of new users
  */
@@ -50,11 +47,6 @@ public class PasswordResetEmailPanel extends PanelBase<Void> {
 
     private static final long serialVersionUID = 1L;
 
-    @Inject private transient EmailNotificationService emailNotificationService;
-    @Inject private transient EmailVerificationUrlService emailVerificationUrlService;
-    @Inject private transient PageNavigationService pageNavigationService;
-//    @Inject private transient WebAppConfigBean webAppConfigBean;
-
     /**
      * Constructor
      *
@@ -64,61 +56,57 @@ public class PasswordResetEmailPanel extends PanelBase<Void> {
     public PasswordResetEmailPanel(final String id) {
         super(id);
 
-        StatelessForm<Void> form = new StatelessForm<>("signUpForm");
+        val form = new StatelessForm<Void>("signUpForm");
         addOrReplace(form);
 
-        final RequiredTextField<String> emailField = new RequiredTextField<>("email", Model.of(""));
+        val emailField = new RequiredTextField<String>("email", Model.of(""));
         emailField.setLabel(new ResourceModel("emailLabel"));
         emailField.add(EmailAddressValidator.getInstance());
         emailField.add(EmailAvailableValidator.exists(getCommonContext()));
 
-        FormGroup formGroup = new FormGroup("formGroup", emailField);
+        val formGroup = new FormGroup("formGroup", emailField);
         form.add(formGroup);
 
         formGroup.add(emailField);
 
-        Button signUpButton = new Button("passwordResetSubmit") {
+        val signUpButton = new Button("passwordResetSubmit") {
+
             private static final long serialVersionUID = 1L;
+            private final RequiredTextField<String> _emailField = emailField;
 
             @Override
             public void onSubmit() {
                 super.onSubmit();
-
-                String email = emailField.getModelObject();
-
-                String confirmationUrl = emailVerificationUrlService.createVerificationUrl(PageType.PASSWORD_RESET, email);
-
-                //TODO [2033] remove ...                
-                //                /**
-                //                 * We have to init() the services here because the Isis runtime is not available to us
-                //                 * (guice will have instantiated a new instance of the service).
-                //                 *
-                //                 * We do it this way just so that the programming model for the EmailService is similar to regular Isis-managed services.
-                //                 */
-                //                emailNotificationService.init();
-                //                emailService.init();
-
-                final PasswordResetEvent passwordResetEvent = new PasswordResetEvent(
-                        email, 
-                        confirmationUrl, 
-                        getWebAppConfigBean().getApplicationName());
-
-                boolean emailSent = emailNotificationService.send(passwordResetEvent);
-                if (emailSent) {
-                    Map<String, String> map = new HashMap<>();
-                    map.put("email", email);
-                    IModel<Map<String, String>> model = Model.ofMap(map);
-                    String emailSentMessage = getString("emailSentMessage", model);
-
-                    CookieUtils cookieUtils = new CookieUtils();
-                    cookieUtils.save(AccountManagementPageAbstract.FEEDBACK_COOKIE_NAME, emailSentMessage);
-                    pageNavigationService.navigateTo(PageType.SIGN_IN);
-                }
+                passwordResetSubmit(_emailField);
             }
         };
 
         form.add(signUpButton);
     }
+    
+    private void passwordResetSubmit(final RequiredTextField<String> emailField) {
+
+        String email = emailField.getModelObject();
+
+        String confirmationUrl = super.getEmailVerificationUrlService().createVerificationUrl(PageType.PASSWORD_RESET, email);
+
+        val passwordResetEvent = new PasswordResetEvent(
+                email, 
+                confirmationUrl, 
+                getWebAppConfigBean().getApplicationName());
+
+        boolean emailSent = super.getEmailNotificationService().send(passwordResetEvent);
+        if (emailSent) {
+            Map<String, String> map = new HashMap<>();
+            map.put("email", email);
+            IModel<Map<String, String>> model = Model.ofMap(map);
+            String emailSentMessage = getString("emailSentMessage", model);
+
+            CookieUtils cookieUtils = new CookieUtils();
+            cookieUtils.save(AccountManagementPageAbstract.FEEDBACK_COOKIE_NAME, emailSentMessage);
+            super.getPageNavigationService().navigateTo(PageType.SIGN_IN);
+        }
+    }
 
 
 
diff --git a/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelBase.java b/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelBase.java
index 0c45d21..8678e98 100644
--- a/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelBase.java
+++ b/core/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelBase.java
@@ -27,6 +27,7 @@ import org.apache.wicket.model.IModel;
 
 import org.apache.isis.applib.services.i18n.LocaleProvider;
 import org.apache.isis.applib.services.i18n.TranslationService;
+import org.apache.isis.applib.services.userreg.EmailNotificationService;
 import org.apache.isis.config.viewer.wicket.WebAppConfiguration;
 import org.apache.isis.metamodel.context.MetaModelContext;
 import org.apache.isis.runtime.session.IsisSessionFactory;
@@ -39,7 +40,9 @@ import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistry;
 import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistryAccessor;
 import org.apache.isis.viewer.wicket.ui.components.tree.themes.TreeThemeProvider;
 import org.apache.isis.viewer.wicket.ui.components.tree.themes.TreeThemeProviderDefault;
+import org.apache.isis.viewer.wicket.ui.pages.EmailVerificationUrlService;
 import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistry;
+import org.apache.isis.viewer.wicket.ui.pages.PageNavigationService;
 import org.apache.isis.webapp.context.IsisWebAppCommonContext;
 
 /**
@@ -60,6 +63,9 @@ public class PanelBase<T> extends GenericPanel<T> implements IsisWebAppCommonCon
     private transient TranslationService translationService;
     private transient LocaleProvider localeProvider;
     private transient TreeThemeProvider treeThemeProvider;
+    private transient EmailNotificationService emailNotificationService;
+    private transient EmailVerificationUrlService emailVerificationUrlService;
+    private transient PageNavigationService pageNavigationService;
     
     protected PanelBase(String id) {
         this(id, null);
@@ -111,6 +117,18 @@ public class PanelBase<T> extends GenericPanel<T> implements IsisWebAppCommonCon
         return treeThemeProvider = computeIfAbsentOrFallback(TreeThemeProvider.class, treeThemeProvider, TreeThemeProviderDefault::new);
     }
     
+    protected EmailNotificationService getEmailNotificationService() {
+        return emailNotificationService = computeIfAbsent(EmailNotificationService.class, emailNotificationService);
+    }
+    
+    protected EmailVerificationUrlService getEmailVerificationUrlService() {
+        return emailVerificationUrlService = computeIfAbsent(EmailVerificationUrlService.class, emailVerificationUrlService);
+    }
+    
+    protected PageNavigationService getPageNavigationService() {
+        return pageNavigationService = computeIfAbsent(PageNavigationService.class, pageNavigationService);
+    }
+    
     protected MessageBroker getMessageBroker() {
         return commonContext.getAuthenticationSession().getMessageBroker(); // don't cache?
     }
diff --git a/extensions/vro/restclient/src/main/java/org/apache/isis/extensions/restclient/RestfulClientConfig.java b/extensions/vro/restclient/src/main/java/org/apache/isis/extensions/restclient/RestfulClientConfig.java
index a35e1f3..30d1b54 100644
--- a/extensions/vro/restclient/src/main/java/org/apache/isis/extensions/restclient/RestfulClientConfig.java
+++ b/extensions/vro/restclient/src/main/java/org/apache/isis/extensions/restclient/RestfulClientConfig.java
@@ -23,77 +23,30 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlRootElement;
 
+import lombok.Data;
+
 /**
  * 
  * @since 2.0
  */
 @XmlRootElement(name="restful-client-config")
 @XmlAccessorType(XmlAccessType.FIELD)
+@Data
 public class RestfulClientConfig {
 
-    // --
-
     @XmlElement(name="restfulBase") 
     private String restfulBase;
 
-    public String getRestfulBase() {
-        return restfulBase;
-    }
-
-    public void setRestfulBase(String restfulBase) {
-        this.restfulBase = restfulBase;
-    }
-
-    // --
-
     @XmlElement(name="useBasicAuth") 
     private boolean useBasicAuth;
 
-    public boolean isUseBasicAuth() {
-        return useBasicAuth;
-    }
-
-    public void setUseBasicAuth(boolean useBasicAuth) {
-        this.useBasicAuth = useBasicAuth;
-    }
-
-    // --
-
     @XmlElement(name="restfulAuthUser")
     private String restfulAuthUser;
 
-    public String getRestfulAuthUser() {
-        return restfulAuthUser;
-    }
-
-    public void setRestfulAuthUser(String restfulAuthUser) {
-        this.restfulAuthUser = restfulAuthUser;
-    }
-
-    // --
-
     @XmlElement(name="restfulAuthPassword")
     private String restfulAuthPassword;
 
-    public String getRestfulAuthPassword() {
-        return restfulAuthPassword;
-    }
-
-    public void setRestfulAuthPassword(String restfulAuthPassword) {
-        this.restfulAuthPassword = restfulAuthPassword;
-    }
-
-    // --
-
     @XmlElement(name="useRequestDebugLogging") 
     private boolean useRequestDebugLogging;
 
-    public boolean isUseRequestDebugLogging() {
-        return useRequestDebugLogging;
-    }
-
-    public void setUseRequestDebugLogging(boolean useRequestDebugLogging) {
-        this.useRequestDebugLogging = useRequestDebugLogging;
-    }
-
 }