You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by rm...@apache.org on 2018/08/14 12:30:51 UTC

svn commit: r1838017 - in /openwebbeans/trunk/webbeans-impl/src: main/java/org/apache/webbeans/event/NotificationManager.java test/java/org/apache/webbeans/test/events/async/ObserversAsyncTest.java

Author: rmannibucau
Date: Tue Aug 14 12:30:51 2018
New Revision: 1838017

URL: http://svn.apache.org/viewvc?rev=1838017&view=rev
Log:
OWB-1251 ensure fireAsync behaves properly when there is no observer

Modified:
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/NotificationManager.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/events/async/ObserversAsyncTest.java

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/NotificationManager.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/NotificationManager.java?rev=1838017&r1=1838016&r2=1838017&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/NotificationManager.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/NotificationManager.java Tue Aug 14 12:30:51 2018
@@ -802,6 +802,10 @@ public final class NotificationManager
         {
             return null;
         }
+        if (completableFutures.isEmpty())
+        {
+            return CompletableFuture.completedFuture(event);
+        }
         CDICompletionFuture<T> future = new CDICompletionFuture<>(event, completableFutures.size());
         completableFutures.forEach(f -> f.handle((t, e) ->
         {

Modified: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/events/async/ObserversAsyncTest.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/events/async/ObserversAsyncTest.java?rev=1838017&r1=1838016&r2=1838017&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/events/async/ObserversAsyncTest.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/events/async/ObserversAsyncTest.java Tue Aug 14 12:30:51 2018
@@ -42,6 +42,8 @@ import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 
 public class ObserversAsyncTest extends AbstractUnitTest
 {
@@ -117,6 +119,27 @@ public class ObserversAsyncTest extends
         System.out.println("took ms: " + durationMs);
     }
 
+    @Test
+    public void testNoObserver() throws ExecutionException, InterruptedException
+    {
+        startContainer();
+        final CompletableFuture<ObserversAsyncTest> completionStage = getBeanManager()
+                .getEvent()
+                .fireAsync(new ObserversAsyncTest())
+                .handle((r, e) ->
+                {
+                    if (r != null)
+                    {
+                        return r;
+                    }
+                    fail();
+                    return null;
+                })
+                .toCompletableFuture();
+
+        assertTrue(completionStage.isDone());
+        assertTrue(ObserversAsyncTest.class.isInstance(completionStage.get()));
+    }
 
     public static class VisitorCollectorEvent
     {