Skip to content

Commit 6df8c5a

Browse files
committed
Remove Listenable interface
After discussion with @maarzt, we agreed that we do not need this interface. Most things use the event bus. The only exceptions are LogService and ConsoleService, because we want to maximize performance of event notification. The Listenable interface has the property that it cannot be implemented more than once, which in this case could theoretically be an issue if you want to support notification of multiple event types. While this would not be a problem initially, there is also no great need to keep this interface so general.
1 parent b5ab68a commit 6df8c5a

File tree

7 files changed

+21
-68
lines changed

7 files changed

+21
-68
lines changed

src/main/java/org/scijava/Listenable.java

Lines changed: 0 additions & 51 deletions
This file was deleted.

src/main/java/org/scijava/log/AbstractLogService.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -114,16 +114,14 @@ public Logger subLogger(String name, int level) {
114114
return rootLogger.subLogger(name, level);
115115
}
116116

117-
// -- Listenable methods --
118-
119117
@Override
120-
public void addListener(final LogListener listener) {
121-
rootLogger.addListener(listener);
118+
public void addLogListener(final LogListener listener) {
119+
rootLogger.addLogListener(listener);
122120
}
123121

124122
@Override
125-
public void removeListener(final LogListener listener) {
126-
rootLogger.removeListener(listener);
123+
public void removeLogListener(final LogListener listener) {
124+
rootLogger.removeLogListener(listener);
127125
}
128126

129127
@Override

src/main/java/org/scijava/log/DefaultLogger.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -76,21 +76,20 @@ public void alwaysLog(final int level, final Object msg, final Throwable t) {
7676
messageLogged(new LogMessage(source, level, msg, t));
7777
}
7878

79+
@Override
7980
public Logger subLogger(final String name, final int level) {
8081
LogSource source = getSource().subSource(name);
8182
int actualLevel = source.hasLogLevel() ? source.logLevel() : level;
8283
return new DefaultLogger(this, source, actualLevel);
8384
}
8485

85-
// -- Listenable methods --
86-
8786
@Override
88-
public void addListener(final LogListener listener) {
87+
public void addLogListener(final LogListener listener) {
8988
listeners.add(listener);
9089
}
9190

9291
@Override
93-
public void removeListener(final LogListener listener) {
92+
public void removeLogListener(final LogListener listener) {
9493
listeners.remove(listener);
9594
}
9695

src/main/java/org/scijava/log/Logger.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,6 @@
3737
import static org.scijava.log.LogLevel.TRACE;
3838
import static org.scijava.log.LogLevel.WARN;
3939

40-
import org.scijava.Listenable;
41-
4240
/**
4341
* Interface for objects which can produce log messages.
4442
* <p>
@@ -51,7 +49,7 @@
5149
* @see LogService
5250
*/
5351
@IgnoreAsCallingClass
54-
public interface Logger extends Listenable<LogListener, LogMessage> {
52+
public interface Logger {
5553

5654
default void debug(final Object msg) {
5755
log(DEBUG, msg);
@@ -210,4 +208,13 @@ default Logger subLogger(String name) {
210208
* @param level The log level of the sub logger.
211209
*/
212210
Logger subLogger(String name, int level);
211+
212+
/** Adds an item to the list of registered listeners. */
213+
void addLogListener(LogListener listener);
214+
215+
/** Removes an item from the list of registered listeners. */
216+
void removeLogListener(LogListener listener);
217+
218+
/** Broadcasts the given log message to the registered listeners. */
219+
void notifyListeners(final LogMessage message);
213220
}

src/test/java/org/scijava/log/DefaultLoggerTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public class DefaultLoggerTest {
5454
public void setup() {
5555
logger = new DefaultLogger(message -> {}, LogSource.newRoot(), LogLevel.INFO);
5656
listener = new TestLogListener();
57-
logger.addListener(listener);
57+
logger.addLogListener(listener);
5858
}
5959

6060
@Test
@@ -95,7 +95,7 @@ public void testLogForwarding() {
9595
listener.clear();
9696
Logger sub = logger.subLogger("xyz");
9797
TestLogListener subListener = new TestLogListener();
98-
sub.addListener(subListener);
98+
sub.addLogListener(subListener);
9999

100100
sub.error("Hello World!");
101101
logger.error("Goodbye!");

src/test/java/org/scijava/log/LogServiceTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ public void testListener() {
192192
String msg1 = "Hello World!";
193193
String msg2 = "foo bar";
194194
// process
195-
logService.addListener(listener);
195+
logService.addLogListener(listener);
196196
logService.error(msg1);
197197
logService.subLogger("xyz").debug(msg2);
198198
// test

src/test/java/org/scijava/module/process/LoggerPreprocessorTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public void testInjection() throws InterruptedException, ExecutionException {
6060
final Context context = new Context(CommandService.class);
6161
final CommandService commandService = context.service(CommandService.class);
6262
final TestLogListener listener = new TestLogListener();
63-
context.service(LogService.class).addListener(listener);
63+
context.service(LogService.class).addLogListener(listener);
6464

6565
commandService.run(CommandWithLogger.class, true).get();
6666
assertTrue(listener.hasLogged(m -> m.source().path().contains(CommandWithLogger.class.getSimpleName())));

0 commit comments

Comments
 (0)