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("*")) {