Skip to content

Commit 786886e

Browse files
committed
feat: make EventDispatcher & ExecutionScope parameterized
1 parent 9161d44 commit 786886e

File tree

3 files changed

+32
-28
lines changed

3 files changed

+32
-28
lines changed

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/Operator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ public <R extends CustomResource> void register(
137137
}
138138

139139
final var client = k8sClient.customResources(resClass);
140-
EventDispatcher dispatcher = new EventDispatcher(controller, finalizer, client);
140+
EventDispatcher<R> dispatcher = new EventDispatcher<>(controller, finalizer, client);
141141

142142
CustomResourceCache customResourceCache = new CustomResourceCache(objectMapper);
143143
DefaultEventHandler defaultEventHandler =

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

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -21,31 +21,36 @@
2121
/**
2222
* Dispatches events to the Controller and handles Finalizers for a single type of Custom Resource.
2323
*/
24-
public class EventDispatcher {
24+
public class EventDispatcher<R extends CustomResource> {
2525

2626
private static final Logger log = LoggerFactory.getLogger(EventDispatcher.class);
2727

28-
private final ResourceController controller;
28+
private final ResourceController<R> controller;
2929
private final String resourceFinalizer;
30-
private final CustomResourceFacade customResourceFacade;
30+
private final CustomResourceFacade<R> customResourceFacade;
3131
private EventSourceManager eventSourceManager;
3232

3333
EventDispatcher(
34-
ResourceController controller, String finalizer, CustomResourceFacade customResourceFacade) {
34+
ResourceController<R> controller,
35+
String finalizer,
36+
CustomResourceFacade<R> customResourceFacade) {
3537
this.controller = controller;
3638
this.customResourceFacade = customResourceFacade;
3739
this.resourceFinalizer = finalizer;
3840
}
3941

40-
public EventDispatcher(ResourceController controller, String finalizer, MixedOperation client) {
41-
this(controller, finalizer, new CustomResourceFacade(client));
42+
public EventDispatcher(
43+
ResourceController<R> controller,
44+
String finalizer,
45+
MixedOperation<R, KubernetesResourceList<R>, Resource<R>> client) {
46+
this(controller, finalizer, new CustomResourceFacade<>(client));
4247
}
4348

4449
public void setEventSourceManager(EventSourceManager eventSourceManager) {
4550
this.eventSourceManager = eventSourceManager;
4651
}
4752

48-
public PostExecutionControl handleExecution(ExecutionScope executionScope) {
53+
public PostExecutionControl handleExecution(ExecutionScope<R> executionScope) {
4954
try {
5055
return handleDispatch(executionScope);
5156
} catch (RuntimeException e) {
@@ -54,8 +59,8 @@ public PostExecutionControl handleExecution(ExecutionScope executionScope) {
5459
}
5560
}
5661

57-
private PostExecutionControl handleDispatch(ExecutionScope executionScope) {
58-
CustomResource resource = executionScope.getCustomResource();
62+
private PostExecutionControl handleDispatch(ExecutionScope<R> executionScope) {
63+
R resource = executionScope.getCustomResource();
5964
log.debug(
6065
"Handling events: {} for resource {}", executionScope.getEvents(), resource.getMetadata());
6166

@@ -72,8 +77,8 @@ private PostExecutionControl handleDispatch(ExecutionScope executionScope) {
7277
executionScope);
7378
return PostExecutionControl.defaultDispatch();
7479
}
75-
Context context =
76-
new DefaultContext(
80+
Context<R> context =
81+
new DefaultContext<>(
7782
eventSourceManager,
7883
new EventList(executionScope.getEvents()),
7984
executionScope.getRetryInfo());
@@ -85,7 +90,7 @@ private PostExecutionControl handleDispatch(ExecutionScope executionScope) {
8590
}
8691

8792
private PostExecutionControl handleCreateOrUpdate(
88-
ExecutionScope executionScope, CustomResource resource, Context context) {
93+
ExecutionScope<R> executionScope, R resource, Context<R> context) {
8994
if (!resource.hasFinalizer(resourceFinalizer) && !resource.isMarkedForDeletion()) {
9095
/* We always add the finalizer if missing and not marked for deletion.
9196
We execute the controller processing only for processing the event sent as a results
@@ -100,9 +105,8 @@ private PostExecutionControl handleCreateOrUpdate(
100105
getUID(resource),
101106
getVersion(resource),
102107
executionScope);
103-
UpdateControl<? extends CustomResource> updateControl =
104-
controller.createOrUpdateResource(resource, context);
105-
CustomResource updatedCustomResource = null;
108+
UpdateControl<R> updateControl = controller.createOrUpdateResource(resource, context);
109+
R updatedCustomResource = null;
106110
if (updateControl.isUpdateCustomResourceAndStatusSubResource()) {
107111
updatedCustomResource = updateCustomResource(updateControl.getCustomResource());
108112
updateControl
@@ -126,15 +130,15 @@ private PostExecutionControl handleCreateOrUpdate(
126130
}
127131
}
128132

129-
private PostExecutionControl handleDelete(CustomResource resource, Context context) {
133+
private PostExecutionControl handleDelete(R resource, Context<R> context) {
130134
log.debug(
131135
"Executing delete for resource: {} with version: {}",
132136
getUID(resource),
133137
getVersion(resource));
134138
DeleteControl deleteControl = controller.deleteResource(resource, context);
135139
boolean hasFinalizer = resource.hasFinalizer(resourceFinalizer);
136140
if (deleteControl == DeleteControl.DEFAULT_DELETE && hasFinalizer) {
137-
CustomResource customResource = removeFinalizer(resource);
141+
R customResource = removeFinalizer(resource);
138142
return PostExecutionControl.customResourceUpdated(customResource);
139143
} else {
140144
log.debug(
@@ -147,20 +151,20 @@ private PostExecutionControl handleDelete(CustomResource resource, Context conte
147151
}
148152
}
149153

150-
private void updateCustomResourceWithFinalizer(CustomResource resource) {
154+
private void updateCustomResourceWithFinalizer(R resource) {
151155
log.debug(
152156
"Adding finalizer for resource: {} version: {}", getUID(resource), getVersion(resource));
153157
resource.addFinalizer(resourceFinalizer);
154158
replace(resource);
155159
}
156160

157-
private CustomResource updateCustomResource(CustomResource resource) {
161+
private R updateCustomResource(R resource) {
158162
log.debug("Updating resource: {} with version: {}", getUID(resource), getVersion(resource));
159163
log.trace("Resource before update: {}", resource);
160164
return replace(resource);
161165
}
162166

163-
private CustomResource removeFinalizer(CustomResource resource) {
167+
private R removeFinalizer(R resource) {
164168
log.debug(
165169
"Removing finalizer on resource: {} with version: {}",
166170
getUID(resource),
@@ -169,7 +173,7 @@ private CustomResource removeFinalizer(CustomResource resource) {
169173
return customResourceFacade.replaceWithLock(resource);
170174
}
171175

172-
private CustomResource replace(CustomResource resource) {
176+
private R replace(R resource) {
173177
log.debug(
174178
"Trying to replace resource {}, version: {}",
175179
resource.getMetadata().getName(),

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@
55
import io.javaoperatorsdk.operator.processing.event.Event;
66
import java.util.List;
77

8-
public class ExecutionScope {
8+
public class ExecutionScope<R extends CustomResource> {
99

10-
private List<Event> events;
10+
private final List<Event> events;
1111
// the latest custom resource from cache
12-
private CustomResource customResource;
13-
private RetryInfo retryInfo;
12+
private final R customResource;
13+
private final RetryInfo retryInfo;
1414

15-
public ExecutionScope(List<Event> list, CustomResource customResource, RetryInfo retryInfo) {
15+
public ExecutionScope(List<Event> list, R customResource, RetryInfo retryInfo) {
1616
this.events = list;
1717
this.customResource = customResource;
1818
this.retryInfo = retryInfo;
@@ -22,7 +22,7 @@ public List<Event> getEvents() {
2222
return events;
2323
}
2424

25-
public CustomResource getCustomResource() {
25+
public R getCustomResource() {
2626
return customResource;
2727
}
2828

0 commit comments

Comments
 (0)