Skip to content

Commit 434e2be

Browse files
committed
fix: make getPlural return Optional to show whether plural is known
Signed-off-by: Chris Laprun <[email protected]>
1 parent 5bc9d4d commit 434e2be

File tree

2 files changed

+25
-4
lines changed

2 files changed

+25
-4
lines changed

Diff for: operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/GroupVersionKind.java

+13-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.javaoperatorsdk.operator.processing;
22

33
import java.util.Objects;
4+
import java.util.Optional;
45

56
import io.fabric8.kubernetes.api.Pluralize;
67
import io.fabric8.kubernetes.api.model.HasMetadata;
@@ -22,7 +23,7 @@ public GroupVersionKind(String apiVersion, String kind) {
2223
this.group = groupAndVersion[0];
2324
this.version = groupAndVersion[1];
2425
}
25-
this.plural = Pluralize.toPlural(kind);
26+
this.plural = null;
2627
this.apiVersion = apiVersion;
2728
}
2829

@@ -34,7 +35,7 @@ public GroupVersionKind(String group, String version, String kind, String plural
3435
this.group = group;
3536
this.version = version;
3637
this.kind = kind;
37-
this.plural = plural != null ? plural : Pluralize.toPlural(kind);
38+
this.plural = plural;
3839
this.apiVersion = (group == null || group.isBlank()) ? version : group + "/" + version;
3940
}
4041

@@ -56,8 +57,16 @@ public String getKind() {
5657
return kind;
5758
}
5859

59-
public String getPlural() {
60-
return plural;
60+
/**
61+
* Returns the plural form associated with the kind if it has been provided explicitly (either
62+
* manually by the user, or determined from the associated resource class definition)
63+
*
64+
* @return {@link Optional#empty()} if the plural form was not provided explicitly (in which case,
65+
* it could be approximated by using {@link Pluralize#toPlural(String)} on the kind), or
66+
* the plural form if it was provided explicitly
67+
*/
68+
public Optional<String> getPlural() {
69+
return Optional.ofNullable(plural);
6170
}
6271

6372
public String apiVersion() {

Diff for: operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/GroupVersionKindTest.java

+12
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
import org.junit.jupiter.api.Test;
44

5+
import io.fabric8.kubernetes.api.model.ConfigMap;
6+
import io.fabric8.kubernetes.api.model.HasMetadata;
7+
58
import static org.assertj.core.api.Assertions.assertThat;
69
import static org.junit.jupiter.api.Assertions.*;
710

@@ -18,4 +21,13 @@ void testInitFromApiVersion() {
1821
assertThat(gvk.getVersion()).isEqualTo("v1");
1922
}
2023

24+
@Test
25+
void pluralShouldOnlyBeProvidedIfExplicitlySet() {
26+
var gvk = new GroupVersionKind("v1", "ConfigMap");
27+
assertThat(gvk.getPlural()).isEmpty();
28+
29+
gvk = GroupVersionKind.gvkFor(ConfigMap.class);
30+
assertThat(gvk.getPlural()).hasValue(HasMetadata.getPlural(ConfigMap.class));
31+
}
32+
2133
}

0 commit comments

Comments
 (0)