This is an automated email from the ASF dual-hosted git repository.

timothyjward pushed a commit to branch feature/v1.1
in repository https://gitbox.apache.org/repos/asf/aries-typedevent.git

commit 4bb733d445f4811116f924e2b0c2adfdb476294b
Merge: ae53309 206a419
Author: Tim Ward <[email protected]>
AuthorDate: Tue Apr 9 17:55:03 2024 +0100

    Merge branch 'main' into feature/v1.1
    
    Pick up the cherry-picked fixes for wildcard listener management that are 
now in main
    
    Signed-off-by: Tim Ward <[email protected]>

 .../bus/osgi/EventDeliveryIntegrationTest.java     | 50 ++++++++++++++++++++++
 org.apache.aries.typedevent.bus/test.bndrun        |  2 +-
 .../test.bndrun                                    |  1 +
 3 files changed, 52 insertions(+), 1 deletion(-)

diff --cc 
org.apache.aries.typedevent.bus/src/test/java/org/apache/aries/typedevent/bus/osgi/EventDeliveryIntegrationTest.java
index d77a6a6,96d0b65..59dbb0d
--- 
a/org.apache.aries.typedevent.bus/src/test/java/org/apache/aries/typedevent/bus/osgi/EventDeliveryIntegrationTest.java
+++ 
b/org.apache.aries.typedevent.bus/src/test/java/org/apache/aries/typedevent/bus/osgi/EventDeliveryIntegrationTest.java
@@@ -274,42 -287,42 +274,92 @@@ public class EventDeliveryIntegrationTe
        TestEvent event = new TestEvent();
        event.message = "boo";
        
+       Dictionary<String, Object> props = new Hashtable<>();
+       props.put(TYPED_EVENT_TOPICS, "foo/bar/*");
+       
+       regs.add(context.registerService(TypedEventHandler.class, 
typedEventHandler, props));
+       
+       regs.add(context.registerService(UntypedEventHandler.class, 
untypedEventHandler, props));
+       
+       eventBus.deliver("foo/bar/foobar", event);
+       
+       Mockito.verify(typedEventHandler, Mockito.timeout(1000)).notify(
+                       Mockito.eq("foo/bar/foobar"), 
Mockito.argThat(isTestEventWithMessage("boo")));
+       
+       Mockito.verify(untypedEventHandler, 
Mockito.timeout(1000)).notifyUntyped(
+                       Mockito.eq("foo/bar/foobar"), 
Mockito.argThat(isUntypedTestEventWithMessage("boo")));
+       
+       Mockito.clearInvocations(typedEventHandler, untypedEventHandler);
+       
+       props.put(TYPED_EVENT_TOPICS, "foo/bar/foobar/*");
+       
+       regs.forEach(s -> s.setProperties(props));
+       
+       eventBus.deliver("foo/bar/foobar", event);
+       
+       Mockito.verify(typedEventHandler, Mockito.after(1000).never()).notify(
+                       Mockito.eq("foo/bar/foobar"), Mockito.any());
+       Mockito.verify(untypedEventHandler, 
Mockito.after(1000).never()).notifyUntyped(
+                       Mockito.eq("foo/bar/foobar"), Mockito.any());
+       
+       eventBus.deliver("foo/bar/foobar/fizzbuzz", event);
+       
+       Mockito.verify(typedEventHandler, Mockito.timeout(1000)).notify(
+                       Mockito.eq("foo/bar/foobar/fizzbuzz"), 
Mockito.argThat(isTestEventWithMessage("boo")));
+       
+       Mockito.verify(untypedEventHandler, 
Mockito.timeout(1000)).notifyUntyped(
+                       Mockito.eq("foo/bar/foobar/fizzbuzz"), 
Mockito.argThat(isUntypedTestEventWithMessage("boo")));
+       
+     }
++
++    /**
++     * Tests that events are delivered to untyped Event Handlers
++     * based on topic
++     * 
++     * @throws InterruptedException
++     */
++    @Test
++    public void testEventReceivingUpdateSingleLevelWildcardTopic() throws 
InterruptedException {
++      
++      TestEvent event = new TestEvent();
++      event.message = "boo";
++      
 +      Dictionary<String, Object> props = new Hashtable<>();
 +      props.put(TYPED_EVENT_TOPICS, "foo/+/foobar");
 +      
 +      regs.add(context.registerService(TypedEventHandler.class, 
typedEventHandler, props));
 +      
 +      regs.add(context.registerService(UntypedEventHandler.class, 
untypedEventHandler, props));
 +      
 +      eventBus.deliver("foo/bar/foobar", event);
 +      
 +      Mockito.verify(typedEventHandler, Mockito.timeout(1000)).notify(
 +                      Mockito.eq("foo/bar/foobar"), 
Mockito.argThat(isTestEventWithMessage("boo")));
 +      
 +      Mockito.verify(untypedEventHandler, 
Mockito.timeout(1000)).notifyUntyped(
 +                      Mockito.eq("foo/bar/foobar"), 
Mockito.argThat(isUntypedTestEventWithMessage("boo")));
 +      
 +      Mockito.clearInvocations(typedEventHandler, untypedEventHandler);
 +      
 +      props.put(TYPED_EVENT_TOPICS, "foo/bar/foobar/+");
 +      
 +      regs.forEach(s -> s.setProperties(props));
 +      
 +      eventBus.deliver("foo/bar/foobar", event);
 +      
 +      Mockito.verify(typedEventHandler, Mockito.after(1000).never()).notify(
 +                      Mockito.eq("foo/bar/foobar"), Mockito.any());
 +      Mockito.verify(untypedEventHandler, 
Mockito.after(1000).never()).notifyUntyped(
 +                      Mockito.eq("foo/bar/foobar"), Mockito.any());
 +      
 +      eventBus.deliver("foo/bar/foobar/fizzbuzz", event);
 +      
 +      Mockito.verify(typedEventHandler, Mockito.timeout(1000)).notify(
 +                      Mockito.eq("foo/bar/foobar/fizzbuzz"), 
Mockito.argThat(isTestEventWithMessage("boo")));
 +      
 +      Mockito.verify(untypedEventHandler, 
Mockito.timeout(1000)).notifyUntyped(
 +                      Mockito.eq("foo/bar/foobar/fizzbuzz"), 
Mockito.argThat(isUntypedTestEventWithMessage("boo")));
 +      
 +    }
      
  }
