diff --git a/server/src/main/java/com/rocketmq/studio/cluster/client/ProducerConnectionService.java b/server/src/main/java/com/rocketmq/studio/cluster/client/ProducerConnectionService.java index b5d2b776..23846799 100644 --- a/server/src/main/java/com/rocketmq/studio/cluster/client/ProducerConnectionService.java +++ b/server/src/main/java/com/rocketmq/studio/cluster/client/ProducerConnectionService.java @@ -32,8 +32,10 @@ public class ProducerConnectionService { public List listConnections(String topic, String producerGroup) { log.info("Listing producer connections, topic={}, producerGroup={}", topic, producerGroup); + String normalizedTopic = normalizeFilter(topic); + String normalizedProducerGroup = normalizeFilter(producerGroup); return clientService.listConnections(null, ClientType.Producer.name()).stream() - .filter(connection -> matchesFilter(connection, topic, producerGroup)) + .filter(connection -> matchesFilter(connection, normalizedTopic, normalizedProducerGroup)) .map(this::toProducerConnection) .toList(); } @@ -60,4 +62,8 @@ private ProducerConnectionVO toProducerConnection(ClientConnectionVO connection) private boolean hasText(String value) { return value != null && !value.trim().isEmpty(); } + + private String normalizeFilter(String value) { + return hasText(value) ? value.trim() : null; + } } diff --git a/server/src/test/java/com/rocketmq/studio/cluster/client/ProducerConnectionServiceTest.java b/server/src/test/java/com/rocketmq/studio/cluster/client/ProducerConnectionServiceTest.java index c3d700f1..cb4b6679 100644 --- a/server/src/test/java/com/rocketmq/studio/cluster/client/ProducerConnectionServiceTest.java +++ b/server/src/test/java/com/rocketmq/studio/cluster/client/ProducerConnectionServiceTest.java @@ -91,6 +91,25 @@ void listConnectionsShouldFallbackToProducerGroupWhenTopicIsMissing() { assertThat(result.get(0).getClientId()).isEqualTo("producer-1"); } + @Test + void listConnectionsShouldTrimFilterValues() { + ClientConnectionVO producer = ClientConnectionVO.builder() + .clientId("producer-1") + .type(ClientType.Producer) + .groupOrTopic("order-topic") + .producerGroup("pg-order") + .address("10.0.0.1:38888") + .language(ClientLanguage.Java) + .version("5.1.0") + .build(); + when(clientService.listConnections(null, ClientType.Producer.name())).thenReturn(List.of(producer)); + + List result = producerConnectionService.listConnections(" order-topic ", " pg-order "); + + assertThat(result).hasSize(1); + assertThat(result.get(0).getClientId()).isEqualTo("producer-1"); + } + @Test void listConnectionsShouldRequireProducerGroupWhenBothFiltersAreProvided() { ClientConnectionVO producer = ClientConnectionVO.builder()