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