diff --git a/core/src/main/java/org/mercury_im/messenger/core/centers/ConnectionCenter.java b/core/src/main/java/org/mercury_im/messenger/core/centers/ConnectionCenter.java index 2f3e6e8..57f9d92 100644 --- a/core/src/main/java/org/mercury_im/messenger/core/centers/ConnectionCenter.java +++ b/core/src/main/java/org/mercury_im/messenger/core/centers/ConnectionCenter.java @@ -102,12 +102,7 @@ public class ConnectionCenter { connectionMap.put(account.getId(), connection); // initialize new connection - RosterStore rosterStore = new RosterStore(rosterRepository); - rosterStore.setAccountId(account.getId()); - rosterStore.subscribe(); - connection.getRoster().setRosterStore(rosterStore); - - messageStore.registerForMercuryConnection(connection); + initializeConnection(connection); if (account.getEnabled()) { LOGGER.log(Level.INFO, "Connecting..."); @@ -168,6 +163,19 @@ public class ConnectionCenter { return new MercuryConnection(tcpConnection, accountModel.getId()); } + public void initializeConnection(MercuryConnection connection) { + // Register roster store + RosterStore rosterStore = new RosterStore(rosterRepository); + rosterStore.setAccountId(connection.getAccountId()); + rosterStore.subscribe(); + connection.getRoster().setRosterStore(rosterStore); + + // Register message store + messageStore.registerForMercuryConnection(connection); + + // + } + /** * Set Client State Indication status to active. *