Skip to content

Commit 7abecd9

Browse files
authored
More nullness annotations, and fix some more compiler warnings (kroxylicious#2060)
* More nullness annotations, and fix some more compiler warnings Signed-off-by: Tom Bentley <[email protected]>
1 parent 6dcb514 commit 7abecd9

File tree

8 files changed

+33
-20
lines changed

8 files changed

+33
-20
lines changed

kroxylicious-operator/src/main/java/io/kroxylicious/kubernetes/api/common/FilterRef.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212

1313
import io.kroxylicious.kubernetes.filter.api.v1alpha1.KafkaProtocolFilter;
1414

15+
import edu.umd.cs.findbugs.annotations.NonNull;
16+
1517
/**
1618
* A reference, used in a kubernetes resource, to a KafkaProxy resource in the same namespace.
1719
*/
@@ -41,12 +43,14 @@ public FilterRefBuilder edit() {
4143
}
4244

4345
@JsonIgnore
46+
@NonNull
4447
@Override
4548
public String getGroup() {
4649
return "filter.kroxylicious.io";
4750
}
4851

4952
@JsonIgnore
53+
@NonNull
5054
@Override
5155
public String getKind() {
5256
return "KafkaProtocolFilter";

kroxylicious-operator/src/main/java/io/kroxylicious/kubernetes/api/common/IngressRef.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212

1313
import io.kroxylicious.kubernetes.api.v1alpha1.KafkaProxyIngress;
1414

15+
import edu.umd.cs.findbugs.annotations.NonNull;
16+
1517
/**
1618
* A reference, used in a kubernetes resource, to a KafkaProxyIngress resource in the same namespace.
1719
*/
@@ -41,12 +43,14 @@ public IngressRefBuilder edit() {
4143
}
4244

4345
@JsonIgnore
46+
@NonNull
4447
@Override
4548
public String getGroup() {
4649
return "kroxylicious.io";
4750
}
4851

4952
@JsonIgnore
53+
@NonNull
5054
@Override
5155
public String getKind() {
5256
return "KafkaProxyIngress";

kroxylicious-operator/src/main/java/io/kroxylicious/kubernetes/api/common/KafkaServiceRef.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212

1313
import io.kroxylicious.kubernetes.api.v1alpha1.KafkaService;
1414

15+
import edu.umd.cs.findbugs.annotations.NonNull;
16+
1517
/**
1618
* A reference, used in a kubernetes resource, to a KafkaService resource in the same namespace.
1719
*/
@@ -41,12 +43,14 @@ public KafkaServiceRefBuilder edit() {
4143
}
4244

4345
@JsonIgnore
46+
@NonNull
4447
@Override
4548
public String getGroup() {
4649
return "kroxylicious.io";
4750
}
4851

4952
@JsonIgnore
53+
@NonNull
5054
@Override
5155
public String getKind() {
5256
return "KafkaService";

kroxylicious-operator/src/main/java/io/kroxylicious/kubernetes/api/common/LocalRef.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,21 +9,26 @@
99
import java.util.Comparator;
1010
import java.util.Objects;
1111

12+
import edu.umd.cs.findbugs.annotations.Nullable;
13+
1214
/**
1315
* Abstraction for references in one kubernetes resource to some kubernetes resource in the same namespace.
1416
* Two LocalRefs are equal iff they have the same group, kind and name (they don't need to have the same class)
1517
* @param <T> The Java type of the resource
1618
*/
1719
public abstract class LocalRef<T> implements Comparable<LocalRef<T>> {
1820

19-
public static final Comparator<LocalRef<?>> COMPARATOR = Comparator.<LocalRef<?>, String> comparing(LocalRef::getKind)
20-
.thenComparing(LocalRef::getGroup)
21-
.thenComparing(LocalRef::getName);
21+
public static final Comparator<LocalRef<?>> COMPARATOR = Comparator.<LocalRef<?>, String> comparing(LocalRef::getKind, Comparator.nullsLast(String::compareTo))
22+
.thenComparing(LocalRef::getGroup, Comparator.nullsLast(String::compareTo))
23+
.thenComparing(LocalRef::getName, Comparator.nullsLast(String::compareTo));
2224

25+
@Nullable
2326
public abstract String getGroup();
2427

28+
@Nullable
2529
public abstract String getKind();
2630

31+
@Nullable
2732
public abstract String getName();
2833

2934
@Override

kroxylicious-operator/src/main/java/io/kroxylicious/kubernetes/api/common/ProxyRef.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212

1313
import io.kroxylicious.kubernetes.api.v1alpha1.KafkaProxy;
1414

15+
import edu.umd.cs.findbugs.annotations.NonNull;
16+
1517
/**
1618
* A reference, used in a kubernetes resource, to a KafkaProxy resource in the same namespace.
1719
*/
@@ -41,12 +43,14 @@ public ProxyRefBuilder edit() {
4143
}
4244

4345
@JsonIgnore
46+
@NonNull
4447
@Override
4548
public String getGroup() {
4649
return "kroxylicious.io";
4750
}
4851

4952
@JsonIgnore
53+
@NonNull
5054
@Override
5155
public String getKind() {
5256
return "KafkaProxy";

kroxylicious-operator/src/main/java/io/kroxylicious/kubernetes/operator/ResourcesUtil.java

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
package io.kroxylicious.kubernetes.operator;
88

99
import java.util.Collection;
10-
import java.util.Comparator;
1110
import java.util.List;
1211
import java.util.Locale;
1312
import java.util.Map;
@@ -24,14 +23,11 @@
2423
import io.fabric8.kubernetes.api.model.ObjectMeta;
2524
import io.fabric8.kubernetes.api.model.OwnerReference;
2625
import io.fabric8.kubernetes.api.model.OwnerReferenceBuilder;
27-
import io.javaoperatorsdk.operator.api.reconciler.Context;
2826
import io.javaoperatorsdk.operator.api.reconciler.EventSourceContext;
2927
import io.javaoperatorsdk.operator.processing.event.ResourceID;
3028

3129
import io.kroxylicious.kubernetes.api.common.AnyLocalRefBuilder;
3230
import io.kroxylicious.kubernetes.api.common.LocalRef;
33-
import io.kroxylicious.kubernetes.api.v1alpha1.KafkaProxy;
34-
import io.kroxylicious.kubernetes.api.v1alpha1.VirtualKafkaCluster;
3531

3632
public class ResourcesUtil {
3733

@@ -87,12 +83,6 @@ public static <O extends HasMetadata> OwnerReference newOwnerReferenceTo(O owner
8783
.build();
8884
}
8985

90-
public static Stream<VirtualKafkaCluster> clustersInNameOrder(Context<KafkaProxy> context) {
91-
return context.getSecondaryResources(VirtualKafkaCluster.class)
92-
.stream()
93-
.sorted(Comparator.comparing(ResourcesUtil::name));
94-
}
95-
9686
public static String name(HasMetadata resource) {
9787
return resource.getMetadata().getName();
9888
}
@@ -158,6 +148,7 @@ public static <T extends HasMetadata> Optional<T> findOnlyResourceNamed(String n
158148
return Collectors.toMap(ResourcesUtil::toLocalRef, Function.identity());
159149
}
160150

151+
@SuppressWarnings({ "unchecked", "rawtypes" })
161152
public static <T extends HasMetadata> LocalRef<T> toLocalRef(T ref) {
162153
return (LocalRef) new AnyLocalRefBuilder()
163154
.withKind(ref.getKind())
@@ -217,8 +208,9 @@ static <O extends HasMetadata, R extends HasMetadata> Set<ResourceID> localRefAs
217208
return Set.of(new ResourceID(ref.getName(), owner.getMetadata().getNamespace()));
218209
}
219210

220-
static <O extends HasMetadata, R extends HasMetadata> Set<ResourceID> localRefsAsResourceIds(O owner, Optional<List<? extends LocalRef<R>>> refs) {
221-
return refs.orElse(List.of()).stream()
211+
static <O extends HasMetadata, R extends HasMetadata> Set<ResourceID> localRefsAsResourceIds(O owner,
212+
List<? extends LocalRef<R>> refs) {
213+
return refs.stream()
222214
.map(ref -> new ResourceID(ref.getName(), owner.getMetadata().getNamespace()))
223215
.collect(Collectors.toSet());
224216
}

kroxylicious-operator/src/main/java/io/kroxylicious/kubernetes/operator/VirtualKafkaClusterReconciler.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ public List<EventSource<?, VirtualKafkaCluster>> prepareEventSources(EventSource
253253
VirtualKafkaCluster.class)
254254
.withName(INGRESSES_EVENT_SOURCE_NAME)
255255
.withPrimaryToSecondaryMapper((VirtualKafkaCluster cluster) -> ResourcesUtil.localRefsAsResourceIds(cluster,
256-
Optional.ofNullable(cluster.getSpec()).map(VirtualKafkaClusterSpec::getIngressRefs)))
256+
Optional.ofNullable(cluster.getSpec()).map(VirtualKafkaClusterSpec::getIngressRefs).orElse(List.of())))
257257
.withSecondaryToPrimaryMapper(ingress -> ResourcesUtil.findReferrersMulti(context,
258258
ingress,
259259
VirtualKafkaCluster.class,
@@ -265,7 +265,7 @@ public List<EventSource<?, VirtualKafkaCluster>> prepareEventSources(EventSource
265265
VirtualKafkaCluster.class)
266266
.withName(FILTERS_EVENT_SOURCE_NAME)
267267
.withPrimaryToSecondaryMapper((VirtualKafkaCluster cluster) -> ResourcesUtil.localRefsAsResourceIds(cluster,
268-
Optional.ofNullable(cluster.getSpec()).map(VirtualKafkaClusterSpec::getFilterRefs)))
268+
Optional.ofNullable(cluster.getSpec()).map(VirtualKafkaClusterSpec::getFilterRefs).orElse(List.of())))
269269
.withSecondaryToPrimaryMapper(filter -> ResourcesUtil.findReferrersMulti(context,
270270
filter,
271271
VirtualKafkaCluster.class,

kroxylicious-operator/src/main/java/io/kroxylicious/kubernetes/operator/resolver/ClusterResolutionResult.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,13 @@ public record ClusterResolutionResult(VirtualKafkaCluster cluster,
2929
public Stream<LocalRef<?>> findDanglingReferences(LocalRef<?> from, String kindTo) {
3030
Objects.requireNonNull(from);
3131
Objects.requireNonNull(kindTo);
32-
return danglingReferences.stream().filter(r -> r.from().equals(from) && r.to.getKind().equals(kindTo)).map(DanglingReference::to);
32+
return danglingReferences.stream().filter(r -> r.from().equals(from) && kindTo.equals(r.to.getKind())).map(DanglingReference::to);
3333
}
3434

3535
public Stream<LocalRef<?>> findDanglingReferences(String fromKind, String toKind) {
3636
Objects.requireNonNull(fromKind);
3737
Objects.requireNonNull(toKind);
38-
return danglingReferences.stream().filter(r -> r.from().getKind().equals(fromKind) && r.to().getKind().equals(toKind))
38+
return danglingReferences.stream().filter(r -> fromKind.equals(r.from().getKind()) && toKind.equals(r.to().getKind()))
3939
.map(DanglingReference::to);
4040
}
4141

@@ -56,7 +56,7 @@ public Stream<LocalRef<?>> findResourcesWithResolvedRefsFalse() {
5656
}
5757

5858
public Stream<LocalRef<?>> findResourcesWithResolvedRefsFalse(String kind) {
59-
return findResourcesWithResolvedRefsFalse().filter(r -> r.getKind().equals(kind));
59+
return findResourcesWithResolvedRefsFalse().filter(r -> kind.equals(r.getKind()));
6060
}
6161

6262
ClusterResolutionResult addAllResourcesHavingResolvedRefsFalse(Set<LocalRef<?>> resolvedRefsFalse) {

0 commit comments

Comments
 (0)