Skip to content

Commit a495270

Browse files
authored
Merge pull request #3770 from scovl/scovl-patch-01
Modify ModelMapper to return DynamicKubernetesObject
2 parents ffcafa6 + 67aec36 commit a495270

File tree

2 files changed

+41
-20
lines changed

2 files changed

+41
-20
lines changed

util/src/main/java/io/kubernetes/client/util/ModelMapper.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import io.kubernetes.client.common.KubernetesObject;
2020
import io.kubernetes.client.openapi.ApiException;
2121
import io.kubernetes.client.util.exception.IncompleteDiscoveryException;
22+
import io.kubernetes.client.util.generic.dynamic.DynamicKubernetesObject;
2223
import java.io.File;
2324

2425
import java.io.IOException;
@@ -215,9 +216,16 @@ public static Class<?> getApiTypeClass(String group, String version, String kind
215216
if (clazz != null) {
216217
return clazz;
217218
}
218-
return preBuiltGetApiTypeClass(group, version, kind);
219+
220+
clazz = preBuiltGetApiTypeClass(group, version, kind);
221+
222+
if (clazz != null) {
223+
return clazz;
224+
}
225+
return DynamicKubernetesObject.class;
219226
}
220227

228+
221229
/**
222230
* Gets the GVK by the given model class.
223231
*

util/src/test/java/io/kubernetes/client/util/ModelMapperTest.java

Lines changed: 32 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
import io.kubernetes.client.openapi.models.V1CustomResourceDefinition;
1919
import io.kubernetes.client.openapi.models.V1Deployment;
2020
import io.kubernetes.client.openapi.models.V1Pod;
21+
import io.kubernetes.client.util.generic.dynamic.DynamicKubernetesObject;
22+
2123
import org.junit.jupiter.api.Test;
2224

2325
class ModelMapperTest {
@@ -35,41 +37,52 @@ void prebuiltModelMapping() {
3537

3638
@Test
3739
void addingModel() {
38-
Class objClass =
39-
new Object() {
40-
{
41-
}
42-
}.getClass();
40+
Class<?> objClass = new Object() {}.getClass();
41+
42+
assertThat(ModelMapper.getApiTypeClass("example.io/V1", "Toss"))
43+
.isEqualTo(DynamicKubernetesObject.class);
4344

4445
ModelMapper.addModelMap("example.io", "v1", "Toss", objClass);
4546

4647
assertThat(ModelMapper.getApiTypeClass("example.io/v1", "Toss"))
47-
.isEqualTo(objClass);
48+
.isEqualTo(objClass);
4849
assertThat(ModelMapper.getApiTypeClass("example.io", "v1", "Toss"))
49-
.isEqualTo(objClass);
50+
.isEqualTo(objClass);
51+
52+
assertThat(ModelMapper.getApiTypeClass("example.io/V1", "Toss"))
53+
.isEqualTo(DynamicKubernetesObject.class);
54+
assertThat(ModelMapper.getApiTypeClass("example.io", "V1", "Toss"))
55+
.isEqualTo(DynamicKubernetesObject.class);
5056

51-
assertThat(ModelMapper.getApiTypeClass("example.io/V1", "Toss")).isNull();
52-
assertThat(ModelMapper.getApiTypeClass("example.io", "V1", "Toss")).isNull();
57+
assertThat(ModelMapper.getApiTypeClass("example.io/v1", "Tofu"))
58+
.isEqualTo(DynamicKubernetesObject.class);
59+
assertThat(ModelMapper.getApiTypeClass("example.io", "v1", "Tofu"))
60+
.isEqualTo(DynamicKubernetesObject.class);
61+
62+
assertThat(ModelMapper.getApiTypeClass("v1", "Togu"))
63+
.isEqualTo(DynamicKubernetesObject.class);
5364

54-
assertThat(ModelMapper.getApiTypeClass("example.io/v1", "Tofu")).isNull();
55-
assertThat(ModelMapper.getApiTypeClass("example.io", "v1", "Tofu")).isNull();
65+
ModelMapper.addModelMap("", "v1", "Togu", objClass);
5666

57-
assertThat(ModelMapper.getApiTypeClass("v1", "Togu")).isNull();
58-
ModelMapper.addModelMap("v1", "Togu", objClass);
5967
assertThat(ModelMapper.getApiTypeClass("", "v1", "Togu"))
60-
.isEqualTo(objClass);
68+
.isEqualTo(objClass);
6169
assertThat(ModelMapper.getApiTypeClass("v1", "Togu"))
62-
.isEqualTo(objClass);
70+
.isEqualTo(objClass);
6371
}
6472

73+
@Test
74+
void getApiTypeClassReturnsDynamicKubernetesObjectWhenClassNotFound() {
75+
assertThat(ModelMapper.getApiTypeClass("unknown.group", "v1", "UnknownKind"))
76+
.isEqualTo(DynamicKubernetesObject.class);
77+
}
6578

6679
@Test
6780
void preBuiltGetGroupVersionKindByClass() {
68-
assertThat(ModelMapper.preBuiltGetGroupVersionKindByClass(V1Pod.class))
69-
.hasValue(new GroupVersionKind("", "v1", "Pod"));
7081
assertThat(ModelMapper.preBuiltGetGroupVersionKindByClass(V1Deployment.class))
71-
.hasValue(new GroupVersionKind("", "v1", "Deployment"));
82+
.hasValue(new GroupVersionKind("", "v1", "Deployment"));
83+
assertThat(ModelMapper.preBuiltGetGroupVersionKindByClass(V1Pod.class))
84+
.hasValue(new GroupVersionKind("", "v1", "Pod"));
7285
assertThat(ModelMapper.preBuiltGetGroupVersionKindByClass(V1CustomResourceDefinition.class))
73-
.hasValue(new GroupVersionKind("", "v1", "CustomResourceDefinition"));
86+
.hasValue(new GroupVersionKind("", "v1", "CustomResourceDefinition"));
7487
}
7588
}

0 commit comments

Comments
 (0)