From 0f53c09a3edb2840534205501207105eae5816db Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roland=20H=C3=A4der?= Date: Sat, 8 Jul 2017 00:27:02 +0200 Subject: [PATCH] Please cherry-pick: - rewrote email delivery as EmailDeliveryWrapper() has now a constructor with all required fields - also saved one parameter (one lesser = easier code) MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Roland Häder --- .../database/BaseFinancialsDatabaseBean.java | 36 ++++++++++--------- .../FinancialsEmailDeliveryMessageBean.java | 9 +++-- .../user/FinancialsAdminUserSessionBean.java | 28 ++------------- .../model/user/FinancialsUserSessionBean.java | 16 +-------- .../FinancialsUserEmailChangeSessionBean.java | 15 +------- ...FinancialsUserRegistrationSessionBean.java | 17 +-------- .../FinancialsResendLinkSessionBean.java | 17 +-------- 7 files changed, 31 insertions(+), 107 deletions(-) diff --git a/src/java/org/mxchange/jfinancials/database/BaseFinancialsDatabaseBean.java b/src/java/org/mxchange/jfinancials/database/BaseFinancialsDatabaseBean.java index 0140d61..4498e6b 100644 --- a/src/java/org/mxchange/jfinancials/database/BaseFinancialsDatabaseBean.java +++ b/src/java/org/mxchange/jfinancials/database/BaseFinancialsDatabaseBean.java @@ -24,6 +24,8 @@ import javax.ejb.EJBException; import javax.jms.JMSException; import javax.jms.ObjectMessage; import javax.mail.Address; +import javax.mail.internet.AddressException; +import javax.mail.internet.InternetAddress; import org.mxchange.jcontacts.contact.Contact; import org.mxchange.jcontacts.contact.ContactUtils; import org.mxchange.jcoreee.database.BaseDatabaseBean; @@ -63,8 +65,8 @@ public abstract class BaseFinancialsDatabaseBean extends BaseDatabaseBean { /** * Constructor with queue factory JNDI and queue JNDI names *

- * @param factoryJndi JNDI name for queue factory - * @param queueJndi JNDI name for email queue + * @param factoryJndi JNDI name for queue factory + * @param queueJndi JNDI name for email queue */ protected BaseFinancialsDatabaseBean (final String factoryJndi, final String queueJndi) { // Call super constructor @@ -466,15 +468,14 @@ public abstract class BaseFinancialsDatabaseBean extends BaseDatabaseBean { *

* @param subjectLine Subject line * @param templateName Template name - * @param emailAddress Recipient's email address * @param user User instance * @param baseUrl Base URL * @param randomPassword A randomly-generated password or NULL if user had * to enter it. */ - protected void sendEmail (final String subjectLine, final String templateName, final Address emailAddress, final User user, final String baseUrl, final String randomPassword) { + protected void sendEmail (final String subjectLine, final String templateName, final User user, final String baseUrl, final String randomPassword) { // Trace message - this.getLoggerBeanLocal().logTrace(MessageFormat.format("sendEmail: subjectLine={0},templateName={1},emailAddress={2},user={3},baseUrl={4} - CALLED!", subjectLine, templateName, emailAddress, user, baseUrl)); //NOI18N + this.getLoggerBeanLocal().logTrace(MessageFormat.format("sendEmail: subjectLine={0},templateName={1},user={2},baseUrl={3} - CALLED!", subjectLine, templateName, user, baseUrl)); //NOI18N // All should be set if (null == subjectLine) { @@ -489,9 +490,6 @@ public abstract class BaseFinancialsDatabaseBean extends BaseDatabaseBean { } else if (templateName.isEmpty()) { // No template name throw new IllegalArgumentException("templateName is empty"); //NOI18N - } else if (null == emailAddress) { - // Throw NPE - throw new NullPointerException("emailAddress is null"); //NOI18N } else if (null == user) { // Throw NPE throw new NullPointerException("user is null"); //NOI18N @@ -530,9 +528,6 @@ public abstract class BaseFinancialsDatabaseBean extends BaseDatabaseBean { throw new NullPointerException("this.session is not set. Have you forgotten to call super(String, String) and called only super() ?"); //NOI18N } - // Prepare mail wrapper - WrapableEmailDelivery emailWrapper = new EmailDeliveryWrapper(); - // Set all values Properties variables = UserUtils.getAllUserFields(user); @@ -545,13 +540,20 @@ public abstract class BaseFinancialsDatabaseBean extends BaseDatabaseBean { variables.put("randomPassword", randomPassword); //NOI18N } - // Set all + // Init addresss + Address recipientAddress; + + try { + // Create email address and set + recipientAddress = new InternetAddress(user.getUserContact().getContactEmailAddress()); + } catch (final AddressException ex) { + // Throw again + throw new EJBException(ex); + } + + // Prepare mail wrapper // @TODO Language from message bundle - emailWrapper.setRecipient(emailAddress); - emailWrapper.setLocale(user.getUserLocale()); - emailWrapper.setSubjectLine(subjectLine); - emailWrapper.setTemplateName(templateName); - emailWrapper.setTemplateVariables(variables); + WrapableEmailDelivery emailWrapper = new EmailDeliveryWrapper(recipientAddress, subjectLine, templateName, variables, user.getUserLocale()); try { // Send out email change diff --git a/src/java/org/mxchange/jfinancials/mailer/model/delivery/FinancialsEmailDeliveryMessageBean.java b/src/java/org/mxchange/jfinancials/mailer/model/delivery/FinancialsEmailDeliveryMessageBean.java index 12913db..ac98876 100644 --- a/src/java/org/mxchange/jfinancials/mailer/model/delivery/FinancialsEmailDeliveryMessageBean.java +++ b/src/java/org/mxchange/jfinancials/mailer/model/delivery/FinancialsEmailDeliveryMessageBean.java @@ -28,6 +28,7 @@ import javax.jms.Message; import javax.jms.MessageListener; import javax.jms.ObjectMessage; import javax.mail.MessagingException; +import javax.naming.NamingException; import org.mxchange.jfinancials.database.BaseFinancialsDatabaseBean; import org.mxchange.jmailee.model.delivery.wrapper.WrapableEmailDelivery; @@ -62,8 +63,10 @@ public class FinancialsEmailDeliveryMessageBean extends BaseFinancialsDatabaseBe /** * Default constructor + *

+ * @throws javax.naming.NamingException If a JNDI name could not be found */ - public FinancialsEmailDeliveryMessageBean () { + public FinancialsEmailDeliveryMessageBean () throws NamingException { // Call super constructor super(); @@ -161,9 +164,9 @@ public class FinancialsEmailDeliveryMessageBean extends BaseFinancialsDatabaseBe if (wrapper.getLocale() == null) { // Throw NPE throw new NullPointerException("wrapper.locale is null"); //NOI18N - } else if (wrapper.getRecipient() == null) { + } else if (wrapper.getRecipientAddress()== null) { // Throw again ... - throw new NullPointerException("wrapper.recipient is null"); //NOI18N + throw new NullPointerException("wrapper.recipientAddress is null"); //NOI18N } else if (wrapper.getSubjectLine() == null) { // ... and again throw new NullPointerException("wrapper.subjectLine is null"); //NOI18N diff --git a/src/java/org/mxchange/jusercore/model/user/FinancialsAdminUserSessionBean.java b/src/java/org/mxchange/jusercore/model/user/FinancialsAdminUserSessionBean.java index 48d5157..90ec2d0 100644 --- a/src/java/org/mxchange/jusercore/model/user/FinancialsAdminUserSessionBean.java +++ b/src/java/org/mxchange/jusercore/model/user/FinancialsAdminUserSessionBean.java @@ -19,11 +19,7 @@ package org.mxchange.jusercore.model.user; import java.text.MessageFormat; import java.util.GregorianCalendar; import javax.ejb.EJB; -import javax.ejb.EJBException; import javax.ejb.Stateless; -import javax.mail.Address; -import javax.mail.internet.AddressException; -import javax.mail.internet.InternetAddress; import org.mxchange.jcontacts.contact.Contact; import org.mxchange.jfinancials.database.BaseFinancialsDatabaseBean; import org.mxchange.jusercore.exceptions.EmailAddressAlreadyRegisteredException; @@ -263,20 +259,10 @@ public class FinancialsAdminUserSessionBean extends BaseFinancialsDatabaseBean i User updatedUser = this.userBean.updateUserData(user); // @TODO Create user lock history entry - // Init variable - Address emailAddress; - - try { - // Create email address and set - emailAddress = new InternetAddress(updatedUser.getUserContact().getContactEmailAddress()); - } catch (final AddressException ex) { - // Throw again - throw new EJBException(ex); - } // Send out email // @TODO externalize subject line - this.sendEmail("User account locked", "user_account_locked", emailAddress, updatedUser, baseUrl, null); //NOI18N + this.sendEmail("User account locked", "user_account_locked", updatedUser, baseUrl, null); //NOI18N // Trace message this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.lockUserAccount: updatedUser={1} - EXIT!", this.getClass().getSimpleName(), updatedUser)); //NOI18N @@ -333,20 +319,10 @@ public class FinancialsAdminUserSessionBean extends BaseFinancialsDatabaseBean i User updatedUser = this.userBean.updateUserData(user); // @TODO Create user lock history entry - // Init variable - Address emailAddress; - - try { - // Create email address and set - emailAddress = new InternetAddress(updatedUser.getUserContact().getContactEmailAddress()); - } catch (final AddressException ex) { - // Throw again - throw new EJBException(ex); - } // Send out email // @TODO externalize subject line - this.sendEmail("User account unlocked", "user_account_unlocked", emailAddress, updatedUser, baseUrl, null); //NOI18N + this.sendEmail("User account unlocked", "user_account_unlocked", updatedUser, baseUrl, null); //NOI18N // Trace message this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.lockUserAccount: updatedUser={1} - EXIT!", this.getClass().getSimpleName(), updatedUser)); //NOI18N diff --git a/src/java/org/mxchange/jusercore/model/user/FinancialsUserSessionBean.java b/src/java/org/mxchange/jusercore/model/user/FinancialsUserSessionBean.java index a90fd6c..bcb4951 100644 --- a/src/java/org/mxchange/jusercore/model/user/FinancialsUserSessionBean.java +++ b/src/java/org/mxchange/jusercore/model/user/FinancialsUserSessionBean.java @@ -22,9 +22,6 @@ import java.util.List; import javax.ejb.EJB; import javax.ejb.EJBException; import javax.ejb.Stateless; -import javax.mail.Address; -import javax.mail.internet.AddressException; -import javax.mail.internet.InternetAddress; import javax.persistence.NoResultException; import javax.persistence.PersistenceException; import javax.persistence.Query; @@ -174,19 +171,8 @@ public class FinancialsUserSessionBean extends BaseFinancialsDatabaseBean implem // Update user account User updatedUser = this.updateUserData(user); - // Init variable - Address emailAddress; - - try { - // Create email address and set - emailAddress = new InternetAddress(updatedUser.getUserContact().getContactEmailAddress()); - } catch (final AddressException ex) { - // Throw again - throw new EJBException(ex); - } - // Send out email - this.sendEmail("User account confirmed", "user_account_confirmed", emailAddress, updatedUser, baseUrl, null); //NOI18N + this.sendEmail("User account confirmed", "user_account_confirmed", updatedUser, baseUrl, null); //NOI18N // Trace message this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.confirmAccount: updatedUser={1} - EXIT!", this.getClass().getSimpleName(), updatedUser)); //NOI18N diff --git a/src/java/org/mxchange/jusercore/model/user/email_address/FinancialsUserEmailChangeSessionBean.java b/src/java/org/mxchange/jusercore/model/user/email_address/FinancialsUserEmailChangeSessionBean.java index 3fc67d4..f755391 100644 --- a/src/java/org/mxchange/jusercore/model/user/email_address/FinancialsUserEmailChangeSessionBean.java +++ b/src/java/org/mxchange/jusercore/model/user/email_address/FinancialsUserEmailChangeSessionBean.java @@ -22,9 +22,6 @@ import java.util.List; import javax.ejb.EJB; import javax.ejb.EJBException; import javax.ejb.Stateless; -import javax.mail.Address; -import javax.mail.internet.AddressException; -import javax.mail.internet.InternetAddress; import javax.persistence.NoResultException; import javax.persistence.Query; import org.mxchange.jfinancials.database.BaseFinancialsDatabaseBean; @@ -114,19 +111,9 @@ public class FinancialsUserEmailChangeSessionBean extends BaseFinancialsDatabase // Persist it //@TODO Fix email delivery then allow this: this.getEntityManager().persist(emailChange); - // Init variable - Address emailAddress; - - try { - // Create email address and set - emailAddress = new InternetAddress(emailChange.getEmailAddress()); - } catch (final AddressException ex) { - // Throw again - throw new EJBException(ex); - } // Send email - this.sendEmail("User email change", "user_email_change", emailAddress, emailChange.getEmailChangeUser(), baseUrl, null); //NOI18N + this.sendEmail("User email change", "user_email_change", emailChange.getEmailChangeUser(), baseUrl, null); //NOI18N // Trace message this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.enqueueEmailAddressForChange - EXIT!", this.getClass().getSimpleName())); //NOI18N diff --git a/src/java/org/mxchange/jusercore/model/user/register/FinancialsUserRegistrationSessionBean.java b/src/java/org/mxchange/jusercore/model/user/register/FinancialsUserRegistrationSessionBean.java index 7a52540..efe97c8 100644 --- a/src/java/org/mxchange/jusercore/model/user/register/FinancialsUserRegistrationSessionBean.java +++ b/src/java/org/mxchange/jusercore/model/user/register/FinancialsUserRegistrationSessionBean.java @@ -19,11 +19,7 @@ package org.mxchange.jusercore.model.user.register; import java.text.MessageFormat; import java.util.Objects; import javax.ejb.EJB; -import javax.ejb.EJBException; import javax.ejb.Stateless; -import javax.mail.Address; -import javax.mail.internet.AddressException; -import javax.mail.internet.InternetAddress; import javax.persistence.NoResultException; import javax.persistence.Query; import org.mxchange.jcontacts.contact.Contact; @@ -183,17 +179,6 @@ public class FinancialsUserRegistrationSessionBean extends BaseFinancialsDatabas // Call other EJB User addedUser = this.adminUserBean.addUser(user); - // Init variable - Address emailAddress; - - try { - // Create email address and set - emailAddress = new InternetAddress(addedUser.getUserContact().getContactEmailAddress()); - } catch (final AddressException ex) { - // Throw again - throw new EJBException(ex); - } - // Default template is with no random password String templateName = "user_registration"; //NOI18N @@ -205,7 +190,7 @@ public class FinancialsUserRegistrationSessionBean extends BaseFinancialsDatabas // Send email // @TODO: Internationlize the subject line somehow - this.sendEmail("Registration", templateName, emailAddress, addedUser, baseUrl, randomPassword); //NOI18N + this.sendEmail("Registration", templateName, addedUser, baseUrl, randomPassword); //NOI18N // Trace message this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.registerUser: addedUser={1},addedUser.userId={2} - EXIT!", this.getClass().getSimpleName(), addedUser, addedUser.getUserId())); //NOI18N diff --git a/src/java/org/mxchange/jusercore/model/user/resendlink/FinancialsResendLinkSessionBean.java b/src/java/org/mxchange/jusercore/model/user/resendlink/FinancialsResendLinkSessionBean.java index fa9a07d..7a470b5 100644 --- a/src/java/org/mxchange/jusercore/model/user/resendlink/FinancialsResendLinkSessionBean.java +++ b/src/java/org/mxchange/jusercore/model/user/resendlink/FinancialsResendLinkSessionBean.java @@ -19,11 +19,7 @@ package org.mxchange.jusercore.model.user.resendlink; import java.text.MessageFormat; import java.util.Locale; import javax.ejb.EJB; -import javax.ejb.EJBException; import javax.ejb.Stateless; -import javax.mail.Address; -import javax.mail.internet.AddressException; -import javax.mail.internet.InternetAddress; import org.mxchange.jfinancials.database.BaseFinancialsDatabaseBean; import org.mxchange.jusercore.exceptions.UserNotFoundException; import org.mxchange.jusercore.exceptions.UserStatusConfirmedException; @@ -107,20 +103,9 @@ public class FinancialsResendLinkSessionBean extends BaseFinancialsDatabaseBean // Set it in user managedUser.setUserConfirmKey(confirmationKey); - // Init variable - Address emailAddress; - - try { - // Create email address and set - emailAddress = new InternetAddress(managedUser.getUserContact().getContactEmailAddress()); - } catch (final AddressException ex) { - // Throw again - throw new EJBException(ex); - } - // Send email // @TODO: Internationlize the subject line somehow - this.sendEmail("Resend user confirmation link", "user_resend_confirmation_link", emailAddress, user, baseUrl, null); //NOI18N + this.sendEmail("Resend user confirmation link", "user_resend_confirmation_link", user, baseUrl, null); //NOI18N // Log trace message this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.resendConfirmationLink: EXIT!", this.getClass().getSimpleName())); //NOI18N -- 2.39.5