diff --git a/spring-cloud-alibaba-dependencies/pom.xml b/spring-cloud-alibaba-dependencies/pom.xml
index ef203d31..62efad89 100644
--- a/spring-cloud-alibaba-dependencies/pom.xml
+++ b/spring-cloud-alibaba-dependencies/pom.xml
@@ -17,7 +17,7 @@
Spring Cloud Alibaba Dependencies
- 1.4.0
+ 1.4.1
3.1.0
0.6.2
0.6.1
diff --git a/spring-cloud-alibaba-sentinel-datasource/src/main/java/org/springframework/cloud/alibaba/sentinel/datasource/NacosDataSourceWithAuthorization.java b/spring-cloud-alibaba-sentinel-datasource/src/main/java/org/springframework/cloud/alibaba/sentinel/datasource/NacosDataSourceWithAuthorization.java
deleted file mode 100644
index 6d63c401..00000000
--- a/spring-cloud-alibaba-sentinel-datasource/src/main/java/org/springframework/cloud/alibaba/sentinel/datasource/NacosDataSourceWithAuthorization.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Copyright (C) 2018 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud.alibaba.sentinel.datasource;
-
-import java.util.Properties;
-import java.util.concurrent.ArrayBlockingQueue;
-import java.util.concurrent.Executor;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-
-import com.alibaba.csp.sentinel.concurrent.NamedThreadFactory;
-import com.alibaba.csp.sentinel.datasource.AbstractDataSource;
-import com.alibaba.csp.sentinel.datasource.Converter;
-import com.alibaba.csp.sentinel.datasource.nacos.NacosDataSource;
-import com.alibaba.csp.sentinel.log.RecordLog;
-import com.alibaba.csp.sentinel.util.StringUtil;
-import com.alibaba.nacos.api.NacosFactory;
-import com.alibaba.nacos.api.config.ConfigService;
-import com.alibaba.nacos.api.config.listener.Listener;
-
-/**
- * {@link NacosDataSource} now is not support ak、sk,namespace and endpoint. This class may
- * be delete when {@link NacosDataSource} support commercialized
- *
- * @author Jim
- */
-public class NacosDataSourceWithAuthorization extends AbstractDataSource {
-
- private static final int DEFAULT_TIMEOUT = 3000;
-
- private final ExecutorService pool = new ThreadPoolExecutor(1, 1, 0,
- TimeUnit.MILLISECONDS, new ArrayBlockingQueue(1),
- new NamedThreadFactory("sentinel-nacos-auth-ds-update"),
- new ThreadPoolExecutor.DiscardOldestPolicy());
-
- private final Listener configListener;
- private final Properties properties;
- private final String dataId;
- private final String groupId;
-
- private ConfigService configService = null;
-
- public NacosDataSourceWithAuthorization(final Properties properties,
- final String groupId, final String dataId, Converter parser) {
- super(parser);
- if (StringUtil.isBlank(groupId) || StringUtil.isBlank(dataId)) {
- throw new IllegalArgumentException(String
- .format("Bad argument: groupId=[%s], dataId=[%s]", groupId, dataId));
- }
- this.groupId = groupId;
- this.dataId = dataId;
- this.properties = properties;
- this.configListener = new Listener() {
- @Override
- public Executor getExecutor() {
- return pool;
- }
-
- @Override
- public void receiveConfigInfo(final String configInfo) {
- RecordLog.info(String.format(
- "[NacosDataSourceWithAuthorization] New property value received for %s",
- properties.toString()));
- T newValue = NacosDataSourceWithAuthorization.this.parser
- .convert(configInfo);
- // Update the new value to the property.
- getProperty().updateValue(newValue);
- }
- };
- initNacosListener();
- loadInitialConfig();
- }
-
- private void loadInitialConfig() {
- try {
- T newValue = loadConfig();
- if (newValue == null) {
- RecordLog.warn(
- "[NacosDataSourceWithAuthorization] WARN: initial config is null, you may have to check your data source");
- }
- getProperty().updateValue(newValue);
- }
- catch (Exception ex) {
- RecordLog.warn(
- "[NacosDataSourceWithAuthorization] Error when loading initial config",
- ex);
- }
- }
-
- private void initNacosListener() {
- try {
- this.configService = NacosFactory.createConfigService(properties);
- // Add config listener.
- configService.addListener(dataId, groupId, configListener);
- }
- catch (Exception e) {
- RecordLog.warn(
- "[NacosDataSourceWithAuthorization] Error occurred when initializing Nacos data source",
- e);
- e.printStackTrace();
- }
- }
-
- @Override
- public String readSource() throws Exception {
- if (configService == null) {
- throw new IllegalStateException(
- "Nacos config service has not been initialized or error occurred");
- }
- return configService.getConfig(dataId, groupId, DEFAULT_TIMEOUT);
- }
-
- @Override
- public void close() {
- if (configService != null) {
- configService.removeListener(dataId, groupId, configListener);
- }
- pool.shutdownNow();
- }
-}
diff --git a/spring-cloud-alibaba-sentinel-datasource/src/main/java/org/springframework/cloud/alibaba/sentinel/datasource/config/NacosDataSourceProperties.java b/spring-cloud-alibaba-sentinel-datasource/src/main/java/org/springframework/cloud/alibaba/sentinel/datasource/config/NacosDataSourceProperties.java
index 5be00c78..353d4fab 100644
--- a/spring-cloud-alibaba-sentinel-datasource/src/main/java/org/springframework/cloud/alibaba/sentinel/datasource/config/NacosDataSourceProperties.java
+++ b/spring-cloud-alibaba-sentinel-datasource/src/main/java/org/springframework/cloud/alibaba/sentinel/datasource/config/NacosDataSourceProperties.java
@@ -5,7 +5,6 @@ import javax.validation.constraints.NotEmpty;
import org.springframework.cloud.alibaba.sentinel.datasource.RuleType;
import org.springframework.cloud.alibaba.sentinel.datasource.SentinelDataSourceConstants;
import org.springframework.cloud.alibaba.sentinel.datasource.factorybean.NacosDataSourceFactoryBean;
-import org.springframework.cloud.alibaba.sentinel.datasource.factorybean.NacosDataSourceWithAuthorizationFactoryBean;
import org.springframework.util.StringUtils;
/**
@@ -40,8 +39,6 @@ public class NacosDataSourceProperties extends AbstractDataSourceProperties {
if (!StringUtils.isEmpty(System.getProperties()
.getProperty(SentinelDataSourceConstants.NACOS_DATASOURCE_ENDPOINT))) {
this.setServerAddr(null);
- this.setFactoryBeanName(
- NacosDataSourceWithAuthorizationFactoryBean.class.getName());
this.setEndpoint(System.getProperties()
.getProperty(SentinelDataSourceConstants.NACOS_DATASOURCE_ENDPOINT));
this.setNamespace(System.getProperties()
@@ -119,8 +116,6 @@ public class NacosDataSourceProperties extends AbstractDataSourceProperties {
public static NacosDataSourceProperties buildByEDAS(String type) {
NacosDataSourceProperties result = new NacosDataSourceProperties();
- result.setFactoryBeanName(
- NacosDataSourceWithAuthorizationFactoryBean.class.getName());
result.setEndpoint(System.getProperties()
.getProperty(SentinelDataSourceConstants.NACOS_DATASOURCE_ENDPOINT));
result.setNamespace(System.getProperties()
diff --git a/spring-cloud-alibaba-sentinel-datasource/src/main/java/org/springframework/cloud/alibaba/sentinel/datasource/factorybean/NacosDataSourceFactoryBean.java b/spring-cloud-alibaba-sentinel-datasource/src/main/java/org/springframework/cloud/alibaba/sentinel/datasource/factorybean/NacosDataSourceFactoryBean.java
index cc884d1c..58b4d920 100644
--- a/spring-cloud-alibaba-sentinel-datasource/src/main/java/org/springframework/cloud/alibaba/sentinel/datasource/factorybean/NacosDataSourceFactoryBean.java
+++ b/spring-cloud-alibaba-sentinel-datasource/src/main/java/org/springframework/cloud/alibaba/sentinel/datasource/factorybean/NacosDataSourceFactoryBean.java
@@ -1,9 +1,14 @@
package org.springframework.cloud.alibaba.sentinel.datasource.factorybean;
+import java.util.Properties;
+
+import org.springframework.beans.factory.FactoryBean;
+import org.springframework.cloud.alibaba.sentinel.datasource.SentinelDataSourceConstants;
+import org.springframework.util.StringUtils;
+
import com.alibaba.csp.sentinel.datasource.Converter;
import com.alibaba.csp.sentinel.datasource.nacos.NacosDataSource;
-
-import org.springframework.beans.factory.FactoryBean;
+import com.alibaba.nacos.api.PropertyKeyConst;
/**
* A {@link FactoryBean} for creating {@link NacosDataSource} instance.
@@ -13,50 +18,96 @@ import org.springframework.beans.factory.FactoryBean;
*/
public class NacosDataSourceFactoryBean implements FactoryBean {
- private String serverAddr;
- private String groupId;
- private String dataId;
- private Converter converter;
+ private String serverAddr;
+ private String groupId;
+ private String dataId;
+ private Converter converter;
- @Override
- public NacosDataSource getObject() throws Exception {
- return new NacosDataSource(serverAddr, groupId, dataId, converter);
- }
+ private String endpoint;
+ private String namespace;
+ private String accessKey;
+ private String secretKey;
- @Override
- public Class> getObjectType() {
- return NacosDataSource.class;
- }
+ @Override
+ public NacosDataSource getObject() throws Exception {
+ if (!StringUtils.isEmpty(System.getProperties()
+ .getProperty(SentinelDataSourceConstants.NACOS_DATASOURCE_ENDPOINT))) {
+ Properties properties = new Properties();
+ properties.setProperty(PropertyKeyConst.ACCESS_KEY, this.accessKey);
+ properties.setProperty(PropertyKeyConst.SERVER_ADDR, this.secretKey);
+ properties.setProperty(PropertyKeyConst.ENDPOINT, this.endpoint);
+ properties.setProperty(PropertyKeyConst.NAMESPACE, this.namespace);
+ return new NacosDataSource(properties, groupId, dataId, converter);
+ }
+ return new NacosDataSource(serverAddr, groupId, dataId, converter);
+ }
- public String getServerAddr() {
- return serverAddr;
- }
+ @Override
+ public Class> getObjectType() {
+ return NacosDataSource.class;
+ }
- public void setServerAddr(String serverAddr) {
- this.serverAddr = serverAddr;
- }
+ public String getServerAddr() {
+ return serverAddr;
+ }
- public String getGroupId() {
- return groupId;
- }
+ public void setServerAddr(String serverAddr) {
+ this.serverAddr = serverAddr;
+ }
- public void setGroupId(String groupId) {
- this.groupId = groupId;
- }
+ public String getGroupId() {
+ return groupId;
+ }
- public String getDataId() {
- return dataId;
- }
+ public void setGroupId(String groupId) {
+ this.groupId = groupId;
+ }
- public void setDataId(String dataId) {
- this.dataId = dataId;
- }
+ public String getDataId() {
+ return dataId;
+ }
- public Converter getConverter() {
- return converter;
- }
+ public void setDataId(String dataId) {
+ this.dataId = dataId;
+ }
- public void setConverter(Converter converter) {
- this.converter = converter;
- }
+ public Converter getConverter() {
+ return converter;
+ }
+
+ public void setConverter(Converter converter) {
+ this.converter = converter;
+ }
+
+ public String getEndpoint() {
+ return endpoint;
+ }
+
+ public void setEndpoint(String endpoint) {
+ this.endpoint = endpoint;
+ }
+
+ public String getNamespace() {
+ return namespace;
+ }
+
+ public void setNamespace(String namespace) {
+ this.namespace = namespace;
+ }
+
+ public String getAccessKey() {
+ return accessKey;
+ }
+
+ public void setAccessKey(String accessKey) {
+ this.accessKey = accessKey;
+ }
+
+ public String getSecretKey() {
+ return secretKey;
+ }
+
+ public void setSecretKey(String secretKey) {
+ this.secretKey = secretKey;
+ }
}
diff --git a/spring-cloud-alibaba-sentinel-datasource/src/main/java/org/springframework/cloud/alibaba/sentinel/datasource/factorybean/NacosDataSourceWithAuthorizationFactoryBean.java b/spring-cloud-alibaba-sentinel-datasource/src/main/java/org/springframework/cloud/alibaba/sentinel/datasource/factorybean/NacosDataSourceWithAuthorizationFactoryBean.java
deleted file mode 100644
index 27f0de86..00000000
--- a/spring-cloud-alibaba-sentinel-datasource/src/main/java/org/springframework/cloud/alibaba/sentinel/datasource/factorybean/NacosDataSourceWithAuthorizationFactoryBean.java
+++ /dev/null
@@ -1,101 +0,0 @@
-package org.springframework.cloud.alibaba.sentinel.datasource.factorybean;
-
-import java.util.Properties;
-
-import org.springframework.beans.factory.FactoryBean;
-import org.springframework.cloud.alibaba.sentinel.datasource.NacosDataSourceWithAuthorization;
-
-import com.alibaba.csp.sentinel.datasource.Converter;
-import com.alibaba.csp.sentinel.datasource.nacos.NacosDataSource;
-import com.alibaba.nacos.api.PropertyKeyConst;
-
-/**
- * A {@link FactoryBean} for creating {@link NacosDataSource} instance.
- *
- * @author Jim
- * @see NacosDataSource
- */
-public class NacosDataSourceWithAuthorizationFactoryBean
- implements FactoryBean {
-
- private String endpoint;
- private String namespace;
- private String accessKey;
- private String secretKey;
-
- private String groupId;
- private String dataId;
- private Converter converter;
-
- @Override
- public NacosDataSourceWithAuthorization getObject() throws Exception {
- Properties properties = new Properties();
- properties.put(PropertyKeyConst.ACCESS_KEY, accessKey);
- properties.put(PropertyKeyConst.SECRET_KEY, secretKey);
- properties.put(PropertyKeyConst.NAMESPACE, namespace);
- properties.put(PropertyKeyConst.ENDPOINT, endpoint);
- return new NacosDataSourceWithAuthorization(properties, groupId, dataId,
- converter);
- }
-
- @Override
- public Class> getObjectType() {
- return NacosDataSourceWithAuthorization.class;
- }
-
- public String getEndpoint() {
- return endpoint;
- }
-
- public void setEndpoint(String endpoint) {
- this.endpoint = endpoint;
- }
-
- public String getNamespace() {
- return namespace;
- }
-
- public void setNamespace(String namespace) {
- this.namespace = namespace;
- }
-
- public String getAccessKey() {
- return accessKey;
- }
-
- public void setAccessKey(String accessKey) {
- this.accessKey = accessKey;
- }
-
- public String getSecretKey() {
- return secretKey;
- }
-
- public void setSecretKey(String secretKey) {
- this.secretKey = secretKey;
- }
-
- public String getGroupId() {
- return groupId;
- }
-
- public void setGroupId(String groupId) {
- this.groupId = groupId;
- }
-
- public String getDataId() {
- return dataId;
- }
-
- public void setDataId(String dataId) {
- this.dataId = dataId;
- }
-
- public Converter getConverter() {
- return converter;
- }
-
- public void setConverter(Converter converter) {
- this.converter = converter;
- }
-}