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 07e085c refactor:[ISSUE #1866] remove lombok dependency (#1887)
07e085c is described below
commit 07e085c40e847a921f3c94c70676aa3dd266446b
Author: 怡蘅 <[email protected]>
AuthorDate: Fri Aug 6 17:43:00 2021 +0800
refactor:[ISSUE #1866] remove lombok dependency (#1887)
---
.../sync/data/consul/ConsulSyncDataService.java | 26 ++--
.../sync/data/consul/config/ConsulConfig.java | 88 +++++++++++++-
.../data/consul/handler/ConsulCacheHandler.java | 18 +--
.../data/consul/ConsulSyncDataServiceTest.java | 5 +-
.../consul/handler/ConsulCacheHandlerTest.java | 18 +--
.../apache/shenyu/sync/data/etcd/EtcdClient.java | 46 ++++---
.../shenyu/sync/data/etcd/EtcdSyncDataService.java | 26 ++--
.../shenyu/sync/data/http/HttpSyncDataService.java | 53 ++++----
.../shenyu/sync/data/http/config/HttpConfig.java | 95 ++++++++++++++-
.../data/http/refresh/AbstractDataRefresh.java | 15 ++-
.../sync/data/http/refresh/AppAuthDataRefresh.java | 20 ++-
.../sync/data/http/refresh/MetaDataRefresh.java | 16 ++-
.../sync/data/http/refresh/PluginDataRefresh.java | 17 ++-
.../sync/data/http/refresh/RuleDataRefresh.java | 17 ++-
.../data/http/refresh/SelectorDataRefresh.java | 20 ++-
.../sync/data/http/HttpSyncDataServiceTest.java | 16 ++-
.../sync/data/nacos/config/NacosACMConfig.java | 134 ++++++++++++++++++++-
.../shenyu/sync/data/nacos/config/NacosConfig.java | 134 ++++++++++++++++++++-
.../sync/data/nacos/handler/NacosCacheHandler.java | 41 +++++--
.../data/nacos/handler/NacosCacheHandlerTest.java | 54 ++++-----
.../data/websocket/WebsocketSyncDataService.java | 25 ++--
.../websocket/client/ShenyuWebsocketClient.java | 22 ++--
.../data/websocket/config/WebsocketConfig.java | 47 +++++++-
.../data/websocket/handler/AuthDataHandler.java | 6 +-
.../data/websocket/handler/MetaDataHandler.java | 7 +-
.../data/websocket/handler/PluginDataHandler.java | 9 +-
.../data/websocket/handler/RuleDataHandler.java | 6 +-
.../websocket/handler/SelectorDataHandler.java | 9 +-
.../data/zookeeper/ZookeeperSyncDataService.java | 5 +-
29 files changed, 789 insertions(+), 206 deletions(-)
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 3747785..e11e055 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
@@ -21,7 +21,6 @@ import com.ecwid.consul.v1.ConsulClient;
import com.ecwid.consul.v1.QueryParams;
import com.ecwid.consul.v1.Response;
import com.ecwid.consul.v1.kv.model.GetValue;
-import lombok.extern.slf4j.Slf4j;
import org.apache.shenyu.common.concurrent.ShenyuThreadFactory;
import org.apache.shenyu.common.constant.ConsulConstants;
import org.apache.shenyu.sync.data.api.AuthDataSubscriber;
@@ -30,6 +29,8 @@ import org.apache.shenyu.sync.data.api.PluginDataSubscriber;
import org.apache.shenyu.sync.data.api.SyncDataService;
import org.apache.shenyu.sync.data.consul.config.ConsulConfig;
import org.apache.shenyu.sync.data.consul.handler.ConsulCacheHandler;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.util.HashMap;
import java.util.List;
@@ -42,8 +43,11 @@ import java.util.concurrent.atomic.AtomicBoolean;
/**
* Consul sync data service.
*/
-@Slf4j
public class ConsulSyncDataService extends ConsulCacheHandler implements
AutoCloseable, SyncDataService {
+ /**
+ * logger.
+ */
+ private static final Logger LOG =
LoggerFactory.getLogger(ConsulSyncDataService.class);
private final Map<String, OnChange> groupMap = new HashMap<>();
@@ -99,22 +103,22 @@ public class ConsulSyncDataService extends
ConsulCacheHandler implements AutoClo
Response<List<GetValue>> response =
this.consulClient.getKVValues(context, null,
new QueryParams(consulConfig.getWaitTime(),
currentIndex));
if (response.getValue() == null ||
response.getValue().isEmpty()) {
- if (log.isTraceEnabled()) {
- log.trace("No value for context " + context);
+ if (LOG.isTraceEnabled()) {
+ LOG.trace("No value for context " + context);
}
continue;
}
Long newIndex = response.getConsulIndex();
if (newIndex == null || newIndex.equals(currentIndex)) {
- if (log.isTraceEnabled()) {
- log.trace("Same index for context " + context);
+ if (LOG.isTraceEnabled()) {
+ LOG.trace("Same index for context " + context);
}
continue;
}
if (!this.consulIndexes.containsValue(newIndex)
&&
!currentIndex.equals(ConsulConstants.INIT_CONFIG_VERSION_INDEX)) {
- if (log.isTraceEnabled()) {
- log.trace("Context " + context + " has new index "
+ newIndex);
+ if (LOG.isTraceEnabled()) {
+ LOG.trace("Context " + context + " has new index "
+ newIndex);
}
final Long lastIndex = currentIndex;
response.getValue().forEach(data -> {
@@ -125,12 +129,12 @@ public class ConsulSyncDataService extends
ConsulCacheHandler implements AutoClo
groupMap.get(data.getKey()).change(data.getDecodedValue());
});
- } else if (log.isTraceEnabled()) {
- log.info("Event for index already published for
context " + context);
+ } else if (LOG.isTraceEnabled()) {
+ LOG.info("Event for index already published for
context " + context);
}
this.consulIndexes.put(context, newIndex);
} catch (Exception e) {
- log.warn("Error querying consul Key/Values for context '"
+ context + "'. Message: " + e.getMessage());
+ LOG.warn("Error querying consul Key/Values for context '"
+ context + "'. Message: " + e.getMessage());
}
}
}
diff --git
a/shenyu-sync-data-center/shenyu-sync-data-consul/src/main/java/org/apache/shenyu/sync/data/consul/config/ConsulConfig.java
b/shenyu-sync-data-center/shenyu-sync-data-consul/src/main/java/org/apache/shenyu/sync/data/consul/config/ConsulConfig.java
index 6c85338..c629d56 100644
---
a/shenyu-sync-data-center/shenyu-sync-data-consul/src/main/java/org/apache/shenyu/sync/data/consul/config/ConsulConfig.java
+++
b/shenyu-sync-data-center/shenyu-sync-data-consul/src/main/java/org/apache/shenyu/sync/data/consul/config/ConsulConfig.java
@@ -17,12 +17,11 @@
package org.apache.shenyu.sync.data.consul.config;
-import lombok.Data;
+import java.util.Objects;
/**
* The type Consul config.
*/
-@Data
public class ConsulConfig {
private String url;
@@ -31,4 +30,89 @@ public class ConsulConfig {
private int watchDelay;
+ /**
+ * get url.
+ *
+ * @return url
+ */
+ public String getUrl() {
+ return url;
+ }
+
+ /**
+ * set url.
+ *
+ * @param url url
+ */
+ public void setUrl(final String url) {
+ this.url = url;
+ }
+
+ /**
+ * get waitTime.
+ *
+ * @return waitTime
+ */
+ public int getWaitTime() {
+ return waitTime;
+ }
+
+ /**
+ * set waitTime.
+ *
+ * @param waitTime waitTime
+ */
+ public void setWaitTime(final int waitTime) {
+ this.waitTime = waitTime;
+ }
+
+ /**
+ * get watchDelay.
+ *
+ * @return watchDelay
+ */
+ public int getWatchDelay() {
+ return watchDelay;
+ }
+
+ /**
+ * set watchDelay.
+ *
+ * @param watchDelay watchDelay
+ */
+ public void setWatchDelay(final int watchDelay) {
+ this.watchDelay = watchDelay;
+ }
+
+ @Override
+ public boolean equals(final Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ ConsulConfig that = (ConsulConfig) o;
+ return waitTime == that.waitTime
+ && watchDelay == that.watchDelay
+ && Objects.equals(url, that.url);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(url, waitTime, watchDelay);
+ }
+
+ @Override
+ public String toString() {
+ return "ConsulConfig{"
+ + "url='"
+ + url
+ + '\''
+ + ", waitTime="
+ + waitTime
+ + ", watchDelay="
+ + watchDelay
+ + '}';
+ }
}
diff --git
a/shenyu-sync-data-center/shenyu-sync-data-consul/src/main/java/org/apache/shenyu/sync/data/consul/handler/ConsulCacheHandler.java
b/shenyu-sync-data-center/shenyu-sync-data-consul/src/main/java/org/apache/shenyu/sync/data/consul/handler/ConsulCacheHandler.java
index d4bce59..d593448 100644
---
a/shenyu-sync-data-center/shenyu-sync-data-consul/src/main/java/org/apache/shenyu/sync/data/consul/handler/ConsulCacheHandler.java
+++
b/shenyu-sync-data-center/shenyu-sync-data-consul/src/main/java/org/apache/shenyu/sync/data/consul/handler/ConsulCacheHandler.java
@@ -18,7 +18,6 @@
package org.apache.shenyu.sync.data.consul.handler;
import com.google.gson.JsonParseException;
-import lombok.extern.slf4j.Slf4j;
import org.apache.shenyu.common.dto.AppAuthData;
import org.apache.shenyu.common.dto.MetaData;
import org.apache.shenyu.common.dto.PluginData;
@@ -28,6 +27,8 @@ import org.apache.shenyu.common.utils.GsonUtils;
import org.apache.shenyu.sync.data.api.AuthDataSubscriber;
import org.apache.shenyu.sync.data.api.MetaDataSubscriber;
import org.apache.shenyu.sync.data.api.PluginDataSubscriber;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.Collection;
@@ -38,8 +39,11 @@ import java.util.stream.Collectors;
/**
* Consul cache handler.
*/
-@Slf4j
public class ConsulCacheHandler {
+ /**
+ * logger.
+ */
+ private static final Logger LOG =
LoggerFactory.getLogger(ConsulCacheHandler.class);
private final PluginDataSubscriber pluginDataSubscriber;
@@ -63,7 +67,7 @@ public class ConsulCacheHandler {
subscriber.onSubscribe(pluginData);
}));
} catch (JsonParseException e) {
- log.error("sync plugin data have error:", e);
+ LOG.error("sync plugin data have error:", e);
}
}
@@ -75,7 +79,7 @@ public class ConsulCacheHandler {
subscriber.onSelectorSubscribe(selectorData);
}));
} catch (JsonParseException e) {
- log.error("sync selector data have error:", e);
+ LOG.error("sync selector data have error:", e);
}
}
@@ -89,7 +93,7 @@ public class ConsulCacheHandler {
subscriber.onRuleSubscribe(ruleData);
}));
} catch (JsonParseException e) {
- log.error("sync rule data have error:", e);
+ LOG.error("sync rule data have error:", e);
}
}
@@ -101,7 +105,7 @@ public class ConsulCacheHandler {
subscriber.onSubscribe(metaData);
}));
} catch (JsonParseException e) {
- log.error("sync meta data have error:", e);
+ LOG.error("sync meta data have error:", e);
}
}
@@ -113,7 +117,7 @@ public class ConsulCacheHandler {
subscriber.onSubscribe(appAuthData);
}));
} catch (JsonParseException e) {
- log.error("sync auth data have error:", e);
+ LOG.error("sync auth data have error:", e);
}
}
diff --git
a/shenyu-sync-data-center/shenyu-sync-data-consul/src/test/java/org/apache/shenyu/sync/data/consul/ConsulSyncDataServiceTest.java
b/shenyu-sync-data-center/shenyu-sync-data-consul/src/test/java/org/apache/shenyu/sync/data/consul/ConsulSyncDataServiceTest.java
index cb4dab2..33826457 100644
---
a/shenyu-sync-data-center/shenyu-sync-data-consul/src/test/java/org/apache/shenyu/sync/data/consul/ConsulSyncDataServiceTest.java
+++
b/shenyu-sync-data-center/shenyu-sync-data-consul/src/test/java/org/apache/shenyu/sync/data/consul/ConsulSyncDataServiceTest.java
@@ -20,7 +20,6 @@ package org.apache.shenyu.sync.data.consul;
import com.ecwid.consul.v1.ConsulClient;
import com.ecwid.consul.v1.Response;
import com.ecwid.consul.v1.kv.model.GetValue;
-import lombok.SneakyThrows;
import org.apache.shenyu.common.constant.ConsulConstants;
import org.apache.shenyu.common.utils.ReflectUtils;
import org.apache.shenyu.sync.data.consul.config.ConsulConfig;
@@ -28,6 +27,7 @@ import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
+import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collections;
@@ -68,8 +68,7 @@ public class ConsulSyncDataServiceTest {
}
@Test
- @SneakyThrows
- public void testWatch() {
+ public void testWatch() throws InvocationTargetException,
IllegalAccessException, NoSuchMethodException {
Long index = 1L;
final List<GetValue> list = new ArrayList<>();
GetValue getValue = mock(GetValue.class);
diff --git
a/shenyu-sync-data-center/shenyu-sync-data-consul/src/test/java/org/apache/shenyu/sync/data/consul/handler/ConsulCacheHandlerTest.java
b/shenyu-sync-data-center/shenyu-sync-data-consul/src/test/java/org/apache/shenyu/sync/data/consul/handler/ConsulCacheHandlerTest.java
index 4e75bf1..8d8c1d6 100644
---
a/shenyu-sync-data-center/shenyu-sync-data-consul/src/test/java/org/apache/shenyu/sync/data/consul/handler/ConsulCacheHandlerTest.java
+++
b/shenyu-sync-data-center/shenyu-sync-data-consul/src/test/java/org/apache/shenyu/sync/data/consul/handler/ConsulCacheHandlerTest.java
@@ -20,13 +20,11 @@ package org.apache.shenyu.sync.data.consul.handler;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
-import lombok.SneakyThrows;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.shenyu.common.dto.PluginData;
-import org.apache.shenyu.common.dto.SelectorData;
import org.apache.shenyu.common.dto.AppAuthData;
-import org.apache.shenyu.common.dto.RuleData;
import org.apache.shenyu.common.dto.MetaData;
+import org.apache.shenyu.common.dto.PluginData;
+import org.apache.shenyu.common.dto.RuleData;
+import org.apache.shenyu.common.dto.SelectorData;
import org.apache.shenyu.common.utils.GsonUtils;
import org.apache.shenyu.sync.data.api.AuthDataSubscriber;
import org.apache.shenyu.sync.data.api.MetaDataSubscriber;
@@ -34,18 +32,14 @@ import org.apache.shenyu.sync.data.api.PluginDataSubscriber;
import org.junit.Assert;
import org.junit.Test;
-import java.util.List;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.List;
/**
* test case for {@link ConsulCacheHandler}.
*/
-@Slf4j
-@SuppressWarnings("all")
public final class ConsulCacheHandlerTest {
-
- @SneakyThrows
@Test
public void testUpdatePluginMap() {
String pluginName1 = "PLUGIN_NAME_1";
@@ -75,7 +69,6 @@ public final class ConsulCacheHandlerTest {
Assert.assertEquals(2, unsubscribeList.size());
}
- @SneakyThrows
@Test
public void testUpdateSelectorMap() {
String selectorDataPluginName1 = "SELECTOR_DATA_1";
@@ -114,7 +107,6 @@ public final class ConsulCacheHandlerTest {
Assert.assertEquals(2, unsubscribeList.size());
}
- @SneakyThrows
@Test
public void testUpdateRuleMap() {
String ruleDataId1 = "RULE_DATA_1";
@@ -148,7 +140,6 @@ public final class ConsulCacheHandlerTest {
Assert.assertEquals(2, unsubscribeList.size());
}
- @SneakyThrows
@Test
public void testUpdateMetaDataMap() {
String metadataPath1 = "METADATA_PATH_1";
@@ -178,7 +169,6 @@ public final class ConsulCacheHandlerTest {
Assert.assertEquals(2, unsubscribeList.size());
}
- @SneakyThrows
@Test
public void testUpdateAuthMap() {
String mockAppKey = "MOCK_APP_KEY";
diff --git
a/shenyu-sync-data-center/shenyu-sync-data-etcd/src/main/java/org/apache/shenyu/sync/data/etcd/EtcdClient.java
b/shenyu-sync-data-center/shenyu-sync-data-etcd/src/main/java/org/apache/shenyu/sync/data/etcd/EtcdClient.java
index cfc350c..ab5f537 100644
---
a/shenyu-sync-data-center/shenyu-sync-data-etcd/src/main/java/org/apache/shenyu/sync/data/etcd/EtcdClient.java
+++
b/shenyu-sync-data-center/shenyu-sync-data-etcd/src/main/java/org/apache/shenyu/sync/data/etcd/EtcdClient.java
@@ -25,12 +25,13 @@ import io.etcd.jetcd.options.DeleteOption;
import io.etcd.jetcd.options.GetOption;
import io.etcd.jetcd.options.WatchOption;
import io.etcd.jetcd.watch.WatchEvent;
-import lombok.SneakyThrows;
-import lombok.extern.slf4j.Slf4j;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ExecutionException;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
import java.util.stream.Collectors;
@@ -38,9 +39,13 @@ import java.util.stream.Collectors;
/**
* Etcd client of Bootstrap.
*/
-@Slf4j
public class EtcdClient {
+ /**
+ * logger.
+ */
+ private static final Logger LOG =
LoggerFactory.getLogger(EtcdClient.class);
+
private final Client client;
private final ConcurrentHashMap<String, Watch.Watcher> watchCache = new
ConcurrentHashMap<>();
@@ -58,23 +63,30 @@ public class EtcdClient {
/**
* get node value.
+ *
* @param key node name
* @return string
*/
- @SneakyThrows
public String get(final String key) {
- List<KeyValue> keyValues =
client.getKVClient().get(ByteSequence.from(key,
StandardCharsets.UTF_8)).get().getKvs();
+ List<KeyValue> keyValues = null;
+ try {
+ keyValues = client.getKVClient().get(ByteSequence.from(key,
StandardCharsets.UTF_8)).get().getKvs();
+ } catch (InterruptedException | ExecutionException e) {
+ LOG.error(e.getMessage(), e);
+ }
return keyValues.isEmpty() ? null :
keyValues.iterator().next().getValue().toString(StandardCharsets.UTF_8);
}
/**
* get node sub nodes.
- * @param prefix node prefix.
+ *
+ * @param prefix node prefix.
* @param separator separator char
* @return sub nodes
+ * @throws ExecutionException the exception
+ * @throws InterruptedException the exception
*/
- @SneakyThrows
- public List<String> getChildrenKeys(final String prefix, final String
separator) {
+ public List<String> getChildrenKeys(final String prefix, final String
separator) throws ExecutionException, InterruptedException {
ByteSequence prefixByteSequence = ByteSequence.from(prefix,
StandardCharsets.UTF_8);
GetOption getOption =
GetOption.newBuilder().withPrefix(prefixByteSequence).withSortField(GetOption.SortTarget.KEY).withSortOrder(GetOption.SortOrder.ASCEND).build();
List<KeyValue> keyValues =
client.getKVClient().get(prefixByteSequence, getOption).get().getKvs();
@@ -88,16 +100,19 @@ public class EtcdClient {
/**
* update value of node.
- * @param key node name
+ *
+ * @param key node name
* @param value node value
+ * @throws ExecutionException the exception
+ * @throws InterruptedException the exception
*/
- @SneakyThrows
- public void put(final String key, final String value) {
+ public void put(final String key, final String value) throws
ExecutionException, InterruptedException {
client.getKVClient().put(ByteSequence.from(key,
StandardCharsets.UTF_8), ByteSequence.from(value,
StandardCharsets.UTF_8)).get();
}
/**
* delete node.
+ *
* @param key node name
*/
public void delete(final String key) {
@@ -106,6 +121,7 @@ public class EtcdClient {
/**
* delete node of recursive.
+ *
* @param key parent node name
*/
public void deleteRecursive(final String key) {
@@ -117,7 +133,8 @@ public class EtcdClient {
/**
* subscribe data change.
- * @param key node name
+ *
+ * @param key node name
* @param updateHandler node value handler of update
* @param deleteHandler node value handler of delete
*/
@@ -129,7 +146,8 @@ public class EtcdClient {
/**
* subscribe sub node change.
- * @param key param node name.
+ *
+ * @param key param node name.
* @param updateHandler sub node handler of update
* @param deleteHandler sub node delete of delete
*/
@@ -144,7 +162,7 @@ public class EtcdClient {
private Watch.Listener watch(final BiConsumer<String, String>
updateHandler, final Consumer<String> deleteHandler) {
return Watch.listener(response -> {
- for (WatchEvent event: response.getEvents()) {
+ for (WatchEvent event : response.getEvents()) {
String path =
event.getKeyValue().getKey().toString(StandardCharsets.UTF_8);
String value =
event.getKeyValue().getValue().toString(StandardCharsets.UTF_8);
switch (event.getEventType()) {
diff --git
a/shenyu-sync-data-center/shenyu-sync-data-etcd/src/main/java/org/apache/shenyu/sync/data/etcd/EtcdSyncDataService.java
b/shenyu-sync-data-center/shenyu-sync-data-etcd/src/main/java/org/apache/shenyu/sync/data/etcd/EtcdSyncDataService.java
index ca57d5c..cf0daa9 100644
---
a/shenyu-sync-data-center/shenyu-sync-data-etcd/src/main/java/org/apache/shenyu/sync/data/etcd/EtcdSyncDataService.java
+++
b/shenyu-sync-data-center/shenyu-sync-data-etcd/src/main/java/org/apache/shenyu/sync/data/etcd/EtcdSyncDataService.java
@@ -19,13 +19,12 @@ package org.apache.shenyu.sync.data.etcd;
import com.google.common.base.Splitter;
import com.google.common.collect.Lists;
-import lombok.extern.slf4j.Slf4j;
import org.apache.shenyu.common.constant.DefaultPathConstants;
+import org.apache.shenyu.common.dto.AppAuthData;
import org.apache.shenyu.common.dto.MetaData;
import org.apache.shenyu.common.dto.PluginData;
-import org.apache.shenyu.common.dto.SelectorData;
import org.apache.shenyu.common.dto.RuleData;
-import org.apache.shenyu.common.dto.AppAuthData;
+import org.apache.shenyu.common.dto.SelectorData;
import org.apache.shenyu.common.enums.ConfigGroupEnum;
import org.apache.shenyu.common.utils.CollectionUtils;
import org.apache.shenyu.common.utils.GsonUtils;
@@ -33,19 +32,27 @@ import org.apache.shenyu.sync.data.api.AuthDataSubscriber;
import org.apache.shenyu.sync.data.api.MetaDataSubscriber;
import org.apache.shenyu.sync.data.api.PluginDataSubscriber;
import org.apache.shenyu.sync.data.api.SyncDataService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;
+import java.util.Collections;
import java.util.List;
import java.util.Optional;
+import java.util.concurrent.ExecutionException;
/**
* Data synchronize of etcd.
*/
-@Slf4j
public class EtcdSyncDataService implements SyncDataService, AutoCloseable {
+ /**
+ * logger.
+ */
+ private static final Logger LOG =
LoggerFactory.getLogger(EtcdSyncDataService.class);
+
private final EtcdClient etcdClient;
private final PluginDataSubscriber pluginDataSubscriber;
@@ -57,13 +64,13 @@ public class EtcdSyncDataService implements
SyncDataService, AutoCloseable {
/**
* Instantiates a new Zookeeper cache manager.
*
- * @param etcdClient the etcd client
+ * @param etcdClient the etcd client
* @param pluginDataSubscriber the plugin data subscriber
* @param metaDataSubscribers the meta data subscribers
* @param authDataSubscribers the auth data subscribers
*/
public EtcdSyncDataService(final EtcdClient etcdClient, final
PluginDataSubscriber pluginDataSubscriber,
- final List<MetaDataSubscriber>
metaDataSubscribers, final List<AuthDataSubscriber> authDataSubscribers) {
+ final List<MetaDataSubscriber>
metaDataSubscribers, final List<AuthDataSubscriber> authDataSubscribers) {
this.etcdClient = etcdClient;
this.pluginDataSubscriber = pluginDataSubscriber;
this.metaDataSubscribers = metaDataSubscribers;
@@ -300,7 +307,12 @@ public class EtcdSyncDataService implements
SyncDataService, AutoCloseable {
}
private List<String> etcdClientGetChildren(final String parent) {
- return etcdClient.getChildrenKeys(parent, "/");
+ try {
+ return etcdClient.getChildrenKeys(parent, "/");
+ } catch (ExecutionException | InterruptedException e) {
+ LOG.error(e.getMessage(), e);
+ }
+ return Collections.emptyList();
}
@Override
diff --git
a/shenyu-sync-data-center/shenyu-sync-data-http/src/main/java/org/apache/shenyu/sync/data/http/HttpSyncDataService.java
b/shenyu-sync-data-center/shenyu-sync-data-http/src/main/java/org/apache/shenyu/sync/data/http/HttpSyncDataService.java
index ca56b56..2f1668d 100644
---
a/shenyu-sync-data-center/shenyu-sync-data-http/src/main/java/org/apache/shenyu/sync/data/http/HttpSyncDataService.java
+++
b/shenyu-sync-data-center/shenyu-sync-data-http/src/main/java/org/apache/shenyu/sync/data/http/HttpSyncDataService.java
@@ -22,15 +22,6 @@ import com.google.common.collect.Lists;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
-import java.time.Duration;
-import java.util.Arrays;
-import java.util.List;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicBoolean;
-import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shenyu.common.concurrent.ShenyuThreadFactory;
@@ -45,6 +36,8 @@ import org.apache.shenyu.sync.data.api.PluginDataSubscriber;
import org.apache.shenyu.sync.data.api.SyncDataService;
import org.apache.shenyu.sync.data.http.config.HttpConfig;
import org.apache.shenyu.sync.data.http.refresh.DataRefreshFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
@@ -54,13 +47,26 @@ import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestClientException;
import org.springframework.web.client.RestTemplate;
+import java.time.Duration;
+import java.util.Arrays;
+import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
+
/**
* HTTP long polling implementation.
*/
@SuppressWarnings("all")
-@Slf4j
public class HttpSyncDataService implements SyncDataService, AutoCloseable {
+ /**
+ * logger.
+ */
+ private static final Logger LOG =
LoggerFactory.getLogger(HttpSyncDataService.class);
+
private static final AtomicBoolean RUNNING = new AtomicBoolean(false);
private static final Gson GSON = new Gson();
@@ -111,7 +117,7 @@ public class HttpSyncDataService implements
SyncDataService, AutoCloseable {
// start long polling, each server creates a thread to listen for
changes.
this.serverList.forEach(server -> this.executor.execute(new
HttpLongPollingTask(server)));
} else {
- log.info("shenyu http long polling was started, executor=[{}]",
executor);
+ LOG.info("shenyu http long polling was started, executor=[{}]",
executor);
}
}
@@ -126,7 +132,7 @@ public class HttpSyncDataService implements
SyncDataService, AutoCloseable {
if (index >= serverList.size() - 1) {
throw e;
}
- log.warn("fetch config fail, try another one: {}",
serverList.get(index + 1));
+ LOG.warn("fetch config fail, try another one: {}",
serverList.get(index + 1));
}
}
}
@@ -137,28 +143,29 @@ public class HttpSyncDataService implements
SyncDataService, AutoCloseable {
params.append("groupKeys").append("=").append(groupKey.name()).append("&");
}
String url = server + "/configs/fetch?" +
StringUtils.removeEnd(params.toString(), "&");
- log.info("request configs: [{}]", url);
+ LOG.info("request configs: [{}]", url);
String json = null;
try {
json = this.httpClient.getForObject(url, String.class);
} catch (RestClientException e) {
String message = String.format("fetch config fail from server[%s],
%s", url, e.getMessage());
- log.warn(message);
+ LOG.warn(message);
throw new ShenyuException(message, e);
}
// update local cache
boolean updated = this.updateCacheWithJson(json);
if (updated) {
- log.info("get latest configs: [{}]", json);
+ LOG.info("get latest configs: [{}]", json);
return;
}
// not updated. it is likely that the current config server has not
been updated yet. wait a moment.
- log.info("The config of the server[{}] has not been updated or is out
of date. Wait for 30s to listen for changes again.", server);
+ LOG.info("The config of the server[{}] has not been updated or is out
of date. Wait for 30s to listen for changes again.", server);
ThreadUtils.sleep(TimeUnit.SECONDS, 30);
}
/**
* update local cache.
+ *
* @param json the response from config server.
* @return true: the local cache was updated. false: not updated.
*/
@@ -183,11 +190,11 @@ public class HttpSyncDataService implements
SyncDataService, AutoCloseable {
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
HttpEntity httpEntity = new HttpEntity(params, headers);
String listenerUrl = server + "/configs/listener";
- log.debug("request listener configs: [{}]", listenerUrl);
+ LOG.debug("request listener configs: [{}]", listenerUrl);
JsonArray groupJson = null;
try {
String json = this.httpClient.postForEntity(listenerUrl,
httpEntity, String.class).getBody();
- log.debug("listener result: [{}]", json);
+ LOG.debug("listener result: [{}]", json);
groupJson = GSON.fromJson(json,
JsonObject.class).getAsJsonArray("data");
} catch (RestClientException e) {
String message = String.format("listener configs fail,
server:[%s], %s", server, e.getMessage());
@@ -197,7 +204,7 @@ public class HttpSyncDataService implements
SyncDataService, AutoCloseable {
// fetch group configuration async.
ConfigGroupEnum[] changedGroups = GSON.fromJson(groupJson,
ConfigGroupEnum[].class);
if (ArrayUtils.isNotEmpty(changedGroups)) {
- log.info("Group config changed: {}",
Arrays.toString(changedGroups));
+ LOG.info("Group config changed: {}",
Arrays.toString(changedGroups));
this.doFetchGroupConfig(server, changedGroups);
}
}
@@ -230,20 +237,20 @@ public class HttpSyncDataService implements
SyncDataService, AutoCloseable {
try {
doLongPolling(server);
} catch (Exception e) {
- // print warnning log.
+ // print warnning LOG.
if (time < retryTimes) {
- log.warn("Long polling failed, tried {} times, {}
times left, will be suspended for a while! {}",
+ LOG.warn("Long polling failed, tried {} times, {}
times left, will be suspended for a while! {}",
time, retryTimes - time, e.getMessage());
ThreadUtils.sleep(TimeUnit.SECONDS, 5);
continue;
}
// print error, then suspended for a while.
- log.error("Long polling failed, try again after 5
minutes!", e);
+ LOG.error("Long polling failed, try again after 5
minutes!", e);
ThreadUtils.sleep(TimeUnit.MINUTES, 5);
}
}
}
- log.warn("Stop http long polling.");
+ LOG.warn("Stop http long polling.");
}
}
}
diff --git
a/shenyu-sync-data-center/shenyu-sync-data-http/src/main/java/org/apache/shenyu/sync/data/http/config/HttpConfig.java
b/shenyu-sync-data-center/shenyu-sync-data-http/src/main/java/org/apache/shenyu/sync/data/http/config/HttpConfig.java
index 9ca15a7..ec5459b 100644
---
a/shenyu-sync-data-center/shenyu-sync-data-http/src/main/java/org/apache/shenyu/sync/data/http/config/HttpConfig.java
+++
b/shenyu-sync-data-center/shenyu-sync-data-http/src/main/java/org/apache/shenyu/sync/data/http/config/HttpConfig.java
@@ -17,17 +17,102 @@
package org.apache.shenyu.sync.data.http.config;
-import lombok.Data;
+import java.util.Objects;
/**
* The type Http config.
*/
-@Data
public class HttpConfig {
-
+
private String url;
-
+
private Integer delayTime;
-
+
private Integer connectionTimeout;
+
+ /**
+ * get url.
+ *
+ * @return url
+ */
+ public String getUrl() {
+ return url;
+ }
+
+ /**
+ * set url.
+ *
+ * @param url url
+ */
+ public void setUrl(final String url) {
+ this.url = url;
+ }
+
+ /**
+ * get delayTime.
+ *
+ * @return delayTime
+ */
+ public Integer getDelayTime() {
+ return delayTime;
+ }
+
+ /**
+ * set delayTime.
+ *
+ * @param delayTime delayTime
+ */
+ public void setDelayTime(final Integer delayTime) {
+ this.delayTime = delayTime;
+ }
+
+ /**
+ * get connectionTimeout.
+ *
+ * @return connectionTimeout
+ */
+ public Integer getConnectionTimeout() {
+ return connectionTimeout;
+ }
+
+ /**
+ * set connectionTimeout.
+ *
+ * @param connectionTimeout connectionTimeout
+ */
+ public void setConnectionTimeout(final Integer connectionTimeout) {
+ this.connectionTimeout = connectionTimeout;
+ }
+
+ @Override
+ public boolean equals(final Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ HttpConfig that = (HttpConfig) o;
+ return Objects.equals(url, that.url)
+ && Objects.equals(delayTime, that.delayTime)
+ && Objects.equals(connectionTimeout, that.connectionTimeout);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(url, delayTime, connectionTimeout);
+ }
+
+ @Override
+ public String toString() {
+ return "HttpConfig{"
+ + "url='"
+ + url
+ + '\''
+ + ", delayTime="
+ + delayTime
+ + ", connectionTimeout="
+ + connectionTimeout
+ + '}';
+ }
}
diff --git
a/shenyu-sync-data-center/shenyu-sync-data-http/src/main/java/org/apache/shenyu/sync/data/http/refresh/AbstractDataRefresh.java
b/shenyu-sync-data-center/shenyu-sync-data-http/src/main/java/org/apache/shenyu/sync/data/http/refresh/AbstractDataRefresh.java
index c89bebb..26d3252 100644
---
a/shenyu-sync-data-center/shenyu-sync-data-http/src/main/java/org/apache/shenyu/sync/data/http/refresh/AbstractDataRefresh.java
+++
b/shenyu-sync-data-center/shenyu-sync-data-http/src/main/java/org/apache/shenyu/sync/data/http/refresh/AbstractDataRefresh.java
@@ -19,10 +19,11 @@ package org.apache.shenyu.sync.data.http.refresh;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
-import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.shenyu.common.dto.ConfigData;
import org.apache.shenyu.common.enums.ConfigGroupEnum;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
@@ -33,7 +34,6 @@ import java.util.concurrent.ConcurrentMap;
*
* @param <T> the type parameter
*/
-@Slf4j
public abstract class AbstractDataRefresh<T> implements DataRefresh {
/**
@@ -47,6 +47,11 @@ public abstract class AbstractDataRefresh<T> implements
DataRefresh {
protected static final Gson GSON = new Gson();
/**
+ * logger.
+ */
+ private static final Logger LOG =
LoggerFactory.getLogger(AbstractDataRefresh.class);
+
+ /**
* Convert json object.
*
* @param data the data
@@ -107,15 +112,15 @@ public abstract class AbstractDataRefresh<T> implements
DataRefresh {
ResultHolder holder = new ResultHolder(false);
GROUP_CACHE.merge(groupEnum, newVal, (oldVal, value) -> {
if (StringUtils.equals(oldVal.getMd5(), newVal.getMd5())) {
- log.info("Get the same config, the [{}] config cache will not
be updated, md5:{}", groupEnum, oldVal.getMd5());
+ LOG.info("Get the same config, the [{}] config cache will not
be updated, md5:{}", groupEnum, oldVal.getMd5());
return oldVal;
}
// must compare the last update time
if (oldVal.getLastModifyTime() >= newVal.getLastModifyTime()) {
- log.info("Last update time earlier than the current
configuration, the [{}] config cache will not be updated", groupEnum);
+ LOG.info("Last update time earlier than the current
configuration, the [{}] config cache will not be updated", groupEnum);
return oldVal;
}
- log.info("update {} config: {}", groupEnum, newVal);
+ LOG.info("update {} config: {}", groupEnum, newVal);
holder.result = true;
return newVal;
});
diff --git
a/shenyu-sync-data-center/shenyu-sync-data-http/src/main/java/org/apache/shenyu/sync/data/http/refresh/AppAuthDataRefresh.java
b/shenyu-sync-data-center/shenyu-sync-data-http/src/main/java/org/apache/shenyu/sync/data/http/refresh/AppAuthDataRefresh.java
index 1590dc2..66a4ea6 100644
---
a/shenyu-sync-data-center/shenyu-sync-data-http/src/main/java/org/apache/shenyu/sync/data/http/refresh/AppAuthDataRefresh.java
+++
b/shenyu-sync-data-center/shenyu-sync-data-http/src/main/java/org/apache/shenyu/sync/data/http/refresh/AppAuthDataRefresh.java
@@ -19,24 +19,32 @@ package org.apache.shenyu.sync.data.http.refresh;
import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken;
-import java.util.List;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.shenyu.common.dto.AppAuthData;
import org.apache.shenyu.common.dto.ConfigData;
import org.apache.shenyu.common.enums.ConfigGroupEnum;
import org.apache.shenyu.sync.data.api.AuthDataSubscriber;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.List;
/**
* The type app auth data refresh.
*/
-@Slf4j
-@RequiredArgsConstructor
public class AppAuthDataRefresh extends AbstractDataRefresh<AppAuthData> {
+ /**
+ * logger.
+ */
+ private static final Logger LOG =
LoggerFactory.getLogger(AppAuthDataRefresh.class);
+
private final List<AuthDataSubscriber> authDataSubscribers;
+ public AppAuthDataRefresh(final List<AuthDataSubscriber>
authDataSubscribers) {
+ this.authDataSubscribers = authDataSubscribers;
+ }
+
@Override
protected JsonObject convert(final JsonObject data) {
return data.getAsJsonObject(ConfigGroupEnum.APP_AUTH.name());
@@ -61,7 +69,7 @@ public class AppAuthDataRefresh extends
AbstractDataRefresh<AppAuthData> {
@Override
protected void refresh(final List<AppAuthData> data) {
if (CollectionUtils.isEmpty(data)) {
- log.info("clear all appAuth data cache");
+ LOG.info("clear all appAuth data cache");
authDataSubscribers.forEach(AuthDataSubscriber::refresh);
} else {
data.forEach(authData -> authDataSubscribers.forEach(subscriber ->
subscriber.onSubscribe(authData)));
diff --git
a/shenyu-sync-data-center/shenyu-sync-data-http/src/main/java/org/apache/shenyu/sync/data/http/refresh/MetaDataRefresh.java
b/shenyu-sync-data-center/shenyu-sync-data-http/src/main/java/org/apache/shenyu/sync/data/http/refresh/MetaDataRefresh.java
index 5a979f1..e1efddf 100644
---
a/shenyu-sync-data-center/shenyu-sync-data-http/src/main/java/org/apache/shenyu/sync/data/http/refresh/MetaDataRefresh.java
+++
b/shenyu-sync-data-center/shenyu-sync-data-http/src/main/java/org/apache/shenyu/sync/data/http/refresh/MetaDataRefresh.java
@@ -20,23 +20,29 @@ package org.apache.shenyu.sync.data.http.refresh;
import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken;
import java.util.List;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.shenyu.common.dto.ConfigData;
import org.apache.shenyu.common.dto.MetaData;
import org.apache.shenyu.common.enums.ConfigGroupEnum;
import org.apache.shenyu.sync.data.api.MetaDataSubscriber;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* The type meta data refresh.
*/
-@Slf4j
-@RequiredArgsConstructor
public class MetaDataRefresh extends AbstractDataRefresh<MetaData> {
+ /**
+ * logger.
+ */
+ private static final Logger LOG =
LoggerFactory.getLogger(MetaDataRefresh.class);
private final List<MetaDataSubscriber> metaDataSubscribers;
+ public MetaDataRefresh(final List<MetaDataSubscriber> metaDataSubscribers)
{
+ this.metaDataSubscribers = metaDataSubscribers;
+ }
+
@Override
protected JsonObject convert(final JsonObject data) {
return data.getAsJsonObject(ConfigGroupEnum.META_DATA.name());
@@ -61,7 +67,7 @@ public class MetaDataRefresh extends
AbstractDataRefresh<MetaData> {
@Override
protected void refresh(final List<MetaData> data) {
if (CollectionUtils.isEmpty(data)) {
- log.info("clear all metaData cache");
+ LOG.info("clear all metaData cache");
metaDataSubscribers.forEach(MetaDataSubscriber::refresh);
} else {
data.forEach(metaData -> metaDataSubscribers.forEach(subscriber ->
subscriber.onSubscribe(metaData)));
diff --git
a/shenyu-sync-data-center/shenyu-sync-data-http/src/main/java/org/apache/shenyu/sync/data/http/refresh/PluginDataRefresh.java
b/shenyu-sync-data-center/shenyu-sync-data-http/src/main/java/org/apache/shenyu/sync/data/http/refresh/PluginDataRefresh.java
index bd7f105..c71cb8f 100644
---
a/shenyu-sync-data-center/shenyu-sync-data-http/src/main/java/org/apache/shenyu/sync/data/http/refresh/PluginDataRefresh.java
+++
b/shenyu-sync-data-center/shenyu-sync-data-http/src/main/java/org/apache/shenyu/sync/data/http/refresh/PluginDataRefresh.java
@@ -20,23 +20,30 @@ package org.apache.shenyu.sync.data.http.refresh;
import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken;
import java.util.List;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.shenyu.common.dto.ConfigData;
import org.apache.shenyu.common.dto.PluginData;
import org.apache.shenyu.common.enums.ConfigGroupEnum;
import org.apache.shenyu.sync.data.api.PluginDataSubscriber;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* The type Plugin data refresh.
*/
-@Slf4j
-@RequiredArgsConstructor
public class PluginDataRefresh extends AbstractDataRefresh<PluginData> {
+ /**
+ * logger.
+ */
+ private static final Logger LOG =
LoggerFactory.getLogger(PluginDataRefresh.class);
+
private final PluginDataSubscriber pluginDataSubscriber;
+ public PluginDataRefresh(final PluginDataSubscriber pluginDataSubscriber) {
+ this.pluginDataSubscriber = pluginDataSubscriber;
+ }
+
@Override
protected JsonObject convert(final JsonObject data) {
return data.getAsJsonObject(ConfigGroupEnum.PLUGIN.name());
@@ -62,7 +69,7 @@ public class PluginDataRefresh extends
AbstractDataRefresh<PluginData> {
protected void refresh(final List<PluginData> data) {
pluginDataSubscriber.refreshPluginDataAll();
if (CollectionUtils.isEmpty(data)) {
- log.info("clear all plugin data cache");
+ LOG.info("clear all plugin data cache");
return;
}
data.forEach(pluginDataSubscriber::onSubscribe);
diff --git
a/shenyu-sync-data-center/shenyu-sync-data-http/src/main/java/org/apache/shenyu/sync/data/http/refresh/RuleDataRefresh.java
b/shenyu-sync-data-center/shenyu-sync-data-http/src/main/java/org/apache/shenyu/sync/data/http/refresh/RuleDataRefresh.java
index bee2727..01947b1 100644
---
a/shenyu-sync-data-center/shenyu-sync-data-http/src/main/java/org/apache/shenyu/sync/data/http/refresh/RuleDataRefresh.java
+++
b/shenyu-sync-data-center/shenyu-sync-data-http/src/main/java/org/apache/shenyu/sync/data/http/refresh/RuleDataRefresh.java
@@ -20,23 +20,30 @@ package org.apache.shenyu.sync.data.http.refresh;
import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken;
import java.util.List;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.shenyu.common.dto.ConfigData;
import org.apache.shenyu.common.dto.RuleData;
import org.apache.shenyu.common.enums.ConfigGroupEnum;
import org.apache.shenyu.sync.data.api.PluginDataSubscriber;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* The type Rule data refresh.
*/
-@Slf4j
-@RequiredArgsConstructor
public class RuleDataRefresh extends AbstractDataRefresh<RuleData> {
+ /**
+ * logger.
+ */
+ private static final Logger LOG =
LoggerFactory.getLogger(RuleDataRefresh.class);
+
private final PluginDataSubscriber pluginDataSubscriber;
+ public RuleDataRefresh(final PluginDataSubscriber pluginDataSubscriber) {
+ this.pluginDataSubscriber = pluginDataSubscriber;
+ }
+
@Override
protected JsonObject convert(final JsonObject data) {
return data.getAsJsonObject(ConfigGroupEnum.RULE.name());
@@ -61,7 +68,7 @@ public class RuleDataRefresh extends
AbstractDataRefresh<RuleData> {
@Override
protected void refresh(final List<RuleData> data) {
if (CollectionUtils.isEmpty(data)) {
- log.info("clear all rule cache, old cache");
+ LOG.info("clear all rule cache, old cache");
data.forEach(pluginDataSubscriber::unRuleSubscribe);
pluginDataSubscriber.refreshRuleDataAll();
} else {
diff --git
a/shenyu-sync-data-center/shenyu-sync-data-http/src/main/java/org/apache/shenyu/sync/data/http/refresh/SelectorDataRefresh.java
b/shenyu-sync-data-center/shenyu-sync-data-http/src/main/java/org/apache/shenyu/sync/data/http/refresh/SelectorDataRefresh.java
index 75d86ec..9696250 100644
---
a/shenyu-sync-data-center/shenyu-sync-data-http/src/main/java/org/apache/shenyu/sync/data/http/refresh/SelectorDataRefresh.java
+++
b/shenyu-sync-data-center/shenyu-sync-data-http/src/main/java/org/apache/shenyu/sync/data/http/refresh/SelectorDataRefresh.java
@@ -19,24 +19,32 @@ package org.apache.shenyu.sync.data.http.refresh;
import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken;
-import java.util.List;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.shenyu.common.dto.ConfigData;
import org.apache.shenyu.common.dto.SelectorData;
import org.apache.shenyu.common.enums.ConfigGroupEnum;
import org.apache.shenyu.sync.data.api.PluginDataSubscriber;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.List;
/**
* The type Selector data refresh.
*/
-@Slf4j
-@RequiredArgsConstructor
public class SelectorDataRefresh extends AbstractDataRefresh<SelectorData> {
+ /**
+ * logger.
+ */
+ private static final Logger LOG =
LoggerFactory.getLogger(SelectorDataRefresh.class);
+
private final PluginDataSubscriber pluginDataSubscriber;
+ public SelectorDataRefresh(final PluginDataSubscriber
pluginDataSubscriber) {
+ this.pluginDataSubscriber = pluginDataSubscriber;
+ }
+
@Override
protected JsonObject convert(final JsonObject data) {
return data.getAsJsonObject(ConfigGroupEnum.SELECTOR.name());
@@ -61,7 +69,7 @@ public class SelectorDataRefresh extends
AbstractDataRefresh<SelectorData> {
@Override
protected void refresh(final List<SelectorData> data) {
if (CollectionUtils.isEmpty(data)) {
- log.info("clear all selector cache, old cache");
+ LOG.info("clear all selector cache, old cache");
data.forEach(pluginDataSubscriber::unSelectorSubscribe);
pluginDataSubscriber.refreshSelectorDataAll();
} else {
diff --git
a/shenyu-sync-data-center/shenyu-sync-data-http/src/test/java/org/apache/shenyu/sync/data/http/HttpSyncDataServiceTest.java
b/shenyu-sync-data-center/shenyu-sync-data-http/src/test/java/org/apache/shenyu/sync/data/http/HttpSyncDataServiceTest.java
index 6a779c7..f9dd536 100644
---
a/shenyu-sync-data-center/shenyu-sync-data-http/src/test/java/org/apache/shenyu/sync/data/http/HttpSyncDataServiceTest.java
+++
b/shenyu-sync-data-center/shenyu-sync-data-http/src/test/java/org/apache/shenyu/sync/data/http/HttpSyncDataServiceTest.java
@@ -19,7 +19,6 @@ package org.apache.shenyu.sync.data.http;
import com.github.tomakehurst.wiremock.core.WireMockConfiguration;
import com.github.tomakehurst.wiremock.junit.WireMockRule;
-import lombok.SneakyThrows;
import org.apache.shenyu.common.dto.ConfigData;
import org.apache.shenyu.common.dto.PluginData;
import org.apache.shenyu.common.enums.ConfigGroupEnum;
@@ -34,6 +33,8 @@ import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.junit.MockitoJUnitRunner;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.test.util.ReflectionTestUtils;
import wiremock.org.apache.http.HttpHeaders;
import wiremock.org.apache.http.entity.ContentType;
@@ -56,6 +57,11 @@ import static org.mockito.Mockito.verify;
@RunWith(MockitoJUnitRunner.class)
public class HttpSyncDataServiceTest {
+ /**
+ * logger.
+ */
+ private static final Logger LOG =
LoggerFactory.getLogger(HttpSyncDataServiceTest.class);
+
@Rule
public WireMockRule wireMockRule = new
WireMockRule(WireMockConfiguration.wireMockConfig().dynamicPort(), false);
@@ -96,9 +102,12 @@ public class HttpSyncDataServiceTest {
}
@After
- @SneakyThrows
public void after() {
- httpSyncDataService.close();
+ try {
+ httpSyncDataService.close();
+ } catch (Exception e) {
+ LOG.error(e.getMessage(), e);
+ }
AtomicBoolean running = (AtomicBoolean)
ReflectionTestUtils.getField(httpSyncDataService, "RUNNING");
assertFalse(running.get());
}
@@ -123,7 +132,6 @@ public class HttpSyncDataServiceTest {
}
// mock configs fetch api response
- @SneakyThrows
private String mockConfigsFetchResponseJson() {
ConfigData emptyData = new ConfigData()
.setLastModifyTime(System.currentTimeMillis()).setData(Collections.emptyList())
diff --git
a/shenyu-sync-data-center/shenyu-sync-data-nacos/src/main/java/org/apache/shenyu/sync/data/nacos/config/NacosACMConfig.java
b/shenyu-sync-data-center/shenyu-sync-data-nacos/src/main/java/org/apache/shenyu/sync/data/nacos/config/NacosACMConfig.java
index abaec34..d331ceb 100644
---
a/shenyu-sync-data-center/shenyu-sync-data-nacos/src/main/java/org/apache/shenyu/sync/data/nacos/config/NacosACMConfig.java
+++
b/shenyu-sync-data-center/shenyu-sync-data-nacos/src/main/java/org/apache/shenyu/sync/data/nacos/config/NacosACMConfig.java
@@ -17,9 +17,8 @@
package org.apache.shenyu.sync.data.nacos.config;
-import lombok.Data;
+import java.util.Objects;
-@Data
public class NacosACMConfig {
private boolean enabled;
@@ -31,4 +30,135 @@ public class NacosACMConfig {
private String accessKey;
private String secretKey;
+
+ /**
+ * get enabled.
+ *
+ * @return enabled
+ */
+ public boolean isEnabled() {
+ return enabled;
+ }
+
+ /**
+ * set enabled.
+ *
+ * @param enabled enabled
+ */
+ public void setEnabled(final boolean enabled) {
+ this.enabled = enabled;
+ }
+
+ /**
+ * get endpoint.
+ *
+ * @return endpoint
+ */
+ public String getEndpoint() {
+ return endpoint;
+ }
+
+ /**
+ * set endpoint.
+ *
+ * @param endpoint endpoint
+ */
+ public void setEndpoint(final String endpoint) {
+ this.endpoint = endpoint;
+ }
+
+ /**
+ * get namespace.
+ *
+ * @return namespace
+ */
+ public String getNamespace() {
+ return namespace;
+ }
+
+ /**
+ * set namespace.
+ *
+ * @param namespace namespace
+ */
+ public void setNamespace(final String namespace) {
+ this.namespace = namespace;
+ }
+
+ /**
+ * get accessKey.
+ *
+ * @return accessKey
+ */
+ public String getAccessKey() {
+ return accessKey;
+ }
+
+ /**
+ * set accessKey.
+ *
+ * @param accessKey accessKey
+ */
+ public void setAccessKey(final String accessKey) {
+ this.accessKey = accessKey;
+ }
+
+ /**
+ * get secretKey.
+ *
+ * @return secretKey
+ */
+ public String getSecretKey() {
+ return secretKey;
+ }
+
+ /**
+ * set secretKey.
+ *
+ * @param secretKey secretKey
+ */
+ public void setSecretKey(final String secretKey) {
+ this.secretKey = secretKey;
+ }
+
+ @Override
+ public boolean equals(final Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ NacosACMConfig that = (NacosACMConfig) o;
+ return enabled == that.enabled
+ && Objects.equals(endpoint, that.endpoint)
+ && Objects.equals(namespace, that.namespace)
+ && Objects.equals(accessKey, that.accessKey)
+ && Objects.equals(secretKey, that.secretKey);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(enabled, endpoint, namespace, accessKey,
secretKey);
+ }
+
+ @Override
+ public String toString() {
+ return "NacosACMConfig{"
+ + "enabled="
+ + enabled
+ + ", endpoint='"
+ + endpoint
+ + '\''
+ + ", namespace='"
+ + namespace
+ + '\''
+ + ", accessKey='"
+ + accessKey
+ + '\''
+ + ", secretKey='"
+ + secretKey
+ + '\''
+ + '}';
+ }
}
diff --git
a/shenyu-sync-data-center/shenyu-sync-data-nacos/src/main/java/org/apache/shenyu/sync/data/nacos/config/NacosConfig.java
b/shenyu-sync-data-center/shenyu-sync-data-nacos/src/main/java/org/apache/shenyu/sync/data/nacos/config/NacosConfig.java
index 942abe7..44e7363 100644
---
a/shenyu-sync-data-center/shenyu-sync-data-nacos/src/main/java/org/apache/shenyu/sync/data/nacos/config/NacosConfig.java
+++
b/shenyu-sync-data-center/shenyu-sync-data-nacos/src/main/java/org/apache/shenyu/sync/data/nacos/config/NacosConfig.java
@@ -17,9 +17,8 @@
package org.apache.shenyu.sync.data.nacos.config;
-import lombok.Data;
+import java.util.Objects;
-@Data
public class NacosConfig {
private String url;
@@ -31,4 +30,135 @@ public class NacosConfig {
private String password;
private NacosACMConfig acm;
+
+ /**
+ * get url.
+ *
+ * @return url
+ */
+ public String getUrl() {
+ return url;
+ }
+
+ /**
+ * set url.
+ *
+ * @param url url
+ */
+ public void setUrl(final String url) {
+ this.url = url;
+ }
+
+ /**
+ * get namespace.
+ *
+ * @return namespace
+ */
+ public String getNamespace() {
+ return namespace;
+ }
+
+ /**
+ * set namespace.
+ *
+ * @param namespace namespace
+ */
+ public void setNamespace(final String namespace) {
+ this.namespace = namespace;
+ }
+
+ /**
+ * get username.
+ *
+ * @return username
+ */
+ public String getUsername() {
+ return username;
+ }
+
+ /**
+ * set username.
+ *
+ * @param username username
+ */
+ public void setUsername(final String username) {
+ this.username = username;
+ }
+
+ /**
+ * get password.
+ *
+ * @return password
+ */
+ public String getPassword() {
+ return password;
+ }
+
+ /**
+ * set password.
+ *
+ * @param password password
+ */
+ public void setPassword(final String password) {
+ this.password = password;
+ }
+
+ /**
+ * get acm.
+ *
+ * @return acm
+ */
+ public NacosACMConfig getAcm() {
+ return acm;
+ }
+
+ /**
+ * set acm.
+ *
+ * @param acm acm
+ */
+ public void setAcm(final NacosACMConfig acm) {
+ this.acm = acm;
+ }
+
+ @Override
+ public boolean equals(final Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ NacosConfig that = (NacosConfig) o;
+ return Objects.equals(url, that.url)
+ && Objects.equals(namespace, that.namespace)
+ && Objects.equals(username, that.username)
+ && Objects.equals(password, that.password)
+ && Objects.equals(acm, that.acm);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(url, namespace, username, password, acm);
+ }
+
+ @Override
+ public String toString() {
+ return "NacosConfig{"
+ + "url='"
+ + url
+ + '\''
+ + ", namespace='"
+ + namespace
+ + '\''
+ + ", username='"
+ + username
+ + '\''
+ + ", password='"
+ + password
+ + '\''
+ + ", acm="
+ + acm
+ + '}';
+ }
}
diff --git
a/shenyu-sync-data-center/shenyu-sync-data-nacos/src/main/java/org/apache/shenyu/sync/data/nacos/handler/NacosCacheHandler.java
b/shenyu-sync-data-center/shenyu-sync-data-nacos/src/main/java/org/apache/shenyu/sync/data/nacos/handler/NacosCacheHandler.java
index cd7e3f3..b10864c 100644
---
a/shenyu-sync-data-center/shenyu-sync-data-nacos/src/main/java/org/apache/shenyu/sync/data/nacos/handler/NacosCacheHandler.java
+++
b/shenyu-sync-data-center/shenyu-sync-data-nacos/src/main/java/org/apache/shenyu/sync/data/nacos/handler/NacosCacheHandler.java
@@ -19,11 +19,9 @@ package org.apache.shenyu.sync.data.nacos.handler;
import com.alibaba.nacos.api.config.ConfigService;
import com.alibaba.nacos.api.config.listener.Listener;
+import com.alibaba.nacos.api.exception.NacosException;
import com.google.common.collect.Maps;
import com.google.gson.JsonParseException;
-import lombok.Getter;
-import lombok.SneakyThrows;
-import lombok.extern.slf4j.Slf4j;
import org.apache.shenyu.common.constant.NacosPathConstants;
import org.apache.shenyu.common.dto.AppAuthData;
import org.apache.shenyu.common.dto.MetaData;
@@ -34,6 +32,8 @@ import org.apache.shenyu.common.utils.GsonUtils;
import org.apache.shenyu.sync.data.api.AuthDataSubscriber;
import org.apache.shenyu.sync.data.api.MetaDataSubscriber;
import org.apache.shenyu.sync.data.api.PluginDataSubscriber;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.Collection;
@@ -46,12 +46,15 @@ import java.util.stream.Collectors;
/**
* Nacos cache handler.
*/
-@Slf4j
public class NacosCacheHandler {
protected static final Map<String, List<Listener>> LISTENERS =
Maps.newConcurrentMap();
- @Getter
+ /**
+ * logger.
+ */
+ private static final Logger LOG =
LoggerFactory.getLogger(NacosCacheHandler.class);
+
private final ConfigService configService;
private final PluginDataSubscriber pluginDataSubscriber;
@@ -69,6 +72,15 @@ public class NacosCacheHandler {
this.authDataSubscribers = authDataSubscribers;
}
+ /**
+ * get configService.
+ *
+ * @return configService
+ */
+ public ConfigService getConfigService() {
+ return this.configService;
+ }
+
protected void updatePluginMap(final String configInfo) {
try {
// Fix bug #656(https://github.com/dromara/shenyu/issues/656)
@@ -78,7 +90,7 @@ public class NacosCacheHandler {
subscriber.onSubscribe(pluginData);
}));
} catch (JsonParseException e) {
- log.error("sync plugin data have error:", e);
+ LOG.error("sync plugin data have error:", e);
}
}
@@ -90,7 +102,7 @@ public class NacosCacheHandler {
subscriber.onSelectorSubscribe(selectorData);
}));
} catch (JsonParseException e) {
- log.error("sync selector data have error:", e);
+ LOG.error("sync selector data have error:", e);
}
}
@@ -104,7 +116,7 @@ public class NacosCacheHandler {
subscriber.onRuleSubscribe(ruleData);
}));
} catch (JsonParseException e) {
- log.error("sync rule data have error:", e);
+ LOG.error("sync rule data have error:", e);
}
}
@@ -116,7 +128,7 @@ public class NacosCacheHandler {
subscriber.onSubscribe(metaData);
}));
} catch (JsonParseException e) {
- log.error("sync meta data have error:", e);
+ LOG.error("sync meta data have error:", e);
}
}
@@ -128,13 +140,17 @@ public class NacosCacheHandler {
subscriber.onSubscribe(appAuthData);
}));
} catch (JsonParseException e) {
- log.error("sync auth data have error:", e);
+ LOG.error("sync auth data have error:", e);
}
}
- @SneakyThrows
private String getConfigAndSignListener(final String dataId, final
Listener listener) {
- String config = configService.getConfigAndSignListener(dataId,
NacosPathConstants.GROUP, 6000, listener);
+ String config = null;
+ try {
+ config = configService.getConfigAndSignListener(dataId,
NacosPathConstants.GROUP, 6000, listener);
+ } catch (NacosException e) {
+ LOG.error(e.getMessage(), e);
+ }
if (config == null) {
config = "{}";
}
@@ -158,7 +174,6 @@ public class NacosCacheHandler {
}
protected interface OnChange {
-
void change(String changeData);
}
}
diff --git
a/shenyu-sync-data-center/shenyu-sync-data-nacos/src/test/java/org/apache/shenyu/sync/data/nacos/handler/NacosCacheHandlerTest.java
b/shenyu-sync-data-center/shenyu-sync-data-nacos/src/test/java/org/apache/shenyu/sync/data/nacos/handler/NacosCacheHandlerTest.java
index 16315e5..b0d7b92 100644
---
a/shenyu-sync-data-center/shenyu-sync-data-nacos/src/test/java/org/apache/shenyu/sync/data/nacos/handler/NacosCacheHandlerTest.java
+++
b/shenyu-sync-data-center/shenyu-sync-data-nacos/src/test/java/org/apache/shenyu/sync/data/nacos/handler/NacosCacheHandlerTest.java
@@ -18,19 +18,18 @@
package org.apache.shenyu.sync.data.nacos.handler;
import com.alibaba.nacos.api.config.ConfigService;
+import com.alibaba.nacos.api.exception.NacosException;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
-import lombok.SneakyThrows;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.shenyu.common.dto.PluginData;
-import org.apache.shenyu.common.dto.SelectorData;
import org.apache.shenyu.common.dto.AppAuthData;
-import org.apache.shenyu.common.dto.RuleData;
import org.apache.shenyu.common.dto.MetaData;
+import org.apache.shenyu.common.dto.PluginData;
+import org.apache.shenyu.common.dto.RuleData;
+import org.apache.shenyu.common.dto.SelectorData;
import org.apache.shenyu.common.utils.GsonUtils;
import org.apache.shenyu.sync.data.api.AuthDataSubscriber;
import org.apache.shenyu.sync.data.api.MetaDataSubscriber;
@@ -39,14 +38,14 @@ import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
-import java.util.List;
import java.util.ArrayList;
-import java.util.Comparator;
import java.util.Collections;
-import java.util.Set;
-import java.util.Objects;
-import java.util.Map;
+import java.util.Comparator;
import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.CountDownLatch;
import java.util.stream.Collectors;
@@ -54,7 +53,6 @@ import java.util.stream.Collectors;
/**
* add test case for {@link NacosCacheHandler}.
*/
-@Slf4j
@SuppressWarnings("all")
public final class NacosCacheHandlerTest {
private static final ConcurrentMap<String, PluginData> PLUGIN_MAP =
Maps.newConcurrentMap();
@@ -92,9 +90,8 @@ public final class NacosCacheHandlerTest {
configService = new NacosMockConfigService();
}
- @SneakyThrows
@Test
- public void testUpdatePluginMap() {
+ public void testUpdatePluginMap() throws NacosException {
String pluginName1 = "PLUGIN_NAME_1";
String pluginName2 = "PLUGIN_NAME_2";
PluginData pluginData1 =
@@ -132,9 +129,8 @@ public final class NacosCacheHandlerTest {
}
- @SneakyThrows
@Test
- public void testUpdateSelectorMap() {
+ public void testUpdateSelectorMap() throws NacosException {
String selectorDataPluginName1 = "SELECTOR_DATA_1";
String selectorDataPluginName2 = "SELECTOR_DATA_2";
SelectorData selectorData1 =
@@ -184,9 +180,8 @@ public final class NacosCacheHandlerTest {
ImmutableList.of(selectorData1))));
}
- @SneakyThrows
@Test
- public void testUpdateRuleMap() {
+ public void testUpdateRuleMap() throws NacosException {
String ruleDataId1 = "RULE_DATA_1";
String ruleDataId2 = "RULE_DATA_2";
String selectorId1 = "ID_1";
@@ -231,9 +226,8 @@ public final class NacosCacheHandlerTest {
ImmutableList.of(ruleData1))));
}
- @SneakyThrows
@Test
- public void testUpdateMetaDataMap() {
+ public void testUpdateMetaDataMap() throws NacosException {
String metadataPath1 = "METADATA_PATH_1";
String metadataPath2 = "METADATA_PATH_2";
MetaData metaData1 =
MetaData.builder().path(metadataPath1).id("meta_1").build();
@@ -269,9 +263,8 @@ public final class NacosCacheHandlerTest {
.toJson(ImmutableMap.of(metadataPath1, metaData1,
metadataPath2, metaData2)));
}
- @SneakyThrows
@Test
- public void testUpdateAuthMap() {
+ public void testUpdateAuthMap() throws NacosException {
String mockAppKey = "MOCK_APP_KEY";
String mockAppKey2 = "MOCK_APP_KEY2";
String mockAppSecret = "MOCK_APP_SECRET";
@@ -312,9 +305,8 @@ public final class NacosCacheHandlerTest {
.toJson(ImmutableMap.of(mockAppKey2, appAuthData2,
mockAppKey, appAuthData)));
}
- @SneakyThrows
@Test
- public void testWatcherData() {
+ public void testWatcherData() throws NacosException {
String mockAppKey = "MOCK_APP_KEY";
String mockAppKey2 = "MOCK_APP_KEY2";
String mockAppSecret = "MOCK_APP_SECRET";
@@ -350,7 +342,7 @@ public final class NacosCacheHandlerTest {
nacosCacheHandlerService.watcherData(AUTH_DATA_ID, oc);
}
- private void changePluginData(final List<PluginData> changed) {
+ private void changePluginData(final List<PluginData> changed) throws
NacosException {
updateDataMap(getConfig(PLUGIN_DATA_ID));
changed.forEach(plugin -> PLUGIN_MAP.put(plugin.getName(), plugin));
@@ -358,7 +350,7 @@ public final class NacosCacheHandlerTest {
publishConfig(PLUGIN_DATA_ID, PLUGIN_MAP);
}
- private void changeSelectorData(final List<SelectorData> changed) {
+ private void changeSelectorData(final List<SelectorData> changed) throws
NacosException {
changeSelectorDataMap(getConfig(SELECTOR_DATA_ID));
changed.forEach(selector -> {
@@ -375,7 +367,7 @@ public final class NacosCacheHandlerTest {
publishConfig(SELECTOR_DATA_ID, SELECTOR_MAP);
}
- private void changeRuleData(final List<RuleData> changed) {
+ private void changeRuleData(final List<RuleData> changed) throws
NacosException {
changeRuleDataMap(getConfig(RULE_DATA_ID));
changed.forEach(rule -> {
@@ -392,7 +384,7 @@ public final class NacosCacheHandlerTest {
publishConfig(RULE_DATA_ID, RULE_MAP);
}
- private void changeMetaData(final List<MetaData> changed) {
+ private void changeMetaData(final List<MetaData> changed) throws
NacosException {
changeMetaDataMap(getConfig(META_DATA_ID));
changed.forEach(meta -> {
@@ -407,7 +399,7 @@ public final class NacosCacheHandlerTest {
publishConfig(META_DATA_ID, META_DATA);
}
- private void changeAuthData(final List<AppAuthData> changed) {
+ private void changeAuthData(final List<AppAuthData> changed) throws
NacosException {
changeAppAuthDataMap(getConfig(AUTH_DATA_ID));
changed.forEach(appAuth -> AUTH_MAP.put(appAuth.getAppKey(), appAuth));
@@ -470,13 +462,11 @@ public final class NacosCacheHandlerTest {
PLUGIN_MAP.keySet().removeAll(set);
}
- @SneakyThrows
- private String getConfig(final String dataId) {
+ private String getConfig(final String dataId) throws NacosException {
return configService.getConfig(dataId, GROUP, 6000);
}
- @SneakyThrows
- private void publishConfig(final String dataId, final Object data) {
+ private void publishConfig(final String dataId, final Object data) throws
NacosException {
configService.publishConfig(dataId, GROUP,
GsonUtils.getInstance().toJson(data));
}
}
diff --git
a/shenyu-sync-data-center/shenyu-sync-data-websocket/src/main/java/org/apache/shenyu/plugin/sync/data/websocket/WebsocketSyncDataService.java
b/shenyu-sync-data-center/shenyu-sync-data-websocket/src/main/java/org/apache/shenyu/plugin/sync/data/websocket/WebsocketSyncDataService.java
index 36ae925..4f0f911 100644
---
a/shenyu-sync-data-center/shenyu-sync-data-websocket/src/main/java/org/apache/shenyu/plugin/sync/data/websocket/WebsocketSyncDataService.java
+++
b/shenyu-sync-data-center/shenyu-sync-data-websocket/src/main/java/org/apache/shenyu/plugin/sync/data/websocket/WebsocketSyncDataService.java
@@ -17,7 +17,6 @@
package org.apache.shenyu.plugin.sync.data.websocket;
-import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.shenyu.common.concurrent.ShenyuThreadFactory;
import
org.apache.shenyu.plugin.sync.data.websocket.client.ShenyuWebsocketClient;
@@ -27,6 +26,8 @@ import org.apache.shenyu.sync.data.api.MetaDataSubscriber;
import org.apache.shenyu.sync.data.api.PluginDataSubscriber;
import org.apache.shenyu.sync.data.api.SyncDataService;
import org.java_websocket.client.WebSocketClient;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.net.URI;
import java.net.URISyntaxException;
@@ -39,9 +40,13 @@ import java.util.concurrent.TimeUnit;
/**
* Websocket sync data service.
*/
-@Slf4j
public class WebsocketSyncDataService implements SyncDataService,
AutoCloseable {
+ /**
+ * logger.
+ */
+ private static final Logger LOG =
LoggerFactory.getLogger(WebsocketSyncDataService.class);
+
private final List<WebSocketClient> clients = new ArrayList<>();
private final ScheduledThreadPoolExecutor executor;
@@ -64,38 +69,38 @@ public class WebsocketSyncDataService implements
SyncDataService, AutoCloseable
try {
clients.add(new ShenyuWebsocketClient(new URI(url),
Objects.requireNonNull(pluginDataSubscriber), metaDataSubscribers,
authDataSubscribers));
} catch (URISyntaxException e) {
- log.error("websocket url({}) is error", url, e);
+ LOG.error("websocket url({}) is error", url, e);
}
}
try {
for (WebSocketClient client : clients) {
boolean success = client.connectBlocking(3000,
TimeUnit.MILLISECONDS);
if (success) {
- log.info("websocket connection is successful.....");
+ LOG.info("websocket connection is successful.....");
} else {
- log.error("websocket connection is error.....");
+ LOG.error("websocket connection is error.....");
}
executor.scheduleAtFixedRate(() -> {
try {
if (client.isClosed()) {
boolean reconnectSuccess =
client.reconnectBlocking();
if (reconnectSuccess) {
- log.info("websocket reconnect server[{}] is
successful.....", client.getURI().toString());
+ LOG.info("websocket reconnect server[{}] is
successful.....", client.getURI().toString());
} else {
- log.error("websocket reconnection server[{}]
is error.....", client.getURI().toString());
+ LOG.error("websocket reconnection server[{}]
is error.....", client.getURI().toString());
}
} else {
client.sendPing();
- log.debug("websocket send to [{}] ping message
successful", client.getURI().toString());
+ LOG.debug("websocket send to [{}] ping message
successful", client.getURI().toString());
}
} catch (InterruptedException e) {
- log.error("websocket connect is error :{}",
e.getMessage());
+ LOG.error("websocket connect is error :{}",
e.getMessage());
}
}, 10, 10, TimeUnit.SECONDS);
}
/* client.setProxy(new Proxy(Proxy.Type.HTTP, new
InetSocketAddress("proxyaddress", 80)));*/
} catch (InterruptedException e) {
- log.info("websocket connection...exception....", e);
+ LOG.info("websocket connection...exception....", e);
}
}
diff --git
a/shenyu-sync-data-center/shenyu-sync-data-websocket/src/main/java/org/apache/shenyu/plugin/sync/data/websocket/client/ShenyuWebsocketClient.java
b/shenyu-sync-data-center/shenyu-sync-data-websocket/src/main/java/org/apache/shenyu/plugin/sync/data/websocket/client/ShenyuWebsocketClient.java
index 9caa54f..a327cf4 100644
---
a/shenyu-sync-data-center/shenyu-sync-data-websocket/src/main/java/org/apache/shenyu/plugin/sync/data/websocket/client/ShenyuWebsocketClient.java
+++
b/shenyu-sync-data-center/shenyu-sync-data-websocket/src/main/java/org/apache/shenyu/plugin/sync/data/websocket/client/ShenyuWebsocketClient.java
@@ -17,9 +17,6 @@
package org.apache.shenyu.plugin.sync.data.websocket.client;
-import java.net.URI;
-import java.util.List;
-import lombok.extern.slf4j.Slf4j;
import org.apache.shenyu.common.dto.WebsocketData;
import org.apache.shenyu.common.enums.ConfigGroupEnum;
import org.apache.shenyu.common.enums.DataEventTypeEnum;
@@ -30,13 +27,22 @@ import org.apache.shenyu.sync.data.api.MetaDataSubscriber;
import org.apache.shenyu.sync.data.api.PluginDataSubscriber;
import org.java_websocket.client.WebSocketClient;
import org.java_websocket.handshake.ServerHandshake;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.net.URI;
+import java.util.List;
/**
* The type shenyu websocket client.
*/
-@Slf4j
public final class ShenyuWebsocketClient extends WebSocketClient {
+ /**
+ * logger.
+ */
+ private static final Logger LOG =
LoggerFactory.getLogger(ShenyuWebsocketClient.class);
+
private volatile boolean alreadySync = Boolean.FALSE;
private final WebsocketDataHandler websocketDataHandler;
@@ -44,10 +50,10 @@ public final class ShenyuWebsocketClient extends
WebSocketClient {
/**
* Instantiates a new shenyu websocket client.
*
- * @param serverUri the server uri
+ * @param serverUri the server uri
* @param pluginDataSubscriber the plugin data subscriber
- * @param metaDataSubscribers the meta data subscribers
- * @param authDataSubscribers the auth data subscribers
+ * @param metaDataSubscribers the meta data subscribers
+ * @param authDataSubscribers the auth data subscribers
*/
public ShenyuWebsocketClient(final URI serverUri, final
PluginDataSubscriber pluginDataSubscriber,
final List<MetaDataSubscriber>
metaDataSubscribers, final List<AuthDataSubscriber> authDataSubscribers) {
@@ -80,7 +86,7 @@ public final class ShenyuWebsocketClient extends
WebSocketClient {
@SuppressWarnings("ALL")
private void handleResult(final String result) {
- log.info("handleResult({})", result);
+ LOG.info("handleResult({})", result);
WebsocketData websocketData = GsonUtils.getInstance().fromJson(result,
WebsocketData.class);
ConfigGroupEnum groupEnum =
ConfigGroupEnum.acquireByName(websocketData.getGroupType());
String eventType = websocketData.getEventType();
diff --git
a/shenyu-sync-data-center/shenyu-sync-data-websocket/src/main/java/org/apache/shenyu/plugin/sync/data/websocket/config/WebsocketConfig.java
b/shenyu-sync-data-center/shenyu-sync-data-websocket/src/main/java/org/apache/shenyu/plugin/sync/data/websocket/config/WebsocketConfig.java
index af30d87..936a698 100644
---
a/shenyu-sync-data-center/shenyu-sync-data-websocket/src/main/java/org/apache/shenyu/plugin/sync/data/websocket/config/WebsocketConfig.java
+++
b/shenyu-sync-data-center/shenyu-sync-data-websocket/src/main/java/org/apache/shenyu/plugin/sync/data/websocket/config/WebsocketConfig.java
@@ -17,9 +17,8 @@
package org.apache.shenyu.plugin.sync.data.websocket.config;
-import lombok.Data;
+import java.util.Objects;
-@Data
public class WebsocketConfig {
/**
@@ -27,4 +26,48 @@ public class WebsocketConfig {
* 127.0.0.1:8888,127.0.0.1:8889
*/
private String urls;
+
+ /**
+ * get urls.
+ *
+ * @return urls
+ */
+ public String getUrls() {
+ return urls;
+ }
+
+ /**
+ * set urls.
+ *
+ * @param urls urls
+ */
+ public void setUrls(final String urls) {
+ this.urls = urls;
+ }
+
+ @Override
+ public boolean equals(final Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ WebsocketConfig that = (WebsocketConfig) o;
+ return Objects.equals(urls, that.urls);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(urls);
+ }
+
+ @Override
+ public String toString() {
+ return "WebsocketConfig{"
+ + "urls='"
+ + urls
+ + '\''
+ + '}';
+ }
}
diff --git
a/shenyu-sync-data-center/shenyu-sync-data-websocket/src/main/java/org/apache/shenyu/plugin/sync/data/websocket/handler/AuthDataHandler.java
b/shenyu-sync-data-center/shenyu-sync-data-websocket/src/main/java/org/apache/shenyu/plugin/sync/data/websocket/handler/AuthDataHandler.java
index 9479eba..3a5a5d8 100644
---
a/shenyu-sync-data-center/shenyu-sync-data-websocket/src/main/java/org/apache/shenyu/plugin/sync/data/websocket/handler/AuthDataHandler.java
+++
b/shenyu-sync-data-center/shenyu-sync-data-websocket/src/main/java/org/apache/shenyu/plugin/sync/data/websocket/handler/AuthDataHandler.java
@@ -18,7 +18,6 @@
package org.apache.shenyu.plugin.sync.data.websocket.handler;
import java.util.List;
-import lombok.RequiredArgsConstructor;
import org.apache.shenyu.common.dto.AppAuthData;
import org.apache.shenyu.common.utils.GsonUtils;
import org.apache.shenyu.sync.data.api.AuthDataSubscriber;
@@ -26,11 +25,14 @@ import org.apache.shenyu.sync.data.api.AuthDataSubscriber;
/**
* The type Auth data handler.
*/
-@RequiredArgsConstructor
public class AuthDataHandler extends AbstractDataHandler<AppAuthData> {
private final List<AuthDataSubscriber> authDataSubscribers;
+ public AuthDataHandler(final List<AuthDataSubscriber> authDataSubscribers)
{
+ this.authDataSubscribers = authDataSubscribers;
+ }
+
@Override
public List<AppAuthData> convert(final String json) {
return GsonUtils.getInstance().fromList(json, AppAuthData.class);
diff --git
a/shenyu-sync-data-center/shenyu-sync-data-websocket/src/main/java/org/apache/shenyu/plugin/sync/data/websocket/handler/MetaDataHandler.java
b/shenyu-sync-data-center/shenyu-sync-data-websocket/src/main/java/org/apache/shenyu/plugin/sync/data/websocket/handler/MetaDataHandler.java
index 413222e..a1edc31 100644
---
a/shenyu-sync-data-center/shenyu-sync-data-websocket/src/main/java/org/apache/shenyu/plugin/sync/data/websocket/handler/MetaDataHandler.java
+++
b/shenyu-sync-data-center/shenyu-sync-data-websocket/src/main/java/org/apache/shenyu/plugin/sync/data/websocket/handler/MetaDataHandler.java
@@ -18,7 +18,7 @@
package org.apache.shenyu.plugin.sync.data.websocket.handler;
import java.util.List;
-import lombok.RequiredArgsConstructor;
+
import org.apache.shenyu.common.dto.MetaData;
import org.apache.shenyu.common.utils.GsonUtils;
import org.apache.shenyu.sync.data.api.MetaDataSubscriber;
@@ -26,11 +26,14 @@ import org.apache.shenyu.sync.data.api.MetaDataSubscriber;
/**
* The type Meta data handler.
*/
-@RequiredArgsConstructor
public class MetaDataHandler extends AbstractDataHandler<MetaData> {
private final List<MetaDataSubscriber> metaDataSubscribers;
+ public MetaDataHandler(final List<MetaDataSubscriber> metaDataSubscribers)
{
+ this.metaDataSubscribers = metaDataSubscribers;
+ }
+
@Override
public List<MetaData> convert(final String json) {
return GsonUtils.getInstance().fromList(json, MetaData.class);
diff --git
a/shenyu-sync-data-center/shenyu-sync-data-websocket/src/main/java/org/apache/shenyu/plugin/sync/data/websocket/handler/PluginDataHandler.java
b/shenyu-sync-data-center/shenyu-sync-data-websocket/src/main/java/org/apache/shenyu/plugin/sync/data/websocket/handler/PluginDataHandler.java
index ee80005..b55d749 100644
---
a/shenyu-sync-data-center/shenyu-sync-data-websocket/src/main/java/org/apache/shenyu/plugin/sync/data/websocket/handler/PluginDataHandler.java
+++
b/shenyu-sync-data-center/shenyu-sync-data-websocket/src/main/java/org/apache/shenyu/plugin/sync/data/websocket/handler/PluginDataHandler.java
@@ -17,20 +17,23 @@
package org.apache.shenyu.plugin.sync.data.websocket.handler;
-import java.util.List;
-import lombok.RequiredArgsConstructor;
import org.apache.shenyu.common.dto.PluginData;
import org.apache.shenyu.common.utils.GsonUtils;
import org.apache.shenyu.sync.data.api.PluginDataSubscriber;
+import java.util.List;
+
/**
* The type Plugin data handler.
*/
-@RequiredArgsConstructor
public class PluginDataHandler extends AbstractDataHandler<PluginData> {
private final PluginDataSubscriber pluginDataSubscriber;
+ public PluginDataHandler(final PluginDataSubscriber pluginDataSubscriber) {
+ this.pluginDataSubscriber = pluginDataSubscriber;
+ }
+
@Override
public List<PluginData> convert(final String json) {
return GsonUtils.getInstance().fromList(json, PluginData.class);
diff --git
a/shenyu-sync-data-center/shenyu-sync-data-websocket/src/main/java/org/apache/shenyu/plugin/sync/data/websocket/handler/RuleDataHandler.java
b/shenyu-sync-data-center/shenyu-sync-data-websocket/src/main/java/org/apache/shenyu/plugin/sync/data/websocket/handler/RuleDataHandler.java
index 8852e10..d9a47b5 100644
---
a/shenyu-sync-data-center/shenyu-sync-data-websocket/src/main/java/org/apache/shenyu/plugin/sync/data/websocket/handler/RuleDataHandler.java
+++
b/shenyu-sync-data-center/shenyu-sync-data-websocket/src/main/java/org/apache/shenyu/plugin/sync/data/websocket/handler/RuleDataHandler.java
@@ -18,7 +18,6 @@
package org.apache.shenyu.plugin.sync.data.websocket.handler;
import java.util.List;
-import lombok.RequiredArgsConstructor;
import org.apache.shenyu.common.dto.RuleData;
import org.apache.shenyu.common.utils.GsonUtils;
import org.apache.shenyu.sync.data.api.PluginDataSubscriber;
@@ -26,11 +25,14 @@ import org.apache.shenyu.sync.data.api.PluginDataSubscriber;
/**
* The type rule data handler.
*/
-@RequiredArgsConstructor
public class RuleDataHandler extends AbstractDataHandler<RuleData> {
private final PluginDataSubscriber pluginDataSubscriber;
+ public RuleDataHandler(final PluginDataSubscriber pluginDataSubscriber) {
+ this.pluginDataSubscriber = pluginDataSubscriber;
+ }
+
@Override
public List<RuleData> convert(final String json) {
return GsonUtils.getInstance().fromList(json, RuleData.class);
diff --git
a/shenyu-sync-data-center/shenyu-sync-data-websocket/src/main/java/org/apache/shenyu/plugin/sync/data/websocket/handler/SelectorDataHandler.java
b/shenyu-sync-data-center/shenyu-sync-data-websocket/src/main/java/org/apache/shenyu/plugin/sync/data/websocket/handler/SelectorDataHandler.java
index 80570c9..d33eb76 100644
---
a/shenyu-sync-data-center/shenyu-sync-data-websocket/src/main/java/org/apache/shenyu/plugin/sync/data/websocket/handler/SelectorDataHandler.java
+++
b/shenyu-sync-data-center/shenyu-sync-data-websocket/src/main/java/org/apache/shenyu/plugin/sync/data/websocket/handler/SelectorDataHandler.java
@@ -17,20 +17,23 @@
package org.apache.shenyu.plugin.sync.data.websocket.handler;
-import java.util.List;
-import lombok.RequiredArgsConstructor;
import org.apache.shenyu.common.dto.SelectorData;
import org.apache.shenyu.common.utils.GsonUtils;
import org.apache.shenyu.sync.data.api.PluginDataSubscriber;
+import java.util.List;
+
/**
* The type Selector data handler.
*/
-@RequiredArgsConstructor
public class SelectorDataHandler extends AbstractDataHandler<SelectorData> {
private final PluginDataSubscriber pluginDataSubscriber;
+ public SelectorDataHandler(final PluginDataSubscriber
pluginDataSubscriber) {
+ this.pluginDataSubscriber = pluginDataSubscriber;
+ }
+
@Override
public List<SelectorData> convert(final String json) {
return GsonUtils.getInstance().fromList(json, SelectorData.class);
diff --git
a/shenyu-sync-data-center/shenyu-sync-data-zookeeper/src/main/java/org/apache/shenyu/sync/data/zookeeper/ZookeeperSyncDataService.java
b/shenyu-sync-data-center/shenyu-sync-data-zookeeper/src/main/java/org/apache/shenyu/sync/data/zookeeper/ZookeeperSyncDataService.java
index 0f796b4..1a36fd7 100644
---
a/shenyu-sync-data-center/shenyu-sync-data-zookeeper/src/main/java/org/apache/shenyu/sync/data/zookeeper/ZookeeperSyncDataService.java
+++
b/shenyu-sync-data-center/shenyu-sync-data-zookeeper/src/main/java/org/apache/shenyu/sync/data/zookeeper/ZookeeperSyncDataService.java
@@ -19,7 +19,6 @@ package org.apache.shenyu.sync.data.zookeeper;
import com.google.common.base.Splitter;
import com.google.common.collect.Lists;
-import lombok.SneakyThrows;
import org.I0Itec.zkclient.IZkDataListener;
import org.I0Itec.zkclient.ZkClient;
import org.apache.commons.collections4.CollectionUtils;
@@ -36,6 +35,7 @@ import org.apache.shenyu.sync.data.api.MetaDataSubscriber;
import org.apache.shenyu.sync.data.api.PluginDataSubscriber;
import org.apache.shenyu.sync.data.api.SyncDataService;
+import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;
import java.util.List;
@@ -298,9 +298,8 @@ public class ZookeeperSyncDataService implements
SyncDataService, AutoCloseable
cacheMetaData(GsonUtils.getInstance().fromJson(data.toString(),
MetaData.class));
}
- @SneakyThrows
@Override
- public void handleDataDeleted(final String dataPath) {
+ public void handleDataDeleted(final String dataPath) throws
UnsupportedEncodingException {
final String realPath =
dataPath.substring(DefaultPathConstants.META_DATA.length() + 1);
MetaData metaData = new MetaData();
metaData.setPath(URLDecoder.decode(realPath,
StandardCharsets.UTF_8.name()));