This is an automated email from the ASF dual-hosted git repository.

xiaoyu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shenyu.git


The following commit(s) were added to refs/heads/master by this push:
     new 05d3bf0f09 [refactor] Optimizing the node type listener (#5435)
05d3bf0f09 is described below

commit 05d3bf0f09ee3db2893d961a0fb5a22e0d5a0f29
Author: hql0312 <[email protected]>
AuthorDate: Sat Feb 24 23:29:26 2024 +0800

    [refactor] Optimizing the node type listener (#5435)
    
    * [refactor] Optimizing the node type listener
    
    * [refactor] modify NodeDataPathUtils class name
    
    * [refactor] refactor test uint case
    
    * [refactor] refactor test uint case
    
    ---------
    
    Co-authored-by: hql0312 <[email protected]>
    Co-authored-by: xiaoyu <[email protected]>
    Co-authored-by: loongs-zhang <[email protected]>
---
 .../admin/listener/AbstractDataChangedInit.java    |  1 +
 .../NodeDataPathUtils.java}                        | 33 ++++++-----------
 .../listener/utils/NodeDataPathUtilsTest.java}     | 33 ++++++-----------
 .../listener/apollo/ApolloDataChangedInit.java     |  7 ++--
 .../listener/apollo/ApolloDataChangedInitTest.java | 42 +++++++++++++++-------
 .../admin/listener/nacos/NacosDataChangedInit.java |  7 ++--
 .../listener/nacos/NacosDataChangedInitTest.java   | 17 +++++----
 7 files changed, 72 insertions(+), 68 deletions(-)

diff --git 
a/shenyu-admin-listener/shenyu-admin-listener-api/src/main/java/org/apache/shenyu/admin/listener/AbstractDataChangedInit.java
 
b/shenyu-admin-listener/shenyu-admin-listener-api/src/main/java/org/apache/shenyu/admin/listener/AbstractDataChangedInit.java
index bf329ec4a2..8e50bdb8dd 100644
--- 
a/shenyu-admin-listener/shenyu-admin-listener-api/src/main/java/org/apache/shenyu/admin/listener/AbstractDataChangedInit.java
+++ 
b/shenyu-admin-listener/shenyu-admin-listener-api/src/main/java/org/apache/shenyu/admin/listener/AbstractDataChangedInit.java
@@ -46,4 +46,5 @@ public abstract class AbstractDataChangedInit implements 
DataChangedInit {
      * @return boolean.
      */
     protected abstract boolean notExist();
+
 }
diff --git 
a/shenyu-admin-listener/shenyu-admin-listener-api/src/main/java/org/apache/shenyu/admin/listener/AbstractDataChangedInit.java
 
b/shenyu-admin-listener/shenyu-admin-listener-api/src/main/java/org/apache/shenyu/admin/listener/utils/NodeDataPathUtils.java
similarity index 55%
copy from 
shenyu-admin-listener/shenyu-admin-listener-api/src/main/java/org/apache/shenyu/admin/listener/AbstractDataChangedInit.java
copy to 
shenyu-admin-listener/shenyu-admin-listener-api/src/main/java/org/apache/shenyu/admin/listener/utils/NodeDataPathUtils.java
index bf329ec4a2..efcd7b98d3 100644
--- 
a/shenyu-admin-listener/shenyu-admin-listener-api/src/main/java/org/apache/shenyu/admin/listener/AbstractDataChangedInit.java
+++ 
b/shenyu-admin-listener/shenyu-admin-listener-api/src/main/java/org/apache/shenyu/admin/listener/utils/NodeDataPathUtils.java
@@ -15,35 +15,22 @@
  * limitations under the License.
  */
 
-package org.apache.shenyu.admin.listener;
+package org.apache.shenyu.admin.listener.utils;
 
-import org.apache.shenyu.admin.service.SyncDataService;
-import org.apache.shenyu.common.enums.DataEventTypeEnum;
-
-import javax.annotation.Resource;
+import org.apache.shenyu.common.constant.DefaultNodeConstants;
 
 /**
- * AbstractDataChangedInit.
+ * NodeData Path helper.
  */
