deps: Refactor dependencies (#3224)

* remove spring dep
move junit, logging, mockito under dep mgmt

* upgrade anti-corruption-layer deps

* async method invocation

* balking, bloc

* bridge to bytecode

* caching

* callback - cqrs

* component - health check

* hexagonal - metadata mapping

* rest of the patterns

* remove checkstyle, take spotless into use
This commit is contained in:
Ilkka Seppälä
2025-03-29 19:34:27 +02:00
committed by GitHub
parent 371439aeaa
commit 0ca162a55c
1863 changed files with 14403 additions and 17632 deletions
@@ -67,12 +67,7 @@ public class App {
var baelish = new LordBaelish(kingsHand, Event.STARK_SIGHTED);
var emitters = List.of(
kingsHand,
baelish,
varys,
scout
);
var emitters = List.of(kingsHand, baelish, varys, scout);
Arrays.stream(Weekday.values())
.<Consumer<? super EventEmitter>>map(day -> emitter -> emitter.timePasses(day))
@@ -26,12 +26,9 @@ package com.iluwatar.event.aggregator;
import lombok.RequiredArgsConstructor;
/**
* Event enumeration.
*/
/** Event enumeration. */
@RequiredArgsConstructor
public enum Event {
WHITE_WALKERS_SIGHTED("White walkers sighted"),
STARK_SIGHTED("Stark sighted"),
WARSHIPS_APPROACHING("Warships approaching"),
@@ -29,9 +29,7 @@ import java.util.LinkedList;
import java.util.List;
import java.util.Map;
/**
* EventEmitter is the base class for event producers that can be observed.
*/
/** EventEmitter is the base class for event producers that can be observed. */
public abstract class EventEmitter {
private final Map<Event, List<EventObserver>> observerLists;
@@ -46,11 +44,11 @@ public abstract class EventEmitter {
}
/**
* Registers observer for specific event in the related list.
*
* @param obs the observer that observers this emitter
* @param e the specific event for that observation occurs
* */
* Registers observer for specific event in the related list.
*
* @param obs the observer that observers this emitter
* @param e the specific event for that observation occurs
*/
public final void registerObserver(EventObserver obs, Event e) {
if (!observerLists.containsKey(e)) {
observerLists.put(e, new LinkedList<>());
@@ -62,9 +60,7 @@ public abstract class EventEmitter {
protected void notifyObservers(Event e) {
if (observerLists.containsKey(e)) {
observerLists
.get(e)
.forEach(observer -> observer.onEvent(e));
observerLists.get(e).forEach(observer -> observer.onEvent(e));
}
}
@@ -24,11 +24,8 @@
*/
package com.iluwatar.event.aggregator;
/**
* Observers of events implement this interface.
*/
/** Observers of events implement this interface. */
public interface EventObserver {
void onEvent(Event e);
}
@@ -26,9 +26,7 @@ package com.iluwatar.event.aggregator;
import lombok.extern.slf4j.Slf4j;
/**
* KingJoffrey observes events from {@link KingsHand}.
*/
/** KingJoffrey observes events from {@link KingsHand}. */
@Slf4j
public class KingJoffrey implements EventObserver {
@@ -24,13 +24,10 @@
*/
package com.iluwatar.event.aggregator;
/**
* KingsHand observes events from multiple sources and delivers them to listeners.
*/
/** KingsHand observes events from multiple sources and delivers them to listeners. */
public class KingsHand extends EventEmitter implements EventObserver {
public KingsHand() {
}
public KingsHand() {}
public KingsHand(EventObserver obs, Event e) {
super(obs, e);
@@ -43,7 +40,8 @@ public class KingsHand extends EventEmitter implements EventObserver {
@Override
public void timePasses(Weekday day) {
// This method is intentionally left empty because KingsHand does not handle time-based events directly.
// This method is intentionally left empty because KingsHand does not handle time-based events
// directly.
// It serves as a placeholder to fulfill the EventObserver interface contract.
}
}
@@ -24,13 +24,10 @@
*/
package com.iluwatar.event.aggregator;
/**
* LordBaelish produces events.
*/
/** LordBaelish produces events. */
public class LordBaelish extends EventEmitter {
public LordBaelish() {
}
public LordBaelish() {}
public LordBaelish(EventObserver obs, Event e) {
super(obs, e);
@@ -26,14 +26,11 @@ package com.iluwatar.event.aggregator;
import lombok.extern.slf4j.Slf4j;
/**
* LordVarys produces events.
*/
/** LordVarys produces events. */
@Slf4j
public class LordVarys extends EventEmitter implements EventObserver {
public LordVarys() {
}
public LordVarys() {}
public LordVarys(EventObserver obs, Event e) {
super(obs, e);
@@ -46,7 +43,6 @@ public class LordVarys extends EventEmitter implements EventObserver {
}
}
@Override
public void onEvent(Event e) {
notifyObservers(e);
@@ -24,13 +24,10 @@
*/
package com.iluwatar.event.aggregator;
/**
* Scout produces events.
*/
/** Scout produces events. */
public class Scout extends EventEmitter {
public Scout() {
}
public Scout() {}
public Scout(EventObserver obs, Event e) {
super(obs, e);
@@ -26,12 +26,9 @@ package com.iluwatar.event.aggregator;
import lombok.RequiredArgsConstructor;
/**
* Weekday enumeration.
*/
/** Weekday enumeration. */
@RequiredArgsConstructor
public enum Weekday {
MONDAY("Monday"),
TUESDAY("Tuesday"),
WEDNESDAY("Wednesday"),
@@ -24,23 +24,19 @@
*/
package com.iluwatar.event.aggregator;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
/**
* Application test
*/
import org.junit.jupiter.api.Test;
/** Application test */
class AppTest {
/**
* Issue: Add at least one assertion to this test case.
* Solution: Inserted assertion to check whether the execution of the main method in {@link App#main(String[])}
* throws an exception.
* Issue: Add at least one assertion to this test case. Solution: Inserted assertion to check
* whether the execution of the main method in {@link App#main(String[])} throws an exception.
*/
@Test
void shouldExecuteApplicationWithoutException() {
assertDoesNotThrow(() -> App.main(new String[]{}));
assertDoesNotThrow(() -> App.main(new String[] {}));
}
}
@@ -42,32 +42,26 @@ import org.junit.jupiter.api.Test;
*/
abstract class EventEmitterTest<E extends EventEmitter> {
/**
* Factory used to create a new instance of the test object with a default observer
*/
/** Factory used to create a new instance of the test object with a default observer */
private final BiFunction<EventObserver, Event, E> factoryWithDefaultObserver;
/**
* Factory used to create a new instance of the test object without passing a default observer
*/
/** Factory used to create a new instance of the test object without passing a default observer */
private final Supplier<E> factoryWithoutDefaultObserver;
/**
* The day of the week an event is expected
*/
/** The day of the week an event is expected */
private final Weekday specialDay;
/**
* The expected event, emitted on the special day
*/
/** The expected event, emitted on the special day */
private final Event event;
/**
* Create a new event emitter test, using the given test object factories, special day and event
*/
EventEmitterTest(final Weekday specialDay, final Event event,
final BiFunction<EventObserver, Event, E> factoryWithDefaultObserver,
final Supplier<E> factoryWithoutDefaultObserver) {
EventEmitterTest(
final Weekday specialDay,
final Event event,
final BiFunction<EventObserver, Event, E> factoryWithDefaultObserver,
final Supplier<E> factoryWithoutDefaultObserver) {
this.specialDay = specialDay;
this.event = event;
@@ -90,12 +84,15 @@ abstract class EventEmitterTest<E extends EventEmitter> {
* received the correct event on the special day.
*
* @param specialDay The special day on which an event is emitted
* @param event The expected event emitted by the test object
* @param emitter The event emitter
* @param observers The registered observer mocks
* @param event The expected event emitted by the test object
* @param emitter The event emitter
* @param observers The registered observer mocks
*/
private void testAllDays(final Weekday specialDay, final Event event, final E emitter,
final EventObserver... observers) {
private void testAllDays(
final Weekday specialDay,
final Event event,
final E emitter,
final EventObserver... observers) {
for (final var weekday : Weekday.values()) {
// Pass each week of the day, day by day to the event emitter
@@ -121,7 +118,7 @@ abstract class EventEmitterTest<E extends EventEmitter> {
* event emitter without a default observer
*
* @param specialDay The special day on which an event is emitted
* @param event The expected event emitted by the test object
* @param event The expected event emitted by the test object
*/
private void testAllDaysWithoutDefaultObserver(final Weekday specialDay, final Event event) {
final var observer1 = mock(EventObserver.class);
@@ -138,7 +135,7 @@ abstract class EventEmitterTest<E extends EventEmitter> {
* Go over every day of the month, and check if the event is emitted on the given day.
*
* @param specialDay The special day on which an event is emitted
* @param event The expected event emitted by the test object
* @param event The expected event emitted by the test object
*/
private void testAllDaysWithDefaultObserver(final Weekday specialDay, final Event event) {
final var defaultObserver = mock(EventObserver.class);
@@ -151,5 +148,4 @@ abstract class EventEmitterTest<E extends EventEmitter> {
testAllDays(specialDay, event, emitter, defaultObserver, observer1, observer2);
}
}
@@ -30,21 +30,18 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
import java.util.Arrays;
import org.junit.jupiter.api.Test;
/**
* EventTest
*
*/
/** EventTest */
class EventTest {
/**
* Verify if every event has a non-null, non-empty description
*/
/** Verify if every event has a non-null, non-empty description */
@Test
void testToString() {
Arrays.stream(Event.values()).map(Event::toString).forEach(toString -> {
assertNotNull(toString);
assertFalse(toString.trim().isEmpty());
});
Arrays.stream(Event.values())
.map(Event::toString)
.forEach(
toString -> {
assertNotNull(toString);
assertFalse(toString.trim().isEmpty());
});
}
}
}
@@ -37,10 +37,7 @@ import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.slf4j.LoggerFactory;
/**
* KingJoffreyTest
*
*/
/** KingJoffreyTest */
class KingJoffreyTest {
private InMemoryAppender appender;
@@ -55,22 +52,21 @@ class KingJoffreyTest {
appender.stop();
}
/**
* Test if {@link KingJoffrey} tells us what event he received
*/
/** Test if {@link KingJoffrey} tells us what event he received */
@Test
void testOnEvent() {
final var kingJoffrey = new KingJoffrey();
IntStream.range(0, Event.values().length).forEach(i -> {
assertEquals(i, appender.getLogSize());
var event = Event.values()[i];
kingJoffrey.onEvent(event);
final var expectedMessage = "Received event from the King's Hand: " + event;
assertEquals(expectedMessage, appender.getLastMessage());
assertEquals(i + 1, appender.getLogSize());
});
IntStream.range(0, Event.values().length)
.forEach(
i -> {
assertEquals(i, appender.getLogSize());
var event = Event.values()[i];
kingJoffrey.onEvent(event);
final var expectedMessage = "Received event from the King's Hand: " + event;
assertEquals(expectedMessage, appender.getLastMessage());
assertEquals(i + 1, appender.getLogSize());
});
}
private static class InMemoryAppender extends AppenderBase<ILoggingEvent> {
@@ -94,5 +90,4 @@ class KingJoffreyTest {
return log.size();
}
}
}
@@ -33,15 +33,10 @@ import static org.mockito.Mockito.verifyNoMoreInteractions;
import java.util.Arrays;
import org.junit.jupiter.api.Test;
/**
* KingsHandTest
*
*/
/** KingsHandTest */
class KingsHandTest extends EventEmitterTest<KingsHand> {
/**
* Create a new test instance, using the correct object factory
*/
/** Create a new test instance, using the correct object factory */
public KingsHandTest() {
super(null, null, KingsHand::new, KingsHand::new);
}
@@ -64,12 +59,12 @@ class KingsHandTest extends EventEmitterTest<KingsHand> {
verifyNoMoreInteractions(observer);
// Verify if each event is passed on to the observer, nothing less, nothing more.
Arrays.stream(Event.values()).forEach(event -> {
kingsHand.onEvent(event);
verify(observer, times(1)).onEvent(eq(event));
verifyNoMoreInteractions(observer);
});
Arrays.stream(Event.values())
.forEach(
event -> {
kingsHand.onEvent(event);
verify(observer, times(1)).onEvent(eq(event));
verifyNoMoreInteractions(observer);
});
}
}
}
@@ -24,17 +24,11 @@
*/
package com.iluwatar.event.aggregator;
/**
* LordBaelishTest
*
*/
/** LordBaelishTest */
class LordBaelishTest extends EventEmitterTest<LordBaelish> {
/**
* Create a new test instance, using the correct object factory
*/
/** Create a new test instance, using the correct object factory */
public LordBaelishTest() {
super(Weekday.FRIDAY, Event.STARK_SIGHTED, LordBaelish::new, LordBaelish::new);
}
}
}
@@ -24,17 +24,11 @@
*/
package com.iluwatar.event.aggregator;
/**
* LordVarysTest
*
*/
/** LordVarysTest */
class LordVarysTest extends EventEmitterTest<LordVarys> {
/**
* Create a new test instance, using the correct object factory
*/
/** Create a new test instance, using the correct object factory */
public LordVarysTest() {
super(Weekday.SATURDAY, Event.TRAITOR_DETECTED, LordVarys::new, LordVarys::new);
}
}
}
@@ -24,19 +24,12 @@
*/
package com.iluwatar.event.aggregator;
/**
* ScoutTest
*
*/
/** ScoutTest */
class ScoutTest extends EventEmitterTest<Scout> {
/**
* Create a new test instance, using the correct object factory
*/
/** Create a new test instance, using the correct object factory */
public ScoutTest() {
super(Weekday.TUESDAY, Event.WARSHIPS_APPROACHING, Scout::new, Scout::new);
super(Weekday.TUESDAY, Event.WARSHIPS_APPROACHING, Scout::new, Scout::new);
}
}
}
@@ -30,19 +30,17 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
import java.util.Arrays;
import org.junit.jupiter.api.Test;
/**
* WeekdayTest
*
*/
/** WeekdayTest */
class WeekdayTest {
@Test
void testToString() {
Arrays.stream(Weekday.values()).forEach(weekday -> {
final String toString = weekday.toString();
assertNotNull(toString);
assertEquals(weekday.name(), toString.toUpperCase());
});
Arrays.stream(Weekday.values())
.forEach(
weekday -> {
final String toString = weekday.toString();
assertNotNull(toString);
assertEquals(weekday.name(), toString.toUpperCase());
});
}
}
}