* 如果遇到超时比较多,可减小单次 batch 操作的数量,或者在创建 BucketManager 时尝试增加超时时间; * 增加超时时间的具体方式如下: - * Configuration cfg = new Configuration(); + * Configuration cfg = Configuration.create(); * cfg.readTimeout = 120; * BucketManager bucketManager = new BucketManager(auth, cfg); *
diff --git a/src/main/java/com/qiniu/storage/Configuration.java b/src/main/java/com/qiniu/storage/Configuration.java
index 022f76e16..f1b0fabb2 100644
--- a/src/main/java/com/qiniu/storage/Configuration.java
+++ b/src/main/java/com/qiniu/storage/Configuration.java
@@ -14,14 +14,23 @@
*/
public final class Configuration implements Cloneable {
- static final String ucBackUpHost0 = "kodo-config.qiniuapi.com";
- static final String ucBackUpHost1 = "uc.qbox.me";
/**
- * 特殊默认域名
+ * 公有云 RS 域名,内部使用,不保证兼容性变更
*/
public static String defaultRsHost = "rs.qiniu.com";
+
+ /**
+ * 公有云 API 域名,内部使用,不保证兼容性变更
+ */
public static String defaultApiHost = "api.qiniu.com";
+
+ /**
+ * 公有云 Uc 域名,内部使用,不保证兼容性变更
+ */
public static String defaultUcHost = "uc.qiniuapi.com";
+
+ static final String ucBackUpHost0 = "kodo-config.qiniuapi.com";
+ static final String ucBackUpHost1 = "uc.qbox.me";
static final String[] defaultUcHosts = new String[]{defaultUcHost, ucBackUpHost0, ucBackUpHost1};
/**
@@ -159,10 +168,22 @@ public final class Configuration implements Cloneable {
public ProxyConfiguration proxy;
private ConfigHelper configHelper;
+ /**
+ * 构造函数:
+ * 使用 {@link Configuration#create()} 替换
+ */
+ @Deprecated
public Configuration() {
configHelper = new ConfigHelper(this);
}
+ /**
+ * 构造函数:
+ * 使用 {@link Configuration#create(Region)} 替换
+ *
+ * @param region
+ */
+ @Deprecated
public Configuration(Region region) {
if (region instanceof RegionGroup) {
this.region = (Region) region.clone();
@@ -172,12 +193,47 @@ public Configuration(Region region) {
configHelper = new ConfigHelper(this);
}
+ /**
+ * 构造函数:
+ * 使用 {@link Configuration#create(Region)} 替换
+ *
+ * @param zone Zone
+ */
@Deprecated
public Configuration(Zone zone) {
this.zone = zone;
configHelper = new ConfigHelper(this);
}
+ /**
+ * 默认配置
+ *
+ * @return Configuration
+ */
+ public static Configuration create() {
+ Configuration configuration = new Configuration();
+ configuration.resumableUploadAPIVersion = ResumableUploadAPIVersion.V2;
+ return configuration;
+ }
+
+
+ /**
+ * 构建配置
+ *
+ * @param region Region
+ * @return Configuration
+ */
+ public static Configuration create(Region region) {
+ Configuration configuration = new Configuration(region);
+ configuration.resumableUploadAPIVersion = ResumableUploadAPIVersion.V2;
+ return configuration;
+ }
+
+ /**
+ * 克隆
+ *
+ * @return Configuration
+ */
public Configuration clone() {
try {
Configuration configuration = (Configuration) super.clone();
@@ -192,17 +248,38 @@ public Configuration clone() {
}
+ /***
+ * 获取上传域名
+ *
+ * @param upToken 上传 token
+ * @return 上传域名
+ * @throws QiniuException 获取域名失败异常
+ */
@Deprecated
public String upHost(String upToken) throws QiniuException {
return configHelper.upHost(upToken);
}
+ /**
+ * 获取备用上传域名
+ *
+ * @param upToken 上传 token
+ * @return 上传域名
+ * @throws QiniuException 获取域名失败异常
+ */
@Deprecated
public String upHostBackup(String upToken) throws QiniuException {
return configHelper.tryChangeUpHost(upToken, null);
}
+ /**
+ * 获取 io 域名
+ *
+ * @param ak 七牛 AK
+ * @param bucket 存储空间名称
+ * @return io 域名
+ */
@Deprecated
public String ioHost(String ak, String bucket) {
try {
@@ -212,6 +289,13 @@ public String ioHost(String ak, String bucket) {
}
}
+ /**
+ * 获取 api 域名
+ *
+ * @param ak 七牛 AK
+ * @param bucket 存储空间名称
+ * @return api 域名
+ */
@Deprecated
public String apiHost(String ak, String bucket) {
try {
@@ -221,6 +305,13 @@ public String apiHost(String ak, String bucket) {
}
}
+ /**
+ * 获取 rs 域名
+ *
+ * @param ak 七牛 AK
+ * @param bucket 存储空间名称
+ * @return rs 域名
+ */
@Deprecated
public String rsHost(String ak, String bucket) {
try {
@@ -230,6 +321,13 @@ public String rsHost(String ak, String bucket) {
}
}
+ /**
+ * 获取 rsf 域名
+ *
+ * @param ak 七牛 AK
+ * @param bucket 存储空间名称
+ * @return rsf 域名
+ */
@Deprecated
public String rsfHost(String ak, String bucket) {
try {
@@ -239,24 +337,50 @@ public String rsfHost(String ak, String bucket) {
}
}
+ /**
+ * 获取 rs 域名
+ *
+ * @return rs 域名
+ */
@Deprecated
public String rsHost() {
return configHelper.rsHost();
}
+ /**
+ * 获取 api 域名
+ *
+ * @return api 域名
+ */
@Deprecated
public String apiHost() {
return configHelper.apiHost();
}
+ /**
+ * 获取 uc 域名
+ *
+ * @return uc 域名
+ */
@Deprecated
public String ucHost() {
return configHelper.ucHost();
}
-
+ /**
+ * 分片上传 API 版本
+ */
public enum ResumableUploadAPIVersion {
- V1, V2
+ /**
+ * 使用 V1 的分块上传API。
+ */
+ V1,
+
+ /**
+ * 使用 V2 的分块上传API。
+ * 推荐使用 V2 的分片上传版本,更稳定,更高效。
+ */
+ V2
}
}
diff --git a/src/main/java/com/qiniu/storage/FixBlockUploader.java b/src/main/java/com/qiniu/storage/FixBlockUploader.java
index 8ce98f21f..73b646e0e 100644
--- a/src/main/java/com/qiniu/storage/FixBlockUploader.java
+++ b/src/main/java/com/qiniu/storage/FixBlockUploader.java
@@ -37,7 +37,7 @@ public class FixBlockUploader {
*/
public FixBlockUploader(int blockSize, Configuration configuration, Client client, Recorder recorder) {
if (configuration == null) {
- configuration = new Configuration();
+ configuration = Configuration.create();
}
if (client == null) {
client = new Client(configuration);
diff --git a/src/main/java/com/qiniu/storage/UploadManager.java b/src/main/java/com/qiniu/storage/UploadManager.java
index b0fb5cc57..60e222db0 100644
--- a/src/main/java/com/qiniu/storage/UploadManager.java
+++ b/src/main/java/com/qiniu/storage/UploadManager.java
@@ -48,14 +48,31 @@ public UploadManager(Configuration config, Recorder recorder) {
* 构建一个支持断点续传的上传对象。只在文件采用分片上传时才会有效。
* 分块上传中,将每一块上传的记录保存下来。上传中断后可在上一次断点记录基础上上传剩余部分。
* 对于不同的文件上传需要支持断点续传的情况,请定义不同的UploadManager对象,而不要共享。
+ * 使用 {@link UploadManager#UploadManager(Configuration, Client, Recorder) 替换}
*
* @param client 上传 client【必须】
* @param recorder 断点记录对象【可选】
*/
+ @Deprecated
public UploadManager(Client client, Recorder recorder) {
this.client = client;
this.recorder = recorder;
- configuration = new Configuration();
+ configuration = Configuration.create();
+ }
+
+ /**
+ * 构建一个支持断点续传的上传对象。只在文件采用分片上传时才会有效。
+ * 分块上传中,将每一块上传的记录保存下来。上传中断后可在上一次断点记录基础上上传剩余部分。
+ * 对于不同的文件上传需要支持断点续传的情况,请定义不同的UploadManager对象,而不要共享。
+ *
+ * @param config 配置类对象【必须】
+ * @param client 上传 client【必须】
+ * @param recorder 断点记录对象【可选】
+ */
+ public UploadManager(Configuration config, Client client, Recorder recorder) {
+ this.client = client;
+ this.recorder = recorder;
+ this.configuration = config.clone();
}
private static void checkArgs(final String key, byte[] data, File f, String token) {
diff --git a/src/test/java/com/qiniu/storage/ApiQueryRegionTest.java b/src/test/java/com/qiniu/storage/ApiQueryRegionTest.java
index 7114e6be9..bede2313b 100644
--- a/src/test/java/com/qiniu/storage/ApiQueryRegionTest.java
+++ b/src/test/java/com/qiniu/storage/ApiQueryRegionTest.java
@@ -30,7 +30,7 @@ public void testQuery() {
String key = testFile.getKey();
String token = TestConfig.testAuth.uploadToken(bucket, key, 3600, null);
- Configuration configuration = new Configuration();
+ Configuration configuration = Configuration.create();
Client client = new Client(configuration);
ApiQueryRegion api = new ApiQueryRegion(client);
ApiQueryRegion.Request request = new ApiQueryRegion.Request(null, token);
@@ -69,7 +69,7 @@ public void testQueryWithRetry() {
String bucket = testFile.getBucketName();
String accessKey = TestConfig.testAuth.accessKey;
- Configuration configuration = new Configuration();
+ Configuration configuration = Configuration.create();
Client client = new Client(configuration);
ApiQueryRegion api = new ApiQueryRegion(client, new Api.Config.Builder()
.setRequestDebugLevel(ApiInterceptorDebug.LevelPrintDetail)
diff --git a/src/test/java/com/qiniu/storage/ConfigurationTest.java b/src/test/java/com/qiniu/storage/ConfigurationTest.java
new file mode 100644
index 000000000..0d1a5f118
--- /dev/null
+++ b/src/test/java/com/qiniu/storage/ConfigurationTest.java
@@ -0,0 +1,31 @@
+package com.qiniu.storage;
+
+
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+/**
+ * Configuration 测试类
+ *
+ * @author yangsen
+ */
+public class ConfigurationTest {
+
+ @Test
+ @Tag("UnitTest")
+ public void testDefault() {
+ Configuration cfg = new Configuration();
+ assertEquals(Configuration.ResumableUploadAPIVersion.V1, cfg.resumableUploadAPIVersion);
+
+ cfg = new Configuration(Region.autoRegion());
+ assertEquals(Configuration.ResumableUploadAPIVersion.V1, cfg.resumableUploadAPIVersion);
+
+ cfg = Configuration.create();
+ assertEquals(Configuration.ResumableUploadAPIVersion.V2, cfg.resumableUploadAPIVersion);
+
+ cfg = Configuration.create(Region.autoRegion());
+ assertEquals(Configuration.ResumableUploadAPIVersion.V2, cfg.resumableUploadAPIVersion);
+ }
+}
diff --git a/src/test/java/com/qiniu/storage/FixBlockUploaderWithRecorderTest.java b/src/test/java/com/qiniu/storage/FixBlockUploaderWithRecorderTest.java
index 754f364ba..ec1d8997b 100644
--- a/src/test/java/com/qiniu/storage/FixBlockUploaderWithRecorderTest.java
+++ b/src/test/java/com/qiniu/storage/FixBlockUploaderWithRecorderTest.java
@@ -37,7 +37,7 @@ public void init() {
}
private void init2(boolean useHttpsDomains) {
- config = new Configuration();
+ config = Configuration.create();
config.useHttpsDomains = useHttpsDomains;
client = new Client(config);
diff --git a/src/test/java/com/qiniu/storage/RegionTest.java b/src/test/java/com/qiniu/storage/RegionTest.java
index d56007240..426c4bc18 100644
--- a/src/test/java/com/qiniu/storage/RegionTest.java
+++ b/src/test/java/com/qiniu/storage/RegionTest.java
@@ -28,7 +28,7 @@ public void testChangeHost1() throws QiniuException {
@Tag("IntegrationTest")
public void testChangeHost2() throws QiniuException {
System.out.println("\n\n2 ''");
- Configuration cfg = new Configuration();
+ Configuration cfg = Configuration.create();
cfg.useHttpsDomains = false;
testChangeHost(cfg);
}
@@ -138,7 +138,7 @@ private void testChangeHost(Configuration cfg0) throws QiniuException {
@Test
@Tag("IntegrationTest")
public void testGetFailedUpHost() throws QiniuException {
- Configuration cfg0 = new Configuration();
+ Configuration cfg0 = Configuration.create();
ConfigHelper configHelper = new ConfigHelper(cfg0);
Auth auth = Auth.create(TestConfig.testAccessKey, TestConfig.testSecretKey);
String upToken = auth.uploadToken(TestConfig.testBucket_z0 + "notexitbucket38_-4rfjiu4r3u4t83d");
@@ -153,7 +153,7 @@ public void testGetFailedUpHost() throws QiniuException {
@Test
@Tag("IntegrationTest")
public void testChangeHostPeriod() throws QiniuException {
- Configuration cfg0 = new Configuration();
+ Configuration cfg0 = Configuration.create();
UpHostHelper helper = new UpHostHelper(cfg0, 20);
Auth auth = Auth.create(TestConfig.testAccessKey, TestConfig.testSecretKey);
String upToken = auth.uploadToken(TestConfig.testBucket_z0);
diff --git a/src/test/java/test/com/qiniu/DnsTest.java b/src/test/java/test/com/qiniu/DnsTest.java
index 864e74d83..0b3a97575 100644
--- a/src/test/java/test/com/qiniu/DnsTest.java
+++ b/src/test/java/test/com/qiniu/DnsTest.java
@@ -31,7 +31,7 @@ public void setUp() throws UnknownHostException {
resolvers[1] = new Resolver(InetAddress.getByName("119.29.29.29"));
final DnsClient dnsClient = new DnsClient(resolvers);
- config = new Configuration();
+ config = Configuration.create();
config.zone = Zone.zone0();
config.dns = new Dns() {
@Override
diff --git a/src/test/java/test/com/qiniu/processing/PfopTest.java b/src/test/java/test/com/qiniu/processing/PfopTest.java
index 914ef1861..12e50378e 100644
--- a/src/test/java/test/com/qiniu/processing/PfopTest.java
+++ b/src/test/java/test/com/qiniu/processing/PfopTest.java
@@ -35,7 +35,7 @@ public void testPfop() throws QiniuException {
}
List