Thomas Vachuska
Committed by Gerrit Code Review

Simplifying removeListener to merely log when remove indicates no such listener.

Change-Id: I6d47fd70938b5e049e523f94d3e7242661fb154d
...@@ -20,7 +20,6 @@ import org.slf4j.Logger; ...@@ -20,7 +20,6 @@ import org.slf4j.Logger;
20 import java.util.Set; 20 import java.util.Set;
21 import java.util.concurrent.CopyOnWriteArraySet; 21 import java.util.concurrent.CopyOnWriteArraySet;
22 22
23 -import static com.google.common.base.Preconditions.checkArgument;
24 import static com.google.common.base.Preconditions.checkNotNull; 23 import static com.google.common.base.Preconditions.checkNotNull;
25 import static org.slf4j.LoggerFactory.getLogger; 24 import static org.slf4j.LoggerFactory.getLogger;
26 25
...@@ -33,8 +32,6 @@ public class ListenerRegistry<E extends Event, L extends EventListener<E>> ...@@ -33,8 +32,6 @@ public class ListenerRegistry<E extends Event, L extends EventListener<E>>
33 32
34 private final Logger log = getLogger(getClass()); 33 private final Logger log = getLogger(getClass());
35 34
36 - private volatile boolean shutdown = false;
37 -
38 private long lastStart; 35 private long lastStart;
39 private L lastListener; 36 private L lastListener;
40 37
...@@ -61,8 +58,8 @@ public class ListenerRegistry<E extends Event, L extends EventListener<E>> ...@@ -61,8 +58,8 @@ public class ListenerRegistry<E extends Event, L extends EventListener<E>>
61 */ 58 */
62 public void removeListener(L listener) { 59 public void removeListener(L listener) {
63 checkNotNull(listener, "Listener cannot be null"); 60 checkNotNull(listener, "Listener cannot be null");
64 - if (checkForNonRegistrant()) { 61 + if (!listeners.remove(listener)) {
65 - checkArgument(listeners.remove(listener), "Listener not registered"); 62 + log.warn("Listener {} not registered", listener);
66 } 63 }
67 } 64 }
68 65
...@@ -91,41 +88,13 @@ public class ListenerRegistry<E extends Event, L extends EventListener<E>> ...@@ -91,41 +88,13 @@ public class ListenerRegistry<E extends Event, L extends EventListener<E>>
91 } 88 }
92 89
93 /** 90 /**
94 - * Predicate indicating whether we should throw an exception if the
95 - * argument to {@link #removeListener} is not in the current set of
96 - * listeners.
97 - * <p>
98 - * This default implementation returns <code>true</code>.
99 - *
100 - * @return true if non-listed listeners should cause exception on remove
101 - */
102 - protected boolean checkForNonRegistrant() {
103 - return true;
104 - }
105 -
106 - /**
107 * Reports a problem encountered while processing an event. 91 * Reports a problem encountered while processing an event.
108 * 92 *
109 * @param event event being processed 93 * @param event event being processed
110 * @param error error encountered while processing 94 * @param error error encountered while processing
111 */ 95 */
112 protected void reportProblem(E event, Throwable error) { 96 protected void reportProblem(E event, Throwable error) {
113 - if (!shutdown) { 97 + log.warn("Exception encountered while processing event " + event, error);
114 - log.warn("Exception encountered while processing event " + event, error);
115 - }
116 } 98 }
117 99
118 - /**
119 - * Prepares the registry for normal operation.
120 - */
121 - public void activate() {
122 - shutdown = false;
123 - }
124 -
125 - /**
126 - * Prepares the registry for shutdown.
127 - */
128 - public void deactivate() {
129 - shutdown = true;
130 - }
131 } 100 }
......
...@@ -26,13 +26,6 @@ import static org.junit.Assert.assertTrue; ...@@ -26,13 +26,6 @@ import static org.junit.Assert.assertTrue;
26 */ 26 */
27 public class ListenerRegistryTest { 27 public class ListenerRegistryTest {
28 28
29 - private static class RelaxedRegistry extends TestListenerRegistry {
30 - @Override
31 - protected boolean checkForNonRegistrant() {
32 - return false;
33 - }
34 - }
35 -
36 private static final TestEvent FOO_EVENT = 29 private static final TestEvent FOO_EVENT =
37 new TestEvent(TestEvent.Type.FOO, "foo"); 30 new TestEvent(TestEvent.Type.FOO, "foo");
38 private static final TestEvent BAR_EVENT = 31 private static final TestEvent BAR_EVENT =
...@@ -78,16 +71,4 @@ public class ListenerRegistryTest { ...@@ -78,16 +71,4 @@ public class ListenerRegistryTest {
78 assertTrue("BAR not processed", secondListener.events.contains(BAR_EVENT)); 71 assertTrue("BAR not processed", secondListener.events.contains(BAR_EVENT));
79 } 72 }
80 73
81 - @Test(expected = IllegalArgumentException.class)
82 - public void removeNonListenerCausesException() {
83 - manager.removeListener(listener);
84 - }
85 -
86 - @Test
87 - public void removeNonListenerIgnored() {
88 - manager = new RelaxedRegistry();
89 - manager.removeListener(listener);
90 - assertTrue("what?", manager.listeners.isEmpty());
91 - }
92 -
93 } 74 }
......
...@@ -59,8 +59,4 @@ class ModelListenerRegistry ...@@ -59,8 +59,4 @@ class ModelListenerRegistry
59 } 59 }
60 } 60 }
61 61
62 - @Override
63 - protected boolean checkForNonRegistrant() {
64 - return false;
65 - }
66 } 62 }
......