This is an automated email from the ASF dual-hosted git repository.

xiaoyu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-shenyu.git


The following commit(s) were added to refs/heads/master by this push:
     new cf85e6c  [type:refactor] optimize metadata & uri data register. (#2154)
cf85e6c is described below

commit cf85e6cca59a98389bafeba15b6d3c9249ea9568
Author: Qicz <[email protected]>
AuthorDate: Tue Sep 28 10:52:02 2021 +0800

    [type:refactor] optimize metadata & uri data register. (#2154)
---
 .../executor/RegisterServerConsumerExecutor.java   | 32 +++++++++++++++++++---
 .../subscriber/URIRegisterExecutorSubscriber.java  | 21 +++++---------
 .../AbstractShenyuClientRegisterServiceImpl.java   |  2 +-
 .../ShenyuClientRegisterDefaultServiceImpl.java    |  2 +-
 .../ShenyuClientRegisterServiceFactory.java        |  4 +--
 5 files changed, 39 insertions(+), 22 deletions(-)

diff --git 
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/disruptor/executor/RegisterServerConsumerExecutor.java
 
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/disruptor/executor/RegisterServerConsumerExecutor.java
index a9e8130..7270b40 100644
--- 
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/disruptor/executor/RegisterServerConsumerExecutor.java
+++ 
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/disruptor/executor/RegisterServerConsumerExecutor.java
@@ -17,15 +17,20 @@
 
 package org.apache.shenyu.admin.disruptor.executor;
 
+import org.apache.commons.lang3.StringUtils;
+import org.apache.shenyu.common.utils.CollectionUtils;
+import org.apache.shenyu.disruptor.consumer.QueueConsumerExecutor;
+import org.apache.shenyu.register.common.dto.MetaDataRegisterDTO;
+import org.apache.shenyu.register.common.dto.URIRegisterDTO;
 import org.apache.shenyu.register.common.subsriber.ExecutorSubscriber;
 import org.apache.shenyu.register.common.subsriber.ExecutorTypeSubscriber;
-import org.apache.shenyu.disruptor.consumer.QueueConsumerExecutor;
 import org.apache.shenyu.register.common.type.DataType;
 import org.apache.shenyu.register.common.type.DataTypeParent;
 
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 /**
@@ -43,13 +48,32 @@ public final class RegisterServerConsumerExecutor extends 
QueueConsumerExecutor<
     @Override
     public void run() {
         List<DataTypeParent> results = getData();
+        results = results.stream().filter(data -> 
isValidData(data)).collect(Collectors.toList());
+        if (CollectionUtils.isEmpty(results)) {
+            return;
+        }
         getType(results).executor(results);
     }
+
+    private boolean isValidData(final Object data) {
+        if (data instanceof URIRegisterDTO) {
+            URIRegisterDTO uriRegisterDTO = (URIRegisterDTO) data;
+            return Objects.nonNull(uriRegisterDTO.getPort())
+                    && StringUtils.isNoneBlank(uriRegisterDTO.getAppName(), 
uriRegisterDTO.getHost());
+        }
+        if (data instanceof MetaDataRegisterDTO) {
+            MetaDataRegisterDTO metaDataRegisterDTO = (MetaDataRegisterDTO) 
data;
+            return Objects.nonNull(metaDataRegisterDTO.getPort())
+                    && 
StringUtils.isNoneBlank(metaDataRegisterDTO.getAppName(),
+                    metaDataRegisterDTO.getHost(),
+                    metaDataRegisterDTO.getPath(),
+                    metaDataRegisterDTO.getRuleName(),
+                    metaDataRegisterDTO.getRpcType());
+        }
+        return true;
+    }
     
     private ExecutorSubscriber getType(final List<DataTypeParent> list) {
-        if (list == null || list.isEmpty()) {
-            return null;
-        }
         DataTypeParent result = list.get(0);
         return subscribers.get(result.getType());
     }
diff --git 
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/disruptor/subscriber/URIRegisterExecutorSubscriber.java
 
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/disruptor/subscriber/URIRegisterExecutorSubscriber.java
index 702c208..27b50a1 100644
--- 
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/disruptor/subscriber/URIRegisterExecutorSubscriber.java
+++ 
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/disruptor/subscriber/URIRegisterExecutorSubscriber.java
@@ -23,7 +23,6 @@ import org.apache.shenyu.register.common.dto.URIRegisterDTO;
 import org.apache.shenyu.register.common.subsriber.ExecutorTypeSubscriber;
 import org.apache.shenyu.register.common.type.DataType;
 
-import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
@@ -33,9 +32,9 @@ import java.util.stream.Collectors;
  * The type Uri register executor subscriber.
  */
 public class URIRegisterExecutorSubscriber implements 
ExecutorTypeSubscriber<URIRegisterDTO> {
-
+    
     private final Map<String, ShenyuClientRegisterServiceFactory> 
shenyuClientRegisterService;
-
+    
     /**
      * Instantiates a new Uri register executor subscriber.
      *
@@ -44,23 +43,17 @@ public class URIRegisterExecutorSubscriber implements 
ExecutorTypeSubscriber<URI
     public URIRegisterExecutorSubscriber(final Map<String, 
ShenyuClientRegisterServiceFactory> shenyuClientRegisterService) {
         this.shenyuClientRegisterService = shenyuClientRegisterService;
     }
-
+    
     @Override
     public DataType getType() {
         return DataType.URI;
     }
-
+    
     @Override
     public void executor(final Collection<URIRegisterDTO> dataList) {
         Map<String, List<URIRegisterDTO>> listMap = 
dataList.stream().collect(Collectors.groupingBy(URIRegisterDTO::getContextPath));
-        listMap.forEach((contextPath, dtoList) -> {
-            List<String> uriList = new ArrayList<>();
-            dataList.forEach(uriRegisterDTO -> {
-                if (uriRegisterDTO.getHost() != null && 
uriRegisterDTO.getPort() != null) {
-                    uriList.add(String.join(":", uriRegisterDTO.getHost(), 
uriRegisterDTO.getPort().toString()));
-                }
-            });
-            
shenyuClientRegisterService.get(Constants.DEFAULT.toLowerCase()).registerURI(contextPath,
 uriList);
-        });
+        listMap.forEach((contextPath, dtoList) -> 
shenyuClientRegisterService.get(Constants.DEFAULT.toLowerCase())
+                .registerUri(contextPath, dtoList.stream()
+                .map(s -> String.join(":", s.getHost(), 
s.getPort().toString())).collect(Collectors.toList())));
     }
 }
diff --git 
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/register/AbstractShenyuClientRegisterServiceImpl.java
 
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/register/AbstractShenyuClientRegisterServiceImpl.java
index 7e3bd3a..4045a55 100644
--- 
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/register/AbstractShenyuClientRegisterServiceImpl.java
+++ 
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/register/AbstractShenyuClientRegisterServiceImpl.java
@@ -67,7 +67,7 @@ public abstract class AbstractShenyuClientRegisterServiceImpl 
implements ShenyuC
     protected abstract void handlerRule(String selectorId, MetaDataRegisterDTO 
metaDataDTO, MetaDataDO exist);
 
     @Override
-    public String registerURI(final String contextPath, final List<String> 
uriList) {
+    public String registerUri(final String contextPath, final List<String> 
uriList) {
         return null;
     }
 
diff --git 
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/register/ShenyuClientRegisterDefaultServiceImpl.java
 
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/register/ShenyuClientRegisterDefaultServiceImpl.java
index 4a77702..8289407 100644
--- 
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/register/ShenyuClientRegisterDefaultServiceImpl.java
+++ 
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/register/ShenyuClientRegisterDefaultServiceImpl.java
@@ -66,7 +66,7 @@ public class ShenyuClientRegisterDefaultServiceImpl extends 
AbstractShenyuClient
     }
 
     @Override
-    public String registerURI(final String contextPath, final List<String> 
uriList) {
+    public String registerUri(final String contextPath, final List<String> 
uriList) {
         SelectorDO selector = selectorService.findByName(contextPath);
         SelectorData selectorData = selectorService.buildByName(contextPath);
         PluginDO pluginDO = pluginMapper.selectById(selector.getPluginId());
diff --git 
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/register/ShenyuClientRegisterServiceFactory.java
 
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/register/ShenyuClientRegisterServiceFactory.java
index c19bfcc..cf74f24 100644
--- 
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/register/ShenyuClientRegisterServiceFactory.java
+++ 
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/register/ShenyuClientRegisterServiceFactory.java
@@ -37,9 +37,9 @@ public interface ShenyuClientRegisterServiceFactory {
     /**
      * mvc uri upstream update.
      *
-     * @param contextPath context paht
+     * @param contextPath context path
      * @param uriList     uri list
      * @return the string
      */
-    String registerURI(String contextPath, List<String> uriList);
+    String registerUri(String contextPath, List<String> uriList);
 }

Reply via email to