Package org.jivesoftware.smackx.packet

Examples of org.jivesoftware.smackx.packet.DiscoverInfo


                    status.setText(resources.getString("status") + ": "
                             + resources.getString("gettingFeatures") + " ("
                             + id + ") ...");

                    // get the discover info about each item
                    DiscoverInfo info = null;

                    try {
                        info = manager.discoverInfo(id);
                    } catch (XMPPException e) {
                    }

                    // if the service discovery has been aborted, bail out
                    if (stopped) {
                        return;
                    }
                    tableModel.setDisco(icount, info);

                    if (info != null) {
                        final DiscoverInfo tempInfo = info;
                        final int index = icount;
                        SwingUtilities.invokeLater(
                            new Runnable() {
                                public void run() {
                                    Iterator identities = tempInfo.getIdentities();
                                    while (identities.hasNext()) {
                                        DiscoverInfo.Identity identity = (DiscoverInfo.Identity) identities.next();
                                        if (stopped) {
                                            return;
                                        }
View Full Code Here


    address.setText(addressid);
    discover(addressid);
  }

  protected void discoverInfos(final TreeItem item, final String addressid) {
    DiscoverInfo disco = new DiscoverInfo();
    disco.setType(IQ.Type.GET);
    disco.setTo(addressid);
    disco.setNode(null);
    //DiscoverInfo info = disco.discoverInfo(addressid);
    new GOIMPacketListener(account.xmpp.getConnection(),new PacketIDFilter(disco.getPacketID()),taskObserver){
      public void processPacket(final Packet packet) {
        unregisterListener(false);
        final Task task = this;
        if(packet.getError() != null &&
            (packet.getError().getCode() == 404 || // not found
             packet.getError().getCode() == 501)) { // not implemented)
          sendBrowseIQ();
        }
        if(!(packet instanceof DiscoverInfo)) {
          System.err.println("Error during service discovery. Got wrong packet: " + packet.getClass().toString());
          taskObserver.finishedTask(task);
          return;
        }
        item.getDisplay().asyncExec(new Runnable() { public void run(){
          DiscoverInfo info = (DiscoverInfo)packet;
          Iterator i = info.getIdentities();
          while (i.hasNext()) {
            DiscoverInfo.Identity identity = (Identity) i.next();
            if(identity.getName() != null)
              item.setText(0, identity.getName());
            if (identity.getCategory() != null)
              item.setText(2, identity.getCategory());
            if (identity.getType() != null)
              item.setText(3, identity.getType());
          }
          if (info.containsFeature("jabber:iq:register")) {
            //System.out.println(addressid + " supports registration .. ");
            item.setData("supportsRegister",true);
          }
          if (info.containsFeature("jabber:iq:search")) {
            item.setData("supportsSearch",true);
          }
          if(info.containsFeature("http://jabber.org/protocol/muc")) {
            item.setData("supportsMUC",true);
          }
          item.setData("info", info);
          item.setBackground(null);
          taskObserver.finishedTask(task);
View Full Code Here

    vCardItem.setText("Show vCard");
    vCardItem.setImage(GOIMIcons.getImage(GOIMIcons.CONTACT_VCARD));

    registerItem.addListener(SWT.Selection, new Listener() {
      public void handleEvent(Event event) {
        DiscoverInfo info = (DiscoverInfo) selectedItem.getData("info");
        String addressid = (String) selectedItem.getData("address");
        if (info == null)
          return;
        if (addressid == null)
          return;
        if (!info.containsFeature("jabber:iq:register"))
          return;
        Registration reg = new Registration();
        reg.setTo(addressid);
        IQ result;
        try {
View Full Code Here

        // Listen for disco#info requests and answer the client's supported features
        // To add a new feature as supported use the #addFeature message       
        packetFilter = new PacketTypeFilter(DiscoverInfo.class);
        packetListener = new PacketListener() {
            public void processPacket(Packet packet) {
                DiscoverInfo discoverInfo = (DiscoverInfo) packet;
                // Answer the client's supported features if the request is of the GET type
                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());
                     // Add the client's identity and features only if "node" is null
                    if (discoverInfo.getNode() == null) {
                        // Set this client identity
                        DiscoverInfo.Identity identity = new DiscoverInfo.Identity("client",
                                getIdentityName());
                        identity.setType(getIdentityType());
                        response.addIdentity(identity);
                        // Add the registered features to the response
                        synchronized (features) {
                            for (Iterator<String> it = getFeatures(); it.hasNext();) {
                                response.addFeature(it.next());
                            }
                            if (extendedInfo != null) {
                                response.addExtension(extendedInfo);
                            }
                        }
                    }
                    else {
                        // Disco#info was sent to a node. Check if we have information of the
                        // specified node
                        NodeInformationProvider nodeInformationProvider =
                                getNodeInformationProvider(discoverInfo.getNode());
                        if (nodeInformationProvider != null) {
                            // Node was found. Add node features
                            List<String> features = nodeInformationProvider.getNodeFeatures();
                            if (features != null) {
                                for(String feature : features) {
                                    response.addFeature(feature);
                                }
                            }
                            // Add node identities
                            List<DiscoverInfo.Identity> identities =
                                    nodeInformationProvider.getNodeIdentities();
                            if (identities != null) {
                                for (DiscoverInfo.Identity identity : identities) {
                                    response.addIdentity(identity);
                                }
                            }
                        }
                        else {
                            // Return <item-not-found/> error since specified node was not found
                            response.setType(IQ.Type.ERROR);
                            response.setError(new XMPPError(XMPPError.Condition.item_not_found));
                        }
                    }
                    connection.sendPacket(response);
                }
            }
View Full Code Here

     * @return the discovered information.
     * @throws XMPPException if the operation failed for some reason.
     */
    public DiscoverInfo discoverInfo(String entityID, String node) throws XMPPException {
        // Discover the entity's info
        DiscoverInfo disco = new DiscoverInfo();
        disco.setType(IQ.Type.GET);
        disco.setTo(entityID);
        disco.setNode(node);

        // Create a packet collector to listen for a response.
        PacketCollector collector =
            connection.createPacketCollector(new PacketIDFilter(disco.getPacketID()));

        connection.sendPacket(disco);

        // Wait up to 5 seconds for a result.
        IQ result = (IQ) collector.nextResult(SmackConfiguration.getPacketReplyTimeout());
View Full Code Here

     * @param entityID the address of the XMPP entity.
     * @return true if the server supports publishing of items.
     * @throws XMPPException if the operation failed for some reason.
     */
    public boolean canPublishItems(String entityID) throws XMPPException {
        DiscoverInfo info = discoverInfo(entityID);
        return info.containsFeature("http://jabber.org/protocol/disco#publish");
    }
View Full Code Here

                serviceAddress = (String) services.get(serviceName);
                if (serviceAddress == null) {

                    // Send the disco packet to the server itself
                    try {
                        DiscoverInfo info = ServiceDiscoveryManager.getInstanceFor(connection)
                                .discoverInfo(serviceName);
                        // Check if the server supports JEP-33
                        if (info.containsFeature("http://jabber.org/protocol/address")) {
                            serviceAddress = serviceName;
                        }
                        else {
                            // Get the disco items and send the disco packet to each server item
                            DiscoverItems items = ServiceDiscoveryManager.getInstanceFor(connection)
                                    .discoverItems(serviceName);
                            for (Iterator it = items.getItems(); it.hasNext();) {
                                DiscoverItems.Item item = (DiscoverItems.Item) it.next();
                                info = ServiceDiscoveryManager.getInstanceFor(connection)
                                        .discoverInfo(item.getEntityID(), item.getNode());
                                if (info.containsFeature("http://jabber.org/protocol/address")) {
                                    serviceAddress = serviceName;
                                    break;
                                }
                            }
View Full Code Here

        DiscoverItems items = discoManager.discoverItems(con.getServiceName());
        Iterator<DiscoverItems.Item> iter = items.getItems();
        while (iter.hasNext()) {
            DiscoverItems.Item item = iter.next();
            try {
                DiscoverInfo info;
                try {
                    info = discoManager.discoverInfo(item.getEntityID());
                }
                catch (XMPPException e) {
                    // Ignore Case
                    continue;
                }

                if (info.containsFeature("jabber:iq:search")) {
                    searchServices.add(item.getEntityID());
                }
            }
            catch (Exception e) {
                // No info found.
View Full Code Here

    public void shouldFailIfTargetDoesNotSupportSocks5() {
        Socks5BytestreamManager byteStreamManager = Socks5BytestreamManager.getBytestreamManager(connection);

        try {
            // build empty discover info as reply if targets features are queried
            DiscoverInfo discoverInfo = new DiscoverInfo();
            protocol.addResponse(discoverInfo);

            // start SOCKS5 Bytestream
            byteStreamManager.establishSession(targetJID);
View Full Code Here

         * create responses in the order they should be queried specified by the XEP-0065
         * specification
         */

        // build discover info that supports the SOCKS5 feature
        DiscoverInfo discoverInfo = Socks5PacketUtils.createDiscoverInfo(targetJID, initiatorJID);
        discoverInfo.addFeature(Socks5BytestreamManager.NAMESPACE);

        // return that SOCKS5 is supported if target is queried
        protocol.addResponse(discoverInfo, Verification.correspondingSenderReceiver,
                        Verification.requestTypeGET);

View Full Code Here

TOP

Related Classes of org.jivesoftware.smackx.packet.DiscoverInfo

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.