This is an automated email from the ASF dual-hosted git repository.
Aias00 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 574bc1e1eb fix(admin): publish namespace plugin creation (#7078)
574bc1e1eb is described below
commit 574bc1e1ebe4b6be24c7e20a93c76a967529cc30
Author: Liming Deng <[email protected]>
AuthorDate: Wed Sep 30 10:00:46 2026 +0800
fix(admin): publish namespace plugin creation (#7078)
* fix(admin): publish namespace plugin creation
* fix(admin): publish namespace plugin after insert
---
.../service/impl/NamespacePluginServiceImpl.java | 8 +++-
.../admin/service/NamespacePluginServiceTest.java | 43 ++++++++++++++++++++++
2 files changed, 49 insertions(+), 2 deletions(-)
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/NamespacePluginServiceImpl.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/NamespacePluginServiceImpl.java
index 4f275f399b..c0c65d7c91 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/NamespacePluginServiceImpl.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/NamespacePluginServiceImpl.java
@@ -98,8 +98,12 @@ public class NamespacePluginServiceImpl implements
NamespacePluginService {
}
PluginDO pluginDO = pluginMapper.selectById(pluginId);
NamespacePluginRelDO namespacePluginRelDO =
NamespacePluginRelDO.buildNamespacePluginRelDO(pluginDO, namespaceId);
- namespacePluginRelMapper.insertSelective(namespacePluginRelDO);
- return
namespacePluginRelMapper.selectByPluginIdAndNamespaceId(pluginId, namespaceId);
+ if (namespacePluginRelMapper.insertSelective(namespacePluginRelDO) <=
0) {
+ return null;
+ }
+ NamespacePluginVO namespacePluginVO =
namespacePluginRelMapper.selectByPluginIdAndNamespaceId(pluginId, namespaceId);
+ namespacePluginEventPublisher.onCreated(namespacePluginVO);
+ return namespacePluginVO;
}
@Override
diff --git
a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/NamespacePluginServiceTest.java
b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/NamespacePluginServiceTest.java
index e8bed44d35..4fcdc9a9f9 100644
---
a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/NamespacePluginServiceTest.java
+++
b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/NamespacePluginServiceTest.java
@@ -19,12 +19,15 @@ package org.apache.shenyu.admin.service;
import org.apache.shenyu.admin.mapper.NamespacePluginRelMapper;
import org.apache.shenyu.admin.mapper.PluginHandleMapper;
+import org.apache.shenyu.admin.mapper.PluginMapper;
import org.apache.shenyu.admin.mapper.SelectorMapper;
+import org.apache.shenyu.admin.model.entity.PluginDO;
import org.apache.shenyu.admin.model.entity.PluginHandleDO;
import org.apache.shenyu.admin.model.entity.SelectorDO;
import org.apache.shenyu.admin.model.vo.NamespacePluginVO;
import org.apache.shenyu.admin.model.vo.PluginSnapshotVO;
import org.apache.shenyu.admin.service.impl.NamespacePluginServiceImpl;
+import org.apache.shenyu.admin.service.publish.NamespacePluginEventPublisher;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@@ -54,6 +57,46 @@ public final class NamespacePluginServiceTest {
@Mock
private PluginHandleMapper pluginHandleMapper;
+ @Mock
+ private PluginMapper pluginMapper;
+
+ @Mock
+ private NamespacePluginEventPublisher namespacePluginEventPublisher;
+
+ @Test
+ public void testCreatePublishesCreatedEvent() {
+ String namespaceId = "namespaceId";
+ String pluginId = "pluginId";
+ PluginDO pluginDO = Mockito.mock(PluginDO.class);
+ NamespacePluginVO created = Mockito.mock(NamespacePluginVO.class);
+ Mockito.when(pluginDO.getId()).thenReturn(pluginId);
+ Mockito.when(pluginMapper.selectById(pluginId)).thenReturn(pluginDO);
+
Mockito.when(namespacePluginRelMapper.insertSelective(Mockito.any())).thenReturn(1);
+
Mockito.when(namespacePluginRelMapper.selectByPluginIdAndNamespaceId(pluginId,
namespaceId))
+ .thenReturn(null, created);
+
+ NamespacePluginVO result = namespacePluginService.create(namespaceId,
pluginId);
+
+ Assertions.assertSame(created, result);
+ Mockito.verify(namespacePluginEventPublisher).onCreated(created);
+ }
+
+ @Test
+ public void testCreateDoesNotPublishWhenInsertFails() {
+ String namespaceId = "namespaceId";
+ String pluginId = "pluginId";
+ PluginDO pluginDO = Mockito.mock(PluginDO.class);
+ Mockito.when(pluginDO.getId()).thenReturn(pluginId);
+ Mockito.when(pluginMapper.selectById(pluginId)).thenReturn(pluginDO);
+
Mockito.when(namespacePluginRelMapper.insertSelective(Mockito.any())).thenReturn(0);
+
+ NamespacePluginVO result = namespacePluginService.create(namespaceId,
pluginId);
+
+ Assertions.assertNull(result);
+ Mockito.verify(namespacePluginEventPublisher,
Mockito.never()).onCreated(Mockito.any(NamespacePluginVO.class));
+
Mockito.verify(namespacePluginRelMapper).selectByPluginIdAndNamespaceId(pluginId,
namespaceId);
+ }
+
@Test
public void testActivePluginSnapshot() {
String namespaceId = "testNamespaceId";