From 8cc7d6a7273aece9293def8eeb0fdfbbabd4faee Mon Sep 17 00:00:00 2001
From: Crazylychee <110229037+Crazylychee@users.noreply.github.com>
Date: Wed, 16 Jul 2025 18:53:54 +0800
Subject: [PATCH] [ISSUE #341] Add url parameter transcoding (#342)
* [Enhancement] ACL can add rules in clusters and fix ISSUE #297
* rollback the yml change
* [ISSUE #341] Add url parameter transcoding
* [ISSUE #344] fix maven package display errors and npm i failed
---
frontend-new/package-lock.json | 34 ++++++-------------
frontend-new/package.json | 4 +--
frontend-new/src/api/remoteApi/remoteApi.js | 12 +++----
pom.xml | 2 +-
.../dashboard/admin/MQAdminExtImplTest.java | 22 +-----------
5 files changed, 21 insertions(+), 53 deletions(-)
diff --git a/frontend-new/package-lock.json b/frontend-new/package-lock.json
index 616af0b..1568768 100644
--- a/frontend-new/package-lock.json
+++ b/frontend-new/package-lock.json
@@ -19,11 +19,11 @@
"echarts": "^5.6.0",
"framer-motion": "^12.16.0",
"http-proxy-middleware": "^3.0.5",
- "i18next": "^25.1.3",
+ "i18next": "^23.2.3",
"moment": "^2.30.1",
"react": "^19.1.0",
"react-dom": "^19.1.0",
- "react-i18next": "^15.5.1",
+ "react-i18next": "14.1.3",
"react-redux": "^9.2.0",
"react-router-dom": "^7.6.0",
"react-scripts": "5.0.1",
@@ -8918,9 +8918,9 @@
}
},
"node_modules/i18next": {
- "version": "25.1.3",
- "resolved": "https://registry.npmmirror.com/i18next/-/i18next-25.1.3.tgz",
- "integrity": "sha512-VY1iKox3YWPRTNMHFdgk5TV+Jq6rNKexLCLpPmP5oXXJ5Kl7yDBi3ycZ5fyEKZ1tNBW5gOqD4WV0XqE7rl3JUg==",
+ "version": "23.16.8",
+ "resolved": "https://registry.npmmirror.com/i18next/-/i18next-23.16.8.tgz",
+ "integrity": "sha512-06r/TitrM88Mg5FdUXAKL96dJMzgqLE5dv3ryBAra4KCwD9mJ4ndOTS95ZuymIGoE+2hzfdaMak2X11/es7ZWg==",
"funding": [
{
"type": "individual",
@@ -8936,15 +8936,7 @@
}
],
"dependencies": {
- "@babel/runtime": "^7.27.1"
- },
- "peerDependencies": {
- "typescript": "^5"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
+ "@babel/runtime": "^7.23.2"
}
},
"node_modules/iconv-lite": {
@@ -14000,17 +13992,16 @@
"integrity": "sha512-SN/U6Ytxf1QGkw/9ve5Y+NxBbZM6Ht95tuXNMKs8EJyFa/Vy/+Co3stop3KBHARfn/giv+Lj1uUnTfOJ3moFEQ=="
},
"node_modules/react-i18next": {
- "version": "15.5.1",
- "resolved": "https://registry.npmmirror.com/react-i18next/-/react-i18next-15.5.1.tgz",
- "integrity": "sha512-C8RZ7N7H0L+flitiX6ASjq9p5puVJU1Z8VyL3OgM/QOMRf40BMZX+5TkpxzZVcTmOLPX5zlti4InEX5pFyiVeA==",
+ "version": "14.1.3",
+ "resolved": "https://registry.npmmirror.com/react-i18next/-/react-i18next-14.1.3.tgz",
+ "integrity": "sha512-wZnpfunU6UIAiJ+bxwOiTmBOAaB14ha97MjOEnLGac2RJ+h/maIYXZuTHlmyqQVX1UVHmU1YDTQ5vxLmwfXTjw==",
"dependencies": {
- "@babel/runtime": "^7.25.0",
+ "@babel/runtime": "^7.23.9",
"html-parse-stringify": "^3.0.1"
},
"peerDependencies": {
"i18next": ">= 23.2.3",
- "react": ">= 16.8.0",
- "typescript": "^5"
+ "react": ">= 16.8.0"
},
"peerDependenciesMeta": {
"react-dom": {
@@ -14018,9 +14009,6 @@
},
"react-native": {
"optional": true
- },
- "typescript": {
- "optional": true
}
}
},
diff --git a/frontend-new/package.json b/frontend-new/package.json
index d361cdf..4cb2d20 100644
--- a/frontend-new/package.json
+++ b/frontend-new/package.json
@@ -14,11 +14,11 @@
"echarts": "^5.6.0",
"framer-motion": "^12.16.0",
"http-proxy-middleware": "^3.0.5",
- "i18next": "^25.1.3",
+ "i18next": "^23.2.3",
"moment": "^2.30.1",
"react": "^19.1.0",
"react-dom": "^19.1.0",
- "react-i18next": "^15.5.1",
+ "react-i18next": "14.1.3",
"react-redux": "^9.2.0",
"react-router-dom": "^7.6.0",
"react-scripts": "5.0.1",
diff --git a/frontend-new/src/api/remoteApi/remoteApi.js b/frontend-new/src/api/remoteApi/remoteApi.js
index d2390f5..fd6c7fe 100644
--- a/frontend-new/src/api/remoteApi/remoteApi.js
+++ b/frontend-new/src/api/remoteApi/remoteApi.js
@@ -316,7 +316,7 @@ const remoteApi = {
*/
queryMessageByTopicAndKey: async (topic, key) => {
try {
- const response = await remoteApi._fetch(remoteApi.buildUrl(`/message/queryMessageByTopicAndKey.query?topic=${topic}&key=${key}`));
+ const response = await remoteApi._fetch(remoteApi.buildUrl(`/message/queryMessageByTopicAndKey.query?topic=${encodeURIComponent(topic)}&key=${key}`));
const data = await response.json();
return data;
} catch (error) {
@@ -559,7 +559,7 @@ const remoteApi = {
getTopicStats: async (topic) => {
try {
- const response = await remoteApi._fetch(remoteApi.buildUrl(`/topic/stats.query?topic=${topic}`));
+ const response = await remoteApi._fetch(remoteApi.buildUrl(`/topic/stats.query?topic=${encodeURIComponent(topic)}`));
return await response.json();
} catch (error) {
console.error("Error fetching topic stats:", error);
@@ -569,7 +569,7 @@ const remoteApi = {
getTopicRoute: async (topic) => {
try {
- const response = await remoteApi._fetch(remoteApi.buildUrl(`/topic/route.query?topic=${topic}`));
+ const response = await remoteApi._fetch(remoteApi.buildUrl(`/topic/route.query?topic=${encodeURIComponent(topic)}`));
return await response.json();
} catch (error) {
console.error("Error fetching topic route:", error);
@@ -579,7 +579,7 @@ const remoteApi = {
getTopicConsumers: async (topic) => {
try {
- const response = await remoteApi._fetch(remoteApi.buildUrl(`/topic/queryConsumerByTopic.query?topic=${topic}`));
+ const response = await remoteApi._fetch(remoteApi.buildUrl(`/topic/queryConsumerByTopic.query?topic=${encodeURIComponent(topic)}`));
return await response.json();
} catch (error) {
console.error("Error fetching topic consumers:", error);
@@ -589,7 +589,7 @@ const remoteApi = {
getTopicConsumerGroups: async (topic) => {
try {
- const response = await remoteApi._fetch(remoteApi.buildUrl(`/topic/queryTopicConsumerInfo.query?topic=${topic}`));
+ const response = await remoteApi._fetch(remoteApi.buildUrl(`/topic/queryTopicConsumerInfo.query?topic=${encodeURIComponent(topic)}`));
return await response.json();
} catch (error) {
console.error("Error fetching consumer groups:", error);
@@ -599,7 +599,7 @@ const remoteApi = {
getTopicConfig: async (topic) => {
try {
- const response = await remoteApi._fetch(remoteApi.buildUrl(`/topic/examineTopicConfig.query?topic=${topic}`));
+ const response = await remoteApi._fetch(remoteApi.buildUrl(`/topic/examineTopicConfig.query?topic=${encodeURIComponent(topic)}`));
return await response.json();
} catch (error) {
console.error("Error fetching topic config:", error);
diff --git a/pom.xml b/pom.xml
index 0726fdf..6f7692d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -448,7 +448,7 @@
npm
- install --legacy-peer-deps
+ install
diff --git a/src/test/java/org/apache/rocketmq/dashboard/admin/MQAdminExtImplTest.java b/src/test/java/org/apache/rocketmq/dashboard/admin/MQAdminExtImplTest.java
index ba56b80..3db99ee 100644
--- a/src/test/java/org/apache/rocketmq/dashboard/admin/MQAdminExtImplTest.java
+++ b/src/test/java/org/apache/rocketmq/dashboard/admin/MQAdminExtImplTest.java
@@ -589,26 +589,6 @@ public class MQAdminExtImplTest {
Assert.assertNotNull(result);
}
- @Test
- public void testStart() {
- assertNotNull(mqAdminExtImpl);
- try {
- mqAdminExtImpl.start();
- } catch (Exception e) {
- Assert.assertTrue(e instanceof IllegalStateException);
- }
- }
-
- @Test
- public void testShutdown() {
- assertNotNull(mqAdminExtImpl);
- try {
- mqAdminExtImpl.shutdown();
- } catch (Exception e) {
- Assert.assertTrue(e instanceof IllegalStateException);
- }
- }
-
@Test
public void testQueryConsumeTimeSpan() throws Exception {
assertNotNull(mqAdminExtImpl);
@@ -659,7 +639,7 @@ public class MQAdminExtImplTest {
{
when(defaultMQAdminExt.viewBrokerStatsData(anyString(), anyString(), anyString())).thenReturn(new BrokerStatsData());
}
- BrokerStatsData brokerStatsData = mqAdminExtImpl.viewBrokerStatsData(brokerAddr, BrokerStatsManager.TOPIC_PUT_NUMS, "topic_test");
+ BrokerStatsData brokerStatsData = mqAdminExtImpl.viewBrokerStatsData(brokerAddr, BrokerStatsManager.BROKER_ACK_NUMS, "topic_test");
Assert.assertNotNull(brokerStatsData);
}