21
21
/**
22
22
* Dispatches events to the Controller and handles Finalizers for a single type of Custom Resource.
23
23
*/
24
- public class EventDispatcher {
24
+ public class EventDispatcher < R extends CustomResource > {
25
25
26
26
private static final Logger log = LoggerFactory .getLogger (EventDispatcher .class );
27
27
28
- private final ResourceController controller ;
28
+ private final ResourceController < R > controller ;
29
29
private final String resourceFinalizer ;
30
- private final CustomResourceFacade customResourceFacade ;
30
+ private final CustomResourceFacade < R > customResourceFacade ;
31
31
private EventSourceManager eventSourceManager ;
32
32
33
33
EventDispatcher (
34
- ResourceController controller , String finalizer , CustomResourceFacade customResourceFacade ) {
34
+ ResourceController <R > controller ,
35
+ String finalizer ,
36
+ CustomResourceFacade <R > customResourceFacade ) {
35
37
this .controller = controller ;
36
38
this .customResourceFacade = customResourceFacade ;
37
39
this .resourceFinalizer = finalizer ;
38
40
}
39
41
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 ));
42
47
}
43
48
44
49
public void setEventSourceManager (EventSourceManager eventSourceManager ) {
45
50
this .eventSourceManager = eventSourceManager ;
46
51
}
47
52
48
- public PostExecutionControl handleExecution (ExecutionScope executionScope ) {
53
+ public PostExecutionControl handleExecution (ExecutionScope < R > executionScope ) {
49
54
try {
50
55
return handleDispatch (executionScope );
51
56
} catch (RuntimeException e ) {
@@ -54,8 +59,8 @@ public PostExecutionControl handleExecution(ExecutionScope executionScope) {
54
59
}
55
60
}
56
61
57
- private PostExecutionControl handleDispatch (ExecutionScope executionScope ) {
58
- CustomResource resource = executionScope .getCustomResource ();
62
+ private PostExecutionControl handleDispatch (ExecutionScope < R > executionScope ) {
63
+ R resource = executionScope .getCustomResource ();
59
64
log .debug (
60
65
"Handling events: {} for resource {}" , executionScope .getEvents (), resource .getMetadata ());
61
66
@@ -72,8 +77,8 @@ private PostExecutionControl handleDispatch(ExecutionScope executionScope) {
72
77
executionScope );
73
78
return PostExecutionControl .defaultDispatch ();
74
79
}
75
- Context context =
76
- new DefaultContext (
80
+ Context < R > context =
81
+ new DefaultContext <> (
77
82
eventSourceManager ,
78
83
new EventList (executionScope .getEvents ()),
79
84
executionScope .getRetryInfo ());
@@ -85,7 +90,7 @@ private PostExecutionControl handleDispatch(ExecutionScope executionScope) {
85
90
}
86
91
87
92
private PostExecutionControl handleCreateOrUpdate (
88
- ExecutionScope executionScope , CustomResource resource , Context context ) {
93
+ ExecutionScope < R > executionScope , R resource , Context < R > context ) {
89
94
if (!resource .hasFinalizer (resourceFinalizer ) && !resource .isMarkedForDeletion ()) {
90
95
/* We always add the finalizer if missing and not marked for deletion.
91
96
We execute the controller processing only for processing the event sent as a results
@@ -100,9 +105,8 @@ private PostExecutionControl handleCreateOrUpdate(
100
105
getUID (resource ),
101
106
getVersion (resource ),
102
107
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 ;
106
110
if (updateControl .isUpdateCustomResourceAndStatusSubResource ()) {
107
111
updatedCustomResource = updateCustomResource (updateControl .getCustomResource ());
108
112
updateControl
@@ -126,15 +130,15 @@ private PostExecutionControl handleCreateOrUpdate(
126
130
}
127
131
}
128
132
129
- private PostExecutionControl handleDelete (CustomResource resource , Context context ) {
133
+ private PostExecutionControl handleDelete (R resource , Context < R > context ) {
130
134
log .debug (
131
135
"Executing delete for resource: {} with version: {}" ,
132
136
getUID (resource ),
133
137
getVersion (resource ));
134
138
DeleteControl deleteControl = controller .deleteResource (resource , context );
135
139
boolean hasFinalizer = resource .hasFinalizer (resourceFinalizer );
136
140
if (deleteControl == DeleteControl .DEFAULT_DELETE && hasFinalizer ) {
137
- CustomResource customResource = removeFinalizer (resource );
141
+ R customResource = removeFinalizer (resource );
138
142
return PostExecutionControl .customResourceUpdated (customResource );
139
143
} else {
140
144
log .debug (
@@ -147,20 +151,20 @@ private PostExecutionControl handleDelete(CustomResource resource, Context conte
147
151
}
148
152
}
149
153
150
- private void updateCustomResourceWithFinalizer (CustomResource resource ) {
154
+ private void updateCustomResourceWithFinalizer (R resource ) {
151
155
log .debug (
152
156
"Adding finalizer for resource: {} version: {}" , getUID (resource ), getVersion (resource ));
153
157
resource .addFinalizer (resourceFinalizer );
154
158
replace (resource );
155
159
}
156
160
157
- private CustomResource updateCustomResource (CustomResource resource ) {
161
+ private R updateCustomResource (R resource ) {
158
162
log .debug ("Updating resource: {} with version: {}" , getUID (resource ), getVersion (resource ));
159
163
log .trace ("Resource before update: {}" , resource );
160
164
return replace (resource );
161
165
}
162
166
163
- private CustomResource removeFinalizer (CustomResource resource ) {
167
+ private R removeFinalizer (R resource ) {
164
168
log .debug (
165
169
"Removing finalizer on resource: {} with version: {}" ,
166
170
getUID (resource ),
@@ -169,7 +173,7 @@ private CustomResource removeFinalizer(CustomResource resource) {
169
173
return customResourceFacade .replaceWithLock (resource );
170
174
}
171
175
172
- private CustomResource replace (CustomResource resource ) {
176
+ private R replace (R resource ) {
173
177
log .debug (
174
178
"Trying to replace resource {}, version: {}" ,
175
179
resource .getMetadata ().getName (),
0 commit comments