Search in sources :

Example 6 with Privacy

use of org.jivesoftware.smack.packet.Privacy in project ecf by eclipse.

the class PrivacyListManager method init.

/**
 * Initializes the packet listeners of the connection that will notify for any set privacy
 * package.
 */
private void init() {
    // Register the new instance and associate it with the connection
    instances.put(connection, this);
    // Add a listener to the connection that removes the registered instance when
    // the connection is closed
    connection.addConnectionListener(new ConnectionListener() {

        public void connectionClosed() {
            // Unregister this instance since the connection has been closed
            instances.remove(connection);
        }

        public void connectionClosedOnError(Exception e) {
        // ignore
        }

        public void reconnectionFailed(Exception e) {
        // ignore
        }

        public void reconnectingIn(int seconds) {
        // ignore
        }

        public void reconnectionSuccessful() {
        // ignore
        }
    });
    connection.addPacketListener(new PacketListener() {

        public void processPacket(Packet packet) {
            if (packet == null || packet.getError() != null) {
                return;
            }
            // The packet is correct.
            Privacy privacy = (Privacy) packet;
            // Notifies the event to the listeners.
            synchronized (listeners) {
                for (PrivacyListListener listener : listeners) {
                    // Notifies the created or updated privacy lists
                    for (Map.Entry<String, List<PrivacyItem>> entry : privacy.getItemLists().entrySet()) {
                        String listName = entry.getKey();
                        List<PrivacyItem> items = entry.getValue();
                        if (items.isEmpty()) {
                            listener.updatedPrivacyList(listName);
                        } else {
                            listener.setPrivacyList(listName, items);
                        }
                    }
                }
            }
            // Send a result package acknowledging the reception of a privacy package.
            // Prepare the IQ packet to send
            IQ iq = new IQ() {

                public String getChildElementXML() {
                    return "";
                }
            };
            iq.setType(IQ.Type.RESULT);
            iq.setFrom(packet.getFrom());
            iq.setPacketID(packet.getPacketID());
            // Send create & join packet.
            connection.sendPacket(iq);
        }
    }, packetFilter);
}
Also used : Packet(org.jivesoftware.smack.packet.Packet) Privacy(org.jivesoftware.smack.packet.Privacy) IQ(org.jivesoftware.smack.packet.IQ) PrivacyItem(org.jivesoftware.smack.packet.PrivacyItem)

Example 7 with Privacy

use of org.jivesoftware.smack.packet.Privacy in project ecf by eclipse.

the class PrivacyListManager method getRequest.

/**
 * Send the {@link Privacy} packet to the server in order to know some privacy content and then
 * waits for the answer.
 *
 * @param requestPrivacy is the {@link Privacy} packet configured properly whose XML
 *      will be sent to the server.
 * @return a new {@link Privacy} with the data received from the server.
 * @exception XMPPException if the request or the answer failed, it raises an exception.
 */
private Privacy getRequest(Privacy requestPrivacy) throws XMPPException {
    // The request is a get iq type
    requestPrivacy.setType(Privacy.Type.GET);
    requestPrivacy.setFrom(this.getUser());
    // Filter packets looking for an answer from the server.
    PacketFilter responseFilter = new PacketIDFilter(requestPrivacy.getPacketID());
    PacketCollector response = connection.createPacketCollector(responseFilter);
    // Send create & join packet.
    connection.sendPacket(requestPrivacy);
    // Wait up to a certain number of seconds for a reply.
    Privacy privacyAnswer = (Privacy) response.nextResult(SmackConfiguration.getPacketReplyTimeout());
    // Stop queuing results
    response.cancel();
    // Interprete the result and answer the privacy only if it is valid
    if (privacyAnswer == null) {
        throw new XMPPException("No response from server.");
    } else if (privacyAnswer.getError() != null) {
        throw new XMPPException(privacyAnswer.getError());
    }
    return privacyAnswer;
}
Also used : Privacy(org.jivesoftware.smack.packet.Privacy)

Example 8 with Privacy

use of org.jivesoftware.smack.packet.Privacy in project ecf by eclipse.

the class PrivacyListManager method getPrivacyLists.

/**
 * Answer every privacy list with the allowed and blocked permissions.
 *
 * @return an array of privacy lists.
 * @throws XMPPException if an error occurs.
 */
public PrivacyList[] getPrivacyLists() throws XMPPException {
    Privacy privacyAnswer = this.getPrivacyWithListNames();
    Set<String> names = privacyAnswer.getPrivacyListNames();
    PrivacyList[] lists = new PrivacyList[names.size()];
    boolean isActiveList;
    boolean isDefaultList;
    int index = 0;
    for (String listName : names) {
        isActiveList = listName.equals(privacyAnswer.getActiveName());
        isDefaultList = listName.equals(privacyAnswer.getDefaultName());
        lists[index] = new PrivacyList(isActiveList, isDefaultList, listName, getPrivacyListItems(listName));
        index = index + 1;
    }
    return lists;
}
Also used : Privacy(org.jivesoftware.smack.packet.Privacy)

Example 9 with Privacy

use of org.jivesoftware.smack.packet.Privacy in project ecf by eclipse.

the class PrivacyListManager method declineDefaultList.

/**
 * Client declines the use of default lists.
 *
 * @throws XMPPException if an error occurs.
 */
public void declineDefaultList() throws XMPPException {
    // The request of the list is an privacy message with an empty list
    Privacy request = new Privacy();
    request.setDeclineDefaultList(true);
    // Send the package to the server
    setRequest(request);
}
Also used : Privacy(org.jivesoftware.smack.packet.Privacy)

Example 10 with Privacy

use of org.jivesoftware.smack.packet.Privacy in project ecf by eclipse.

the class PrivacyListManager method updatePrivacyList.

/**
 * The client has edited an existing list. It updates the server content with the resulting
 * list of privacy items. The {@link PrivacyItem} list MUST contain all elements in the
 * list (not the "delta").
 *
 * @param listName the list that has changed its content.
 * @param privacyItems a List with every privacy item in the list.
 * @throws XMPPException if an error occurs.
 */
public void updatePrivacyList(String listName, List<PrivacyItem> privacyItems) throws XMPPException {
    // Build the privacy package to add or update the new list
    Privacy request = new Privacy();
    request.setPrivacyList(listName, privacyItems);
    // Send the package to the server
    setRequest(request);
}
Also used : Privacy(org.jivesoftware.smack.packet.Privacy)

Aggregations

Privacy (org.jivesoftware.smack.packet.Privacy)13 PrivacyItem (org.jivesoftware.smack.packet.PrivacyItem)3 DefaultPacketExtension (org.jivesoftware.smack.packet.DefaultPacketExtension)1 IQ (org.jivesoftware.smack.packet.IQ)1 Packet (org.jivesoftware.smack.packet.Packet)1