@Override public void removeMessage(String userName, String messageId) { messageStore.removeMessageById(userName, messageId); sendMessageRemovedEvent(userName, messageId); }
@Override public void dispatch(MessageEventHandler handler) { if (cleared) { handler.messageCleared(this); } else if (removed) { handler.messageRemoved(this); } else { handler.messageSent(this); } }
@Override public void saveMessage(String userName, Message message) { messageStore.saveMessage(userName, message); } }
@Override public void clearMessage(final String userName, final String messageId) { final Message message = messageStore.findMessageById(userName, messageId); if (message != null && !message.isCleared()) { message.setCleared(true); messageStore.saveMessage(userName, message); sendMessageClearedEvent(userName, message); } }
@Override public void sendUserMessage(final String user, final Message message) { messagesManager.sendMessage(user, message); }
@Override public void sendLocalMessage(Message message) { messagesManager.sendLocalMessage(message); }
@Override public void sendMessage(String userName, Message message) { // We need to set the id to null to make sure each user gets a unique id. Otherwise an id // suitable for a first user gets generated and is then used for everyone, possible overwriting // already existing messages for some users. message.setId(null); messageStore.saveMessage(userName, message); sendMessageSentEvent(userName, message); }
private void sendMessageSentEvent(String userName, Message message) { final List<MessageListener> userListener = new LinkedList<MessageListener>(listeners.get(userName)); for (final MessageListener listener : userListener) { try { listener.messageSent(cloneMessage(message)); } catch (CloneNotSupportedException e) { logger.warn("Exception caught when dispatching event: " + e.getMessage(), e); } } }
@Override public void broadcastMessage(Message message) { messagesManager.broadcastMessage(message); }
@Override public long getMessagesAmount(final String userName, final List<MessageType> types) { return messageStore.getMessageAmount(userName, types); }
@Override public int getNumberOfUnclearedMessagesForUser(String userName) { return messageStore.getNumberOfUnclearedMessagesForUser(userName); }
@Override public Message getMessageById(String userName, String messageId) { return messageStore.findMessageById(userName, messageId); }
@Override public List<Message> getMessageBatch(String userName, List<MessageType> types, Map<String, Boolean> sortCriteria, int limit, int offset) { return messageStore.getMessages(userName, types, sortCriteria, limit, offset); }
@Override public void sendGroupMessage(final String group, final Message message) { messagesManager.sendGroupMessage(group, message); }
@Test public void testUnmarshallWorksEvenIfNotAllPropertiesAreSet() throws Exception { // GIVEN final String id = "1234"; final MockNode messageNode = createEmptyMessageMockNode(id); // WHEN final Message result = store.unmarshallMessage(messageNode); // THEN assertEquals(id, result.getId()); }
@Override public List<Message> getMessagesForUser(String userName) { return messageStore.findAllMessagesForUser(userName); }
@Override public int getNumberOfUnclearedMessagesForUserAndByType(String userName, MessageType type) { return messageStore.getNumberOfUnclearedMessagesForUserAndByType(userName, type); }
@Override public void messageSent(MessageEvent event) { super.messageSent(event); throw new RuntimeException("Intentionally thrown exception for testing"); }
@Override public void messageCleared(MessageEvent event) { super.messageCleared(event); throw new RuntimeException("Intentionally thrown exception for testing"); } }
private void showMessage(String messageText, MessageType type) { final Message message = new Message(); message.setMessage(messageText); message.setType(type); messagesManager.sendLocalMessage(message); }