public RemoteChatContext getTableChatContext(ChatListener chatListener,
TableId tableID) throws RemoteException, IllegalActionException {
XmlRemoteTableChatContext context = new XmlRemoteTableChatContext(performer,generator,tableID);
if(tableChatContexts.putIfAbsent(tableID, context)==null){
serverListenerTree.setTableChatListener(tableID, chatListener);
performer.perform(new TableChatInterestAction(generator.getNextID(),tableID));
return context;
}else{
throw new IllegalActionException("Already registered a chat listener for table #"+tableID+".");
}
}