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 504bad7  [type: refactor] fix generics (#2936)
504bad7 is described below

commit 504bad7cb0eb994c1cb4f35872caf85bc0f48001
Author: likeguo <[email protected]>
AuthorDate: Fri Feb 25 21:13:17 2022 +0800

    [type: refactor] fix generics (#2936)
    
    * fix generics
    
    * fix generics
    
    * fix generics
    
    * fix generics
    
    * fix generics
    
    * fix generics
    
    * clean code
    
    * clean code
---
 .../controller/ShenyuHttpRegistryController.java   | 11 +---
 .../RegisterServerDisruptorPublisher.java          | 28 +++++---
 .../executor/RegisterServerConsumerExecutor.java   | 76 ++++++++++++++++------
 .../admin/transfer/DashboardUserTransfer.java      |  2 +-
 .../ShenyuClientRegisterEventPublisher.java        | 15 ++---
 .../executor/RegisterClientConsumerExecutor.java   | 25 +++----
 .../ShenyuClientURIExecutorSubscriber.java         |  2 +-
 .../dubbo/AlibabaDubboServiceBeanListener.java     | 28 ++++----
 .../shenyu/common/timer/AbstractRetryTask.java     |  2 +-
 .../shenyu/common/timer/AbstractRoundTask.java     |  2 +-
 .../shenyu/disruptor/DisruptorProviderManage.java  |  8 +--
 .../event/OrderlyDisruptorEventFactory.java        |  2 +-
 .../client/http/HttpClientRegisterRepository.java  |  2 +-
 .../register/client/http/utils/RegisterUtils.java  |  2 +-
 .../subsriber/AbstractQueueConsumerFactory.java    | 10 +--
 .../server/api/ShenyuServerRegisterPublisher.java  | 14 +++-
 .../consul/ConsulServerRegisterRepositoryTest.java | 21 +++---
 .../etcd/EtcdServerRegisterRepositoryTest.java     | 39 ++++++-----
 .../nacos/NacosServerRegisterRepositoryTest.java   | 75 +++++++++++----------
 .../ZookeeperServerRegisterRepositoryTest.java     | 62 ++++++++++--------
 .../ShenyuAlibabaDubboClientConfigurationTest.java |  2 +-
 .../sync/data/consul/ConsulSyncDataService.java    |  2 +
 22 files changed, 251 insertions(+), 179 deletions(-)

diff --git 
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/ShenyuHttpRegistryController.java
 
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/ShenyuHttpRegistryController.java
index 25934a3..7449f58 100644
--- 
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/ShenyuHttpRegistryController.java
+++ 
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/ShenyuHttpRegistryController.java
@@ -29,8 +29,6 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 
-import java.util.Collections;
-
 /**
  * The type shenyu client controller.
  */
@@ -59,7 +57,7 @@ public class ShenyuHttpRegistryController implements 
ShenyuServerRegisterReposit
     @PostMapping("/register-metadata")
     @ResponseBody
     public String registerMetadata(@RequestBody final MetaDataRegisterDTO 
metaDataRegisterDTO) {
-        publish(metaDataRegisterDTO);
+        publisher.publish(metaDataRegisterDTO);
         return ShenyuResultMessage.SUCCESS;
     }
     
@@ -73,11 +71,8 @@ public class ShenyuHttpRegistryController implements 
ShenyuServerRegisterReposit
     @PostMapping("/register-uri")
     @ResponseBody
     public String registerURI(@RequestBody final URIRegisterDTO 
uriRegisterDTO) {
-        publish(uriRegisterDTO);
+        publisher.publish(uriRegisterDTO);
         return ShenyuResultMessage.SUCCESS;
     }
-
-    private <T> void publish(final T t) {
-        publisher.publish(Collections.singletonList(t));
-    }
+    
 }
diff --git 
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/disruptor/RegisterServerDisruptorPublisher.java
 
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/disruptor/RegisterServerDisruptorPublisher.java
index 342534d..4324238 100644
--- 
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/disruptor/RegisterServerDisruptorPublisher.java
+++ 
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/disruptor/RegisterServerDisruptorPublisher.java
@@ -23,21 +23,22 @@ import 
org.apache.shenyu.admin.disruptor.subscriber.URIRegisterExecutorSubscribe
 import org.apache.shenyu.admin.service.register.ShenyuClientRegisterService;
 import org.apache.shenyu.disruptor.DisruptorProviderManage;
 import org.apache.shenyu.disruptor.provider.DisruptorProvider;
+import org.apache.shenyu.register.common.type.DataTypeParent;
 import org.apache.shenyu.register.server.api.ShenyuServerRegisterPublisher;
 
+import java.util.Collection;
+import java.util.Collections;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * The type Disruptor publisher.
  */
-@SuppressWarnings("all")
 public class RegisterServerDisruptorPublisher implements 
ShenyuServerRegisterPublisher {
-
+    
     private static final RegisterServerDisruptorPublisher INSTANCE = new 
RegisterServerDisruptorPublisher();
-
-    private DisruptorProviderManage providerManage;
     
-    private RegisterServerExecutorFactory factory;
+    private DisruptorProviderManage<Collection<DataTypeParent>> providerManage;
     
     /**
      * Gets instance.
@@ -54,17 +55,24 @@ public class RegisterServerDisruptorPublisher implements 
ShenyuServerRegisterPub
      * @param shenyuClientRegisterService the shenyu client register service
      */
     public void start(final Map<String, ShenyuClientRegisterService> 
shenyuClientRegisterService) {
-        factory = new RegisterServerExecutorFactory();
+        RegisterServerExecutorFactory factory = new 
RegisterServerExecutorFactory();
         factory.addSubscribers(new 
URIRegisterExecutorSubscriber(shenyuClientRegisterService));
         factory.addSubscribers(new 
MetadataExecutorSubscriber(shenyuClientRegisterService));
-        providerManage = new DisruptorProviderManage(factory);
+        providerManage = new DisruptorProviderManage<>(factory);
         providerManage.startup();
     }
     
     @Override
-    public <T> void publish(final T data) {
-        DisruptorProvider<Object> provider = providerManage.getProvider();
-        provider.onData(data);
+    public void publish(final DataTypeParent data) {
+        DisruptorProvider<Collection<DataTypeParent>> provider = 
providerManage.getProvider();
+        provider.onData(Collections.singleton(data));
+    }
+    
+    @Override
+    public void publish(final Collection<? extends DataTypeParent> dataList) {
+        DisruptorProvider<Collection<DataTypeParent>> provider = 
providerManage.getProvider();
+        
provider.onData(dataList.stream().map(DataTypeParent.class::cast).collect(Collectors.toList()));
+        
     }
     
     @Override
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 0e33ce0..97643da 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
@@ -20,42 +20,47 @@ package org.apache.shenyu.admin.disruptor.executor;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.shenyu.disruptor.consumer.QueueConsumerExecutor;
+import org.apache.shenyu.disruptor.consumer.QueueConsumerFactory;
 import org.apache.shenyu.register.common.dto.MetaDataRegisterDTO;
 import org.apache.shenyu.register.common.dto.URIRegisterDTO;
-import 
org.apache.shenyu.register.common.subsriber.AbstractQueueConsumerFactory;
 import org.apache.shenyu.register.common.subsriber.ExecutorSubscriber;
 import org.apache.shenyu.register.common.subsriber.ExecutorTypeSubscriber;
 import org.apache.shenyu.register.common.type.DataType;
 import org.apache.shenyu.register.common.type.DataTypeParent;
 
+import java.util.Collection;
 import java.util.HashMap;
-import java.util.List;
+import java.util.HashSet;
 import java.util.Map;
 import java.util.Objects;
+import java.util.Optional;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 /**
  * The type Consumer executor.
  */
-@SuppressWarnings("all")
-public final class RegisterServerConsumerExecutor extends 
QueueConsumerExecutor<List<DataTypeParent>> {
+public final class RegisterServerConsumerExecutor extends 
QueueConsumerExecutor<Collection<DataTypeParent>> {
     
-    private Map<DataType, ExecutorSubscriber> subscribers = new HashMap<>();
-
-    private RegisterServerConsumerExecutor(final Map<DataType, 
ExecutorTypeSubscriber> executorSubscriberMap) {
-        this.subscribers.putAll(executorSubscriberMap);
+    private final Map<DataType, ExecutorSubscriber<DataTypeParent>> 
subscribers;
+    
+    private RegisterServerConsumerExecutor(final Map<DataType, 
ExecutorTypeSubscriber<DataTypeParent>> executorSubscriberMap) {
+        this.subscribers = new HashMap<>(executorSubscriberMap);
     }
-
+    
     @Override
     public void run() {
-        List<DataTypeParent> results = getData();
-        results = results.stream().filter(data -> 
isValidData(data)).collect(Collectors.toList());
+        Collection<DataTypeParent> results = getData()
+                .stream()
+                .filter(this::isValidData)
+                .collect(Collectors.toList());
         if (CollectionUtils.isEmpty(results)) {
             return;
         }
-        getType(results).executor(results);
+        
+        selectExecutor(results).executor(results);
     }
-
+    
     private boolean isValidData(final Object data) {
         if (data instanceof URIRegisterDTO) {
             URIRegisterDTO uriRegisterDTO = (URIRegisterDTO) data;
@@ -72,22 +77,51 @@ public final class RegisterServerConsumerExecutor extends 
QueueConsumerExecutor<
         return true;
     }
     
-    private ExecutorSubscriber getType(final List<DataTypeParent> list) {
-        DataTypeParent result = list.get(0);
-        return subscribers.get(result.getType());
+    private ExecutorSubscriber<DataTypeParent> selectExecutor(final 
Collection<DataTypeParent> list) {
+        final Optional<DataTypeParent> first = list.stream().findFirst();
+        return subscribers.get(first.orElseThrow(() -> new 
RuntimeException("the data type is not found")).getType());
     }
     
-    public static class RegisterServerExecutorFactory extends 
AbstractQueueConsumerFactory {
-
+    public static class RegisterServerExecutorFactory implements 
QueueConsumerFactory<Collection<DataTypeParent>> {
+    
+        /**
+         * The Subscribers.
+         */
+        private final Set<ExecutorTypeSubscriber<? extends DataTypeParent>> 
subscribers = new HashSet<>();
+    
         @Override
-        public QueueConsumerExecutor create() {
-            Map<DataType, ExecutorTypeSubscriber> maps = 
getSubscribers().stream().map(e -> (ExecutorTypeSubscriber) 
e).collect(Collectors.toMap(ExecutorTypeSubscriber::getType, e -> e));
+        public QueueConsumerExecutor<Collection<DataTypeParent>> create() {
+            Map<DataType, ExecutorTypeSubscriber<DataTypeParent>> maps = 
getSubscribers()
+                    .stream()
+                    .map(e -> (ExecutorTypeSubscriber<DataTypeParent>) e)
+                    .collect(Collectors.toMap(ExecutorTypeSubscriber::getType, 
e -> e));
             return new RegisterServerConsumerExecutor(maps);
         }
-
+    
         @Override
         public String fixName() {
             return "shenyu_register_server";
         }
+    
+    
+        /**
+         * Add subscribers abstract queue consumer factory.
+         *
+         * @param subscriber the subscriber
+         * @return the abstract queue consumer factory
+         */
+        public RegisterServerExecutorFactory addSubscribers(final 
ExecutorTypeSubscriber<? extends DataTypeParent> subscriber) {
+            subscribers.add(subscriber);
+            return this;
+        }
+    
+        /**
+         * Gets subscribers.
+         *
+         * @return the subscribers
+         */
+        public Set<ExecutorTypeSubscriber<? extends DataTypeParent>> 
getSubscribers() {
+            return subscribers;
+        }
     }
 }
diff --git 
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/transfer/DashboardUserTransfer.java
 
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/transfer/DashboardUserTransfer.java
index 9350e97..9014698 100644
--- 
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/transfer/DashboardUserTransfer.java
+++ 
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/transfer/DashboardUserTransfer.java
@@ -74,7 +74,7 @@ public enum DashboardUserTransfer {
 
     /**
      * conversion dashboardUserVO to dashboardUserEditVO
-     * @param dashboardUserVO
+     * @param dashboardUserVO dashboardUserVO
      * @return {@linkplain DashboardUserEditVO}
      */
     public DashboardUserEditVO transfer2EditVO(final DashboardUserVO 
dashboardUserVO) {
diff --git 
a/shenyu-client/shenyu-client-core/src/main/java/org/apache/shenyu/client/core/disruptor/ShenyuClientRegisterEventPublisher.java
 
b/shenyu-client/shenyu-client-core/src/main/java/org/apache/shenyu/client/core/disruptor/ShenyuClientRegisterEventPublisher.java
index 57957f8..a13080b 100644
--- 
a/shenyu-client/shenyu-client-core/src/main/java/org/apache/shenyu/client/core/disruptor/ShenyuClientRegisterEventPublisher.java
+++ 
b/shenyu-client/shenyu-client-core/src/main/java/org/apache/shenyu/client/core/disruptor/ShenyuClientRegisterEventPublisher.java
@@ -23,18 +23,16 @@ import 
org.apache.shenyu.client.core.disruptor.subcriber.ShenyuClientURIExecutor
 import org.apache.shenyu.disruptor.DisruptorProviderManage;
 import org.apache.shenyu.disruptor.provider.DisruptorProvider;
 import org.apache.shenyu.register.client.api.ShenyuClientRegisterRepository;
+import org.apache.shenyu.register.common.type.DataTypeParent;
 
 /**
  * The type shenyu client register event publisher.
  */
-@SuppressWarnings("all")
 public class ShenyuClientRegisterEventPublisher {
     
     private static final ShenyuClientRegisterEventPublisher INSTANCE = new 
ShenyuClientRegisterEventPublisher();
     
-    private DisruptorProviderManage providerManage;
-    
-    private RegisterClientExecutorFactory factory;
+    private DisruptorProviderManage<DataTypeParent> providerManage;
     
     /**
      * Get instance.
@@ -51,21 +49,20 @@ public class ShenyuClientRegisterEventPublisher {
      * @param shenyuClientRegisterRepository shenyuClientRegisterRepository
      */
     public void start(final ShenyuClientRegisterRepository 
shenyuClientRegisterRepository) {
-        factory = new RegisterClientExecutorFactory();
+        RegisterClientExecutorFactory factory = new 
RegisterClientExecutorFactory();
         factory.addSubscribers(new 
ShenyuClientMetadataExecutorSubscriber(shenyuClientRegisterRepository));
         factory.addSubscribers(new 
ShenyuClientURIExecutorSubscriber(shenyuClientRegisterRepository));
-        providerManage = new DisruptorProviderManage(factory);
+        providerManage = new DisruptorProviderManage<>(factory);
         providerManage.startup();
     }
     
     /**
      * Publish event.
      *
-     * @param <T> the type parameter
      * @param data the data
      */
-    public <T> void publishEvent(final T data) {
-        DisruptorProvider<Object> provider = providerManage.getProvider();
+    public void publishEvent(final DataTypeParent data) {
+        DisruptorProvider<DataTypeParent> provider = 
providerManage.getProvider();
         provider.onData(data);
     }
 }
diff --git 
a/shenyu-client/shenyu-client-core/src/main/java/org/apache/shenyu/client/core/disruptor/executor/RegisterClientConsumerExecutor.java
 
b/shenyu-client/shenyu-client-core/src/main/java/org/apache/shenyu/client/core/disruptor/executor/RegisterClientConsumerExecutor.java
index f5f3e32..75a3509 100644
--- 
a/shenyu-client/shenyu-client-core/src/main/java/org/apache/shenyu/client/core/disruptor/executor/RegisterClientConsumerExecutor.java
+++ 
b/shenyu-client/shenyu-client-core/src/main/java/org/apache/shenyu/client/core/disruptor/executor/RegisterClientConsumerExecutor.java
@@ -20,7 +20,6 @@ package org.apache.shenyu.client.core.disruptor.executor;
 import com.google.common.collect.Lists;
 import org.apache.shenyu.disruptor.consumer.QueueConsumerExecutor;
 import 
org.apache.shenyu.register.common.subsriber.AbstractQueueConsumerFactory;
-import org.apache.shenyu.register.common.subsriber.ExecutorSubscriber;
 import org.apache.shenyu.register.common.subsriber.ExecutorTypeSubscriber;
 import org.apache.shenyu.register.common.type.DataType;
 import org.apache.shenyu.register.common.type.DataTypeParent;
@@ -32,30 +31,32 @@ import java.util.stream.Collectors;
 /**
  * The type Consumer executor.
  */
-@SuppressWarnings("all")
-public final class RegisterClientConsumerExecutor extends 
QueueConsumerExecutor<DataTypeParent> {
+public final class RegisterClientConsumerExecutor<T extends DataTypeParent> 
extends QueueConsumerExecutor<T> {
     
-    private Map<DataType, ExecutorSubscriber> subscribers = new HashMap<>();
+    private final Map<DataType, ExecutorTypeSubscriber<T>> subscribers;
     
-    private RegisterClientConsumerExecutor(final Map<DataType, 
ExecutorTypeSubscriber> executorSubscriberMap) {
-        this.subscribers.putAll(executorSubscriberMap);
+    private RegisterClientConsumerExecutor(final Map<DataType, 
ExecutorTypeSubscriber<T>> executorSubscriberMap) {
+        this.subscribers = new HashMap<>(executorSubscriberMap);
     }
 
     @Override
     public void run() {
-        DataTypeParent dataTypeParent = getData();
-        
subscribers.get(dataTypeParent.getType()).executor(Lists.newArrayList(dataTypeParent));
+        final T data = getData();
+        subscribers.get(data.getType()).executor(Lists.newArrayList(data));
     }
     
     /**
      * The type Register client executor factory.
      */
-    public static class RegisterClientExecutorFactory extends 
AbstractQueueConsumerFactory {
+    public static class RegisterClientExecutorFactory<T extends 
DataTypeParent> extends AbstractQueueConsumerFactory<T> {
         
         @Override
-        public QueueConsumerExecutor create() {
-            Map<DataType, ExecutorTypeSubscriber> maps = 
getSubscribers().stream().map(e -> (ExecutorTypeSubscriber) 
e).collect(Collectors.toMap(ExecutorTypeSubscriber::getType, e -> e));
-            return new RegisterClientConsumerExecutor(maps);
+        public RegisterClientConsumerExecutor<T> create() {
+            Map<DataType, ExecutorTypeSubscriber<T>> map = getSubscribers()
+                    .stream()
+                    .map(e -> (ExecutorTypeSubscriber<T>) e)
+                    .collect(Collectors.toMap(ExecutorTypeSubscriber::getType, 
e -> e));
+            return new RegisterClientConsumerExecutor<>(map);
         }
 
         @Override
diff --git 
a/shenyu-client/shenyu-client-core/src/main/java/org/apache/shenyu/client/core/disruptor/subcriber/ShenyuClientURIExecutorSubscriber.java
 
b/shenyu-client/shenyu-client-core/src/main/java/org/apache/shenyu/client/core/disruptor/subcriber/ShenyuClientURIExecutorSubscriber.java
index ec24375..4017f31 100644
--- 
a/shenyu-client/shenyu-client-core/src/main/java/org/apache/shenyu/client/core/disruptor/subcriber/ShenyuClientURIExecutorSubscriber.java
+++ 
b/shenyu-client/shenyu-client-core/src/main/java/org/apache/shenyu/client/core/disruptor/subcriber/ShenyuClientURIExecutorSubscriber.java
@@ -36,7 +36,7 @@ import java.util.concurrent.TimeUnit;
  */
 public class ShenyuClientURIExecutorSubscriber implements 
ExecutorTypeSubscriber<URIRegisterDTO> {
     
-    private static final Logger LOG = 
LoggerFactory.getLogger(ShenyuClientMetadataExecutorSubscriber.class);
+    private static final Logger LOG = 
LoggerFactory.getLogger(ShenyuClientURIExecutorSubscriber.class);
     
     private final ShenyuClientRegisterRepository 
shenyuClientRegisterRepository;
     
diff --git 
a/shenyu-client/shenyu-client-dubbo/shenyu-client-alibaba-dubbo/src/main/java/org/apache/shenyu/client/alibaba/dubbo/AlibabaDubboServiceBeanListener.java
 
b/shenyu-client/shenyu-client-dubbo/shenyu-client-alibaba-dubbo/src/main/java/org/apache/shenyu/client/alibaba/dubbo/AlibabaDubboServiceBeanListener.java
index 126f456..458429c 100644
--- 
a/shenyu-client/shenyu-client-dubbo/shenyu-client-alibaba-dubbo/src/main/java/org/apache/shenyu/client/alibaba/dubbo/AlibabaDubboServiceBeanListener.java
+++ 
b/shenyu-client/shenyu-client-dubbo/shenyu-client-alibaba-dubbo/src/main/java/org/apache/shenyu/client/alibaba/dubbo/AlibabaDubboServiceBeanListener.java
@@ -35,6 +35,7 @@ import org.apache.shenyu.register.common.dto.URIRegisterDTO;
 import org.springframework.aop.support.AopUtils;
 import org.springframework.context.ApplicationListener;
 import org.springframework.context.event.ContextRefreshedEvent;
+import org.springframework.lang.NonNull;
 import org.springframework.util.ReflectionUtils;
 
 import java.lang.reflect.Method;
@@ -48,12 +49,12 @@ import java.util.stream.Collectors;
 /**
  * The Alibaba Dubbo ServiceBean Listener.
  */
-@SuppressWarnings("all")
+//@SuppressWarnings("all")
 public class AlibabaDubboServiceBeanListener implements 
ApplicationListener<ContextRefreshedEvent> {
 
-    private ShenyuClientRegisterEventPublisher publisher = 
ShenyuClientRegisterEventPublisher.getInstance();
+    private final ShenyuClientRegisterEventPublisher publisher = 
ShenyuClientRegisterEventPublisher.getInstance();
 
-    private AtomicBoolean registered = new AtomicBoolean(false);
+    private final AtomicBoolean registered = new AtomicBoolean(false);
 
     private final String contextPath;
 
@@ -66,19 +67,18 @@ public class AlibabaDubboServiceBeanListener implements 
ApplicationListener<Cont
     public AlibabaDubboServiceBeanListener(final PropertiesConfig 
clientConfig, final ShenyuClientRegisterRepository 
shenyuClientRegisterRepository) {
         Properties props = clientConfig.getProps();
         String contextPath = 
props.getProperty(ShenyuClientConstants.CONTEXT_PATH);
-        String appName = props.getProperty(ShenyuClientConstants.APP_NAME);
         if (StringUtils.isBlank(contextPath)) {
             throw new ShenyuClientIllegalArgumentException("alibaba dubbo 
client must config the contextPath");
         }
         this.contextPath = contextPath;
-        this.appName = appName;
+        this.appName = props.getProperty(ShenyuClientConstants.APP_NAME);
         this.host = props.getProperty(ShenyuClientConstants.HOST);
         this.port = props.getProperty(ShenyuClientConstants.PORT);
         publisher.start(shenyuClientRegisterRepository);
     }
     
     @Override
-    public void onApplicationEvent(final ContextRefreshedEvent 
contextRefreshedEvent) {
+    public void onApplicationEvent(@NonNull final ContextRefreshedEvent 
contextRefreshedEvent) {
         if (!registered.compareAndSet(false, true)) {
             return;
         }
@@ -87,9 +87,10 @@ public class AlibabaDubboServiceBeanListener implements 
ApplicationListener<Cont
         for (Map.Entry<String, ServiceBean> entry : serviceBean.entrySet()) {
             handler(entry.getValue());
         }
-        serviceBean.values().stream().findFirst().ifPresent(bean -> {
-            publisher.publishEvent(buildURIRegisterDTO(bean));
-        });
+        serviceBean.values()
+                .stream()
+                .findFirst()
+                .ifPresent(bean -> 
publisher.publishEvent(buildURIRegisterDTO(bean)));
     }
 
     private void handler(final ServiceBean<?> serviceBean) {
@@ -108,7 +109,6 @@ public class AlibabaDubboServiceBeanListener implements 
ApplicationListener<Cont
     }
 
     private MetaDataRegisterDTO buildMetaDataDTO(final ServiceBean<?> 
serviceBean, final ShenyuDubboClient shenyuDubboClient, final Method method) {
-        String appName = buildAppName(serviceBean);
         String path = contextPath + shenyuDubboClient.path();
         String desc = shenyuDubboClient.desc();
         String serviceName = serviceBean.getInterface();
@@ -118,7 +118,7 @@ public class AlibabaDubboServiceBeanListener implements 
ApplicationListener<Cont
         Class<?>[] parameterTypesClazz = method.getParameterTypes();
         String parameterTypes = 
Arrays.stream(parameterTypesClazz).map(Class::getName).collect(Collectors.joining(","));
         return MetaDataRegisterDTO.builder()
-                .appName(appName)
+                .appName(buildAppName(serviceBean))
                 .serviceName(serviceName)
                 .methodName(methodName)
                 .contextPath(contextPath)
@@ -134,7 +134,7 @@ public class AlibabaDubboServiceBeanListener implements 
ApplicationListener<Cont
                 .build();
     }
     
-    private URIRegisterDTO buildURIRegisterDTO(final ServiceBean serviceBean) {
+    private URIRegisterDTO buildURIRegisterDTO(@NonNull final ServiceBean 
serviceBean) {
         return URIRegisterDTO.builder()
                 .contextPath(this.contextPath)
                 .appName(buildAppName(serviceBean))
@@ -158,7 +158,7 @@ public class AlibabaDubboServiceBeanListener implements 
ApplicationListener<Cont
         return GsonUtils.getInstance().toJson(builder);
     }
     
-    private String buildAppName(final ServiceBean serviceBean) {
+    private String buildAppName(@NonNull final ServiceBean serviceBean) {
         return StringUtils.isBlank(this.appName) ? 
serviceBean.getApplication().getName() : this.appName;
     }
     
@@ -166,7 +166,7 @@ public class AlibabaDubboServiceBeanListener implements 
ApplicationListener<Cont
         return IpUtils.isCompleteHost(this.host) ? this.host : 
IpUtils.getHost(this.host);
     }
     
-    private int buildPort(final ServiceBean serviceBean) {
+    private int buildPort(@NonNull final ServiceBean serviceBean) {
         return StringUtils.isBlank(this.port) ? 
serviceBean.getProtocol().getPort() : Integer.parseInt(this.port);
     }
 }
diff --git 
a/shenyu-common/src/main/java/org/apache/shenyu/common/timer/AbstractRetryTask.java
 
b/shenyu-common/src/main/java/org/apache/shenyu/common/timer/AbstractRetryTask.java
index ab330da..7fca7a1 100644
--- 
a/shenyu-common/src/main/java/org/apache/shenyu/common/timer/AbstractRetryTask.java
+++ 
b/shenyu-common/src/main/java/org/apache/shenyu/common/timer/AbstractRetryTask.java
@@ -33,7 +33,7 @@ public abstract class AbstractRetryTask extends TimerTask {
     
     private int tickCount = 1;
     
-    private final Boolean retryLimit;
+    private final boolean retryLimit;
     
     /**
      * Instantiates a new Timer task.
diff --git 
a/shenyu-common/src/main/java/org/apache/shenyu/common/timer/AbstractRoundTask.java
 
b/shenyu-common/src/main/java/org/apache/shenyu/common/timer/AbstractRoundTask.java
index 3fe069b..31dfe2b 100644
--- 
a/shenyu-common/src/main/java/org/apache/shenyu/common/timer/AbstractRoundTask.java
+++ 
b/shenyu-common/src/main/java/org/apache/shenyu/common/timer/AbstractRoundTask.java
@@ -26,7 +26,7 @@ import org.slf4j.LoggerFactory;
  */
 public abstract class AbstractRoundTask extends AbstractRetryTask {
     
-    private final Logger logger = 
LoggerFactory.getLogger(AbstractRetryTask.class);
+    private final Logger logger = 
LoggerFactory.getLogger(AbstractRoundTask.class);
     
     /**
      * Instantiates a new Timer task.
diff --git 
a/shenyu-disruptor/src/main/java/org/apache/shenyu/disruptor/DisruptorProviderManage.java
 
b/shenyu-disruptor/src/main/java/org/apache/shenyu/disruptor/DisruptorProviderManage.java
index b79c831..3a37bc4 100644
--- 
a/shenyu-disruptor/src/main/java/org/apache/shenyu/disruptor/DisruptorProviderManage.java
+++ 
b/shenyu-disruptor/src/main/java/org/apache/shenyu/disruptor/DisruptorProviderManage.java
@@ -56,8 +56,6 @@ public class DisruptorProviderManage<T> {
     
     private DisruptorProvider<T> provider;
     
-    private OrderlyExecutor executor;
-    
     /**
      * Instantiates a new Disruptor provider manage.
      *
@@ -106,13 +104,12 @@ public class DisruptorProviderManage<T> {
      *
      * @param isOrderly the orderly Whether to execute sequentially.
      */
-    @SuppressWarnings("all")
     public void startup(final boolean isOrderly) {
-        this.executor = new OrderlyExecutor(isOrderly, consumerSize, 
consumerSize, 0, TimeUnit.MILLISECONDS,
+        OrderlyExecutor executor = new OrderlyExecutor(isOrderly, 
consumerSize, consumerSize, 0, TimeUnit.MILLISECONDS,
                 new LinkedBlockingQueue<>(),
                 DisruptorThreadFactory.create("shenyu_disruptor_consumer_", 
false), new ThreadPoolExecutor.AbortPolicy());
         int newConsumerSize = this.consumerSize;
-        EventFactory eventFactory;
+        EventFactory<DataEvent<T>> eventFactory;
         if (isOrderly) {
             newConsumerSize = 1;
             eventFactory = new OrderlyDisruptorEventFactory<>();
@@ -124,6 +121,7 @@ public class DisruptorProviderManage<T> {
                 DisruptorThreadFactory.create("shenyu_disruptor_provider_" + 
consumerFactory.fixName(), false),
                 ProducerType.MULTI,
                 new BlockingWaitStrategy());
+        @SuppressWarnings("all")
         QueueConsumer<T>[] consumers = new QueueConsumer[newConsumerSize];
         for (int i = 0; i < newConsumerSize; i++) {
             consumers[i] = new QueueConsumer<>(executor, consumerFactory);
diff --git 
a/shenyu-disruptor/src/main/java/org/apache/shenyu/disruptor/event/OrderlyDisruptorEventFactory.java
 
b/shenyu-disruptor/src/main/java/org/apache/shenyu/disruptor/event/OrderlyDisruptorEventFactory.java
index a914872..cac55d2 100644
--- 
a/shenyu-disruptor/src/main/java/org/apache/shenyu/disruptor/event/OrderlyDisruptorEventFactory.java
+++ 
b/shenyu-disruptor/src/main/java/org/apache/shenyu/disruptor/event/OrderlyDisruptorEventFactory.java
@@ -24,7 +24,7 @@ import com.lmax.disruptor.EventFactory;
  * disruptor Create a factory implementation of the object.
  * @param <T> the type parameter
  */
-public class OrderlyDisruptorEventFactory<T> implements 
EventFactory<OrderlyDataEvent<T>> {
+public class OrderlyDisruptorEventFactory<T> implements 
EventFactory<DataEvent<T>> {
     
     @Override
     public OrderlyDataEvent<T> newInstance() {
diff --git 
a/shenyu-register-center/shenyu-register-client/shenyu-register-client-http/src/main/java/org/apache/shenyu/register/client/http/HttpClientRegisterRepository.java
 
b/shenyu-register-center/shenyu-register-client/shenyu-register-client-http/src/main/java/org/apache/shenyu/register/client/http/HttpClientRegisterRepository.java
index c314c0d..d49efd5 100644
--- 
a/shenyu-register-center/shenyu-register-client/shenyu-register-client-http/src/main/java/org/apache/shenyu/register/client/http/HttpClientRegisterRepository.java
+++ 
b/shenyu-register-center/shenyu-register-client/shenyu-register-client-http/src/main/java/org/apache/shenyu/register/client/http/HttpClientRegisterRepository.java
@@ -40,7 +40,7 @@ import java.util.Optional;
 @Join
 public class HttpClientRegisterRepository extends FailbackRegistryRepository {
     
-    private static final Logger LOGGER = 
LoggerFactory.getLogger(RegisterUtils.class);
+    private static final Logger LOGGER = 
LoggerFactory.getLogger(HttpClientRegisterRepository.class);
     
     private String username;
     
diff --git 
a/shenyu-register-center/shenyu-register-client/shenyu-register-client-http/src/main/java/org/apache/shenyu/register/client/http/utils/RegisterUtils.java
 
b/shenyu-register-center/shenyu-register-client/shenyu-register-client-http/src/main/java/org/apache/shenyu/register/client/http/utils/RegisterUtils.java
index 0768336..79aff4b 100644
--- 
a/shenyu-register-center/shenyu-register-client/shenyu-register-client-http/src/main/java/org/apache/shenyu/register/client/http/utils/RegisterUtils.java
+++ 
b/shenyu-register-center/shenyu-register-client/shenyu-register-client-http/src/main/java/org/apache/shenyu/register/client/http/utils/RegisterUtils.java
@@ -92,7 +92,7 @@ public final class RegisterUtils {
      * @return Optional token
      * @throws IOException the io exception
      */
-    public static Optional doLogin(final String username, final String 
password, final String url) throws IOException {
+    public static Optional<Object> doLogin(final String username, final String 
password, final String url) throws IOException {
         Map<String, Object> loginMap = new HashMap<>(2);
         loginMap.put(Constants.LOGIN_NAME, username);
         loginMap.put(Constants.PASS_WORD, password);
diff --git 
a/shenyu-register-center/shenyu-register-common/src/main/java/org/apache/shenyu/register/common/subsriber/AbstractQueueConsumerFactory.java
 
b/shenyu-register-center/shenyu-register-common/src/main/java/org/apache/shenyu/register/common/subsriber/AbstractQueueConsumerFactory.java
index d2c0b39..50470bc 100644
--- 
a/shenyu-register-center/shenyu-register-common/src/main/java/org/apache/shenyu/register/common/subsriber/AbstractQueueConsumerFactory.java
+++ 
b/shenyu-register-center/shenyu-register-common/src/main/java/org/apache/shenyu/register/common/subsriber/AbstractQueueConsumerFactory.java
@@ -18,6 +18,7 @@
 package org.apache.shenyu.register.common.subsriber;
 
 import org.apache.shenyu.disruptor.consumer.QueueConsumerFactory;
+import org.apache.shenyu.register.common.type.DataTypeParent;
 
 import java.util.HashSet;
 import java.util.Set;
@@ -25,13 +26,12 @@ import java.util.Set;
 /**
  * The type Abstract queue consumer factory.
  */
-@SuppressWarnings("all")
-public abstract class AbstractQueueConsumerFactory implements 
QueueConsumerFactory {
+public abstract class AbstractQueueConsumerFactory<T extends DataTypeParent> 
implements QueueConsumerFactory<T> {
     
     /**
      * The Subscribers.
      */
-    private Set<ExecutorSubscriber> subscribers = new HashSet<>();
+    private final Set<ExecutorSubscriber<T>> subscribers = new HashSet<>();
     
     /**
      * Add subscribers abstract queue consumer factory.
@@ -39,7 +39,7 @@ public abstract class AbstractQueueConsumerFactory implements 
QueueConsumerFacto
      * @param subscriber the subscriber
      * @return the abstract queue consumer factory
      */
-    public AbstractQueueConsumerFactory addSubscribers(final 
ExecutorSubscriber subscriber) {
+    public AbstractQueueConsumerFactory<T> addSubscribers(final 
ExecutorSubscriber<T> subscriber) {
         subscribers.add(subscriber);
         return this;
     }
@@ -49,7 +49,7 @@ public abstract class AbstractQueueConsumerFactory implements 
QueueConsumerFacto
      *
      * @return the subscribers
      */
-    public Set<ExecutorSubscriber> getSubscribers() {
+    public Set<ExecutorSubscriber<T>> getSubscribers() {
         return subscribers;
     }
 }
diff --git 
a/shenyu-register-center/shenyu-register-server/shenyu-register-server-api/src/main/java/org/apache/shenyu/register/server/api/ShenyuServerRegisterPublisher.java
 
b/shenyu-register-center/shenyu-register-server/shenyu-register-server-api/src/main/java/org/apache/shenyu/register/server/api/ShenyuServerRegisterPublisher.java
index 37031fe..0451ecf 100644
--- 
a/shenyu-register-center/shenyu-register-server/shenyu-register-server-api/src/main/java/org/apache/shenyu/register/server/api/ShenyuServerRegisterPublisher.java
+++ 
b/shenyu-register-center/shenyu-register-server/shenyu-register-server-api/src/main/java/org/apache/shenyu/register/server/api/ShenyuServerRegisterPublisher.java
@@ -17,6 +17,10 @@
 
 package org.apache.shenyu.register.server.api;
 
+import org.apache.shenyu.register.common.type.DataTypeParent;
+
+import java.util.Collection;
+
 /**
  * The interface Shenyu server register publisher.
  */
@@ -25,10 +29,16 @@ public interface ShenyuServerRegisterPublisher {
     /**
      * Publish.
      *
-     * @param <T> the type parameter
      * @param t the t
      */
-    <T> void publish(T t);
+    void publish(Collection<? extends DataTypeParent> t);
+    
+    /**
+     * Publish.
+     *
+     * @param dataList the dataList
+     */
+    void publish(DataTypeParent dataList);
     
     /**
      * Close.
diff --git 
a/shenyu-register-center/shenyu-register-server/shenyu-register-server-consul/src/test/java/org/apache/shenyu/register/server/consul/ConsulServerRegisterRepositoryTest.java
 
b/shenyu-register-center/shenyu-register-server/shenyu-register-server-consul/src/test/java/org/apache/shenyu/register/server/consul/ConsulServerRegisterRepositoryTest.java
index 2d7adec..9938803 100644
--- 
a/shenyu-register-center/shenyu-register-server/shenyu-register-server-consul/src/test/java/org/apache/shenyu/register/server/consul/ConsulServerRegisterRepositoryTest.java
+++ 
b/shenyu-register-center/shenyu-register-server/shenyu-register-server-consul/src/test/java/org/apache/shenyu/register/server/consul/ConsulServerRegisterRepositoryTest.java
@@ -27,6 +27,7 @@ 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.apache.shenyu.register.common.enums.EventType;
+import org.apache.shenyu.register.common.type.DataTypeParent;
 import org.apache.shenyu.register.server.api.ShenyuServerRegisterPublisher;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -53,13 +54,13 @@ import static org.mockito.Mockito.mock;
 @ExtendWith(MockitoExtension.class)
 @MockitoSettings(strictness = Strictness.LENIENT)
 public class ConsulServerRegisterRepositoryTest {
-
+    
     private ShenyuServerRegisterPublisher mockPublish() {
         ShenyuServerRegisterPublisher publisher = 
mock(ShenyuServerRegisterPublisher.class);
-        doNothing().when(publisher).publish(any());
+        doNothing().when(publisher).publish(localAny());
         return publisher;
     }
-
+    
     @Bean
     private ConsulClient mockConsulClient() {
         URIRegisterDTO mockServer = 
URIRegisterDTO.builder().appName("mockServer").contextPath("/mockServer").eventType(EventType.REGISTER).build();
@@ -68,31 +69,31 @@ public class ConsulServerRegisterRepositoryTest {
         map.put("uri", GsonUtils.getInstance().toJson(mockServer));
         newService.setMeta(map);
         ConsulClient client = mock(ConsulClient.class);
-
+        
         Map<String, Service> serviceHashMap = Maps.newHashMap();
         serviceHashMap.put(mockServer.getContextPath(), newService);
         Response<Map<String, Service>> mapResponse = new Response<Map<String, 
Service>>(serviceHashMap, 1L, true, 1L);
         Mockito.when(client.getAgentServices()).thenReturn(mapResponse);
         return client;
     }
-
+    
     @Bean
     private ConsulServerRegisterRepository 
mockConsulServerRegisterRepository() throws Exception {
         ConsulServerRegisterRepository consulServerRegisterRepository = new 
ConsulServerRegisterRepository();
         Class<? extends ConsulServerRegisterRepository> clazz = 
consulServerRegisterRepository.getClass();
-
+        
         String fieldClientString = "consulClient";
         Field fieldClient = clazz.getDeclaredField(fieldClientString);
         fieldClient.setAccessible(true);
         fieldClient.set(consulServerRegisterRepository, mockConsulClient());
-
+        
         String fieldPublisherString = "publisher";
         Field fieldPublisher = clazz.getDeclaredField(fieldPublisherString);
         fieldPublisher.setAccessible(true);
         fieldPublisher.set(consulServerRegisterRepository, mockPublish());
         return consulServerRegisterRepository;
     }
-
+    
     @Test
     public void testConsulServerRegisterRepository() {
         new 
ApplicationContextRunner().withUserConfiguration(ConsulServerRegisterRepositoryTest.class)
@@ -109,4 +110,8 @@ public class ConsulServerRegisterRepositoryTest {
                     context.publishEvent(consulConfigChangedEvent);
                 });
     }
+    
+    private DataTypeParent localAny() {
+        return any();
+    }
 }
diff --git 
a/shenyu-register-center/shenyu-register-server/shenyu-register-server-etcd/src/test/java/org/apache/shenyu/register/server/etcd/EtcdServerRegisterRepositoryTest.java
 
b/shenyu-register-center/shenyu-register-server/shenyu-register-server-etcd/src/test/java/org/apache/shenyu/register/server/etcd/EtcdServerRegisterRepositoryTest.java
index 8fcfde0..aea6ba5 100644
--- 
a/shenyu-register-center/shenyu-register-server/shenyu-register-server-etcd/src/test/java/org/apache/shenyu/register/server/etcd/EtcdServerRegisterRepositoryTest.java
+++ 
b/shenyu-register-center/shenyu-register-server/shenyu-register-server-etcd/src/test/java/org/apache/shenyu/register/server/etcd/EtcdServerRegisterRepositoryTest.java
@@ -19,6 +19,7 @@ package org.apache.shenyu.register.server.etcd;
 
 import org.apache.shenyu.common.utils.GsonUtils;
 import org.apache.shenyu.register.common.dto.MetaDataRegisterDTO;
+import org.apache.shenyu.register.common.type.DataTypeParent;
 import org.apache.shenyu.register.server.api.ShenyuServerRegisterPublisher;
 import org.apache.shenyu.register.server.etcd.client.EtcdClient;
 import org.apache.shenyu.register.server.etcd.client.EtcdListenHandler;
@@ -29,6 +30,7 @@ import java.lang.reflect.Field;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.Arrays;
+import java.util.List;
 
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.mock;
@@ -43,30 +45,30 @@ import static org.mockito.Mockito.times;
  * test for EtcdServerRegisterRepository.
  */
 public class EtcdServerRegisterRepositoryTest {
-
+    
     private EtcdServerRegisterRepository repository;
-
+    
     private ShenyuServerRegisterPublisher publisher;
-
+    
     private EtcdListenHandler watchHandler;
-
+    
     @BeforeEach
     public void setUp() throws NoSuchFieldException, IllegalAccessException {
         this.publisher = mockPublish();
         this.repository = new EtcdServerRegisterRepository();
         Class<? extends EtcdServerRegisterRepository> clazz = 
this.repository.getClass();
-
+        
         String fieldClientString = "client";
         Field fieldClient = clazz.getDeclaredField(fieldClientString);
         fieldClient.setAccessible(true);
         fieldClient.set(repository, mockEtcdClient());
-
+        
         String fieldPublisherString = "publisher";
         Field fieldPublisher = clazz.getDeclaredField(fieldPublisherString);
         fieldPublisher.setAccessible(true);
         fieldPublisher.set(repository, publisher);
     }
-
+    
     @Test
     public void testSubscribe() throws NoSuchMethodException, 
InvocationTargetException, IllegalAccessException {
         Class<? extends EtcdServerRegisterRepository> clazz = 
this.repository.getClass();
@@ -74,31 +76,36 @@ public class EtcdServerRegisterRepositoryTest {
         Method method = clazz.getDeclaredMethod(methodString, String.class);
         method.setAccessible(true);
         method.invoke(repository, "http");
-        verify(publisher, times(2)).publish(any());
-
+        
+        verify(publisher, times(2)).publish(localAny());
+        
         String data = 
GsonUtils.getInstance().toJson(MetaDataRegisterDTO.builder().build());
         watchHandler.updateHandler("/path", data);
-        verify(publisher, times(3)).publish(any());
+        verify(publisher, times(3)).publish(localAny());
     }
-
+    
     private ShenyuServerRegisterPublisher mockPublish() {
         ShenyuServerRegisterPublisher publisher = 
mock(ShenyuServerRegisterPublisher.class);
-        doNothing().when(publisher).publish(any());
+        doNothing().when(publisher).publish(localAny());
         return publisher;
     }
-
+    
     private EtcdClient mockEtcdClient() {
         MetaDataRegisterDTO data = MetaDataRegisterDTO.builder().build();
         EtcdClient client = mock(EtcdClient.class);
-
+        
         
when(client.getChildren(anyString())).thenReturn(Arrays.asList("/path1", 
"/path2"));
         
when(client.read(anyString())).thenReturn(GsonUtils.getInstance().toJson(data));
-
+        
         doAnswer(invocationOnMock -> {
             this.watchHandler = invocationOnMock.getArgument(1);
             return null;
         }).when(client).subscribeChildChanges(anyString(), 
any(EtcdListenHandler.class));
-
+        
         return client;
     }
+    
+    private List<DataTypeParent> localAny() {
+        return any();
+    }
 }
diff --git 
a/shenyu-register-center/shenyu-register-server/shenyu-register-server-nacos/src/test/java/org/apache/shenyu/register/server/nacos/NacosServerRegisterRepositoryTest.java
 
b/shenyu-register-center/shenyu-register-server/shenyu-register-server-nacos/src/test/java/org/apache/shenyu/register/server/nacos/NacosServerRegisterRepositoryTest.java
index beecef9..3e177b2 100644
--- 
a/shenyu-register-center/shenyu-register-server/shenyu-register-server-nacos/src/test/java/org/apache/shenyu/register/server/nacos/NacosServerRegisterRepositoryTest.java
+++ 
b/shenyu-register-center/shenyu-register-server/shenyu-register-server-nacos/src/test/java/org/apache/shenyu/register/server/nacos/NacosServerRegisterRepositoryTest.java
@@ -28,6 +28,7 @@ import org.apache.shenyu.common.enums.RpcTypeEnum;
 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.apache.shenyu.register.common.type.DataTypeParent;
 import org.apache.shenyu.register.server.api.ShenyuServerRegisterPublisher;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -55,93 +56,93 @@ import static org.mockito.Mockito.times;
  * Test for NacosServerRegisterRepository.
  */
 public class NacosServerRegisterRepositoryTest {
-
+    
     private NacosServerRegisterRepository repository;
-
+    
     private ShenyuServerRegisterPublisher publisher;
-
+    
     private Listener configListener;
-
+    
     private EventListener eventListener;
-
+    
     @BeforeEach
     public void setUp() throws NoSuchFieldException, IllegalAccessException, 
NacosException {
         this.publisher = mockPublish();
         this.repository = new NacosServerRegisterRepository();
         Class<? extends NacosServerRegisterRepository> clazz = 
this.repository.getClass();
-
+        
         String configServiceString = "configService";
         Field configService = clazz.getDeclaredField(configServiceString);
         configService.setAccessible(true);
         configService.set(repository, mockConfigService());
-
+        
         String namingServiceString = "namingService";
         Field namingService = clazz.getDeclaredField(namingServiceString);
         namingService.setAccessible(true);
         namingService.set(repository, mockNamingService());
-
+        
         String fieldPublisherString = "publisher";
         Field fieldPublisher = clazz.getDeclaredField(fieldPublisherString);
         fieldPublisher.setAccessible(true);
         fieldPublisher.set(repository, publisher);
     }
-
+    
     private ConfigService mockConfigService() throws NacosException {
         ConfigService configService = mock(ConfigService.class);
-
+        
         doAnswer(invocationOnMock -> {
             this.configListener = invocationOnMock.getArgument(2);
             return null;
         }).when(configService).addListener(anyString(), anyString(), 
any(Listener.class));
-
+        
         doAnswer(invocationOnMock -> {
             List<String> list = new ArrayList<>();
             
list.add(GsonUtils.getInstance().toJson(MetaDataRegisterDTO.builder().build()));
             return GsonUtils.getInstance().toJson(list);
         }).when(configService).getConfig(anyString(), anyString(), anyLong());
-
+        
         return configService;
     }
-
+    
     private NamingService mockNamingService() throws NacosException {
         NamingService namingService = mock(NamingService.class);
-
+        
         doAnswer(invocationOnMock -> mockInstances())
                 .when(namingService).selectInstances(anyString(), 
anyBoolean());
-
+        
         doAnswer(invocationOnMock -> {
             this.eventListener = invocationOnMock.getArgument(1);
             return null;
         }).when(namingService).subscribe(anyString(), 
any(EventListener.class));
-
+        
         return namingService;
     }
-
+    
     private List<Instance> mockInstances() {
         MetaDataRegisterDTO metadata = MetaDataRegisterDTO.builder().build();
         Map<String, String> metadataMap = new HashMap<>(1);
         metadataMap.put("contextPath", "contextPath");
         metadataMap.put("uriMetadata", 
GsonUtils.getInstance().toJson(URIRegisterDTO.transForm(metadata)));
-
+        
         Instance instance = new Instance();
         instance.setEphemeral(true);
         instance.setIp("127.0.0.1");
         instance.setPort(80);
         instance.setMetadata(metadataMap);
-
+        
         return Collections.singletonList(instance);
     }
-
+    
     private ShenyuServerRegisterPublisher mockPublish() {
         ShenyuServerRegisterPublisher publisher = 
mock(ShenyuServerRegisterPublisher.class);
-        doNothing().when(publisher).publish(any());
+        doNothing().when(publisher).publish(localAny());
         return publisher;
     }
-
+    
     private NamingEvent mockEvent() {
         return new NamingEvent("serviceName", mockInstances());
     }
-
+    
     @Test
     public void testSubscribeTypeOfSupportURI() throws NoSuchMethodException, 
InvocationTargetException,
             IllegalAccessException {
@@ -150,17 +151,18 @@ public class NacosServerRegisterRepositoryTest {
         Method method = clazz.getDeclaredMethod(methodString, 
RpcTypeEnum.class);
         method.setAccessible(true);
         method.invoke(repository, RpcTypeEnum.HTTP);
-        verify(publisher, times(2)).publish(any());
-
+        
+        verify(publisher, times(2)).publish(localAny());
+        
         List<String> list = new ArrayList<>();
         
list.add(GsonUtils.getInstance().toJson(MetaDataRegisterDTO.builder().build()));
         configListener.receiveConfigInfo(GsonUtils.getInstance().toJson(list));
-        verify(publisher, times(3)).publish(any());
-
+        verify(publisher, times(3)).publish(localAny());
+        
         eventListener.onEvent(mockEvent());
-        verify(publisher, times(4)).publish(any());
+        verify(publisher, times(4)).publish(localAny());
     }
-
+    
     @Test
     public void testSubscribeTypeOfNotSupportURI() throws 
NoSuchMethodException, InvocationTargetException,
             IllegalAccessException {
@@ -169,14 +171,19 @@ public class NacosServerRegisterRepositoryTest {
         Method method = clazz.getDeclaredMethod(methodString, 
RpcTypeEnum.class);
         method.setAccessible(true);
         method.invoke(repository, RpcTypeEnum.DUBBO);
-        verify(publisher, times(2)).publish(any());
-
+        
+        verify(publisher, times(2)).publish(localAny());
+        
         List<String> list = new ArrayList<>();
         
list.add(GsonUtils.getInstance().toJson(MetaDataRegisterDTO.builder().build()));
         configListener.receiveConfigInfo(GsonUtils.getInstance().toJson(list));
-        verify(publisher, times(3)).publish(any());
-
+        verify(publisher, times(3)).publish(localAny());
+        
         eventListener.onEvent(mockEvent());
-        verify(publisher, times(4)).publish(any());
+        verify(publisher, times(4)).publish(localAny());
+    }
+    
+    private List<DataTypeParent> localAny() {
+        return any();
     }
 }
diff --git 
a/shenyu-register-center/shenyu-register-server/shenyu-register-server-zookeeper/src/test/java/org/apache/shenyu/register/server/zookeeper/ZookeeperServerRegisterRepositoryTest.java
 
b/shenyu-register-center/shenyu-register-server/shenyu-register-server-zookeeper/src/test/java/org/apache/shenyu/register/server/zookeeper/ZookeeperServerRegisterRepositoryTest.java
index b5d682f..4c279aa 100644
--- 
a/shenyu-register-center/shenyu-register-server/shenyu-register-server-zookeeper/src/test/java/org/apache/shenyu/register/server/zookeeper/ZookeeperServerRegisterRepositoryTest.java
+++ 
b/shenyu-register-center/shenyu-register-server/shenyu-register-server-zookeeper/src/test/java/org/apache/shenyu/register/server/zookeeper/ZookeeperServerRegisterRepositoryTest.java
@@ -22,6 +22,7 @@ import org.I0Itec.zkclient.IZkDataListener;
 import org.I0Itec.zkclient.ZkClient;
 import org.apache.shenyu.common.utils.GsonUtils;
 import org.apache.shenyu.register.common.dto.MetaDataRegisterDTO;
+import org.apache.shenyu.register.common.type.DataTypeParent;
 import org.apache.shenyu.register.server.api.ShenyuServerRegisterPublisher;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -30,6 +31,7 @@ import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.util.Arrays;
 import java.util.Collections;
+import java.util.List;
 
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.anyBoolean;
@@ -45,60 +47,60 @@ import static org.mockito.Mockito.when;
  * Test for Zookeeper register center.
  */
 public class ZookeeperServerRegisterRepositoryTest {
-
+    
     private ZookeeperServerRegisterRepository repository;
-
+    
     private ShenyuServerRegisterPublisher publisher;
-
+    
     private IZkChildListener zkChildListener;
-
+    
     private IZkDataListener zkDataListener;
-
+    
     @BeforeEach
     public void setUp() throws NoSuchFieldException, IllegalAccessException {
         this.publisher = mockPublish();
         this.repository = new ZookeeperServerRegisterRepository();
         Class<? extends ZookeeperServerRegisterRepository> clazz = 
this.repository.getClass();
-
+        
         String fieldClientString = "zkClient";
         Field fieldClient = clazz.getDeclaredField(fieldClientString);
         fieldClient.setAccessible(true);
         fieldClient.set(repository, mockZkClient());
-
+        
         String fieldPublisherString = "publisher";
         Field fieldPublisher = clazz.getDeclaredField(fieldPublisherString);
         fieldPublisher.setAccessible(true);
         fieldPublisher.set(repository, publisher);
     }
-
+    
     private ShenyuServerRegisterPublisher mockPublish() {
         ShenyuServerRegisterPublisher publisher = 
mock(ShenyuServerRegisterPublisher.class);
-        doNothing().when(publisher).publish(any());
+        doNothing().when(publisher).publish(localAny());
         return publisher;
     }
-
+    
     private ZkClient mockZkClient() {
         MetaDataRegisterDTO data = MetaDataRegisterDTO.builder().build();
         ZkClient client = mock(ZkClient.class);
-
+        
         
when(client.getChildren(anyString())).thenReturn(Arrays.asList("/path1", 
"/path2"));
         
when(client.readData(anyString())).thenReturn(GsonUtils.getInstance().toJson(data));
-
+        
         doNothing().when(client).createPersistent(anyString(), anyBoolean());
-
+        
         doAnswer(invocationOnMock -> {
             this.zkChildListener = invocationOnMock.getArgument(1);
             return null;
         }).when(client).subscribeChildChanges(anyString(), 
any(IZkChildListener.class));
-
+        
         doAnswer(invocationOnMock -> {
             this.zkDataListener = invocationOnMock.getArgument(1);
             return null;
         }).when(client).subscribeDataChanges(anyString(), 
any(IZkDataListener.class));
-
+        
         return client;
     }
-
+    
     @Test
     public void testSubscribeMetaData() throws Exception {
         Class<? extends ZookeeperServerRegisterRepository> clazz = 
this.repository.getClass();
@@ -106,16 +108,17 @@ public class ZookeeperServerRegisterRepositoryTest {
         Method method = clazz.getDeclaredMethod(methodString, String.class);
         method.setAccessible(true);
         method.invoke(repository, "http");
-        verify(publisher, times(4)).publish(any());
-
+        
+        verify(publisher, times(4)).publish(localAny());
+        
         zkChildListener.handleChildChange("/path", Arrays.asList("/path1", 
"/path2", "/path3"));
-        verify(publisher, times(10)).publish(any());
-
+        verify(publisher, times(10)).publish(localAny());
+        
         String data = 
GsonUtils.getInstance().toJson(MetaDataRegisterDTO.builder().build());
         zkDataListener.handleDataChange("/path1", data);
-        verify(publisher, times(11)).publish(any());
+        verify(publisher, times(11)).publish(localAny());
     }
-
+    
     @Test
     public void testSubscribeURI() throws Exception {
         Class<? extends ZookeeperServerRegisterRepository> clazz = 
this.repository.getClass();
@@ -123,12 +126,17 @@ public class ZookeeperServerRegisterRepositoryTest {
         Method method = clazz.getDeclaredMethod(methodString, String.class);
         method.setAccessible(true);
         method.invoke(repository, "http");
-        verify(publisher, times(2)).publish(any());
-
+        
+        verify(publisher, times(2)).publish(localAny());
+        
         zkChildListener.handleChildChange("/path", Arrays.asList("/path1", 
"/path2", "/path3"));
-        verify(publisher, times(5)).publish(any());
-
+        verify(publisher, times(5)).publish(localAny());
+        
         zkChildListener.handleChildChange("/path", Collections.emptyList());
-        verify(publisher, times(6)).publish(any());
+        verify(publisher, times(6)).publish(localAny());
+    }
+    
+    private List<DataTypeParent> localAny() {
+        return any();
     }
 }
diff --git 
a/shenyu-spring-boot-starter/shenyu-spring-boot-starter-client/shenyu-spring-boot-starter-client-alibaba-dubbo/src/test/java/org/apache/shenyu/springboot/starter/client/alibaba/dubbo/ShenyuAlibabaDubboClientConfigurationTest.java
 
b/shenyu-spring-boot-starter/shenyu-spring-boot-starter-client/shenyu-spring-boot-starter-client-alibaba-dubbo/src/test/java/org/apache/shenyu/springboot/starter/client/alibaba/dubbo/ShenyuAlibabaDubboClientConfigurationTest.java
index 44a856f..75abf55 100644
--- 
a/shenyu-spring-boot-starter/shenyu-spring-boot-starter-client/shenyu-spring-boot-starter-client-alibaba-dubbo/src/test/java/org/apache/shenyu/springboot/starter/client/alibaba/dubbo/ShenyuAlibabaDubboClientConfigurationTest.java
+++ 
b/shenyu-spring-boot-starter/shenyu-spring-boot-starter-client/shenyu-spring-boot-starter-client-alibaba-dubbo/src/test/java/org/apache/shenyu/springboot/starter/client/alibaba/dubbo/ShenyuAlibabaDubboClientConfigurationTest.java
@@ -44,7 +44,7 @@ public class ShenyuAlibabaDubboClientConfigurationTest {
     @Test
     public void testShenyuAlibabaDubboClientConfiguration() {
         MockedStatic<RegisterUtils> registerUtilsMockedStatic = 
mockStatic(RegisterUtils.class);
-        registerUtilsMockedStatic.when(() -> RegisterUtils.doLogin(any(), 
any(), any())).thenReturn(Optional.ofNullable("token"));
+        registerUtilsMockedStatic.when(() -> RegisterUtils.doLogin(any(), 
any(), any())).thenReturn(Optional.of("token"));
         new ApplicationContextRunner()
             
.withConfiguration(AutoConfigurations.of(ShenyuAlibabaDubboClientConfiguration.class))
             .withBean(ShenyuAlibabaDubboClientConfigurationTest.class)
diff --git 
a/shenyu-sync-data-center/shenyu-sync-data-consul/src/main/java/org/apache/shenyu/sync/data/consul/ConsulSyncDataService.java
 
b/shenyu-sync-data-center/shenyu-sync-data-consul/src/main/java/org/apache/shenyu/sync/data/consul/ConsulSyncDataService.java
index 1458047..8c58c77 100644
--- 
a/shenyu-sync-data-center/shenyu-sync-data-consul/src/main/java/org/apache/shenyu/sync/data/consul/ConsulSyncDataService.java
+++ 
b/shenyu-sync-data-center/shenyu-sync-data-consul/src/main/java/org/apache/shenyu/sync/data/consul/ConsulSyncDataService.java
@@ -67,6 +67,8 @@ public class ConsulSyncDataService extends ConsulCacheHandler 
implements AutoClo
     /**
      * Instantiates a new Consul sync data service.
      *
+     * @param consulClient the plugin data consulClient
+     * @param consulConfig the plugin data consulConfig
      * @param pluginDataSubscriber the plugin data subscriber
      * @param metaDataSubscribers  the meta data subscribers
      * @param authDataSubscribers  the auth data subscribers

Reply via email to