From d07b682bb096b121714b9e8ff901d6a6b8cc2c3e Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Mon, 23 Jan 2012 14:27:33 +0100 Subject: [PATCH] OO-89: create the publisher for e-mails notifications at start of OpenOLAT --- .../java/org/olat/core/util/mail/_spring/mailContext.xml | 2 +- .../org/olat/core/util/mail/manager/MailManager.java | 9 +++++++++ .../core/util/notifications/NotificationsManager.java | 9 +++++++++ .../org/olat/notifications/NotificationsManagerImpl.java | 4 ++-- 4 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/olat/core/util/mail/_spring/mailContext.xml b/src/main/java/org/olat/core/util/mail/_spring/mailContext.xml index 2d195bf8502..09f121c39a8 100644 --- a/src/main/java/org/olat/core/util/mail/_spring/mailContext.xml +++ b/src/main/java/org/olat/core/util/mail/_spring/mailContext.xml @@ -54,7 +54,7 @@ <property name="order" value="780" /> </bean> - <bean id="mailManager" class="org.olat.core.util.mail.manager.MailManager"> + <bean id="mailManager" class="org.olat.core.util.mail.manager.MailManager" init-method="init"> <constructor-arg index="0" ref="mailModule" /> <property name="dbInstance" ref="database"/> <property name="notificationsManager" ref="org.olat.core.util.notifications.NotificationsManager"/> diff --git a/src/main/java/org/olat/core/util/mail/manager/MailManager.java b/src/main/java/org/olat/core/util/mail/manager/MailManager.java index be88d12fa6d..3645e894527 100644 --- a/src/main/java/org/olat/core/util/mail/manager/MailManager.java +++ b/src/main/java/org/olat/core/util/mail/manager/MailManager.java @@ -120,6 +120,15 @@ public class MailManager extends BasicManager { this.notificationsManager = notificationsManager; } + /** + * [used by Spring] + */ + public void init() { + PublisherData pdata = getPublisherData(); + SubscriptionContext scontext = getSubscriptionContext(); + notificationsManager.getOrCreatePublisher(scontext, pdata); + } + public SubscriptionContext getSubscriptionContext() { return new SubscriptionContext("Inbox", 0l, ""); } diff --git a/src/main/java/org/olat/core/util/notifications/NotificationsManager.java b/src/main/java/org/olat/core/util/notifications/NotificationsManager.java index 44a7a14e33b..ac8431d5976 100644 --- a/src/main/java/org/olat/core/util/notifications/NotificationsManager.java +++ b/src/main/java/org/olat/core/util/notifications/NotificationsManager.java @@ -97,11 +97,20 @@ public abstract class NotificationsManager extends BasicManager { public abstract Subscriber getSubscriber(Long key); /** + * Get the publisher or return null if not exists * @param subsContext * @return the publisher belonging to the given context or null */ public abstract Publisher getPublisher(SubscriptionContext subsContext); + /** + * Get or create the publisher + * @param scontext + * @param pdata + * @return + */ + public abstract Publisher getOrCreatePublisher(final SubscriptionContext scontext, final PublisherData pdata); + public abstract List<Publisher> getAllPublisher(); /** diff --git a/src/main/java/org/olat/notifications/NotificationsManagerImpl.java b/src/main/java/org/olat/notifications/NotificationsManagerImpl.java index 70bb4acdfb5..60a4655b863 100644 --- a/src/main/java/org/olat/notifications/NotificationsManagerImpl.java +++ b/src/main/java/org/olat/notifications/NotificationsManagerImpl.java @@ -531,7 +531,7 @@ public class NotificationsManagerImpl extends NotificationsManager implements Us * @param pdata * @return the publisher */ - private Publisher findOrCreatePublisher(final SubscriptionContext scontext, final PublisherData pdata) { + public Publisher getOrCreatePublisher(final SubscriptionContext scontext, final PublisherData pdata) { final OLATResourceable ores = OresHelper.createOLATResourceableInstance(scontext.getResName() + "_" + scontext.getSubidentifier(),scontext.getResId()); //o_clusterOK by:cg //fxdiff VCRP-16:prevent nested doInSync @@ -758,7 +758,7 @@ public class NotificationsManagerImpl extends NotificationsManager implements Us */ public void subscribe(Identity identity, SubscriptionContext subscriptionContext, PublisherData publisherData) { // no need to sync, since an identity only has one gui thread / one mouse - Publisher p = findOrCreatePublisher(subscriptionContext, publisherData); + Publisher p = getOrCreatePublisher(subscriptionContext, publisherData); Subscriber s = getSubscriber(identity, p); if (s == null) { // no subscriber -> create. -- GitLab