Skip to content

Commit b9748ca

Browse files
committed
* Event becomes non generic
* EventList class introduced for convenient helper methods
1 parent 134dd05 commit b9748ca

File tree

10 files changed

+55
-16
lines changed

10 files changed

+55
-16
lines changed

operator-framework/src/main/java/io/javaoperatorsdk/operator/api/Context.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import io.fabric8.kubernetes.client.CustomResource;
44
import io.javaoperatorsdk.operator.processing.event.Event;
5+
import io.javaoperatorsdk.operator.processing.event.EventList;
56
import io.javaoperatorsdk.operator.processing.event.EventSourceManager;
67

78
import java.util.List;
@@ -10,6 +11,6 @@ public interface Context<T extends CustomResource> {
1011

1112
EventSourceManager getEventSourceManager();
1213

13-
List<Event> getEvents();
14+
EventList getEvents();
1415

1516
}

operator-framework/src/main/java/io/javaoperatorsdk/operator/api/DefaultContext.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,17 @@
22

33
import io.fabric8.kubernetes.client.CustomResource;
44
import io.javaoperatorsdk.operator.processing.event.Event;
5+
import io.javaoperatorsdk.operator.processing.event.EventList;
56
import io.javaoperatorsdk.operator.processing.event.EventSourceManager;
67

78
import java.util.List;
89

910
public class DefaultContext<T extends CustomResource> implements Context<T> {
1011

11-
private final List<Event> events;
12+
private final EventList events;
1213
private final EventSourceManager eventSourceManager;
1314

14-
public DefaultContext(EventSourceManager eventSourceManager, List<Event> events) {
15+
public DefaultContext(EventSourceManager eventSourceManager, EventList events) {
1516
this.events = events;
1617
this.eventSourceManager = eventSourceManager;
1718
}
@@ -22,7 +23,7 @@ public EventSourceManager getEventSourceManager() {
2223
}
2324

2425
@Override
25-
public List<Event> getEvents() {
26+
public EventList getEvents() {
2627
return events;
2728
}
2829

operator-framework/src/main/java/io/javaoperatorsdk/operator/processing/DefaultEventHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public void setDefaultEventSourceManager(DefaultEventSourceManager defaultEventS
5151
}
5252

5353
@Override
54-
public void handleEvent(Event<? extends EventSource> event) {
54+
public void handleEvent(Event event) {
5555
try {
5656
lock.lock();
5757
log.debug("Received event: {}", event);

operator-framework/src/main/java/io/javaoperatorsdk/operator/processing/EventDispatcher.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import io.fabric8.kubernetes.client.dsl.Resource;
77
import io.javaoperatorsdk.operator.api.*;
88
import io.javaoperatorsdk.operator.processing.event.Event;
9+
import io.javaoperatorsdk.operator.processing.event.EventList;
910
import io.javaoperatorsdk.operator.processing.event.EventSourceManager;
1011
import io.javaoperatorsdk.operator.processing.event.internal.CustomResourceEvent;
1112
import org.slf4j.Logger;
@@ -68,7 +69,7 @@ private PostExecutionControl handDispatch(ExecutionScope executionScope) {
6869
log.debug("Skipping event dispatching since its marked for deletion but has no finalizer: {}", executionScope);
6970
return PostExecutionControl.defaultDispatch();
7071
}
71-
Context context = new DefaultContext(eventSourceManager, executionScope.getEvents());
72+
Context context = new DefaultContext(eventSourceManager, new EventList(executionScope.getEvents()));
7273
if (markedForDeletion(resource)) {
7374
return handleDelete(resource, context);
7475
} else {
@@ -109,7 +110,7 @@ private boolean skipBecauseOfGenerations(ExecutionScope executionScope) {
109110
return false;
110111
}
111112
if (executionScope.getEvents().size() == 1) {
112-
Event<?> event = executionScope.getEvents().get(0);
113+
Event event = executionScope.getEvents().get(0);
113114
if (event instanceof CustomResourceEvent) {
114115
Long actualGeneration = executionScope.getCustomResource().getMetadata().getGeneration();
115116
Long lastGeneration = lastGenerationProcessedSuccessfully.get(executionScope.getCustomResourceUid());

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
package io.javaoperatorsdk.operator.processing.event;
22

3-
public abstract class AbstractEvent<T extends EventSource> implements Event<T> {
3+
public abstract class AbstractEvent implements Event{
44

55
private final String relatedCustomResourceUid;
66

7-
private final T eventSource;
7+
private final EventSource eventSource;
88

9-
public AbstractEvent(String relatedCustomResourceUid, T eventSource) {
9+
public AbstractEvent(String relatedCustomResourceUid, EventSource eventSource) {
1010
this.relatedCustomResourceUid = relatedCustomResourceUid;
1111
this.eventSource = eventSource;
1212
}
@@ -17,7 +17,7 @@ public String getRelatedCustomResourceUid() {
1717
}
1818

1919
@Override
20-
public T getEventSource() {
20+
public EventSource getEventSource() {
2121
return eventSource;
2222
}
2323

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package io.javaoperatorsdk.operator.processing.event;
22

3-
public interface Event<T extends EventSource> {
3+
public interface Event {
44

55
String getRelatedCustomResourceUid();
66

7-
T getEventSource();
7+
EventSource getEventSource();
88
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22

33
public interface EventHandler {
44

5-
void handleEvent(Event<? extends EventSource> event);
5+
void handleEvent(Event event);
66

77
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package io.javaoperatorsdk.operator.processing.event;
2+
3+
import java.util.*;
4+
import java.util.stream.Collectors;
5+
6+
public class EventList {
7+
8+
private final List<Event> eventList;
9+
10+
public EventList(List<Event> eventList) {
11+
this.eventList = eventList;
12+
}
13+
14+
List<Event> getEventList() {
15+
return eventList;
16+
}
17+
18+
public <T extends Event> Optional<T> getLatestOfType(Class<T> eventType) {
19+
ListIterator<Event> iterator = eventList.listIterator(eventList.size() - 1);
20+
while (iterator.hasPrevious()) {
21+
Event event = iterator.previous();
22+
if (event.getClass().isAssignableFrom(eventType)) {
23+
return Optional.of((T)event);
24+
}
25+
}
26+
27+
List<Event> eventsOfType = eventList.stream()
28+
.filter(event -> event.getClass().isAssignableFrom(eventType))
29+
.collect(Collectors.toList());
30+
if (eventsOfType.size() > 0) {
31+
return Optional.of((T) eventsOfType.get(eventsOfType.size() - 1));
32+
} else {
33+
return Optional.empty();
34+
}
35+
}
36+
}

operator-framework/src/main/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceEvent.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import io.javaoperatorsdk.operator.processing.KubernetesResourceUtils;
66
import io.javaoperatorsdk.operator.processing.event.AbstractEvent;
77

8-
public class CustomResourceEvent extends AbstractEvent<CustomResourceEventSource> {
8+
public class CustomResourceEvent extends AbstractEvent {
99

1010
private final Watcher.Action action;
1111
private final CustomResource customResource;

operator-framework/src/main/java/io/javaoperatorsdk/operator/processing/event/internal/TimerEvent.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import io.javaoperatorsdk.operator.processing.event.AbstractEvent;
44

5-
public class TimerEvent extends AbstractEvent<TimerEventSource> {
5+
public class TimerEvent extends AbstractEvent {
66

77
public TimerEvent(String relatedCustomResourceUid, TimerEventSource eventSource) {
88
super(relatedCustomResourceUid, eventSource);

0 commit comments

Comments
 (0)