Search in sources :

Example 6 with StanzaTypeFilter

use of org.jivesoftware.smack.filter.StanzaTypeFilter in project Smack by igniterealtime.

the class JingleProviderTest method testParseIQSimple.

/**
	 * Test for parsing a Jingle
	 */
public void testParseIQSimple() {
    // Create a dummy packet for testing...
    IQfake iqSent = new IQfake(" <jingle xmlns='urn:xmpp:tmp:jingle'" + " initiator=\"gorrino@viejo.com\"" + " responder=\"colico@hepatico.com\"" + " action=\"transport-info\" sid=\"\">" + " <transport xmlns='urn:xmpp:tmp:jingle:transports:ice-udp'>" + " <candidate generation=\"1\"" + " ip=\"192.168.1.1\"" + " password=\"secret\"" + " port=\"8080\"" + " username=\"username\"" + " preference=\"1\"/>" + " </transport>" + "</jingle>");
    iqSent.setTo(getFullJID(0));
    iqSent.setFrom(getFullJID(0));
    iqSent.setType(IQ.Type.get);
    // Create a filter and a collector...
    PacketFilter filter = new StanzaTypeFilter(IQ.class);
    StanzaCollector collector = getConnection(0).createStanzaCollector(filter);
    System.out.println("Testing if a Jingle IQ can be sent and received...");
    // Send the iq packet with an invalid namespace
    getConnection(0).sendStanza(iqSent);
    // Receive the packet
    IQ iqReceived = (IQ) collector.nextResult(SmackConfiguration.getPacketReplyTimeout());
    // Stop queuing results
    collector.cancel();
    if (iqReceived == null) {
        fail("No response from server");
    } else if (iqReceived.getType() == IQ.Type.error) {
        fail("The server did reply with an error packet: " + iqReceived.getError().getCode());
    } else {
        assertTrue(iqReceived instanceof Jingle);
        Jingle jin = (Jingle) iqReceived;
        System.out.println("Sent:     " + iqSent.toXML());
        System.out.println("Received: " + jin.toXML());
    }
}
Also used : Jingle(org.jivesoftware.smackx.jingle.packet.Jingle) StanzaTypeFilter(org.jivesoftware.smack.filter.StanzaTypeFilter) PacketFilter(org.jivesoftware.smack.filter.PacketFilter) IQ(org.jivesoftware.smack.packet.IQ) StanzaCollector(org.jivesoftware.smack.StanzaCollector)

Example 7 with StanzaTypeFilter

use of org.jivesoftware.smack.filter.StanzaTypeFilter in project Smack by igniterealtime.

the class Workgroup method isAvailable.

/**
     * Returns true if the workgroup is available for receiving new requests. The workgroup will be
     * available only when agents are available for this workgroup.
     *
     * @return true if the workgroup is available for receiving new requests.
     * @throws XMPPErrorException 
     * @throws NoResponseException 
     * @throws NotConnectedException 
     * @throws InterruptedException 
     */
public boolean isAvailable() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
    Presence directedPresence = new Presence(Presence.Type.available);
    directedPresence.setTo(workgroupJID);
    StanzaFilter typeFilter = new StanzaTypeFilter(Presence.class);
    StanzaFilter fromFilter = FromMatchesFilter.create(workgroupJID);
    StanzaCollector collector = connection.createStanzaCollectorAndSend(new AndFilter(fromFilter, typeFilter), directedPresence);
    Presence response = (Presence) collector.nextResultOrThrow();
    return Presence.Type.available == response.getType();
}
Also used : StanzaTypeFilter(org.jivesoftware.smack.filter.StanzaTypeFilter) AndFilter(org.jivesoftware.smack.filter.AndFilter) StanzaFilter(org.jivesoftware.smack.filter.StanzaFilter) Presence(org.jivesoftware.smack.packet.Presence) StanzaCollector(org.jivesoftware.smack.StanzaCollector)

Example 8 with StanzaTypeFilter

use of org.jivesoftware.smack.filter.StanzaTypeFilter in project Smack by igniterealtime.

the class AgentSession method setStatus.

/**
     * Sets the agent's current status with the workgroup. The presence mode affects how offers
     * are routed to the agent. The possible presence modes with their meanings are as follows:<ul>
     * <p/>
     * <li>Presence.Mode.AVAILABLE -- (Default) the agent is available for more chats
     * (equivalent to Presence.Mode.CHAT).
     * <li>Presence.Mode.DO_NOT_DISTURB -- the agent is busy and should not be disturbed.
     * However, special case, or extreme urgency chats may still be offered to the agent.
     * <li>Presence.Mode.AWAY -- the agent is not available and should not
     * have a chat routed to them (equivalent to Presence.Mode.EXTENDED_AWAY).</ul>
     *
     * @param presenceMode the presence mode of the agent.
     * @param status       sets the status message of the presence update.
     * @throws XMPPErrorException 
     * @throws NoResponseException 
     * @throws NotConnectedException 
     * @throws InterruptedException 
     * @throws IllegalStateException if the agent is not online with the workgroup.
     */
