Skip to content

Commit 6028d8a

Browse files
committed
refactor: retrieve EventHandler from EventSourceRegistry
1 parent 59a3ed7 commit 6028d8a

File tree

8 files changed

+27
-26
lines changed

8 files changed

+27
-26
lines changed

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/EventSourceManager.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,11 @@ private void initRetryEventSource() {
5252
registerEventSource(retryAndRescheduleTimerEventSource);
5353
}
5454

55+
@Override
56+
public EventHandler getEventHandler() {
57+
return eventProcessor;
58+
}
59+
5560
@Override
5661
public void start() throws OperatorException {
5762
eventProcessor.start();
@@ -96,7 +101,6 @@ public final void registerEventSource(EventSource eventSource)
96101
lock.lock();
97102
try {
98103
eventSources.put(keyFor(eventSource), eventSource);
99-
eventSource.setEventHandler(eventProcessor);
100104
eventSource.setEventRegistry(this);
101105
} catch (Throwable e) {
102106
if (e instanceof IllegalStateException || e instanceof MissingCRDException) {

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/AbstractEventSource.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
public abstract class AbstractEventSource<P extends HasMetadata> implements EventSource<P> {
77

8-
private volatile EventHandler eventHandler;
98
private volatile EventSourceRegistry<P> eventSourceRegistry;
109
private final Class<?> resourceClass;
1110

@@ -18,13 +17,8 @@ public Class<?> getResourceClass() {
1817
return resourceClass;
1918
}
2019

21-
@Override
22-
public void setEventHandler(EventHandler eventHandler) {
23-
this.eventHandler = eventHandler;
24-
}
25-
2620
protected EventHandler getEventHandler() {
27-
return eventHandler;
21+
return eventSourceRegistry.getEventHandler();
2822
}
2923

3024
@Override

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/EventSource.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,10 @@
22

33
import io.fabric8.kubernetes.api.model.HasMetadata;
44
import io.javaoperatorsdk.operator.processing.LifecycleAware;
5-
import io.javaoperatorsdk.operator.processing.event.EventHandler;
65
import io.javaoperatorsdk.operator.processing.event.ResourceID;
76

87
public interface EventSource<P extends HasMetadata> extends LifecycleAware {
98

10-
void setEventHandler(EventHandler eventHandler);
11-
129
void setEventRegistry(EventSourceRegistry<P> registry);
1310

1411
EventSourceRegistry<P> getEventRegistry();

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/EventSourceRegistry.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import io.fabric8.kubernetes.api.model.HasMetadata;
66
import io.javaoperatorsdk.operator.OperatorException;
7+
import io.javaoperatorsdk.operator.processing.event.EventHandler;
78

89
public interface EventSourceRegistry<T extends HasMetadata> {
910

@@ -25,4 +26,6 @@ void registerEventSource(EventSource<? extends HasMetadata> eventSource)
2526
<R extends HasMetadata> ResourceEventSource<R, T> getResourceEventSourceFor(
2627
Class<R> dependentType,
2728
String... qualifier);
29+
30+
EventHandler getEventHandler();
2831
}

operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/EventSourceManagerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public void registersEventSource() {
3131
Set<EventSource> registeredSources = eventSourceManager.getRegisteredEventSources();
3232
assertThat(registeredSources).contains(eventSource);
3333

34-
verify(eventSource, times(1)).setEventHandler(eq(eventProcessorMock));
34+
verify(eventSource, times(1)).setEventRegistry(eq(eventSourceManager));
3535
}
3636

3737
@Test

operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/source/ControllerResourceEventSourceTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ class ControllerResourceEventSourceTest {
3737

3838
@BeforeEach
3939
public void setup() {
40-
controllerResourceEventSource.setEventHandler(eventHandler);
40+
when(registry.getEventHandler()).thenReturn(eventHandler);
41+
controllerResourceEventSource.setEventRegistry(registry);
4142
}
4243

4344
@Test

operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/source/ResourceEventFilterTest.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ class ResourceEventFilterTest {
3535
@BeforeEach
3636
public void before() {
3737
this.eventHandler = mock(EventHandler.class);
38+
when(registry.getEventHandler()).thenReturn(eventHandler);
3839
}
3940

4041
@Test
@@ -48,7 +49,6 @@ public void eventFilteredByCustomPredicate() {
4849

4950
var controller = new TestController(config);
5051
var eventSource = new ControllerResourceEventSource<>(controller, registry);
51-
eventSource.setEventHandler(eventHandler);
5252

5353
TestCustomResource cr = TestUtils.testCustomResource();
5454
cr.getMetadata().setFinalizers(List.of(FINALIZER));
@@ -76,7 +76,6 @@ public void eventFilteredByCustomPredicateAndGenerationAware() {
7676

7777
var controller = new TestController(config);
7878
var eventSource = new ControllerResourceEventSource<>(controller, registry);
79-
eventSource.setEventHandler(eventHandler);
8079

8180
TestCustomResource cr = TestUtils.testCustomResource();
8281
cr.getMetadata().setFinalizers(List.of(FINALIZER));
@@ -106,7 +105,6 @@ public void observedGenerationFiltering() {
106105

107106
var controller = new ObservedGenController(config);
108107
var eventSource = new ControllerResourceEventSource<>(controller, registry);
109-
eventSource.setEventHandler(eventHandler);
110108

111109
ObservedGenCustomResource cr = new ObservedGenCustomResource();
112110
cr.setMetadata(new ObjectMeta());
@@ -137,7 +135,6 @@ public void eventNotFilteredByCustomPredicateIfFinalizerIsRequired() {
137135

138136
var controller = new TestController(config);
139137
var eventSource = new ControllerResourceEventSource<>(controller, registry);
140-
eventSource.setEventHandler(eventHandler);
141138

142139
TestCustomResource cr = TestUtils.testCustomResource();
143140
cr.getMetadata().setGeneration(1L);

operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/source/TimerEventSourceTest.java

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,21 +19,26 @@
1919

2020
import static org.assertj.core.api.Assertions.assertThat;
2121
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
22+
import static org.mockito.Mockito.mock;
23+
import static org.mockito.Mockito.when;
2224

2325
class TimerEventSourceTest {
2426

2527
public static final int INITIAL_DELAY = 50;
2628
public static final int PERIOD = 50;
2729

2830
private TimerEventSource<TestCustomResource> timerEventSource;
29-
private CapturingEventHandler eventHandlerMock;
31+
private CapturingEventHandler eventHandler;
3032

3133
@BeforeEach
3234
public void setup() {
33-
eventHandlerMock = new CapturingEventHandler();
35+
eventHandler = new CapturingEventHandler();
3436

3537
timerEventSource = new TimerEventSource<>();
36-
timerEventSource.setEventHandler(eventHandlerMock);
38+
EventSourceRegistry registryMock = mock(EventSourceRegistry.class);
39+
when(registryMock.getEventHandler()).thenReturn(eventHandler);
40+
41+
timerEventSource.setEventRegistry(registryMock);
3742
timerEventSource.start();
3843
}
3944

@@ -43,8 +48,8 @@ public void schedulesOnce() {
4348

4449
timerEventSource.scheduleOnce(customResource, PERIOD);
4550

46-
untilAsserted(() -> assertThat(eventHandlerMock.events).hasSize(1));
47-
untilAsserted(PERIOD * 2, 0, () -> assertThat(eventHandlerMock.events).hasSize(1));
51+
untilAsserted(() -> assertThat(eventHandler.events).hasSize(1));
52+
untilAsserted(PERIOD * 2, 0, () -> assertThat(eventHandler.events).hasSize(1));
4853
}
4954

5055
@Test
@@ -54,7 +59,7 @@ public void canCancelOnce() {
5459
timerEventSource.scheduleOnce(customResource, PERIOD);
5560
timerEventSource.cancelOnceSchedule(ResourceID.fromResource(customResource));
5661

57-
untilAsserted(() -> assertThat(eventHandlerMock.events).isEmpty());
62+
untilAsserted(() -> assertThat(eventHandler.events).isEmpty());
5863
}
5964

6065
@Test
@@ -64,7 +69,7 @@ public void canRescheduleOnceEvent() {
6469
timerEventSource.scheduleOnce(customResource, PERIOD);
6570
timerEventSource.scheduleOnce(customResource, 2 * PERIOD);
6671

67-
untilAsserted(PERIOD * 2, PERIOD, () -> assertThat(eventHandlerMock.events).hasSize(1));
72+
untilAsserted(PERIOD * 2, PERIOD, () -> assertThat(eventHandler.events).hasSize(1));
6873
}
6974

7075
@Test
@@ -75,7 +80,7 @@ public void deRegistersOnceEventSources() {
7580
timerEventSource
7681
.cleanupForResource(ResourceID.fromResource(customResource));
7782

78-
untilAsserted(() -> assertThat(eventHandlerMock.events).isEmpty());
83+
untilAsserted(() -> assertThat(eventHandler.events).isEmpty());
7984
}
8085

8186
@Test
@@ -92,7 +97,7 @@ public void eventNotFiredIfStopped() throws IOException {
9297
timerEventSource.scheduleOnce(TestUtils.testCustomResource(), PERIOD);
9398
timerEventSource.stop();
9499

95-
untilAsserted(() -> assertThat(eventHandlerMock.events).isEmpty());
100+
untilAsserted(() -> assertThat(eventHandler.events).isEmpty());
96101
}
97102

98103
private void untilAsserted(ThrowingRunnable assertion) {

0 commit comments

Comments
 (0)