From 650e2f5966754a57d8c2fafb4d6de295fbd33984 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 --- .../PizzaEmailDeliveryMessageBean.java | 9 ++++-- .../model/user/PizzaAdminUserSessionBean.java | 30 +++-------------- .../model/user/PizzaUserSessionBean.java | 29 ++--------------- .../PizzaUserEmailChangeSessionBean.java | 15 +-------- .../PizzaUserRegistrationSessionBean.java | 20 ++++-------- .../PizzaResendLinkSessionBean.java | 17 +--------- .../database/BasePizzaDatabaseBean.java | 32 ++++++++++--------- 7 files changed, 38 insertions(+), 114 deletions(-) diff --git a/src/java/org/mxchange/jmailee/model/delivery/PizzaEmailDeliveryMessageBean.java b/src/java/org/mxchange/jmailee/model/delivery/PizzaEmailDeliveryMessageBean.java index a1353c1..6a56ec5 100644 --- a/src/java/org/mxchange/jmailee/model/delivery/PizzaEmailDeliveryMessageBean.java +++ b/src/java/org/mxchange/jmailee/model/delivery/PizzaEmailDeliveryMessageBean.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.jmailee.model.delivery.wrapper.WrapableEmailDelivery; import org.mxchange.pizzaaplication.database.BasePizzaDatabaseBean; import org.mxchange.pizzaapplication.mailer.model.delivery.DeliverablePizzaEmail; @@ -65,8 +66,10 @@ public class PizzaEmailDeliveryMessageBean extends BasePizzaDatabaseBean impleme /** * Default constructor + *

+ * @throws javax.naming.NamingException If a JNDI name could not be found */ - public PizzaEmailDeliveryMessageBean () { + public PizzaEmailDeliveryMessageBean () throws NamingException { // Call super constructor super(); @@ -164,9 +167,9 @@ public class PizzaEmailDeliveryMessageBean extends BasePizzaDatabaseBean impleme 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/PizzaAdminUserSessionBean.java b/src/java/org/mxchange/jusercore/model/user/PizzaAdminUserSessionBean.java index 34bc29b..8747f10 100644 --- a/src/java/org/mxchange/jusercore/model/user/PizzaAdminUserSessionBean.java +++ b/src/java/org/mxchange/jusercore/model/user/PizzaAdminUserSessionBean.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.jusercore.exceptions.EmailAddressAlreadyRegisteredException; import org.mxchange.jusercore.exceptions.UserNameAlreadyRegisteredException; @@ -265,20 +261,11 @@ public class PizzaAdminUserSessionBean extends BasePizzaDatabaseBean implements // Update user User updatedUser = this.userBean.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); - } + // @TODO Create user lock history entry // 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 @@ -334,20 +321,11 @@ public class PizzaAdminUserSessionBean extends BasePizzaDatabaseBean implements // Update user User updatedUser = this.userBean.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); - } + // @TODO Create user lock history entry // 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/PizzaUserSessionBean.java b/src/java/org/mxchange/jusercore/model/user/PizzaUserSessionBean.java index 056491e..4049040 100644 --- a/src/java/org/mxchange/jusercore/model/user/PizzaUserSessionBean.java +++ b/src/java/org/mxchange/jusercore/model/user/PizzaUserSessionBean.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; @@ -180,19 +177,8 @@ public class PizzaUserSessionBean extends BasePizzaDatabaseBean implements UserS // 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 @@ -666,19 +652,8 @@ public class PizzaUserSessionBean extends BasePizzaDatabaseBean implements UserS // Flush it to get id number back this.getEntityManager().flush(); - // 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 email to user - this.sendEmail("User password change", "user_password_change", emailAddress, updatedUser, baseUrl, null); //NOI18N + this.sendEmail("User password change", "user_password_change", updatedUser, baseUrl, null); //NOI18N // Trace message this.getLoggerBeanLocal().logTrace(MessageFormat.format("{0}.updateUserPassword: entry.userPasswordHistoryId={1} - EXIT!", this.getClass().getSimpleName(), entry.getUserPasswordHistoryId())); //NOI18N diff --git a/src/java/org/mxchange/jusercore/model/user/email_address/PizzaUserEmailChangeSessionBean.java b/src/java/org/mxchange/jusercore/model/user/email_address/PizzaUserEmailChangeSessionBean.java index 2e1a706..97209b4 100644 --- a/src/java/org/mxchange/jusercore/model/user/email_address/PizzaUserEmailChangeSessionBean.java +++ b/src/java/org/mxchange/jusercore/model/user/email_address/PizzaUserEmailChangeSessionBean.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.jusercore.model.email_address.ChangeableEmailAddress; @@ -117,19 +114,9 @@ public class PizzaUserEmailChangeSessionBean extends BasePizzaDatabaseBean imple // 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/PizzaUserRegistrationSessionBean.java b/src/java/org/mxchange/jusercore/model/user/register/PizzaUserRegistrationSessionBean.java index aeda1c0..863d1c6 100644 --- a/src/java/org/mxchange/jusercore/model/user/register/PizzaUserRegistrationSessionBean.java +++ b/src/java/org/mxchange/jusercore/model/user/register/PizzaUserRegistrationSessionBean.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,20 +179,18 @@ public class PizzaUserRegistrationSessionBean extends BasePizzaDatabaseBean impl // Call other EJB User addedUser = this.adminUserBean.addUser(user); - // Init variable - Address emailAddress; + // Default template is with no random password + String templateName = "user_registration"; //NOI18N - try { - // Create email address and set - emailAddress = new InternetAddress(addedUser.getUserContact().getContactEmailAddress()); - } catch (final AddressException ex) { - // Throw again - throw new EJBException(ex); + // Is password set? + if ((randomPassword instanceof String) && (!randomPassword.isEmpty())) { + // Switch to other template + templateName = "user_registration_random"; //NOI18N } // Send email // @TODO: Internationlize the subject line somehow - this.sendEmail("User registration", "user_registration", emailAddress, addedUser, baseUrl, randomPassword); //NOI18N + this.sendEmail("User 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/PizzaResendLinkSessionBean.java b/src/java/org/mxchange/jusercore/model/user/resendlink/PizzaResendLinkSessionBean.java index f8198f7..82c21a6 100644 --- a/src/java/org/mxchange/jusercore/model/user/resendlink/PizzaResendLinkSessionBean.java +++ b/src/java/org/mxchange/jusercore/model/user/resendlink/PizzaResendLinkSessionBean.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.jusercore.exceptions.UserNotFoundException; import org.mxchange.jusercore.exceptions.UserStatusConfirmedException; import org.mxchange.jusercore.exceptions.UserStatusLockedException; @@ -108,20 +104,9 @@ public class PizzaResendLinkSessionBean extends BasePizzaDatabaseBean implements // 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 diff --git a/src/java/org/mxchange/pizzaaplication/database/BasePizzaDatabaseBean.java b/src/java/org/mxchange/pizzaaplication/database/BasePizzaDatabaseBean.java index 3f140ad..2382192 100644 --- a/src/java/org/mxchange/pizzaaplication/database/BasePizzaDatabaseBean.java +++ b/src/java/org/mxchange/pizzaaplication/database/BasePizzaDatabaseBean.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; @@ -470,15 +472,14 @@ public abstract class BasePizzaDatabaseBean 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) { @@ -493,9 +494,6 @@ public abstract class BasePizzaDatabaseBean 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 @@ -534,9 +532,6 @@ public abstract class BasePizzaDatabaseBean 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); @@ -549,13 +544,20 @@ public abstract class BasePizzaDatabaseBean 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 -- 2.39.5