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();