From a946a2818720f0c6f15fdad44317bf87b910a11a Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Mon, 23 Jan 2012 15:44:02 +0100
Subject: [PATCH] OO-89: fix the test and make it create a new publisher every
 time with a random sub-identifier

---
 .../olat/notifications/NotificationsManagerImpl.java   | 10 +++++++++-
 .../olat/notifications/NotificationsManagerTest.java   |  5 ++++-
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/src/main/java/org/olat/notifications/NotificationsManagerImpl.java b/src/main/java/org/olat/notifications/NotificationsManagerImpl.java
index 60a4655b863..e99eba5cfb3 100644
--- a/src/main/java/org/olat/notifications/NotificationsManagerImpl.java
+++ b/src/main/java/org/olat/notifications/NotificationsManagerImpl.java
@@ -532,6 +532,14 @@ public class NotificationsManagerImpl extends NotificationsManager implements Us
 	 * @return the publisher
 	 */
 	public Publisher getOrCreatePublisher(final SubscriptionContext scontext, final PublisherData pdata) {
+		return findOrCreatePublisher(scontext, pdata);
+	}
+	/**
+	 * @param scontext
+	 * @param pdata
+	 * @return the publisher
+	 */
+	private Publisher findOrCreatePublisher(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 +766,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 = getOrCreatePublisher(subscriptionContext, publisherData);
+		Publisher p = findOrCreatePublisher(subscriptionContext, publisherData);
 		Subscriber s = getSubscriber(identity, p);
 		if (s == null) {
 			// no subscriber -> create.
diff --git a/src/test/java/org/olat/notifications/NotificationsManagerTest.java b/src/test/java/org/olat/notifications/NotificationsManagerTest.java
index 383909b8b2d..6521b5ee8b6 100644
--- a/src/test/java/org/olat/notifications/NotificationsManagerTest.java
+++ b/src/test/java/org/olat/notifications/NotificationsManagerTest.java
@@ -36,6 +36,7 @@ import static org.junit.Assert.fail;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
+import java.util.UUID;
 
 import org.apache.log4j.Logger;
 import org.junit.After;
@@ -154,7 +155,7 @@ public class NotificationsManagerTest extends OlatTestCase {
 		
 		JMSCodePointServerJunitHelper.startServer(CODEPOINT_SERVER_ID);
 		
-		final SubscriptionContext sc = new SubscriptionContext("Course", new Long(1238778565), "676");
+		final SubscriptionContext sc = new SubscriptionContext("Course", new Long(1238778565), UUID.randomUUID().toString().replace("-", ""));
 		final PublisherData pd = new PublisherData("Forum", "e.g. forumdata=keyofforum", null );
 
 		final List<Exception> exceptionHolder = Collections.synchronizedList(new ArrayList<Exception>(1));
@@ -201,7 +202,9 @@ public class NotificationsManagerTest extends OlatTestCase {
 				}
 			}}).start();
 
+		System.out.println("Thread point 3");
 		sleep(2000);
+		System.out.println("Thread point 4");
 		// check thread 2 should not finished
 		assertEquals("Thread already finished => synchronization did not work",0,statusList.size());
 		try {
-- 
GitLab