package org.jivesoftware.smack;
import java.util.List;
import org.jivesoftware.smack.packet.RosterPacket;
/**
* This is an interface for persistent roster storage needed to implement XEP-0237
* @author Till Klocke
*
*/
public interface RosterStorage {
/**
* This method returns a List object with all RosterEntries contained in this store.
* @return List object with all entries in local roster storage
*/
public List<RosterPacket.Item> getEntries();
/**
* This method returns the RosterEntry which belongs to a specific user.
* @param bareJid The bare JID of the RosterEntry
* @return The RosterEntry which belongs to that user
*/
public RosterPacket.Item getEntry(String bareJid);
/**
* Returns the number of entries in this roster store
* @return the number of entries
*/
public int getEntryCount();
/**
* This methos returns the version number as specified by the "ver" attribute
* of the local store. Should return an emtpy string if store is empty.
* @return local roster version
*/
public String getRosterVersion();
/**
* This method stores a new RosterEntry in this store or overrides an existing one.
* If ver is null an IllegalArgumentException should be thrown.
* @param entry the entry to save
* @param ver the version this roster push contained
*/
public void addEntry(RosterPacket.Item item, String ver);
/**
* Removes an entry from the persistent storage
* @param bareJid The bare JID of the entry to be removed
*/
public void removeEntry(String bareJid);
/**
* Update an entry which has been modified locally
* @param entry the entry to be updated
*/
public void updateLocalEntry(RosterPacket.Item item);
}