@Test public void testRemoveMessageListener() { testAddMessageListener(); int c = msgCount.get(); topic.publish(MessageType.MESSAGE); assertEquals(c, msgCount.get()); }
@Override public void removeMessageListener(GroupTopicListener<T> listener) { synchronized (listeners) { if (listeners.get(listener).decrementAndGet() == 0) listeners.remove(listener); } }
LocalTopic implements GroupTopic<T> { @Override public void removeMessageListener(GroupTopicListener<T> listener) { synchronized (listeners) { if (listeners.get(listener).decrementAndGet() == 0) listeners.remove(listener); } } }
LocalTopic implements GroupTopic<T> { @Override public void removeMessageListener(GroupTopicListener<T> listener) { synchronized (listeners) { if (listeners.get(listener).decrementAndGet() == 0) listeners.remove(listener); } }  }
LocalTopic implements GroupTopic<T> { @Override public void removeMessageListener(GroupTopicListener<T> listener) { synchronized (listeners) { if (listeners.get(listener).decrementAndGet() == 0) listeners.remove(listener); } }  @Override void addMessageListener(GroupTopicListener<T> listener); @Override void removeMessageListener(GroupTopicListener<T> listener); @Override void publish(final T message); }
LocalTopic implements GroupTopic<T> { @Override public void removeMessageListener(GroupTopicListener<T> listener) { synchronized (listeners) { if (listeners.get(listener).decrementAndGet() == 0) listeners.remove(listener); } }  @Override void addMessageListener(GroupTopicListener<T> listener); @Override void removeMessageListener(GroupTopicListener<T> listener); @Override void publish(final T message);  }