@Override
    public Iterator<String> getUsernames(String jid) {
        List<String> answer = new ArrayList<>();
        Connection con = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        try {
            con = DbConnectionManager.getConnection();
            pstmt = con.prepareStatement(LOAD_USERNAMES);
            pstmt.setString(1, jid);
            rs = pstmt.executeQuery();
            while (rs.next()) {
                answer.add(rs.getString(1));
            }
        }
        catch (SQLException e) {
            Log.error(LocaleUtils.getLocalizedString("admin.error"), e);
        }
        finally {
            DbConnectionManager.closeConnection(rs, pstmt, con);
        }
        return answer.iterator();
    }
Defines the provider methods required for creating, reading, updating and deleting roster
items.<p>

Rosters are another user resource accessed via the user or chatbot's long ID. A user/chatbot
may have zero or more roster items and each roster item may have zero or more groups. Each
roster item is additionally keyed on a XMPP jid. In most cases, the entire roster will be read
in from memory and manipulated or sent to the user. However some operations will need to retrieve
specific roster items rather than the entire roster.

@author Iain Shigeoka
xmppserver/src/main/java/org/jivesoftware/openfire/roster/DefaultRosterItemProvider.java