Пример #1
0
  @Test
  public void setPresenceTypeTest() throws IOException, SAXException, ParserConfigurationException {
    Presence.Type type = Presence.Type.unavailable;
    Presence.Type type2 = Presence.Type.subscribe;

    StringBuilder controlBuilder = new StringBuilder();
    controlBuilder
        .append("<presence")
        .append(" type=\"")
        .append(type)
        .append("\">")
        .append("</presence>");
    String control = controlBuilder.toString();

    Presence presenceTypeInConstructor = new Presence(type);
    presenceTypeInConstructor.setPacketID(Packet.ID_NOT_AVAILABLE);
    assertEquals(type, presenceTypeInConstructor.getType());
    assertXMLEqual(control, presenceTypeInConstructor.toXML());

    controlBuilder = new StringBuilder();
    controlBuilder
        .append("<presence")
        .append(" type=\"")
        .append(type2)
        .append("\">")
        .append("</presence>");
    control = controlBuilder.toString();

    Presence presenceTypeSet = getNewPresence();
    presenceTypeSet.setType(type2);
    assertEquals(type2, presenceTypeSet.getType());
    assertXMLEqual(control, presenceTypeSet.toXML());
  }
Пример #2
0
 private void process(Presence presence) {
   if (presence.getType() == Presence.Type.unavailable) {
     MUCRole mucRole = room.getOccupantByFullJID(realjid);
     if (mucRole != null) {
       room.leaveRoom(mucRole);
     }
   } else {
     throw new UnsupportedOperationException(
         "Cannot process Presence packets of remote users: " + presence);
   }
 }
Пример #3
0
  /**
   * 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 XMPPException
   */
  public boolean isAvailable() throws XMPPException {
    Presence directedPresence = new Presence(Presence.Type.available);
    directedPresence.setTo(workgroupJID);
    PacketFilter typeFilter = new PacketTypeFilter(Presence.class);
    PacketFilter fromFilter = FromMatchesFilter.create(workgroupJID);
    PacketCollector collector =
        connection.createPacketCollector(new AndFilter(fromFilter, typeFilter));

    connection.sendPacket(directedPresence);

    Presence response = (Presence) collector.nextResultOrThrow();
    return Presence.Type.available == response.getType();
  }