You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shenyu.apache.org by zh...@apache.org on 2022/06/24 10:08:03 UTC
[incubator-shenyu] branch master updated: [type:refactor] code polish in client (#3612)
This is an automated email from the ASF dual-hosted git repository.
zhangzicheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-shenyu.git
The following commit(s) were added to refs/heads/master by this push:
new ebc87023f [type:refactor] code polish in client (#3612)
ebc87023f is described below
commit ebc87023fb49b45268013bc31375e986bd36e3a5
Author: dragon-zhang <ha...@webuy.ai>
AuthorDate: Fri Jun 24 18:07:57 2022 +0800
[type:refactor] code polish in client (#3612)
* [type:refactor] code polish in client
* fix test case
* fix code style
---
.../alibaba/dubbo/AlibabaDubboServiceBeanListener.java | 6 ++----
.../apache/dubbo/ApacheDubboServiceBeanListener.java | 6 ++----
.../springcloud/init/SpringCloudClientEventListener.java | 13 ++++---------
.../init/SpringCloudClientEventListenerTest.java | 14 ++++++++++----
.../shenyu/client/motan/MotanServiceEventListener.java | 14 +++++---------
.../shenyu/client/sofa/SofaServiceEventListener.java | 6 ++----
.../websocket/init/SpringWebSocketClientEventListener.java | 12 +++++-------
7 files changed, 30 insertions(+), 41 deletions(-)
diff --git a/shenyu-client/shenyu-client-dubbo/shenyu-client-alibaba-dubbo/src/main/java/org/apache/shenyu/client/alibaba/dubbo/AlibabaDubboServiceBeanListener.java b/shenyu-client/shenyu-client-dubbo/shenyu-client-alibaba-dubbo/src/main/java/org/apache/shenyu/client/alibaba/dubbo/AlibabaDubboServiceBeanListener.java
index e7b792790..ec157075d 100644
--- a/shenyu-client/shenyu-client-dubbo/shenyu-client-alibaba-dubbo/src/main/java/org/apache/shenyu/client/alibaba/dubbo/AlibabaDubboServiceBeanListener.java
+++ b/shenyu-client/shenyu-client-dubbo/shenyu-client-alibaba-dubbo/src/main/java/org/apache/shenyu/client/alibaba/dubbo/AlibabaDubboServiceBeanListener.java
@@ -107,12 +107,10 @@ public class AlibabaDubboServiceBeanListener implements ApplicationListener<Cont
}
ShenyuDubboClient beanShenyuClient = AnnotatedElementUtils.findMergedAnnotation(clazz, ShenyuDubboClient.class);
final String superPath = buildApiSuperPath(beanShenyuClient);
- if (superPath.contains("*")) {
+ if (superPath.contains("*") && Objects.nonNull(beanShenyuClient)) {
Method[] methods = ReflectionUtils.getDeclaredMethods(clazz);
for (Method method : methods) {
- if (Objects.nonNull(beanShenyuClient)) {
- publisher.publishEvent(buildMetaDataDTO(serviceBean, beanShenyuClient, method, superPath));
- }
+ publisher.publishEvent(buildMetaDataDTO(serviceBean, beanShenyuClient, method, superPath));
}
return;
}
diff --git a/shenyu-client/shenyu-client-dubbo/shenyu-client-apache-dubbo/src/main/java/org/apache/shenyu/client/apache/dubbo/ApacheDubboServiceBeanListener.java b/shenyu-client/shenyu-client-dubbo/shenyu-client-apache-dubbo/src/main/java/org/apache/shenyu/client/apache/dubbo/ApacheDubboServiceBeanListener.java
index da172d1ea..2de23aa2f 100644
--- a/shenyu-client/shenyu-client-dubbo/shenyu-client-apache-dubbo/src/main/java/org/apache/shenyu/client/apache/dubbo/ApacheDubboServiceBeanListener.java
+++ b/shenyu-client/shenyu-client-dubbo/shenyu-client-apache-dubbo/src/main/java/org/apache/shenyu/client/apache/dubbo/ApacheDubboServiceBeanListener.java
@@ -127,12 +127,10 @@ public class ApacheDubboServiceBeanListener implements ApplicationListener<Conte
}
final ShenyuDubboClient beanShenyuClient = AnnotatedElementUtils.findMergedAnnotation(clazz, ShenyuDubboClient.class);
final String superPath = buildApiSuperPath(clazz, beanShenyuClient);
- if (superPath.contains("*")) {
+ if (superPath.contains("*") && Objects.nonNull(beanShenyuClient)) {
Method[] methods = ReflectionUtils.getDeclaredMethods(clazz);
for (Method method : methods) {
- if (Objects.nonNull(beanShenyuClient)) {
- publisher.publishEvent(buildMetaDataDTO(serviceBean, beanShenyuClient, method, superPath));
- }
+ publisher.publishEvent(buildMetaDataDTO(serviceBean, beanShenyuClient, method, superPath));
}
return;
}
diff --git a/shenyu-client/shenyu-client-http/shenyu-client-springcloud/src/main/java/org/apache/shenyu/client/springcloud/init/SpringCloudClientEventListener.java b/shenyu-client/shenyu-client-http/shenyu-client-springcloud/src/main/java/org/apache/shenyu/client/springcloud/init/SpringCloudClientEventListener.java
index db85bb5ea..9b40e686c 100644
--- a/shenyu-client/shenyu-client-http/shenyu-client-springcloud/src/main/java/org/apache/shenyu/client/springcloud/init/SpringCloudClientEventListener.java
+++ b/shenyu-client/shenyu-client-http/shenyu-client-springcloud/src/main/java/org/apache/shenyu/client/springcloud/init/SpringCloudClientEventListener.java
@@ -105,6 +105,10 @@ public class SpringCloudClientEventListener implements ApplicationListener<Conte
@Override
public void onApplicationEvent(final ContextRefreshedEvent contextRefreshedEvent) {
+ // Filter out is not controller out
+ if (Boolean.TRUE.equals(isFull)) {
+ return;
+ }
Map<String, Object> beans = contextRefreshedEvent.getApplicationContext().getBeansWithAnnotation(Controller.class);
for (Map.Entry<String, Object> entry : beans.entrySet()) {
handler(entry.getValue());
@@ -116,11 +120,6 @@ public class SpringCloudClientEventListener implements ApplicationListener<Conte
if (AopUtils.isAopProxy(bean)) {
clazz = AopUtils.getTargetClass(bean);
}
- // Filter out is not controller out
- if (Boolean.TRUE.equals(isFull)) {
- return;
- }
-
final ShenyuSpringCloudClient beanShenyuClient = AnnotatedElementUtils.findMergedAnnotation(clazz, ShenyuSpringCloudClient.class);
final String superPath = buildApiSuperPath(clazz, beanShenyuClient);
// Compatible with previous versions
@@ -141,10 +140,6 @@ public class SpringCloudClientEventListener implements ApplicationListener<Conte
}
}
- private <A extends Annotation> boolean hasAnnotation(final @NonNull Class<?> clazz, final @NonNull Class<A> annotationType) {
- return Objects.nonNull(AnnotationUtils.findAnnotation(clazz, annotationType));
- }
-
private String buildApiPath(@NonNull final Method method, @NonNull final String superPath, final ShenyuSpringCloudClient methodShenyuClient) {
if (Objects.nonNull(methodShenyuClient) && StringUtils.isNotBlank(methodShenyuClient.path())) {
return pathJoin(contextPath, superPath, methodShenyuClient.path());
diff --git a/shenyu-client/shenyu-client-http/shenyu-client-springcloud/src/test/java/org/apache/shenyu/client/springcloud/init/SpringCloudClientEventListenerTest.java b/shenyu-client/shenyu-client-http/shenyu-client-springcloud/src/test/java/org/apache/shenyu/client/springcloud/init/SpringCloudClientEventListenerTest.java
index 921c40b72..ce607105b 100644
--- a/shenyu-client/shenyu-client-http/shenyu-client-springcloud/src/test/java/org/apache/shenyu/client/springcloud/init/SpringCloudClientEventListenerTest.java
+++ b/shenyu-client/shenyu-client-http/shenyu-client-springcloud/src/test/java/org/apache/shenyu/client/springcloud/init/SpringCloudClientEventListenerTest.java
@@ -46,6 +46,7 @@ import java.util.Properties;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mockStatic;
+import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -70,26 +71,30 @@ public final class SpringCloudClientEventListenerTest {
private ContextRefreshedEvent contextRefreshedEvent;
@BeforeEach
- public void init() {
+ public void beforeEach() {
when(env.getProperty("spring.application.name")).thenReturn("spring-cloud-test");
- Map<String, Object> results = new LinkedHashMap();
+ }
+
+ private void init() {
+ Map<String, Object> results = new LinkedHashMap<>();
results.put("springCloudClientTestBean", springCloudClientTestBean);
when(applicationContext.getBeansWithAnnotation(any())).thenReturn(results);
contextRefreshedEvent = new ContextRefreshedEvent(applicationContext);
}
-
+
@Test
public void testShenyuBeanProcess() {
registerUtilsMockedStatic.when(() -> RegisterUtils.doLogin(any(), any(), any())).thenReturn(Optional.of("token"));
// config with full
SpringCloudClientEventListener springCloudClientEventListener = buildSpringCloudClienttEventListener(true);
springCloudClientEventListener.onApplicationEvent(contextRefreshedEvent);
- verify(applicationContext, times(1)).getBeansWithAnnotation(any());
+ verify(applicationContext, never()).getBeansWithAnnotation(any());
registerUtilsMockedStatic.close();
}
@Test
public void testNormalBeanProcess() {
+ init();
registerUtilsMockedStatic.when(() -> RegisterUtils.doLogin(any(), any(), any())).thenReturn(Optional.of("token"));
SpringCloudClientEventListener springCloudClientEventListener = buildSpringCloudClienttEventListener(false);
springCloudClientEventListener.onApplicationEvent(contextRefreshedEvent);
@@ -99,6 +104,7 @@ public final class SpringCloudClientEventListenerTest {
@Test
public void testWithShenyuClientAnnotation() {
+ init();
registerUtilsMockedStatic.when(() -> RegisterUtils.doLogin(any(), any(), any())).thenReturn(Optional.of("token"));
registerUtilsMockedStatic.when(() -> RegisterUtils.doRegister(any(), any(), any()))
.thenAnswer((Answer<Void>) invocation -> null);
diff --git a/shenyu-client/shenyu-client-motan/src/main/java/org/apache/shenyu/client/motan/MotanServiceEventListener.java b/shenyu-client/shenyu-client-motan/src/main/java/org/apache/shenyu/client/motan/MotanServiceEventListener.java
index 496fc4e2d..5003062b1 100644
--- a/shenyu-client/shenyu-client-motan/src/main/java/org/apache/shenyu/client/motan/MotanServiceEventListener.java
+++ b/shenyu-client/shenyu-client-motan/src/main/java/org/apache/shenyu/client/motan/MotanServiceEventListener.java
@@ -76,9 +76,7 @@ public class MotanServiceEventListener implements ApplicationListener<ContextRef
private final String port;
private String group;
-
- private Integer timeout;
-
+
public MotanServiceEventListener(final PropertiesConfig clientConfig, final ShenyuClientRegisterRepository shenyuClientRegisterRepository) {
Properties props = clientConfig.getProps();
String contextPath = props.getProperty(ShenyuClientConstants.CONTEXT_PATH);
@@ -106,7 +104,7 @@ public class MotanServiceEventListener implements ApplicationListener<ContextRef
if (group == null) {
group = ((BasicServiceConfigBean) applicationContext.getBean(BASE_SERVICE_CONFIG)).getGroup();
}
- timeout = Optional.ofNullable(((BasicServiceConfigBean) applicationContext.getBean(BASE_SERVICE_CONFIG)).getRequestTimeout()).orElse(1000);
+ Integer timeout = Optional.ofNullable(((BasicServiceConfigBean) applicationContext.getBean(BASE_SERVICE_CONFIG)).getRequestTimeout()).orElse(1000);
Class<?> clazz = bean.getClass();
if (AopUtils.isAopProxy(bean)) {
clazz = AopUtils.getTargetClass(bean);
@@ -114,13 +112,11 @@ public class MotanServiceEventListener implements ApplicationListener<ContextRef
String superPath = buildApiSuperPath(clazz);
MotanService service = clazz.getAnnotation(MotanService.class);
ShenyuMotanClient beanShenyuClient = AnnotatedElementUtils.findMergedAnnotation(clazz, ShenyuMotanClient.class);
- if (superPath.contains("*")) {
+ if (superPath.contains("*") && Objects.nonNull(beanShenyuClient)) {
Method[] methods = ReflectionUtils.getDeclaredMethods(clazz);
for (Method method : methods) {
- if (Objects.nonNull(beanShenyuClient)) {
- publisher.publishEvent(buildMetaDataDTO(clazz, service, beanShenyuClient, method,
- buildRpcExt(method, timeout), superPath));
- }
+ publisher.publishEvent(buildMetaDataDTO(clazz, service, beanShenyuClient, method,
+ buildRpcExt(method, timeout), superPath));
}
return;
}
diff --git a/shenyu-client/shenyu-client-sofa/src/main/java/org/apache/shenyu/client/sofa/SofaServiceEventListener.java b/shenyu-client/shenyu-client-sofa/src/main/java/org/apache/shenyu/client/sofa/SofaServiceEventListener.java
index 0a7bf7aa4..3653d57c7 100644
--- a/shenyu-client/shenyu-client-sofa/src/main/java/org/apache/shenyu/client/sofa/SofaServiceEventListener.java
+++ b/shenyu-client/shenyu-client-sofa/src/main/java/org/apache/shenyu/client/sofa/SofaServiceEventListener.java
@@ -108,12 +108,10 @@ public class SofaServiceEventListener implements ApplicationListener<ContextRefr
}
final ShenyuSofaClient beanSofaClient = AnnotatedElementUtils.findMergedAnnotation(clazz, ShenyuSofaClient.class);
final String superPath = buildApiSuperPath(beanSofaClient);
- if (superPath.contains("*")) {
+ if (superPath.contains("*") && Objects.nonNull(beanSofaClient)) {
Method[] declaredMethods = ReflectionUtils.getDeclaredMethods(clazz);
for (Method declaredMethod : declaredMethods) {
- if (Objects.nonNull(beanSofaClient)) {
- publisher.publishEvent(buildMetaDataDTO(serviceBean, beanSofaClient, declaredMethod, ""));
- }
+ publisher.publishEvent(buildMetaDataDTO(serviceBean, beanSofaClient, declaredMethod, ""));
}
return;
}
diff --git a/shenyu-client/shenyu-client-websocket/shenyu-client-spring-websocket/src/main/java/org/apache/shenyu/client/spring/websocket/init/SpringWebSocketClientEventListener.java b/shenyu-client/shenyu-client-websocket/shenyu-client-spring-websocket/src/main/java/org/apache/shenyu/client/spring/websocket/init/SpringWebSocketClientEventListener.java
index a182dc135..8f52ae5e9 100644
--- a/shenyu-client/shenyu-client-websocket/shenyu-client-spring-websocket/src/main/java/org/apache/shenyu/client/spring/websocket/init/SpringWebSocketClientEventListener.java
+++ b/shenyu-client/shenyu-client-websocket/shenyu-client-spring-websocket/src/main/java/org/apache/shenyu/client/spring/websocket/init/SpringWebSocketClientEventListener.java
@@ -95,6 +95,10 @@ public class SpringWebSocketClientEventListener implements ApplicationListener<C
@Override
public void onApplicationEvent(final ContextRefreshedEvent contextRefreshedEvent) {
+ // Filter out is not controller out
+ if (Boolean.TRUE.equals(isFull)) {
+ return;
+ }
Map<String, Object> beans = contextRefreshedEvent.getApplicationContext().getBeansWithAnnotation(ShenyuSpringWebSocketClient.class);
for (Map.Entry<String, Object> entry : beans.entrySet()) {
handler(entry.getValue());
@@ -102,17 +106,11 @@ public class SpringWebSocketClientEventListener implements ApplicationListener<C
}
private void handler(final Object bean) {
- Class<?> clazz;
- clazz = bean.getClass();
+ Class<?> clazz = bean.getClass();
if (AopUtils.isAopProxy(bean)) {
clazz = AopUtils.getTargetClass(bean);
}
-
final String superPath = buildApiSuperPath(clazz);
- // Filter out is not controller out
- if (Boolean.TRUE.equals(isFull)) {
- return;
- }
final ShenyuSpringWebSocketClient beanShenyuClient = AnnotatedElementUtils.findMergedAnnotation(clazz, ShenyuSpringWebSocketClient.class);
// Compatible with previous versions
if (Objects.nonNull(beanShenyuClient) && superPath.contains("*")) {