This is an automated email from the ASF dual-hosted git repository. hefengen 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 4a10c458c9 [type:feature] selector copy and rule copy adapted to namespace (#5787) 4a10c458c9 is described below commit 4a10c458c995c9600a420cd099dc6faf9e3d9da0 Author: aias00 <liuhon...@apache.org> AuthorDate: Wed Nov 20 19:02:03 2024 +0800 [type:feature] selector copy and rule copy adapted to namespace (#5787) * [type:feature] selector copy namespace * [type:feature] selector copy namespace --- .../apache/shenyu/admin/controller/PluginController.java | 12 ++++++++++++ .../java/org/apache/shenyu/admin/service/PluginService.java | 8 ++++++++ .../apache/shenyu/admin/service/impl/PluginServiceImpl.java | 13 ++++++++++++- 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/PluginController.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/PluginController.java index 20a6bf0a98..f07681efd5 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/PluginController.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/PluginController.java @@ -88,6 +88,18 @@ public class PluginController implements PagedController<PluginQueryCondition, P return ShenyuAdminResult.success(ShenyuResultMessage.QUERY_SUCCESS, pluginDataList); } + /** + * query plugins by namespace. + * + * @param namespace namespace. + * @return {@linkplain ShenyuAdminResult} + */ + @GetMapping("/listByNamespace") + public ShenyuAdminResult queryPluginsByNamespace(final String namespace) { + List<PluginData> pluginDataList = pluginService.listByNamespace(namespace); + return ShenyuAdminResult.success(ShenyuResultMessage.QUERY_SUCCESS, pluginDataList); + } + /** * detail plugin. * diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/PluginService.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/PluginService.java index d37127bf3c..06966f3194 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/PluginService.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/PluginService.java @@ -79,6 +79,14 @@ public interface PluginService extends PageService<PluginQueryCondition, PluginV * @return the list */ List<PluginData> listAll(); + + /** + * List by namespace list. + * + * @param namespace the namespace + * @return the list + */ + List<PluginData> listByNamespace(String namespace); /** * List all vo list. diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/PluginServiceImpl.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/PluginServiceImpl.java index a0d80daf95..de047f6d1d 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/PluginServiceImpl.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/PluginServiceImpl.java @@ -32,6 +32,7 @@ import org.apache.shenyu.admin.model.page.PageResultUtils; import org.apache.shenyu.admin.model.query.PluginQuery; import org.apache.shenyu.admin.model.query.PluginQueryCondition; import org.apache.shenyu.admin.model.result.ConfigImportResult; +import org.apache.shenyu.admin.model.vo.NamespacePluginVO; import org.apache.shenyu.admin.model.vo.PluginHandleVO; import org.apache.shenyu.admin.model.vo.PluginSnapshotVO; import org.apache.shenyu.admin.model.vo.PluginVO; @@ -206,7 +207,17 @@ public class PluginServiceImpl implements PluginService { public List<PluginData> listAll() { return ListUtil.map(pluginMapper.selectAll(), PluginTransfer.INSTANCE::mapToData); } - + + @Override + public List<PluginData> listByNamespace(final String namespace) { + List<NamespacePluginVO> namespacePluginList = namespacePluginRelMapper.selectAllByNamespaceId(namespace); + if (CollectionUtils.isEmpty(namespacePluginList)) { + return Lists.newArrayList(); + } + List<String> pluginIds = namespacePluginList.stream().map(NamespacePluginVO::getPluginId).distinct().collect(Collectors.toList()); + return ListUtil.map(pluginMapper.selectByIds(pluginIds), PluginTransfer.INSTANCE::mapToData); + } + @Override public List<PluginVO> listAllData() { // plugin handle