From bd058420b8a37608a09798393bb76fdade5fd2b2 Mon Sep 17 00:00:00 2001 From: "massimiliano.assante" Date: Fri, 13 Jun 2014 16:37:30 +0000 Subject: [PATCH] Fixed bug when notifications involved groups and email buffer was not cleared git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/application-support-layer/applicationSupportLayerSocial@97429 82a268e6-3cf1-43bd-a215-b396298e98cf --- distro/changelog.xml | 3 +++ .../mailing/EmailNotificationsConsumer.java | 23 +++++++++++-------- .../social/mailing/EmailPlugin.java | 2 ++ 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/distro/changelog.xml b/distro/changelog.xml index 0cf0db1..75e40f8 100644 --- a/distro/changelog.xml +++ b/distro/changelog.xml @@ -39,4 +39,7 @@ Updated email sending with single smtp session Personalized notifications in email subjects + +Fixed bug when notifications involved groups and email buffer was not cleared + diff --git a/src/main/java/org/gcube/applicationsupportlayer/social/mailing/EmailNotificationsConsumer.java b/src/main/java/org/gcube/applicationsupportlayer/social/mailing/EmailNotificationsConsumer.java index 59ddb59..acc3ba0 100644 --- a/src/main/java/org/gcube/applicationsupportlayer/social/mailing/EmailNotificationsConsumer.java +++ b/src/main/java/org/gcube/applicationsupportlayer/social/mailing/EmailNotificationsConsumer.java @@ -21,8 +21,8 @@ import org.slf4j.LoggerFactory; public class EmailNotificationsConsumer extends Thread { private static Logger _log = LoggerFactory.getLogger(EmailNotificationsConsumer.class); - - + + public EmailNotificationsConsumer() { super(); _log.info("EmailNotificationsConsumer thread started at " + new Date()); @@ -30,7 +30,7 @@ public class EmailNotificationsConsumer extends Thread { @Override public void run() { - + Properties props = System.getProperties(); String mailServiceHost = "localhost"; props.put("mail.smtp.host", mailServiceHost); @@ -38,7 +38,7 @@ public class EmailNotificationsConsumer extends Thread { props.put("mail.smtp.port", mailServicePort); Session session = Session.getDefaultInstance(props); session.setDebug(true); - + for (;;) { try { Thread.sleep(1000*EmailPlugin.SECONDS2WAIT); @@ -50,7 +50,7 @@ public class EmailNotificationsConsumer extends Thread { _log.debug("Emails Buffer not empty, sending emails "); Transport t = null; try { - + t = session.getTransport(); t.connect(); @@ -58,10 +58,15 @@ public class EmailNotificationsConsumer extends Thread { synchronized(EmailPlugin.BUFFER_EMAILS){ for (NotificationMail mail : EmailPlugin.BUFFER_EMAILS) { Message m = EmailPlugin.getMessageNotification(session, mail.getNotification2Send(), mail.getVreName(), mail.getPortalName(), mail.getSenderEmail()); - m.saveChanges(); - Address[] addresses = m.getAllRecipients(); - t.sendMessage(m, addresses); - _log.debug("Message sent to " + addresses.toString()); + if (m != null) { + m.saveChanges(); + Address[] addresses = m.getAllRecipients(); + t.sendMessage(m, addresses); + _log.debug("Message sent to " + mail.getSenderEmail()); + } + else { + _log.warn("Message not sent to " + mail.getNotification2Send().getUserid()); + } } //close session and empty the buffer _log.info("Emails sent emptying the buffer"); diff --git a/src/main/java/org/gcube/applicationsupportlayer/social/mailing/EmailPlugin.java b/src/main/java/org/gcube/applicationsupportlayer/social/mailing/EmailPlugin.java index 98d38ae..7bd18b4 100644 --- a/src/main/java/org/gcube/applicationsupportlayer/social/mailing/EmailPlugin.java +++ b/src/main/java/org/gcube/applicationsupportlayer/social/mailing/EmailPlugin.java @@ -150,6 +150,8 @@ public class EmailPlugin { portalUrl = PortalUtil.getPortalURL(OrganizationsUtil.getCompany().getVirtualHost(), PortalUtil.getPortalPort(), true); } catch (Exception e1) { e1.printStackTrace(); + _log.warn("While trying to get email for user/group: " + notification2Save.getUserid()); + return null; } String email = user.getEmailAddress();