/** * Returns true if the server supports publishing of items. A client may wish to publish items * to the server so that the server can provide items associated to the client. These items will * be returned by the server whenever the server receives a disco request targeted to the bare * address of the client (i.e. user@host.com). * * @param DiscoverInfo the discover info packet to check. * @return true if the server supports publishing of items. */ public static boolean canPublishItems(DiscoverInfo info) { return info.containsFeature("http://jabber.org/protocol/disco#publish"); }
private void discoverInfo() throws XMPPException{ info = sdManager.discoverInfo(entityJID); Iterator<Identity> iterator = info.getIdentities(); while(iterator.hasNext()){ Identity temp = iterator.next(); if(temp.getCategory().equalsIgnoreCase("gateway")){ this.identity = temp; break; } } }
public void processPacket(Packet packet) { DiscoverInfo discoverInfo = (DiscoverInfo) packet; if (discoverInfo != null && discoverInfo.getType() == IQ.Type.GET) { DiscoverInfo response = new DiscoverInfo(); response.setType(IQ.Type.RESULT); response.setTo(discoverInfo.getFrom()); response.setPacketID(discoverInfo.getPacketID()); if (discoverInfo.getNode() == null) { response.addIdentity(identity); response.addFeature((String) it.next()); response.setNode(discoverInfo.getNode()); response.setType(IQ.Type.ERROR); response.setError(new XMPPError(404, "item-not-found"));
/** * Copy constructor * * @param d */ public DiscoverInfo(DiscoverInfo d) { super(d); // Set node setNode(d.getNode()); // Copy features synchronized (d.features) { for (Feature f : d.features) { addFeature(f); } } // Copy identities synchronized (d.identities) { for (Identity i : d.identities) { addIdentity(i); } } }
/** * Add discover info response data. * * @see <a href="http://xmpp.org/extensions/xep-0030.html#info-basic">XEP-30 Basic Protocol; Example 2</a> * * @param response the discover info response packet */ public void addDiscoverInfoTo(DiscoverInfo response) { // First add the identities of the connection response.addIdentities(identities); // Add the registered features to the response synchronized (features) { for (Iterator<String> it = getFeatures(); it.hasNext();) { response.addFeature(it.next()); } response.addExtension(extendedInfo); } }
/** * Discover node information in standard {@link DiscoverInfo} format. * * @return The discovery information about the node. * * @throws XMPPException */ public DiscoverInfo discoverInfo() throws XMPPException { DiscoverInfo info = new DiscoverInfo(); info.setTo(to); info.setNode(getId()); return (DiscoverInfo)SyncPacketSend.getReply(con, info); }
public void processPacket(Packet packet) { DiscoverInfo discoverInfo = (DiscoverInfo) packet; if (discoverInfo != null && discoverInfo.getType() == IQ.Type.GET) { DiscoverInfo response = new DiscoverInfo(); response.setType(IQ.Type.RESULT); response.setTo(discoverInfo.getFrom()); response.setPacketID(discoverInfo.getPacketID()); response.setNode(discoverInfo.getNode()); if (discoverInfo.getNode() == null) { addDiscoverInfoTo(response); getNodeInformationProvider(discoverInfo.getNode()); if (nodeInformationProvider != null) { response.addFeatures(nodeInformationProvider.getNodeFeatures()); response.addIdentities(nodeInformationProvider.getNodeIdentities()); response.addExtensions(nodeInformationProvider.getNodePacketExtensions()); response.setType(IQ.Type.ERROR); response.setError(new XMPPError(XMPPError.Condition.item_not_found));
DiscoverInfo disco = new DiscoverInfo(); disco.setType(IQ.Type.GET); disco.setTo(entityID); disco.setNode(node); connection.createPacketCollector(new PacketIDFilter(disco.getPacketID()));
public IQ parseIQ(XmlPullParser parser) throws Exception { DiscoverInfo discoverInfo = new DiscoverInfo(); boolean done = false; DiscoverInfo.Feature feature = null; String type = ""; String variable = ""; discoverInfo.setNode(parser.getAttributeValue("", "node")); while (!done) { int eventType = parser.next(); discoverInfo.addExtension(PacketParserUtils.parsePacketExtension(parser .getName(), parser.getNamespace(), parser)); discoverInfo.addIdentity(identity); discoverInfo.addFeature(variable);
DiscoverInfo info = new DiscoverInfo(); info.setTo(to); info.setNode(id); if (infoReply.getIdentities().next().getType().equals(NodeType.leaf.toString())) node = new LeafNode(con, id); else
RoomInfo(DiscoverInfo info) { super(); this.room = info.getFrom(); // Get the information based on the discovered features this.membersOnly = info.containsFeature("muc_membersonly"); this.moderated = info.containsFeature("muc_moderated"); this.nonanonymous = info.containsFeature("muc_nonanonymous"); this.passwordProtected = info.containsFeature("muc_passwordprotected"); this.persistent = info.containsFeature("muc_persistent"); // Get the information based on the discovered extended information Form form = Form.getFormFrom(info); if (form != null) { FormField descField = form.getField("muc#roominfo_description"); this.description = descField == null ? "" : descField.getValues().next(); FormField subjField = form.getField("muc#roominfo_subject"); this.subject = subjField == null ? "" : subjField.getValues().next(); FormField occCountField = form.getField("muc#roominfo_occupants"); this.occupantsCount = occCountField == null ? -1 : Integer.parseInt(occCountField.getValues() .next()); } }
DiscoverInfo info = disco.discoverInfo(item.getEntityID()); Iterator<DiscoverInfo.Identity> iter2 = info.getIdentities(); while (iter2.hasNext()) { DiscoverInfo.Identity identity = iter2.next(); if (identity.getCategory().equals("proxy") && identity.getType().equals("stun")) if (info.containsFeature(NAMESPACE)) return true; LOGGER.debug(item.getName()+"-"+info.getType());
public String getChildElementXML() { StringBuilder buf = new StringBuilder(); buf.append("<query xmlns=\"http://jabber.org/protocol/disco#info\""); if (getNode() != null) { buf.append(" node=\""); buf.append(getNode()); buf.append("\""); } buf.append(">"); synchronized (identities) { for (Identity identity : identities) { buf.append(identity.toXML()); } } synchronized (features) { for (Feature feature : features) { buf.append(feature.toXML()); } } // Add packet extensions, if any are defined. buf.append(getExtensionsXML()); buf.append("</query>"); return buf.toString(); }
Connection connection = weakRefConnection.get(); DiscoverInfo discoverInfo = new DiscoverInfo(); discoverInfo.setType(IQ.Type.RESULT); discoverInfo.setNode(getLocalNodeVer()); if (connection != null) discoverInfo.setFrom(connection.getUser()); sdm.addDiscoverInfoTo(discoverInfo);
/** * Checks the service discovery item returned from a server component to verify if it is * a File Transfer proxy or not. * * @param manager the service discovery manager which will be used to query the component * @param item the discovered item on the server relating * @return returns the JID of the proxy if it is a proxy or null if the item is not a proxy. */ private String checkIsProxy(ServiceDiscoveryManager manager, DiscoverItems.Item item) { DiscoverInfo info; try { info = manager.discoverInfo(item.getEntityID()); } catch (XMPPException e) { return null; } Iterator itx = info.getIdentities(); while (itx.hasNext()) { DiscoverInfo.Identity identity = (DiscoverInfo.Identity) itx.next(); if ("proxy".equalsIgnoreCase(identity.getCategory()) && "bytestreams".equalsIgnoreCase( identity.getType())) { return info.getFrom(); } } return null; }
return null; DataForm extendedInfo = (DataForm) discoverInfo.getExtension(Form.ELEMENT, Form.NAMESPACE); for (Iterator<Identity> it = discoverInfo.getIdentities(); it.hasNext();) sortedIdentities.add(it.next()); for (Iterator<Feature> it = discoverInfo.getFeatures(); it.hasNext();) features.add(it.next().getVar());
/** * Adds a collection of features to the packet. Does noting if featuresToAdd is null. * * @param featuresToAdd */ public void addFeatures(Collection<String> featuresToAdd) { if (featuresToAdd == null) return; for (String feature : featuresToAdd) { addFeature(feature); } }
/** * Retrieve DiscoverInfo for a specific node. * * @param nodeVer * The node name (e.g. * "http://psi-im.org#q07IKJEyjvHSyhy//CH0CxmKi8w="). * @return The corresponding DiscoverInfo or null if none is known. */ public static DiscoverInfo getDiscoveryInfoByNodeVer(String nodeVer) { DiscoverInfo info = caps.get(nodeVer); if (info != null) info = new DiscoverInfo(info); return info; }
/** * Returns true if the specified feature is part of the discovered information. * * @param feature the feature to check * @return true if the requestes feature has been discovered */ public boolean containsFeature(String feature) { for (Iterator<Feature> it = getFeatures(); it.hasNext();) { if (feature.equals(it.next().getVar())) return true; } return false; }
DiscoverInfo disco = new DiscoverInfo(); disco.setType(IQ.Type.GET); disco.setTo(entityID); disco.setNode(node); connection.createPacketCollector(new PacketIDFilter(disco.getPacketID()));