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