2013-05-20 43 views
1

我使用mbassador,並且發佈到接口似乎不起作用。以下是使用JUnit的sscce。我希望這個程序打印hello world,但它不。但是,如果我改變這一行:MB Ambassador不支持接口消息

public void handleFoo(FooInterface f) { 

這樣:

public void handleFoo(FooImpl f) { 

程序完美的作品。這是一個錯誤,還是我做錯了什麼?注意:public void handleFoo(Object o)也適用。

import net.engio.mbassy.bus.BusConfiguration; 
import net.engio.mbassy.bus.MBassador; 
import net.engio.mbassy.listener.Handler; 

import org.junit.Test; 

public class MBassadorTest { 
    @Test 
    public void testMBassador() { 
     MBassador<FooInterface> bus = new MBassador<>(BusConfiguration.Default()); 
     bus.subscribe(this); 
     FooInterface myFoo = new FooImpl(); 
     bus.publish(myFoo); 
    } 

    public static interface FooInterface { 
     String doSomething(); 
    } 

    public static class FooImpl implements FooInterface { 
     public String doSomething() { 
      return "hello world"; 
     } 
    } 

    @Handler(rejectSubtypes = false) 
    public void handleFoo(FooInterface f) { 
     System.out.println(f.doSomething()); 
    } 
} 
+0

它現在固定1.1.7。如果您遇到任何問題,請檢查並報告。 – bennidi

回答

4

我MBassador的作者,這是真的什麼durron597說。我錯誤地認識到接口是一個錯誤(我承認,這是一個馬虎),但很容易修復。它已經在我的代碼庫中得到了修復,並且我目前還包含了一些更多的測試。因爲我想包含更多的錯誤修正,所以發佈版本仍在等待處理,但不會超過幾天。

我的不便表示歉意......

+0

bennidi,我昨天晚上提交了這個拉請求:) – durron597

+0

謝謝,你太晚了:) – bennidi

+0

哦,哈哈,我的拉請求無論如何不起作用。儘管如此,我的測試用例和其他修補程序可能會有所幫助:) – durron597