AlbumenJ commented on code in PR #13155:
URL: https://github.com/apache/dubbo/pull/13155#discussion_r1351815675
##########
dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ReflectionServiceDescriptor.java:
##########
@@ -89,6 +98,21 @@ private void initMethods() {
+" stream method signatures. method(" + methodName + ")");
});
}
+
+ public static boolean isProtobufClass(Class<?> clazz) {
+ while (clazz != Object.class && clazz != null) {
+ Class<?>[] interfaces = clazz.getInterfaces();
+ if (interfaces.length > 0) {
+ for (Class<?> clazzInterface : interfaces) {
+ if
(PROTOBUF_MESSAGE_CLASS_NAME.equalsIgnoreCase(clazzInterface.getName())) {
+ return true;
+ }
+ }
+ }
+ clazz = clazz.getSuperclass();
Review Comment:
There is a better implementation:
1. Use Dubbo’s Classloader in Dubbo’s tool class in advance to try to load
the class name of Protobuf Message to obtain whether protobuf exists and the
corresponding `Class` object
2. When judgment is needed, judge in advance whether protobuf exists. If it
exists, use `Class` to directly judge `isAssignableFrom`.
##########
dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ReflectionServiceDescriptor.java:
##########
@@ -89,6 +98,21 @@ private void initMethods() {
+" stream method signatures. method(" + methodName + ")");
});
}
+
+ public static boolean isProtobufClass(Class<?> clazz) {
+ while (clazz != Object.class && clazz != null) {
+ Class<?>[] interfaces = clazz.getInterfaces();
+ if (interfaces.length > 0) {
+ for (Class<?> clazzInterface : interfaces) {
+ if
(PROTOBUF_MESSAGE_CLASS_NAME.equalsIgnoreCase(clazzInterface.getName())) {
+ return true;
+ }
+ }
+ }
+ clazz = clazz.getSuperclass();
Review Comment:
There is a better implementation:
1. Use Dubbo’s Classloader in Dubbo’s tool class in advance to try to load
the class name of Protobuf Message to obtain whether protobuf exists and the
corresponding `Class` object
2. When judgment is needed, judge in advance whether protobuf exists. If it
exists, use `Class` to directly judge `isAssignableFrom`.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]