For those who, like me, added to jiveRoster table some users manually, they won’t be able to add users to the roster neither by Spark or by the admin console.
The solution passes by changing the source of Openfire (file: src/java/org/jivesoftware/openfire/roster/RosterItemProvider.java ).
Place (before “public RosterItem createItem”):
public int lastRosterID() { int count = 0; Connection con = null; PreparedStatement pstmt = null; ResultSet rs = null; try { con = DbConnectionManager.getConnection();
pstmt = con.prepareStatement( "SELECT rosterID FROM jiveRoster ORDER BY rosterID DESC LIMIT 0,1"); rs = pstmt.executeQuery(); if(rs.next()) { count = rs.getInt(1);
} } catch (SQLException e) {
Log.error(LocaleUtils.getLocalizedString("admin.error"), e); } finally { DbConnectionManager.closeConnection(rs, pstmt, con);
} return count+1; }
And then, replace (or comment) what’s on “long rosterID” by:
long rosterID = lastRosterID();
Hope this was usefull.