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

Reply via email to