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);
+ }
}