ECF Learning

JUnit4の勉強と、ECFの勉強を兼ねて書いたコードを晒してみる。

ECFは幾つかのプロトコルのfacade役をしてくれるプラグイン。
今回晒したのはXMPPの例。GTalkやJabberサーバーに接続して、
通信をすることができる。
例えば21行目の"ecf.xmpp.smack"を"ecf.call.skype"にすると、
Skypeプラグインが導入されている環境ではSkypeを使って通信できる。
なお、ユーザー名とパスワードは適当に置き換えてくださいませ。

public class XMPPLearning {
    private XMPPContainer container;

    @SuppressWarnings("unchecked")
    public void learningXMPPRoasterAPI() throws Exception{
        connect();
        IRoster roster = container.getRosterManager().getRoster();
        System.out.println(roster.getUser().getName());
        Thread.sleep(1000);
        Collection items = roster.getItems();
        System.out.println(items.size());
        for(Object o : items){
            System.out.println(o);
        }
    }
    
    @Before
    public void createContainer(){
        IContainer c = null;
        try {
            c  = ContainerFactory.getDefault().createContainer("ecf.xmpp.smack");
        } catch (ContainerCreateException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        assertNotNull(c);
        assertTrue(c instanceof XMPPContainer);
        container = (XMPPContainer) c;

    }
    
    @After
    public void disconnectContainer(){
        container.disconnect();        
    }
    
    @SuppressWarnings("unchecked")
    public void learningXMPPChatRoomAPI() throws Exception{
        connect();
        Map properties = new HashMap();
//        IChatRoomInfo info = container.getChatRoomManager().createChatRoom("kompiroroom", properties );
//        assertNotNull(info);
        String connectID = "kompiro@gmail.com";
        ID targetID = IDFactory.getDefault().createID(container.getConnectNamespace(), connectID);
        IIMMessageListener messageListener = new IIMMessageListener(){

            public void handleMessageEvent(IIMMessageEvent messageEvent) {
                System.out.println(messageEvent.toString());
                assertTrue(messageEvent instanceof IChatMessageEvent);
                IChatMessageEvent e = (IChatMessageEvent) messageEvent;
                System.out.println(e.getChatMessage());
            }
            
        };
        IChatMessageSender chatMessageSender = container.getChatManager().getChatMessageSender();
        chatMessageSender.sendChatMessage(targetID, "hello!");
        
    }

    @Test
    public void learningXMPPSharedObjectAPI() throws Exception{
        connect();
        Thread.sleep(2000);
        ID[] ids = container.getSharedObjectManager().getSharedObjectIDs();
        assertEquals(1,ids.length);
        System.out.println(ids[0]);
    }

    
    public void learningXMPPDataShareAPI() throws Exception{
        connect();
//        Thread.sleep(2000);
        IChannelContainerAdapter channelConntainerAdapter = (IChannelContainerAdapter) container.getAdapter(IChannelContainerAdapter.class);
        assertNotNull(channelConntainerAdapter);
        IChannelConfig newChannelConfig = new BaseChannelConfig();
        IChannel channel = channelConntainerAdapter.createChannel(newChannelConfig);
        assertNotNull(channel);
        channel.sendMessage("test".getBytes());
    }

    private void connect() throws IDCreateException, ContainerConnectException {
        String connectID = "kompiro1206@gmail.com";
        IConnectContext connectContext = ConnectContextFactory.createUsernamePasswordConnectContext(connectID, "fopcc17m");
        ID targetID = IDFactory.getDefault().createID(container.getConnectNamespace(), connectID);
        container.connect(targetID, connectContext);
    }

}