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 (),
0 commit comments