Skip to content

Commit 9eabf30

Browse files
committed
applies common object interfaces to utils
1 parent 5c13b60 commit 9eabf30

31 files changed

+133
-57
lines changed

extended/src/main/java/io/kubernetes/client/extended/controller/ControllerWatch.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.kubernetes.client.extended.controller;
22

3+
import io.kubernetes.client.common.KubernetesObject;
34
import io.kubernetes.client.informer.ResourceEventHandler;
45
import java.time.Duration;
56

@@ -8,7 +9,7 @@
89
*
910
* @param <ApiType> the type parameter
1011
*/
11-
public interface ControllerWatch<ApiType> {
12+
public interface ControllerWatch<ApiType extends KubernetesObject> {
1213
/**
1314
* Gets the watching resource class.
1415
*

extended/src/main/java/io/kubernetes/client/extended/controller/Controllers.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.kubernetes.client.extended.controller;
22

33
import com.google.common.util.concurrent.ThreadFactoryBuilder;
4+
import io.kubernetes.client.common.KubernetesObject;
45
import io.kubernetes.client.extended.controller.reconciler.Request;
56
import io.kubernetes.client.openapi.models.V1ObjectMeta;
67
import io.kubernetes.client.util.ObjectAccessor;
@@ -22,7 +23,8 @@ public class Controllers {
2223
* @param <ApiType> the type parameter
2324
* @return the function
2425
*/
25-
public static <ApiType> Function<ApiType, Request> defaultReflectiveKeyFunc() {
26+
public static <ApiType extends KubernetesObject>
27+
Function<ApiType, Request> defaultReflectiveKeyFunc() {
2628
return (ApiType obj) -> {
2729
try {
2830
V1ObjectMeta objectMeta = ObjectAccessor.objectMetadata(obj);

extended/src/main/java/io/kubernetes/client/extended/controller/DefaultControllerWatch.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.kubernetes.client.extended.controller;
22

3+
import io.kubernetes.client.common.KubernetesObject;
34
import io.kubernetes.client.extended.controller.reconciler.Request;
45
import io.kubernetes.client.extended.workqueue.WorkQueue;
56
import io.kubernetes.client.informer.ResourceEventHandler;
@@ -13,7 +14,8 @@
1314
*
1415
* @param <ApiType> the type parameter
1516
*/
16-
public class DefaultControllerWatch<ApiType> implements ControllerWatch<ApiType> {
17+
public class DefaultControllerWatch<ApiType extends KubernetesObject>
18+
implements ControllerWatch<ApiType> {
1719

1820
private final WorkQueue<Request> workQueue;
1921
private final Function<ApiType, Request> workKeyGenerator;

extended/src/main/java/io/kubernetes/client/extended/controller/builder/ControllerBuilder.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.kubernetes.client.extended.controller.builder;
22

3+
import io.kubernetes.client.common.KubernetesObject;
34
import io.kubernetes.client.extended.controller.reconciler.Request;
45
import io.kubernetes.client.extended.workqueue.WorkQueue;
56
import io.kubernetes.client.informer.SharedInformerFactory;
@@ -33,8 +34,9 @@ public static ControllerManagerBuilder controllerManagerBuilder(SharedInformerFa
3334
*
3435
* @return the controller watch builder
3536
*/
36-
public static <ApiType> ControllerWatchBuilder<ApiType> controllerWatchBuilder(
37-
Class<ApiType> apiTypeClass, WorkQueue<Request> workQueue) {
37+
public static <ApiType extends KubernetesObject>
38+
ControllerWatchBuilder<ApiType> controllerWatchBuilder(
39+
Class<ApiType> apiTypeClass, WorkQueue<Request> workQueue) {
3840
return new ControllerWatchBuilder(apiTypeClass, workQueue);
3941
}
4042
}

extended/src/main/java/io/kubernetes/client/extended/controller/builder/ControllerWatchBuilder.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.kubernetes.client.extended.controller.builder;
22

3+
import io.kubernetes.client.common.KubernetesObject;
34
import io.kubernetes.client.extended.controller.Controllers;
45
import io.kubernetes.client.extended.controller.DefaultControllerWatch;
56
import io.kubernetes.client.extended.controller.reconciler.Request;
@@ -9,7 +10,7 @@
910
import java.util.function.Function;
1011
import java.util.function.Predicate;
1112

12-
public class ControllerWatchBuilder<ApiType> {
13+
public class ControllerWatchBuilder<ApiType extends KubernetesObject> {
1314

1415
private Function<ApiType, Request> workKeyGenerator;
1516
private WorkQueue<Request> workQueue;

extended/src/main/java/io/kubernetes/client/extended/controller/builder/DefaultControllerBuilder.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.kubernetes.client.extended.controller.builder;
22

3+
import io.kubernetes.client.common.KubernetesObject;
34
import io.kubernetes.client.extended.controller.*;
45
import io.kubernetes.client.extended.controller.reconciler.Reconciler;
56
import io.kubernetes.client.extended.controller.reconciler.Request;
@@ -50,7 +51,7 @@ public class DefaultControllerBuilder {
5051
* @param controllerWatchGetter the controller watch getter
5152
* @return the controller builder . controller watch builder
5253
*/
53-
public <ApiType> DefaultControllerBuilder watch(
54+
public <ApiType extends KubernetesObject> DefaultControllerBuilder watch(
5455
Function<WorkQueue<Request>, ControllerWatch<ApiType>> controllerWatchGetter) {
5556
ControllerWatch<ApiType> watch = controllerWatchGetter.apply(this.workQueue);
5657
Class<ApiType> apiTypeClass = watch.getResourceClass();

extended/src/main/java/io/kubernetes/client/extended/generic/GenericKubernetesApi.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import com.google.gson.Gson;
55
import com.google.gson.JsonElement;
66
import com.google.gson.reflect.TypeToken;
7+
import io.kubernetes.client.common.KubernetesListObject;
8+
import io.kubernetes.client.common.KubernetesObject;
79
import io.kubernetes.client.custom.V1Patch;
810
import io.kubernetes.client.extended.generic.options.CreateOptions;
911
import io.kubernetes.client.extended.generic.options.DeleteOptions;
@@ -39,7 +41,8 @@
3941
* @param <ApiType> the api type parameter
4042
* @param <ApiListType> the api list type parameter
4143
*/
42-
public class GenericKubernetesApi<ApiType, ApiListType> {
44+
public class GenericKubernetesApi<
45+
ApiType extends KubernetesObject, ApiListType extends KubernetesListObject> {
4346

4447
// TODO(yue9944882): supports status operations..
4548
// TODO(yue9944882): supports generic sub-resource operations..

extended/src/test/java/io/kubernetes/client/extended/generic/FooCustomResource.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
package io.kubernetes.client.extended.generic;
22

3+
import io.kubernetes.client.common.KubernetesObject;
34
import io.kubernetes.client.openapi.models.V1ObjectMeta;
45

5-
public class FooCustomResource {
6+
public class FooCustomResource implements KubernetesObject {
67
private V1ObjectMeta metadata;
78

89
public V1ObjectMeta getMetadata() {
@@ -27,4 +28,14 @@ public boolean equals(Object o) {
2728
public int hashCode() {
2829
return metadata != null ? metadata.hashCode() : 0;
2930
}
31+
32+
@Override
33+
public String getApiVersion() {
34+
return "";
35+
}
36+
37+
@Override
38+
public String getKind() {
39+
return "";
40+
}
3041
}

extended/src/test/java/io/kubernetes/client/extended/generic/FooCustomResourceList.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
package io.kubernetes.client.extended.generic;
22

3+
import io.kubernetes.client.common.KubernetesListObject;
34
import io.kubernetes.client.openapi.models.V1ListMeta;
45
import java.util.List;
56

6-
public class FooCustomResourceList {
7+
public class FooCustomResourceList implements KubernetesListObject {
78
private V1ListMeta metadata;
89
private List<FooCustomResource> items;
910

@@ -40,4 +41,14 @@ public int hashCode() {
4041
result = 31 * result + (items != null ? items.hashCode() : 0);
4142
return result;
4243
}
44+
45+
@Override
46+
public String getApiVersion() {
47+
return "";
48+
}
49+
50+
@Override
51+
public String getKind() {
52+
return "";
53+
}
4354
}

spring/src/main/java/io/kubernetes/client/spring/extended/controller/KubernetesInformerFactoryProcessor.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.kubernetes.client.spring.extended.controller;
22

3+
import io.kubernetes.client.common.KubernetesListObject;
34
import io.kubernetes.client.extended.generic.GenericKubernetesApi;
45
import io.kubernetes.client.extended.generic.KubernetesApiResponse;
56
import io.kubernetes.client.extended.generic.options.ListOptions;
@@ -108,8 +109,8 @@ public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)
108109
SharedIndexInformer sharedIndexInformer =
109110
sharedInformerFactory.sharedIndexInformerFor(
110111
new ListerWatcher() {
111-
public Object list(CallGeneratorParams params) throws ApiException {
112-
KubernetesApiResponse resp =
112+
public KubernetesListObject list(CallGeneratorParams params) throws ApiException {
113+
KubernetesApiResponse<KubernetesListObject> resp =
113114
api.list(
114115
new ListOptions() {
115116
{

0 commit comments

Comments
 (0)