public void setStatus(Presence.Mode presenceMode, String status) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException {
    if (!online) {
        throw new IllegalStateException("Cannot set status when the agent is not online.");
    }
    if (presenceMode == null) {
        presenceMode = Presence.Mode.available;
    }
    this.presenceMode = presenceMode;
    Presence presence = new Presence(Presence.Type.available);
    presence.setMode(presenceMode);
    presence.setTo(this.getWorkgroupJID());
    if (status != null) {
        presence.setStatus(status);
    }
    presence.addExtension(new MetaData(this.metaData));
    StanzaCollector collector = this.connection.createStanzaCollectorAndSend(new AndFilter(new StanzaTypeFilter(Presence.class), FromMatchesFilter.create(workgroupJID)), presence);
    collector.nextResultOrThrow();
}
Also used : AndFilter(org.jivesoftware.smack.filter.AndFilter) StanzaTypeFilter(org.jivesoftware.smack.filter.StanzaTypeFilter) MetaData(org.jivesoftware.smackx.workgroup.MetaData) Presence(org.jivesoftware.smack.packet.Presence) StanzaCollector(org.jivesoftware.smack.StanzaCollector)

Example 9 with StanzaTypeFilter

use of org.jivesoftware.smack.filter.StanzaTypeFilter in project Smack by igniterealtime.

the class IQTest method testInvalidNamespace.

/**
     * Check that the server responds a 503 error code when the client sends an IQ stanza(/packet) with an
     * invalid namespace.
     */
public void testInvalidNamespace() {
    IQ iq = new IQ() {

        public String getChildElementXML() {
            StringBuilder buf = new StringBuilder();
            buf.append("<query xmlns=\"jabber:iq:anything\">");
            buf.append("</query>");
            return buf.toString();
        }
    };
    PacketFilter filter = new AndFilter(new PacketIDFilter(iq.getStanzaId()), new StanzaTypeFilter(IQ.class));
    StanzaCollector collector = getConnection(0).createStanzaCollector(filter);
    // Send the iq packet with an invalid namespace
    getConnection(0).sendStanza(iq);
    IQ result = (IQ) collector.nextResult(SmackConfiguration.getPacketReplyTimeout());
    // Stop queuing results
    collector.cancel();
    if (result == null) {
        fail("No response from server");
    } else if (result.getType() != IQ.Type.error) {
        fail("The server didn't reply with an error packet");
    } else {
        assertEquals("Server answered an incorrect error code", 503, result.getError().getCode());
    }
}
Also used : AndFilter(org.jivesoftware.smack.filter.AndFilter) StanzaTypeFilter(org.jivesoftware.smack.filter.StanzaTypeFilter) PacketFilter(org.jivesoftware.smack.filter.PacketFilter) IQ(org.jivesoftware.smack.packet.IQ) PacketIDFilter(org.jivesoftware.smack.filter.PacketIDFilter)

Aggregations

StanzaTypeFilter (org.jivesoftware.smack.filter.StanzaTypeFilter)9 AndFilter (org.jivesoftware.smack.filter.AndFilter)7 StanzaCollector (org.jivesoftware.smack.StanzaCollector)6 Presence (org.jivesoftware.smack.packet.Presence)5 PacketFilter (org.jivesoftware.smack.filter.PacketFilter)2 StanzaFilter (org.jivesoftware.smack.filter.StanzaFilter)2 IQ (org.jivesoftware.smack.packet.IQ)2 StandardExtensionElement (org.jivesoftware.smack.packet.StandardExtensionElement)2 MetaData (org.jivesoftware.smackx.workgroup.MetaData)2 Date (java.util.Date)1 AbstractSmackIntegrationTest (org.igniterealtime.smack.inttest.AbstractSmackIntegrationTest)1 SmackIntegrationTest (org.igniterealtime.smack.inttest.SmackIntegrationTest)1 StanzaListener (org.jivesoftware.smack.StanzaListener)1 FromMatchesFilter (org.jivesoftware.smack.filter.FromMatchesFilter)1 PacketIDFilter (org.jivesoftware.smack.filter.PacketIDFilter)1 Stanza (org.jivesoftware.smack.packet.Stanza)1 DiscoverInfo (org.jivesoftware.smackx.disco.packet.DiscoverInfo)1 Jingle (org.jivesoftware.smackx.jingle.packet.Jingle)1 MucNotJoinedException (org.jivesoftware.smackx.muc.MultiUserChatException.MucNotJoinedException)1 MUCInitialPresence (org.jivesoftware.smackx.muc.packet.MUCInitialPresence)1