-public abstract class AbstractDataChangedInit implements DataChangedInit {
+public class NodeDataPathUtils {
 
     /**
-     * SyncDataService, sync all data.
-     */
-    @Resource
-    private SyncDataService syncDataService;
-
-    @Override
-    public void run(final String... args) throws Exception {
-        if (notExist()) {
-            syncDataService.syncAll(DataEventTypeEnum.REFRESH);
-        }
-    }
-
-    /**
-     * check exist.
+     * join the specified text and literal 'list' with '.'.
      *
-     * @return boolean.
+     * @param text original text, value should not be empty.
+     * @return string.
      */
-    protected abstract boolean notExist();
+    public static String appendListStuff(final String text) {
+        return String.join(DefaultNodeConstants.JOIN_POINT, text, 
DefaultNodeConstants.LIST_STR);
+    }
 }
diff --git 
a/shenyu-admin-listener/shenyu-admin-listener-api/src/main/java/org/apache/shenyu/admin/listener/AbstractDataChangedInit.java
 
b/shenyu-admin-listener/shenyu-admin-listener-api/src/test/java/org/apache/shenyu/admin/listener/utils/NodeDataPathUtilsTest.java
similarity index 55%
copy from 
shenyu-admin-listener/shenyu-admin-listener-api/src/main/java/org/apache/shenyu/admin/listener/AbstractDataChangedInit.java
copy to 
shenyu-admin-listener/shenyu-admin-listener-api/src/test/java/org/apache/shenyu/admin/listener/utils/NodeDataPathUtilsTest.java
index bf329ec4a2..eae9b3a324 100644
--- 
a/shenyu-admin-listener/shenyu-admin-listener-api/src/main/java/org/apache/shenyu/admin/listener/AbstractDataChangedInit.java
+++ 
b/shenyu-admin-listener/shenyu-admin-listener-api/src/test/java/org/apache/shenyu/admin/listener/utils/NodeDataPathUtilsTest.java
@@ -15,35 +15,22 @@
  * limitations under the License.
  */
 
-package org.apache.shenyu.admin.listener;
+package org.apache.shenyu.admin.listener.utils;
 
-import org.apache.shenyu.admin.service.SyncDataService;
-import org.apache.shenyu.common.enums.DataEventTypeEnum;
-
-import javax.annotation.Resource;
+import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
 
 /**
- * AbstractDataChangedInit.
+ * NodeDataPathUtilsTest.
  */
-public abstract class AbstractDataChangedInit implements DataChangedInit {
+public class NodeDataPathUtilsTest {
 
     /**
-     * SyncDataService, sync all data.
+     * test NodeDataPathUtils appendListStuff method.
      */
-    @Resource
-    private SyncDataService syncDataService;
-
-    @Override
-    public void run(final String... args) throws Exception {
-        if (notExist()) {
-            syncDataService.syncAll(DataEventTypeEnum.REFRESH);
-        }
+    @Test
+    public void testAppendListStuff() {
+        Assertions.assertEquals("plugin.list", 
NodeDataPathUtils.appendListStuff("plugin"));
+        Assertions.assertEquals("meta.list", 
NodeDataPathUtils.appendListStuff("meta"));
     }
-
-    /**
-     * check exist.
-     *
-     * @return boolean.
-     */
-    protected abstract boolean notExist();
 }
diff --git 
a/shenyu-admin-listener/shenyu-admin-listener-apollo/src/main/java/org/apache/shenyu/admin/listener/apollo/ApolloDataChangedInit.java
 
b/shenyu-admin-listener/shenyu-admin-listener-apollo/src/main/java/org/apache/shenyu/admin/listener/apollo/ApolloDataChangedInit.java
index d589cfab11..ee1090b03c 100644
--- 
a/shenyu-admin-listener/shenyu-admin-listener-apollo/src/main/java/org/apache/shenyu/admin/listener/apollo/ApolloDataChangedInit.java
+++ 
b/shenyu-admin-listener/shenyu-admin-listener-apollo/src/main/java/org/apache/shenyu/admin/listener/apollo/ApolloDataChangedInit.java
@@ -18,6 +18,7 @@
 package org.apache.shenyu.admin.listener.apollo;
 
 import org.apache.shenyu.admin.listener.AbstractDataChangedInit;
+import org.apache.shenyu.admin.listener.utils.NodeDataPathUtils;
 import org.apache.shenyu.common.constant.ApolloPathConstants;
 
 import java.util.Objects;
@@ -42,12 +43,14 @@ public class ApolloDataChangedInit extends 
AbstractDataChangedInit {
 
     /**
      * not exist.
+     *
      * @return true if not exist
      */
     @Override
     protected boolean notExist() {
-        return Stream.of(ApolloPathConstants.PLUGIN_DATA_ID, 
ApolloPathConstants.AUTH_DATA_ID, ApolloPathConstants.META_DATA_ID, 
ApolloPathConstants.PROXY_SELECTOR_DATA_ID).allMatch(
-            this::dataIdNotExist);
+        return Stream.of(ApolloPathConstants.PLUGIN_DATA_ID, 
ApolloPathConstants.AUTH_DATA_ID, ApolloPathConstants.META_DATA_ID, 
ApolloPathConstants.PROXY_SELECTOR_DATA_ID)
+                .map(NodeDataPathUtils::appendListStuff)
+                .allMatch(this::dataIdNotExist);
     }
 
     /**
diff --git 
a/shenyu-admin-listener/shenyu-admin-listener-apollo/src/test/java/org/apache/shenyu/admin/listener/apollo/ApolloDataChangedInitTest.java
 
b/shenyu-admin-listener/shenyu-admin-listener-apollo/src/test/java/org/apache/shenyu/admin/listener/apollo/ApolloDataChangedInitTest.java
index d2427c1719..4cdddca25a 100644
--- 
a/shenyu-admin-listener/shenyu-admin-listener-apollo/src/test/java/org/apache/shenyu/admin/listener/apollo/ApolloDataChangedInitTest.java
+++ 
b/shenyu-admin-listener/shenyu-admin-listener-apollo/src/test/java/org/apache/shenyu/admin/listener/apollo/ApolloDataChangedInitTest.java
@@ -17,13 +17,8 @@
 
 package org.apache.shenyu.admin.listener.apollo;
 
-import static 
org.apache.shenyu.common.constant.NacosPathConstants.AUTH_DATA_ID;
-import static 
org.apache.shenyu.common.constant.NacosPathConstants.PLUGIN_DATA_ID;
-import static 
org.apache.shenyu.common.constant.NacosPathConstants.META_DATA_ID;
-import static org.junit.Assert.assertNotNull;
-import static org.mockito.Mockito.when;
-
 import org.apache.shenyu.admin.config.properties.ApolloProperties;
+import org.apache.shenyu.admin.listener.utils.NodeDataPathUtils;
 import org.junit.Test;
 import org.junit.jupiter.api.Assertions;
 import org.junit.runner.RunWith;
@@ -31,6 +26,13 @@ import org.springframework.boot.test.mock.mockito.MockBean;
 import org.springframework.test.context.ContextConfiguration;
 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 
+import static 
org.apache.shenyu.common.constant.ApolloPathConstants.AUTH_DATA_ID;
+import static 
org.apache.shenyu.common.constant.ApolloPathConstants.META_DATA_ID;
+import static 
org.apache.shenyu.common.constant.ApolloPathConstants.PLUGIN_DATA_ID;
+import static 
org.apache.shenyu.common.constant.ApolloPathConstants.PROXY_SELECTOR_DATA_ID;
+import static org.junit.Assert.assertNotNull;
+import static org.mockito.Mockito.when;
+
 @ContextConfiguration(classes = {ApolloDataChangedInit.class})
 @RunWith(SpringJUnit4ClassRunner.class)
 public class ApolloDataChangedInitTest {
@@ -65,21 +67,37 @@ public class ApolloDataChangedInitTest {
     @Test
     public void testNotExist() {
 
-        
when(apolloClient.getItemValue(PLUGIN_DATA_ID)).thenReturn(PLUGIN_DATA_ID);
+        
when(apolloClient.getItemValue(join(PLUGIN_DATA_ID))).thenReturn(PLUGIN_DATA_ID);
         boolean pluginExist = apolloDataChangedInit.notExist();
         Assertions.assertFalse(pluginExist, "plugin exist.");
-        when(apolloClient.getItemValue(PLUGIN_DATA_ID)).thenReturn(null);
+        when(apolloClient.getItemValue(join(PLUGIN_DATA_ID))).thenReturn(null);
 
-        when(apolloClient.getItemValue(AUTH_DATA_ID)).thenReturn(AUTH_DATA_ID);
+        
when(apolloClient.getItemValue(join(AUTH_DATA_ID))).thenReturn(AUTH_DATA_ID);
         boolean authExist = apolloDataChangedInit.notExist();
         Assertions.assertFalse(authExist, "auth exist.");
-        when(apolloClient.getItemValue(AUTH_DATA_ID)).thenReturn(null);
+        when(apolloClient.getItemValue(join(AUTH_DATA_ID))).thenReturn(null);
 
-        when(apolloClient.getItemValue(META_DATA_ID)).thenReturn(META_DATA_ID);
+        
when(apolloClient.getItemValue(join(META_DATA_ID))).thenReturn(META_DATA_ID);
         boolean metaDataExist = apolloDataChangedInit.notExist();
         Assertions.assertFalse(metaDataExist, "metadata exist.");
-        when(apolloClient.getItemValue(META_DATA_ID)).thenReturn(null);
+        when(apolloClient.getItemValue(join(META_DATA_ID))).thenReturn(null);
+
+        
when(apolloClient.getItemValue(join(PROXY_SELECTOR_DATA_ID))).thenReturn(PROXY_SELECTOR_DATA_ID);
+        boolean selectorDataExist = apolloDataChangedInit.notExist();
+        Assertions.assertFalse(selectorDataExist, "selector exist.");
+    }
+
+    @Test
+    public void testAllExist() {
+        
when(apolloClient.getItemValue(join(PLUGIN_DATA_ID))).thenReturn(META_DATA_ID);
+        
when(apolloClient.getItemValue(join(AUTH_DATA_ID))).thenReturn(META_DATA_ID);
+        
when(apolloClient.getItemValue(join(META_DATA_ID))).thenReturn(META_DATA_ID);
+        
when(apolloClient.getItemValue(join(PROXY_SELECTOR_DATA_ID))).thenReturn(META_DATA_ID);
+        Assertions.assertFalse(apolloDataChangedInit.notExist(), "some key not 
exist.");
+    }
 
+    private String join(final String text) {
+        return NodeDataPathUtils.appendListStuff(text);
     }
 }
 
diff --git 
a/shenyu-admin-listener/shenyu-admin-listener-nacos/src/main/java/org/apache/shenyu/admin/listener/nacos/NacosDataChangedInit.java
 
b/shenyu-admin-listener/shenyu-admin-listener-nacos/src/main/java/org/apache/shenyu/admin/listener/nacos/NacosDataChangedInit.java
index d70f49e5b7..7dda9c8a88 100644
--- 
a/shenyu-admin-listener/shenyu-admin-listener-nacos/src/main/java/org/apache/shenyu/admin/listener/nacos/NacosDataChangedInit.java
+++ 
b/shenyu-admin-listener/shenyu-admin-listener-nacos/src/main/java/org/apache/shenyu/admin/listener/nacos/NacosDataChangedInit.java
@@ -20,6 +20,7 @@ package org.apache.shenyu.admin.listener.nacos;
 import com.alibaba.nacos.api.config.ConfigService;
 import com.alibaba.nacos.api.exception.NacosException;
 import org.apache.shenyu.admin.listener.AbstractDataChangedInit;
+import org.apache.shenyu.admin.listener.utils.NodeDataPathUtils;
 import org.apache.shenyu.common.constant.NacosPathConstants;
 import org.apache.shenyu.common.exception.ShenyuException;
 import org.slf4j.Logger;
@@ -50,8 +51,9 @@ public class NacosDataChangedInit extends 
AbstractDataChangedInit {
 
     @Override
     protected boolean notExist() {
-        return Stream.of(NacosPathConstants.PLUGIN_DATA_ID, 
NacosPathConstants.AUTH_DATA_ID, NacosPathConstants.META_DATA_ID, 
NacosPathConstants.PROXY_SELECTOR_DATA_ID).allMatch(
-            this::dataIdNotExist);
+        return Stream.of(NacosPathConstants.PLUGIN_DATA_ID, 
NacosPathConstants.AUTH_DATA_ID, NacosPathConstants.META_DATA_ID, 
NacosPathConstants.PROXY_SELECTOR_DATA_ID)
+                .map(NodeDataPathUtils::appendListStuff)
+                .allMatch(this::dataIdNotExist);
     }
 
     private boolean dataIdNotExist(final String pluginDataId) {
@@ -65,4 +67,5 @@ public class NacosDataChangedInit extends 
AbstractDataChangedInit {
             throw new ShenyuException(e.getMessage());
         }
     }
+
 }
diff --git 
a/shenyu-admin-listener/shenyu-admin-listener-nacos/src/test/java/org/apache/shenyu/admin/listener/nacos/NacosDataChangedInitTest.java
 
b/shenyu-admin-listener/shenyu-admin-listener-nacos/src/test/java/org/apache/shenyu/admin/listener/nacos/NacosDataChangedInitTest.java
index 73c183a05c..79e2f64496 100644
--- 
a/shenyu-admin-listener/shenyu-admin-listener-nacos/src/test/java/org/apache/shenyu/admin/listener/nacos/NacosDataChangedInitTest.java
+++ 
b/shenyu-admin-listener/shenyu-admin-listener-nacos/src/test/java/org/apache/shenyu/admin/listener/nacos/NacosDataChangedInitTest.java
@@ -19,6 +19,7 @@ package org.apache.shenyu.admin.listener.nacos;
 
 import com.alibaba.nacos.api.config.ConfigService;
 import com.alibaba.nacos.api.exception.NacosException;
+import org.apache.shenyu.admin.listener.utils.NodeDataPathUtils;
 import org.apache.shenyu.common.constant.NacosPathConstants;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -47,21 +48,25 @@ public class NacosDataChangedInitTest {
         long timeout = NacosPathConstants.DEFAULT_TIME_OUT;
         NacosDataChangedInit nacosDataChangedInit = new 
NacosDataChangedInit(configService);
 
-        when(configService.getConfig(PLUGIN_DATA_ID, group, 
timeout)).thenReturn(PLUGIN_DATA_ID);
+        when(configService.getConfig(join(PLUGIN_DATA_ID), group, 
timeout)).thenReturn(PLUGIN_DATA_ID);
         boolean pluginExist = nacosDataChangedInit.notExist();
         assertFalse(pluginExist, "plugin exist.");
-        when(configService.getConfig(PLUGIN_DATA_ID, group, 
timeout)).thenReturn(null);
+        when(configService.getConfig(join(PLUGIN_DATA_ID), group, 
timeout)).thenReturn(null);
 
-        when(configService.getConfig(AUTH_DATA_ID, group, 
timeout)).thenReturn(AUTH_DATA_ID);
+        when(configService.getConfig(join(AUTH_DATA_ID), group, 
timeout)).thenReturn(AUTH_DATA_ID);
         boolean authExist = nacosDataChangedInit.notExist();
         assertFalse(authExist, "auth exist.");
-        when(configService.getConfig(AUTH_DATA_ID, group, 
timeout)).thenReturn(null);
+        when(configService.getConfig(join(AUTH_DATA_ID), group, 
timeout)).thenReturn(null);
 
-        when(configService.getConfig(META_DATA_ID, group, 
timeout)).thenReturn(META_DATA_ID);
+        when(configService.getConfig(join(META_DATA_ID), group, 
timeout)).thenReturn(META_DATA_ID);
         boolean metaDataExist = nacosDataChangedInit.notExist();
         assertFalse(metaDataExist, "metadata exist.");
-        when(configService.getConfig(META_DATA_ID, group, 
timeout)).thenReturn(null);
+        when(configService.getConfig(join(META_DATA_ID), group, 
timeout)).thenReturn(null);
         boolean metaDataNotExist = nacosDataChangedInit.notExist();
         assertTrue(metaDataNotExist, "metadata not exist.");
     }
+
+    private String join(final String text) {
+        return NodeDataPathUtils.appendListStuff(text);
+    }
 }

Reply via email to