diff --cc org.apache.aries.typedevent.bus/test.bndrun
index 86dda27,08314a8..7f3c04b
--- a/org.apache.aries.typedevent.bus/test.bndrun
+++ b/org.apache.aries.typedevent.bus/test.bndrun
@@@ -53,7 -55,4 +53,7 @@@
        ch.qos.logback.core;version='[1.2.3,1.2.4)',\
        org.apache.aries.component-dsl.component-dsl;version='[1.2.2,1.2.3)',\
        org.apache.felix.configadmin;version='[1.9.26,1.9.27)',\
 -      slf4j.api;version='[1.7.30,1.7.31)'
 +      slf4j.api;version='[1.7.30,1.7.31)',\
 +      org.mockito.junit-jupiter;version='[5.5.0,5.5.1)',\
 +      org.osgi.util.promise;version='[1.1.0,1.1.1)',\
-       org.osgi.util.pushstream;version='[1.0.0,1.0.1)'
++      org.osgi.util.pushstream;version='[1.0.0,1.0.1)'
diff --cc 
org.apache.aries.typedevent.remote/org.apache.aries.typedevent.remote.remoteservices/test.bndrun
index 2cf83af,4a55dc9..5ea6f33
--- 
a/org.apache.aries.typedevent.remote/org.apache.aries.typedevent.remote.remoteservices/test.bndrun
+++ 
b/org.apache.aries.typedevent.remote/org.apache.aries.typedevent.remote.remoteservices/test.bndrun
@@@ -52,7 -56,4 +52,8 @@@
        org.objenesis;version='[3.3.0,3.3.1)',\
        org.opentest4j;version='[1.3.0,1.3.1)',\
        org.osgi.test.common;version='[1.2.1,1.2.2)',\
 -      org.osgi.test.junit5;version='[1.2.1,1.2.2)'
 +      org.osgi.test.junit5;version='[1.2.1,1.2.2)',\
 +      org.apache.aries.typedevent.remote.api;version='[0.0.2,0.0.3)',\
 +      org.osgi.util.promise;version='[1.1.0,1.1.1)',\
 +      org.osgi.util.pushstream;version='[1.0.0,1.0.1)'
++

Reply via email to