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 2d195bf8502234c9aa2edf359888021947ee73ee..09f121c39a80bc021d36b637e2d9a71457915042 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 be88d12fa6deafbe74a2eb2d2ac3ca18b3b0ddd6..3645e8945270e20f0f5ae20fbd92bd2caa9b8a9e 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 44a7a14e33b481bb5760740556efb94013d43b29..ac8431d59764d7151295a2985d45c1c0fb3f8349 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 70bb4acdfb5d625b9ff256fbecaf10514203e1c5..60a4655b86315436776330b0e5a111218b881b08 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.