Skip to content

Commit a532343

Browse files
committed
split reflect utils to [object|list]accessor
1 parent cbc1d38 commit a532343

7 files changed

Lines changed: 79 additions & 36 deletions

File tree

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import com.google.common.util.concurrent.ThreadFactoryBuilder;
44
import io.kubernetes.client.extended.controller.reconciler.Request;
55
import io.kubernetes.client.openapi.models.V1ObjectMeta;
6-
import io.kubernetes.client.util.Reflect;
6+
import io.kubernetes.client.util.ObjectAccessor;
77
import io.kubernetes.client.util.exception.ObjectMetaReflectException;
88
import java.util.concurrent.ThreadFactory;
99
import java.util.function.Function;
@@ -25,7 +25,7 @@ public class Controllers {
2525
public static <ApiType> Function<ApiType, Request> defaultReflectiveKeyFunc() {
2626
return (ApiType obj) -> {
2727
try {
28-
V1ObjectMeta objectMeta = Reflect.objectMetadata(obj);
28+
V1ObjectMeta objectMeta = ObjectAccessor.objectMetadata(obj);
2929
return new Request(objectMeta.getNamespace(), objectMeta.getName());
3030
} catch (ObjectMetaReflectException e) {
3131
log.error("Fail to access object-meta from {}..", obj.getClass());

extended/src/main/java/io/kubernetes/client/extended/pager/Pager.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
import io.kubernetes.client.openapi.ApiClient;
1616
import io.kubernetes.client.openapi.ApiException;
17-
import io.kubernetes.client.util.Reflect;
17+
import io.kubernetes.client.util.ListAccessor;
1818
import io.kubernetes.client.util.exception.ObjectMetaReflectException;
1919
import java.io.IOException;
2020
import java.lang.reflect.Type;
@@ -136,12 +136,12 @@ public ApiType next() {
136136
call = getNextCall(limit, continueToken);
137137

138138
listObjectCurrentPage = executeRequest(call);
139-
continueToken = Reflect.listMetadata(listObjectCurrentPage).getContinue();
139+
continueToken = ListAccessor.listMetadata(listObjectCurrentPage).getContinue();
140140

141141
offsetCurrentPage = 0;
142-
currentPageSize = Reflect.<ApiType>getItems(listObjectCurrentPage).size();
142+
currentPageSize = ListAccessor.<ApiType>getItems(listObjectCurrentPage).size();
143143
}
144-
return Reflect.<ApiType>getItems(listObjectCurrentPage).get(offsetCurrentPage++);
144+
return ListAccessor.<ApiType>getItems(listObjectCurrentPage).get(offsetCurrentPage++);
145145
} catch (ApiException e) {
146146
throw new RuntimeException(e.getResponseBody());
147147
} catch (ObjectMetaReflectException | IOException e) {

util/src/main/java/io/kubernetes/client/informer/cache/Caches.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import com.google.common.base.Strings;
44
import io.kubernetes.client.informer.exception.BadObjectException;
55
import io.kubernetes.client.openapi.models.V1ObjectMeta;
6-
import io.kubernetes.client.util.Reflect;
6+
import io.kubernetes.client.util.ObjectAccessor;
77
import io.kubernetes.client.util.exception.ObjectMetaReflectException;
88
import java.util.Collections;
99
import java.util.List;
@@ -46,7 +46,7 @@ public static String metaNamespaceKeyFunc(Object obj) {
4646
} else if (obj instanceof V1ObjectMeta) {
4747
metadata = (V1ObjectMeta) obj;
4848
} else {
49-
metadata = Reflect.objectMetadata(obj);
49+
metadata = ObjectAccessor.objectMetadata(obj);
5050
if (metadata == null) {
5151
throw new BadObjectException(obj);
5252
}
@@ -69,7 +69,7 @@ public static String metaNamespaceKeyFunc(Object obj) {
6969
*/
7070
public static List<String> metaNamespaceIndexFunc(Object obj) {
7171
try {
72-
V1ObjectMeta metadata = Reflect.objectMetadata(obj);
72+
V1ObjectMeta metadata = ObjectAccessor.objectMetadata(obj);
7373
if (metadata == null) {
7474
return Collections.emptyList();
7575
}

util/src/main/java/io/kubernetes/client/informer/cache/ReflectorRunnable.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,7 @@
44
import io.kubernetes.client.informer.ListerWatcher;
55
import io.kubernetes.client.openapi.models.V1ListMeta;
66
import io.kubernetes.client.openapi.models.V1ObjectMeta;
7-
import io.kubernetes.client.util.CallGeneratorParams;
8-
import io.kubernetes.client.util.Reflect;
9-
import io.kubernetes.client.util.Watchable;
7+
import io.kubernetes.client.util.*;
108
import io.kubernetes.client.util.exception.ObjectMetaReflectException;
119
import java.net.ConnectException;
1210
import java.time.Duration;
@@ -46,9 +44,9 @@ public void run() {
4644

4745
ApiListType list = listerWatcher.list(new CallGeneratorParams(Boolean.FALSE, null, null));
4846

49-
V1ListMeta listMeta = Reflect.listMetadata(list);
47+
V1ListMeta listMeta = ListAccessor.listMetadata(list);
5048
String resourceVersion = listMeta.getResourceVersion();
51-
List<ApiType> items = Reflect.getItems(list);
49+
List<ApiType> items = ListAccessor.getItems(list);
5250

5351
if (log.isDebugEnabled()) {
5452
log.debug("{}#Extract resourceVersion {} list meta", apiTypeClass, resourceVersion);
@@ -144,7 +142,7 @@ private void watchHandler(Watchable<ApiType> watch) {
144142

145143
V1ObjectMeta meta;
146144
try {
147-
meta = Reflect.objectMetadata(obj);
145+
meta = ObjectAccessor.objectMetadata(obj);
148146
} catch (ObjectMetaReflectException e) {
149147
log.error("malformed watch event {}", item);
150148
continue;
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package io.kubernetes.client.util;
2+
3+
import io.kubernetes.client.openapi.models.V1ListMeta;
4+
import io.kubernetes.client.util.exception.ObjectMetaReflectException;
5+
import java.lang.reflect.InvocationTargetException;
6+
import java.lang.reflect.Method;
7+
import java.util.List;
8+
9+
/** ListAccessor is a set of utils which accesses common fields from list objects dynamically */
10+
public class ListAccessor {
11+
12+
private static final String METHOD_NAME_GET_ITEMS = "getItems";
13+
private static final String METHOD_NAME_GET_LIST_METADATA = "getMetadata";
14+
15+
public static V1ListMeta listMetadata(Object listObj) throws ObjectMetaReflectException {
16+
try {
17+
Method mdField = listObj.getClass().getMethod(METHOD_NAME_GET_LIST_METADATA);
18+
return (V1ListMeta) mdField.invoke(listObj);
19+
} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
20+
throw new ObjectMetaReflectException(e);
21+
}
22+
}
23+
24+
public static <ApiType> List<ApiType> getItems(Object listObj) throws ObjectMetaReflectException {
25+
try {
26+
Method getItemsMethod = listObj.getClass().getMethod(METHOD_NAME_GET_ITEMS);
27+
return (List<ApiType>) getItemsMethod.invoke(listObj);
28+
} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
29+
throw new ObjectMetaReflectException(e);
30+
}
31+
}
32+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package io.kubernetes.client.util;
2+
3+
import io.kubernetes.client.openapi.models.V1ObjectMeta;
4+
import io.kubernetes.client.util.exception.ObjectMetaReflectException;
5+
import java.lang.reflect.InvocationTargetException;
6+
import java.lang.reflect.Method;
7+
8+
/** ObjectAccessor is a set of utils which accesses common fields from objects dynamically */
9+
public class ObjectAccessor {
10+
11+
private static final String METHOD_NAME_GET_METADATA = "getMetadata";
12+
13+
public static V1ObjectMeta objectMetadata(Object obj) throws ObjectMetaReflectException {
14+
try {
15+
Method mdField = obj.getClass().getMethod(METHOD_NAME_GET_METADATA);
16+
return (V1ObjectMeta) mdField.invoke(obj);
17+
} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
18+
throw new ObjectMetaReflectException(e);
19+
}
20+
}
21+
22+
public static String namespace(Object obj) throws ObjectMetaReflectException {
23+
return objectMetadata(obj).getNamespace();
24+
}
25+
26+
public static String name(Object obj) throws ObjectMetaReflectException {
27+
return objectMetadata(obj).getName();
28+
}
29+
}

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

Lines changed: 5 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,41 +3,25 @@
33
import io.kubernetes.client.openapi.models.V1ListMeta;
44
import io.kubernetes.client.openapi.models.V1ObjectMeta;
55
import io.kubernetes.client.util.exception.ObjectMetaReflectException;
6-
import java.lang.reflect.InvocationTargetException;
7-
import java.lang.reflect.Method;
86
import java.util.List;
97

108
/** Reflect is a set of utils which extracts metadata from objects dynamically */
9+
@Deprecated
1110
public class Reflect {
1211

1312
public static V1ObjectMeta objectMetadata(Object obj) throws ObjectMetaReflectException {
14-
try {
15-
Method mdField = obj.getClass().getMethod("getMetadata");
16-
return (V1ObjectMeta) mdField.invoke(obj);
17-
} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
18-
throw new ObjectMetaReflectException(e);
19-
}
13+
return ObjectAccessor.objectMetadata(obj);
2014
}
2115

2216
public static String namespace(Object obj) throws ObjectMetaReflectException {
23-
return objectMetadata(obj).getNamespace();
17+
return ObjectAccessor.namespace(obj);
2418
}
2519

2620
public static V1ListMeta listMetadata(Object listObj) throws ObjectMetaReflectException {
27-
try {
28-
Method mdField = listObj.getClass().getMethod("getMetadata");
29-
return (V1ListMeta) mdField.invoke(listObj);
30-
} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
31-
throw new ObjectMetaReflectException(e);
32-
}
21+
return ListAccessor.listMetadata(listObj);
3322
}
3423

3524
public static <ApiType> List<ApiType> getItems(Object listObj) throws ObjectMetaReflectException {
36-
try {
37-
Method getItemsMethod = listObj.getClass().getMethod("getItems");
38-
return (List<ApiType>) getItemsMethod.invoke(listObj);
39-
} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
40-
throw new ObjectMetaReflectException(e);
41-
}
25+
return ListAccessor.getItems(listObj);
4226
}
4327
}

0 commit comments

Comments
 (0)