@Override public void sendLocalMessage(Message message) { sendMessage(MgnlContext.getUser().getName(), message); }
@Override public void sendGroupMessage(final String groupName, final Message message) { Collection<String> userNames = securitySupportProvider.get().getUserManager().getUsersWithGroup(groupName, true); for (String userName : userNames) { sendMessage(userName, message); } // Reset it to null simply to avoid assumptions about the id in calling code message.setId(null); }
@Override public void broadcastMessage(Message message) { Collection<User> users; try { users = securitySupportProvider.get().getUserManager().getAllUsers(); } catch (UnsupportedOperationException e) { logger.error("Unable to broadcast message because UserManager does not support enumerating its users", e); return; } for (User user : users) { sendMessage(user.getName(), message); } // Reset it to null simply to avoid assumptions about the id in calling code message.setId(null); }
@Test public void testDoesNotInvokeListenerAfterUnregistration() throws RepositoryException { // GIVEN MessagesManager.MessageListener listener1 = mock(MessagesManager.MessageListener.class); messagesManager.registerMessagesListener("bob", listener1); MessagesManager.MessageListener listener2 = mock(MessagesManager.MessageListener.class); messagesManager.registerMessagesListener("bob", listener2); Message message = new Message(); message.setType(MessageType.ERROR); message.setSubject("subject"); message.setMessage("message"); // WHEN messagesManager.sendMessage("bob", message); verify(listener1, times(1)).messageSent(any(Message.class)); verify(listener2, times(1)).messageSent(any(Message.class)); // WHEN messagesManager.unregisterMessagesListener("bob", listener1); messagesManager.sendMessage("bob", message); // THEN verify(listener1, times(1)).messageSent(any(Message.class)); // still one, not called verify(listener2, times(2)).messageSent(any(Message.class)); } }
@Test public void testDoNoClearAlreadyClearedMessage() throws RepositoryException { // GIVEN MessagesManager.MessageListener listener = mock(MessagesManager.MessageListener.class); messagesManager.registerMessagesListener("bob", listener); Message message = new Message(); message.setType(MessageType.ERROR); message.setSubject("subject"); message.setMessage("message"); message.setCleared(true); messagesManager.sendMessage("bob", message); // WHEN // this happens when clicking on a message row in pulse messagesManager.clearMessage("bob", message.getId()); // THEN verify(listener, never()).messageCleared(any(Message.class)); }
@Test public void testSendMessage() throws RepositoryException { // GIVEN MessagesManager.MessageListener listenerA = mock(MessagesManager.MessageListener.class); messagesManager.registerMessagesListener("alice", listenerA); MessagesManager.MessageListener listenerB = mock(MessagesManager.MessageListener.class); messagesManager.registerMessagesListener("bob", listenerB); MessagesManager.MessageListener listenerC = mock(MessagesManager.MessageListener.class); messagesManager.registerMessagesListener("charlie", listenerC); Message message = new Message(); message.setType(MessageType.ERROR); message.setSubject("subject"); message.setMessage("message"); // WHEN messagesManager.sendMessage("bob", message); // THEN assertNotNull(message.getId()); verify(listenerA, never()).messageSent(any(Message.class)); verify(listenerB).messageSent(any(Message.class)); verify(listenerC, never()).messageSent(any(Message.class)); assertFalse(session.nodeExists("/alice")); assertTrue(session.nodeExists("/bob/0")); assertFalse(session.nodeExists("/charlie")); assertThat(session.getNode("/bob").getPrimaryNodeType().getName(), equalTo(NodeTypes.Content.NAME)); assertThat(session.getNode("/bob/0").getPrimaryNodeType().getName(), equalTo(MessageStore.MESSAGE_NODE_TYPE)); }