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); } }