You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2013/01/07 18:06:36 UTC
svn commit: r1429899 - in /syncope/branches/1_0_X/core/src/main:
java/org/apache/syncope/core/notification/
java/org/apache/syncope/core/scheduling/ resources/mailTemplates/
Author: ilgrosso
Date: Mon Jan 7 17:06:35 2013
New Revision: 1429899
URL: http://svn.apache.org/viewvc?rev=1429899&view=rev
Log:
[SYNCOPE-263] recipients and events added to Velocity model + update sample mail template
Modified:
syncope/branches/1_0_X/core/src/main/java/org/apache/syncope/core/notification/NotificationManager.java
syncope/branches/1_0_X/core/src/main/java/org/apache/syncope/core/scheduling/NotificationJob.java
syncope/branches/1_0_X/core/src/main/resources/mailTemplates/optin.html.vm
syncope/branches/1_0_X/core/src/main/resources/mailTemplates/optin.txt.vm
Modified: syncope/branches/1_0_X/core/src/main/java/org/apache/syncope/core/notification/NotificationManager.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_0_X/core/src/main/java/org/apache/syncope/core/notification/NotificationManager.java?rev=1429899&r1=1429898&r2=1429899&view=diff
==============================================================================
--- syncope/branches/1_0_X/core/src/main/java/org/apache/syncope/core/notification/NotificationManager.java (original)
+++ syncope/branches/1_0_X/core/src/main/java/org/apache/syncope/core/notification/NotificationManager.java Mon Jan 7 17:06:35 2013
@@ -126,18 +126,16 @@ public class NotificationManager {
*
* @param notification notification to take as model
* @param user the user this task is about
- * @param emailSchema name of user schema containing e-mail address
* @return notification task, fully populated
*/
private NotificationTask getNotificationTask(final Notification notification, final SyncopeUser user) {
-
connObjectUtil.retrieveVirAttrValues(user);
final List<SyncopeUser> recipients = new ArrayList<SyncopeUser>();
if (notification.getRecipients() != null) {
- recipients.addAll(searchDAO.search(EntitlementUtil.getRoleIds(
- entitlementDAO.findAll()), notification.getRecipients()));
+ recipients.addAll(searchDAO.search(EntitlementUtil.getRoleIds(entitlementDAO.findAll()),
+ notification.getRecipients()));
}
if (notification.isSelfAsRecipient()) {
@@ -147,7 +145,6 @@ public class NotificationManager {
Set<String> recipientEmails = new HashSet<String>();
for (SyncopeUser recipient : recipients) {
-
connObjectUtil.retrieveVirAttrValues(recipient);
String email = getRecipientEmail(
@@ -169,6 +166,8 @@ public class NotificationManager {
final Map<String, Object> model = new HashMap<String, Object>();
model.put("user", userDataBinder.getUserTO(user));
model.put("syncopeConf", this.findAllSyncopeConfs());
+ model.put("recipients", recipientEmails);
+ model.put("events", notification.getEvents());
String htmlBody;
String textBody;
@@ -208,11 +207,11 @@ public class NotificationManager {
Set<String> events = new HashSet<String>(notification.getEvents());
events.retainAll(wfResult.getPerformedTasks());
- if (!events.isEmpty()) {
+ if (events.isEmpty()) {
+ LOG.debug("No events found about {}", user);
+ } else {
LOG.debug("Creating notification task for events {} about {}", events, user);
taskDAO.save(getNotificationTask(notification, user));
- } else {
- LOG.debug("No events found about {}", user);
}
}
}
@@ -231,18 +230,22 @@ public class NotificationManager {
case Username:
email = user.getUsername();
break;
+
case UserSchema:
UAttr attr = user.getAttribute(recipientAttrName);
email = attr == null || attr.getValuesAsStrings().isEmpty() ? null : attr.getValuesAsStrings().get(0);
break;
+
case UserVirtualSchema:
UVirAttr virAttr = user.getVirtualAttribute(recipientAttrName);
email = virAttr == null || virAttr.getValues().isEmpty() ? null : virAttr.getValues().get(0);
break;
+
case UserDerivedSchema:
UDerAttr derAttr = user.getDerivedAttribute(recipientAttrName);
email = derAttr == null ? null : derAttr.getValue(user.getAttributes());
break;
+
default:
email = null;
}
@@ -267,7 +270,7 @@ public class NotificationManager {
/**
* Mark NotificationTask with provided id as executed.
- *
+ *
* @param taskId task to be updated
*/
public void setTaskExecuted(final Long taskId) {
Modified: syncope/branches/1_0_X/core/src/main/java/org/apache/syncope/core/scheduling/NotificationJob.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_0_X/core/src/main/java/org/apache/syncope/core/scheduling/NotificationJob.java?rev=1429899&r1=1429898&r2=1429899&view=diff
==============================================================================
--- syncope/branches/1_0_X/core/src/main/java/org/apache/syncope/core/scheduling/NotificationJob.java (original)
+++ syncope/branches/1_0_X/core/src/main/java/org/apache/syncope/core/scheduling/NotificationJob.java Mon Jan 7 17:06:35 2013
@@ -48,22 +48,22 @@ import org.springframework.mail.javamail
* @see NotificationTask
*/
public class NotificationJob implements StatefulJob {
-
+
enum Status {
-
+
SENT,
NOT_SENT
-
+
}
/**
* Logger.
*/
private static final Logger LOG = LoggerFactory.getLogger(NotificationJob.class);
-
+
@Autowired
private AuditManager auditManager;
-
+
@Autowired
private NotificationManager notificationManager;
@@ -78,15 +78,15 @@ public class NotificationJob implements
*/
@Autowired
private ConfDAO confDAO;
-
+
private String smtpHost;
-
+
private int smtpPort;
-
+
private String smtpUsername;
-
+
private String smtpPassword;
-
+
private void init() {
smtpHost = confDAO.find("smtp.host", "").getValue();
smtpPort = 25;
@@ -97,40 +97,43 @@ public class NotificationJob implements
}
smtpUsername = confDAO.find("smtp.username", "").getValue();
smtpPassword = confDAO.find("smtp.password", "").getValue();
-
+
LOG.debug("SMTP details fetched: {}:{} / {}:[PASSWORD_NOT_SHOWN]",
new Object[]{smtpHost, smtpPort, smtpUsername});
}
-
+
public TaskExec executeSingle(final NotificationTask task) {
init();
-
+
TaskExec execution = new TaskExec();
execution.setTask(task);
execution.setStartDate(new Date());
-
+
if (StringUtils.isBlank(smtpHost) || StringUtils.isBlank(task.getSender())
|| StringUtils.isBlank(task.getSubject()) || task.getRecipients().isEmpty()
|| StringUtils.isBlank(task.getHtmlBody()) || StringUtils.isBlank(task.getTextBody())) {
-
+
String message = "Could not fetch all required information for " + "sending e-mails:\n" + smtpHost + ":"
+ smtpPort + "\n" + task.getRecipients() + "\n" + task.getSender() + "\n" + task.getSubject()
+ "\n" + task.getHtmlBody() + "\n" + task.getTextBody();
LOG.error(message);
-
+
execution.setStatus(Status.NOT_SENT.name());
-
+
if (task.getTraceLevel().ordinal() >= TraceLevel.FAILURES.ordinal()) {
-
execution.setMessage(message);
}
} else {
if (LOG.isDebugEnabled()) {
- LOG.debug("About to send e-mails:\n" + smtpHost + ":" + smtpPort + "\n" + task.getRecipients() + "\n"
- + task.getSender() + "\n" + task.getSubject() + "\n" + task.getHtmlBody() + "\n"
+ LOG.debug("About to send e-mails:\n"
+ + smtpHost + ":" + smtpPort + "\n"
+ + task.getRecipients() + "\n"
+ + task.getSender() + "\n"
+ + task.getSubject() + "\n"
+ + task.getHtmlBody() + "\n"
+ task.getTextBody() + "\n");
}
-
+
for (String to : task.getRecipients()) {
try {
JavaMailSenderImpl sender = new JavaMailSenderImpl();
@@ -143,18 +146,18 @@ public class NotificationJob implements
if (StringUtils.isNotBlank(smtpPassword)) {
sender.setPassword(smtpPassword);
}
-
+
MimeMessage message = sender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setTo(to);
helper.setFrom(task.getSender());
helper.setSubject(task.getSubject());
helper.setText(task.getTextBody(), task.getHtmlBody());
-
+
sender.send(message);
-
+
execution.setStatus(Status.SENT.name());
-
+
StringBuilder report = new StringBuilder();
switch (task.getTraceLevel()) {
case ALL:
@@ -164,11 +167,11 @@ public class NotificationJob implements
append(task.getTextBody()).append('\n').append('\n').
append(task.getHtmlBody()).append('\n');
break;
-
+
case SUMMARY:
report.append("E-mail sent to ").append(to).append('\n');
break;
-
+
case FAILURES:
case NONE:
default:
@@ -176,53 +179,53 @@ public class NotificationJob implements
if (report.length() > 0) {
execution.setMessage(report.toString());
}
-
+
auditManager.audit(Category.notification, NotificationSubCategory.sent, Result.success,
"Successfully sent notification to " + to);
} catch (Exception e) {
LOG.error("Could not send e-mail", e);
-
+
execution.setStatus(Status.NOT_SENT.name());
StringWriter exceptionWriter = new StringWriter();
exceptionWriter.write(e.getMessage() + "\n\n");
e.printStackTrace(new PrintWriter(exceptionWriter));
-
+
if (task.getTraceLevel().ordinal() >= TraceLevel.FAILURES.ordinal()) {
execution.setMessage(exceptionWriter.toString());
}
-
+
auditManager.audit(Category.notification, NotificationSubCategory.sent, Result.failure,
"Could not send notification to " + to, e);
}
-
+
execution.setEndDate(new Date());
}
}
-
+
if (hasToBeRegistered(execution)) {
execution = notificationManager.storeExec(execution);
} else {
notificationManager.setTaskExecuted(execution.getTask().getId());
}
-
+
return execution;
}
-
+
@Override
public void execute(final JobExecutionContext context)
throws JobExecutionException {
-
+
LOG.debug("Waking up...");
-
+
for (NotificationTask task : taskDAO.findToExec(NotificationTask.class)) {
LOG.debug("Found notification task {} to be executed: starting...", task);
executeSingle(task);
LOG.debug("Notification task {} executed", task);
}
-
+
LOG.debug("Sleeping again...");
}
-
+
private boolean hasToBeRegistered(final TaskExec execution) {
NotificationTask task = (NotificationTask) execution.getTask();
Modified: syncope/branches/1_0_X/core/src/main/resources/mailTemplates/optin.html.vm
URL: http://svn.apache.org/viewvc/syncope/branches/1_0_X/core/src/main/resources/mailTemplates/optin.html.vm?rev=1429899&r1=1429898&r2=1429899&view=diff
==============================================================================
--- syncope/branches/1_0_X/core/src/main/resources/mailTemplates/optin.html.vm (original)
+++ syncope/branches/1_0_X/core/src/main/resources/mailTemplates/optin.html.vm Mon Jan 7 17:06:35 2013
@@ -26,6 +26,22 @@ under the License.
Your email address is $user.getAttributeMap().get("email").getValues().get(0).
</p>
+<p>
+ This message was sent to the following recipients:
+<ul>
+#foreach($recipient in $recipients)
+ <li>$recipient</i>
+#end
+</ul>
+
+becase one of the following events occurred:
+<ul>
+#foreach($event in $events)
+ <li>$event</i>
+#end
+</ul>
+</p>
+
#if(!$user.getMemberships().isEmpty())
You have been provided with the following roles:
<ul>
Modified: syncope/branches/1_0_X/core/src/main/resources/mailTemplates/optin.txt.vm
URL: http://svn.apache.org/viewvc/syncope/branches/1_0_X/core/src/main/resources/mailTemplates/optin.txt.vm?rev=1429899&r1=1429898&r2=1429899&view=diff
==============================================================================
--- syncope/branches/1_0_X/core/src/main/resources/mailTemplates/optin.txt.vm (original)
+++ syncope/branches/1_0_X/core/src/main/resources/mailTemplates/optin.txt.vm Mon Jan 7 17:06:35 2013
@@ -14,6 +14,16 @@ Hi $user.getAttributeMap().get("firstnam
Your username is $user.getUsername().
Your email address is $user.getAttributeMap().get("email").getValues().get(0).
+This message was sent to the following recipients:
+#foreach($recipient in $recipients)
+ * $recipient
+#end
+
+becase one of the following events occurred:
+#foreach($event in $events)
+ * $event
+#end
+
#if(!$user.getMemberships().isEmpty())
You have been provided with the following roles:
#foreach($membership in $user.getMemberships())