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 0d79da5  [type:fixbug]  NPE when register by other register center 
(#2151)
0d79da5 is described below

commit 0d79da5010fce3b807bea1df9979bc25a0965d94
Author: SaberSola <[email protected]>
AuthorDate: Mon Sep 27 19:26:00 2021 +0800

    [type:fixbug]  NPE when register by other register center (#2151)
    
    * fix static resource index.html
    
    * fix npe exception when register by other register center
    
    * fix npe exception when register by other register center
    
    * merge master
    
    Co-authored-by: zhanglei06469 <[email protected]>
---
 .../subscriber/URIRegisterExecutorSubscriber.java  | 19 ++++++++++++-----
 .../ShenyuClientRegisterDefaultServiceImpl.java    | 24 ++--------------------
 .../ShenyuClientRegisterServiceFactory.java        | 14 -------------
 .../apache/shenyu/common/enums/RpcTypeEnum.java    |  2 +-
 4 files changed, 17 insertions(+), 42 deletions(-)

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 4cadbc9..702c208 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,6 +23,7 @@ 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;
@@ -32,9 +33,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.
      *
@@ -43,15 +44,23 @@ 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) -> 
shenyuClientRegisterService.get(Constants.DEFAULT.toLowerCase()).registerURIDefault(contextPath,
 dtoList));
+        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);
+        });
     }
 }
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 553d321..4a77702 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
@@ -32,7 +32,6 @@ import org.apache.shenyu.common.enums.DataEventTypeEnum;
 import org.apache.shenyu.common.enums.PluginEnum;
 import org.apache.shenyu.common.utils.GsonUtils;
 import org.apache.shenyu.register.common.dto.MetaDataRegisterDTO;
-import org.apache.shenyu.register.common.dto.URIRegisterDTO;
 import org.springframework.context.ApplicationEventPublisher;
 import org.springframework.stereotype.Service;
 
@@ -70,31 +69,17 @@ public class ShenyuClientRegisterDefaultServiceImpl extends 
AbstractShenyuClient
     public String registerURI(final String contextPath, final List<String> 
uriList) {
         SelectorDO selector = selectorService.findByName(contextPath);
         SelectorData selectorData = selectorService.buildByName(contextPath);
-        String handler = 
GsonUtils.getInstance().toJson(buildDivideUpstreamList(uriList));
-        selector.setHandle(handler);
-        selectorData.setHandle(handler);
-        selectorService.updateSelective(selector);
-        // publish change event.
-        eventPublisher.publishEvent(new 
DataChangedEvent(ConfigGroupEnum.SELECTOR, DataEventTypeEnum.UPDATE,
-                Collections.singletonList(selectorData)));
-        return ShenyuResultMessage.SUCCESS;
-    }
-
-    @Override
-    public String registerURIDefault(final String contextPath, final 
List<URIRegisterDTO> registerDTOList) {
-        SelectorDO selector = selectorService.findByName(contextPath);
-        SelectorData selectorData = selectorService.buildByName(contextPath);
         PluginDO pluginDO = pluginMapper.selectById(selector.getPluginId());
         String handler = null;
         if (PluginEnum.SPRING_CLOUD.getName().equals(pluginDO.getName())) {
             if (Objects.nonNull(selector.getHandle())) {
                 SpringCloudSelectorHandle springCloudSelectorHandle = 
GsonUtils.getInstance()
                         .fromJson(selector.getHandle(), 
SpringCloudSelectorHandle.class);
-                
springCloudSelectorHandle.setDivideUpstreams(buildDivideUpstreams(registerDTOList));
+                
springCloudSelectorHandle.setDivideUpstreams(buildDivideUpstreamList(uriList));
                 handler = 
GsonUtils.getInstance().toJson(springCloudSelectorHandle);
             }
         } else {
-            handler = 
GsonUtils.getInstance().toJson(buildDivideUpstreams(registerDTOList));
+            handler = 
GsonUtils.getInstance().toJson(buildDivideUpstreamList(uriList));
         }
         selector.setHandle(handler);
         selectorData.setHandle(handler);
@@ -123,9 +108,4 @@ public class ShenyuClientRegisterDefaultServiceImpl extends 
AbstractShenyuClient
     private List<DivideUpstream> buildDivideUpstreamList(final List<String> 
uriList) {
         return 
uriList.stream().map(this::buildDivideUpstream).collect(Collectors.toList());
     }
-
-    private List<DivideUpstream> buildDivideUpstreams(final 
List<URIRegisterDTO> registerDTOList) {
-        return registerDTOList.stream()
-                .map(s -> buildDivideUpstream(String.join(":", s.getHost(), 
s.getPort().toString()))).collect(Collectors.toList());
-    }
 }
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 a52239a..c19bfcc 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
@@ -17,9 +17,7 @@
 
 package org.apache.shenyu.admin.service.register;
 
-import org.apache.shenyu.admin.utils.ShenyuResultMessage;
 import org.apache.shenyu.register.common.dto.MetaDataRegisterDTO;
-import org.apache.shenyu.register.common.dto.URIRegisterDTO;
 
 import java.util.List;
 
@@ -28,18 +26,6 @@ import java.util.List;
  */
 public interface ShenyuClientRegisterServiceFactory {
 
-
-    /**
-     * uri upstream update.
-     *
-     * @param contextPath     context paht
-     * @param registerDTOList registerDTOList
-     * @return the string
-     */
-    default String registerURIDefault(String contextPath, List<URIRegisterDTO> 
registerDTOList) {
-        return ShenyuResultMessage.SUCCESS;
-    }
-
     /**
      * Register meta data.
      *
diff --git 
a/shenyu-common/src/main/java/org/apache/shenyu/common/enums/RpcTypeEnum.java 
b/shenyu-common/src/main/java/org/apache/shenyu/common/enums/RpcTypeEnum.java
index b6f543b..e104148 100644
--- 
a/shenyu-common/src/main/java/org/apache/shenyu/common/enums/RpcTypeEnum.java
+++ 
b/shenyu-common/src/main/java/org/apache/shenyu/common/enums/RpcTypeEnum.java
@@ -127,7 +127,7 @@ public enum RpcTypeEnum {
      * @return operator support.
      */
     public static List<RpcTypeEnum> acquireSupportMetadatas() {
-        return Arrays.asList(RpcTypeEnum.DUBBO, RpcTypeEnum.GRPC, 
RpcTypeEnum.SPRING_CLOUD, RpcTypeEnum.SOFA, RpcTypeEnum.TARS, 
RpcTypeEnum.MOTAN);
+        return Arrays.asList(RpcTypeEnum.HTTP, RpcTypeEnum.DUBBO, 
RpcTypeEnum.GRPC, RpcTypeEnum.SPRING_CLOUD, RpcTypeEnum.SOFA, RpcTypeEnum.TARS, 
RpcTypeEnum.MOTAN);
     }
 
     /**

Reply via email to