/** * Get the features sorted correctly to calculate the ver attribute. * * @param info the DiscoverInfo containing the features * @return the sorted list of features. */ private List<String> getSortedFeature(DiscoverInfo info) { List<String> result = new ArrayList<String>(); Iterator<DiscoverInfo.Feature> it = info.getFeatures(); while (it.hasNext()) { DiscoverInfo.Feature feat = it.next(); result.add(feat.getVar()); } Collections.sort(result); return result; }
/** * Tries to discover if the server of the given XMPPConnection provides also a MUC component. Will * return the MUCs Component ID if one is found otherwise returns null * * @param connection * @return * @throws XMPPException */ public static String disocverMUC(XMPPConnection connection) throws XMPPException { ServiceDiscoveryManager sdm = ServiceDiscoveryManager.getInstanceFor(connection); DiscoverItems ditem = sdm.discoverItems(connection.getServiceName()); Iterator<Item> it = ditem.getItems(); while (it.hasNext()) { Item i = it.next(); DiscoverInfo dinfo = sdm.discoverInfo(i.getEntityID()); Iterator<Feature> itFeatures = dinfo.getFeatures(); while (itFeatures.hasNext()) { Feature f = itFeatures.next(); if (f.getVar().equals(MUC_FEATURE)) { return i.getEntityID(); } } } return null; }
private boolean checkIfPrivacyIsSupported(XMPPConnection conn) { ServiceDiscoveryManager servDisc = ServiceDiscoveryManager.getInstanceFor(conn); DiscoverInfo info = null; try { String xmppHost = DNSUtil.resolveXMPPDomain(conn.getServiceName()).getHost(); info = servDisc.discoverInfo(xmppHost); } catch (XMPPException e) { // We could not query the server return false; } if (info != null) { for (Iterator<Feature> i = info.getFeatures(); i.hasNext(); ) { String s = i.next().getVar(); if (s.contains("jabber:iq:privacy")) { return true; } } } return false; }