feat: add publish-subscribe design pattern (#2898) (#3223)

* feat: add publisher-subscriber design pattern (#2898)

* fix: check styles on publisher-subscriber design pattern (#2898)

* fix: check styles on publisher-subscriber design pattern (#2898)

* fix: check styles on publisher-subscriber design pattern (#2898)

* fix: improve coverage on publisher-subscriber design pattern (#2898)

* fix: fix dependancy on publisher-subscriber design pattern (#2898)

* fix: fix documentation on publisher-subscriber design pattern (#2898)

* fix: apply spotless on publisher-subscriber design pattern (#2898)

* fix: changes after review on publisher-subscriber design pattern (#2898)

* fix: changes after review on publisher-subscriber design pattern (#2898)

* fix: fix sonar on publisher-subscriber design pattern (#2898)

* fix: fix sonar on publisher-subscriber design pattern (#2898)

---------

Co-authored-by: Sanura Hettiarachchi <sanura.hettiarachchi@tipico.com>
This commit is contained in:
Sanura Hettiarachchi
2025-03-30 19:24:15 +02:00
committed by GitHub
parent 0ca162a55c
commit 418557129b
19 changed files with 1003 additions and 0 deletions
@@ -0,0 +1,40 @@
package com.iluwatar.publish.subscribe;
import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.read.ListAppender;
import java.util.List;
import java.util.stream.Collectors;
import org.junit.jupiter.api.extension.AfterEachCallback;
import org.junit.jupiter.api.extension.BeforeEachCallback;
import org.junit.jupiter.api.extension.ExtensionContext;
import org.slf4j.LoggerFactory;
public class LoggerExtension implements BeforeEachCallback, AfterEachCallback {
private final ListAppender<ILoggingEvent> listAppender = new ListAppender<>();
private final Logger logger = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
@Override
public void afterEach(ExtensionContext extensionContext) throws Exception {
listAppender.stop();
listAppender.list.clear();
logger.detachAppender(listAppender);
}
@Override
public void beforeEach(ExtensionContext extensionContext) throws Exception {
logger.addAppender(listAppender);
listAppender.start();
}
public List<String> getMessages() {
return listAppender.list.stream().map(e -> e.getMessage()).collect(Collectors.toList());
}
public List<String> getFormattedMessages() {
return listAppender.list.stream()
.map(e -> e.getFormattedMessage())
.collect(Collectors.toList());
}
}