Skip to content

Commit fda2d8f

Browse files
committed
refactor: always use predicate
1 parent 69bddb0 commit fda2d8f

File tree

2 files changed

+27
-17
lines changed

2 files changed

+27
-17
lines changed

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

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import java.util.HashMap;
2020
import java.util.HashSet;
2121
import java.util.Map;
22-
import java.util.Objects;
2322
import java.util.Optional;
2423
import java.util.Set;
2524
import java.util.concurrent.ScheduledThreadPoolExecutor;
@@ -111,14 +110,7 @@ public void handleEvent(Event event) {
111110
lock.lock();
112111
log.debug("Received event: {}", event);
113112

114-
Predicate<CustomResource> selector = event.getCustomResourcesSelector();
115-
if (selector == null) {
116-
final String uid =
117-
Objects.requireNonNull(event.getRelatedCustomResourceUid(), "CustomResource UID");
118-
119-
selector = customResource -> Objects.equals(uid, customResource.getMetadata().getUid());
120-
}
121-
113+
final Predicate<CustomResource> selector = event.getCustomResourcesSelector();
122114
for (String uid : eventSourceManager.getLatestResourceUids(selector)) {
123115
eventBuffer.addEvent(uid, event);
124116
executeBufferedEvents(uid);
Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,32 @@
11
package io.javaoperatorsdk.operator.processing.event;
22

33
import io.fabric8.kubernetes.client.CustomResource;
4+
import java.util.Objects;
45
import java.util.function.Predicate;
56

67
@SuppressWarnings("rawtypes")
78
public class DefaultEvent implements Event {
8-
9-
private final String relatedCustomResourceUid;
109
private final Predicate<CustomResource> customResourcesSelector;
1110
private final EventSource eventSource;
1211

1312
public DefaultEvent(String relatedCustomResourceUid, EventSource eventSource) {
14-
this.relatedCustomResourceUid = relatedCustomResourceUid;
15-
this.customResourcesSelector = null;
13+
this.customResourcesSelector = new UIDMatchingPredicate(relatedCustomResourceUid);
1614
this.eventSource = eventSource;
1715
}
1816

1917
public DefaultEvent(Predicate<CustomResource> customResourcesSelector, EventSource eventSource) {
20-
this.relatedCustomResourceUid = null;
2118
this.customResourcesSelector = customResourcesSelector;
2219
this.eventSource = eventSource;
2320
}
2421

2522
@Override
2623
public String getRelatedCustomResourceUid() {
27-
return relatedCustomResourceUid;
24+
if (customResourcesSelector instanceof UIDMatchingPredicate) {
25+
UIDMatchingPredicate resourcesSelector = (UIDMatchingPredicate) customResourcesSelector;
26+
return resourcesSelector.uid;
27+
} else {
28+
return null;
29+
}
2830
}
2931

3032
public Predicate<CustomResource> getCustomResourcesSelector() {
@@ -40,12 +42,28 @@ public EventSource getEventSource() {
4042
public String toString() {
4143
return "{ class="
4244
+ this.getClass().getName()
43-
+ ", relatedCustomResourceUid="
44-
+ relatedCustomResourceUid
4545
+ ", customResourcesSelector="
4646
+ customResourcesSelector
4747
+ ", eventSource="
4848
+ eventSource
4949
+ " }";
5050
}
51+
52+
private static class UIDMatchingPredicate implements Predicate<CustomResource> {
53+
private final String uid;
54+
55+
public UIDMatchingPredicate(String uid) {
56+
this.uid = uid;
57+
}
58+
59+
@Override
60+
public boolean test(CustomResource customResource) {
61+
return Objects.equals(uid, customResource.getMetadata().getUid());
62+
}
63+
64+
@Override
65+
public String toString() {
66+
return "UIDMatchingPredicate{uid='" + uid + "'}";
67+
}
68+
}
5169
}

0 commit comments

Comments
 (0)