From a5b7adb32a099bee3ade2b7a4bcad977a72143c6 Mon Sep 17 00:00:00 2001 From: YangSen-qn Date: Mon, 17 Jul 2023 15:30:56 +0800 Subject: [PATCH 1/5] version to 7.14.0 --- CHANGELOG.md | 9 +++++++-- README.md | 4 ++-- src/main/java/com/qiniu/common/Constants.java | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 88fc00ac..85e69e3a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,12 @@ # Changelog +## 7.14.0(2023-07-18) +* Region 移除亚太首尔区域 +* BucketManager 的部分 Bucket 级别接口支持主备重试 + ## 7.13.1(2023-05-25) -* GetBucketQuota -* ChangeApiHost +* 优化 BucketManager 的 getBucketQuota 方法 +* 废弃 pu.qbox.me 域名 +* 废弃 BucketManager 的 listFilesV2 方法 * PlayExpire ## 7.13.0(2023-03-30) diff --git a/README.md b/README.md index 0950f6ef..d30d2398 100644 --- a/README.md +++ b/README.md @@ -13,12 +13,12 @@ com.qiniu qiniu-java-sdk - [7.13.0, 7.13.99] + [7.14.0, 7.14.99] ``` 或者 Gradle: ```groovy -implementation 'com.qiniu:qiniu-java-sdk:7.13.+' +implementation 'com.qiniu:qiniu-java-sdk:7.14.+' ``` ## 运行环境 diff --git a/src/main/java/com/qiniu/common/Constants.java b/src/main/java/com/qiniu/common/Constants.java index a1cd6655..83447124 100644 --- a/src/main/java/com/qiniu/common/Constants.java +++ b/src/main/java/com/qiniu/common/Constants.java @@ -9,7 +9,7 @@ public final class Constants { /** * 版本号 */ - public static final String VERSION = "7.13.1"; + public static final String VERSION = "7.14.0"; /** * 块大小,不能改变 */ From e47717965fab7603d11853f8d289dd636772e85e Mon Sep 17 00:00:00 2001 From: YangSen-qn Date: Fri, 27 Oct 2023 11:35:39 +0800 Subject: [PATCH 2/5] Region support create by region id --- .../storage/ApiInterceptorRetryHosts.java | 4 ++ .../storage/ApiInterceptorRetrySimple.java | 4 ++ src/main/java/com/qiniu/storage/Region.java | 49 +++++++++++-- src/test/java/test/com/qiniu/TestConfig.java | 4 +- .../test/com/qiniu/storage/RegionTest.java | 70 +++++++++++++++++++ 5 files changed, 125 insertions(+), 6 deletions(-) create mode 100644 src/test/java/test/com/qiniu/storage/RegionTest.java diff --git a/src/main/java/com/qiniu/storage/ApiInterceptorRetryHosts.java b/src/main/java/com/qiniu/storage/ApiInterceptorRetryHosts.java index 92878e65..343ac2b5 100644 --- a/src/main/java/com/qiniu/storage/ApiInterceptorRetryHosts.java +++ b/src/main/java/com/qiniu/storage/ApiInterceptorRetryHosts.java @@ -84,6 +84,10 @@ Api.Response intercept(Api.Request request, Api.Handler handler) throws QiniuExc request.setHost(newHost); } + if (response != null && response.getResponse() != null) { + response.getResponse().close(); + } + int interval = retryInterval.interval(); if (interval <= 0) { continue; diff --git a/src/main/java/com/qiniu/storage/ApiInterceptorRetrySimple.java b/src/main/java/com/qiniu/storage/ApiInterceptorRetrySimple.java index befd92c6..64768bb4 100644 --- a/src/main/java/com/qiniu/storage/ApiInterceptorRetrySimple.java +++ b/src/main/java/com/qiniu/storage/ApiInterceptorRetrySimple.java @@ -50,6 +50,10 @@ Api.Response intercept(Api.Request request, Api.Handler handler) throws QiniuExc } request = cloneRequest; + if (response != null && response.getResponse() != null) { + response.getResponse().close(); + } + int interval = retryInterval.interval(); if (interval <= 0) { continue; diff --git a/src/main/java/com/qiniu/storage/Region.java b/src/main/java/com/qiniu/storage/Region.java index e9d75bec..35fcb3f8 100644 --- a/src/main/java/com/qiniu/storage/Region.java +++ b/src/main/java/com/qiniu/storage/Region.java @@ -57,9 +57,11 @@ public class Region implements Cloneable { /** * 华东机房相关域名 + * 废弃,使用 {@link Region#createWithRegionId} 替换,regionId:z0 * * @return 区域信息 */ + @Deprecated public static Region region0() { return new Builder(). region("z0"). @@ -74,9 +76,11 @@ public static Region region0() { /** * 华东机房相关域名 + * 废弃,使用 {@link Region#createWithRegionId} 替换,regionId:z0 * * @return 区域信息 */ + @Deprecated public static Region huadong() { return region0(); } @@ -84,9 +88,11 @@ public static Region huadong() { /** * 华东浙江 2 机房相关域名 + * 废弃,使用 {@link Region#createWithRegionId} 替换,regionId:cn-east-2 * * @return 区域信息 */ + @Deprecated public static Region regionCnEast2() { return new Builder(). region("cn-east-2"). @@ -101,9 +107,11 @@ public static Region regionCnEast2() { /** * 华东浙江 2 机房相关域名 + * 废弃,使用 {@link Region#createWithRegionId} 替换,regionId:cn-east-2 * * @return 区域信息 */ + @Deprecated public static Region huadongZheJiang2() { return regionCnEast2(); } @@ -137,9 +145,11 @@ public static Region qvmHuadong() { /** * 华北机房相关域名 + * 废弃,使用 {@link Region#createWithRegionId} 替换,regionId:z1 * * @return 区域信息 */ + @Deprecated public static Region region1() { return new Builder(). region("z1"). @@ -154,9 +164,11 @@ public static Region region1() { /** * 华北机房相关域名 + * 废弃,使用 {@link Region#createWithRegionId} 替换,regionId:z1 * * @return 区域信息 */ + @Deprecated public static Region huabei() { return region1(); } @@ -189,9 +201,11 @@ public static Region qvmHuabei() { /** * 华南机房相关域名 + * 废弃,使用 {@link Region#createWithRegionId} 替换,regionId:z2 * * @return 区域信息 */ + @Deprecated public static Region region2() { return new Builder(). region("z2"). @@ -206,18 +220,22 @@ public static Region region2() { /** * 华南机房相关域名 + * 废弃,使用 {@link Region#createWithRegionId} 替换,regionId:z2 * * @return 区域信息 */ + @Deprecated public static Region huanan() { return region2(); } /** * 北美机房相关域名 + * 废弃,使用 {@link Region#createWithRegionId} 替换,regionId:na0 * * @return 区域信息 */ + @Deprecated public static Region regionNa0() { return new Builder(). region("na0"). @@ -232,21 +250,25 @@ public static Region regionNa0() { /** * 北美机房相关域名 + * 废弃,使用 {@link Region#createWithRegionId} 替换,regionId:na0 * * @return 区域信息 */ + @Deprecated public static Region beimei() { return regionNa0(); } /** * 新加坡相关域名 + * 废弃,使用 {@link Region#createWithRegionId} 替换,regionId:as0 * * @return 区域信息 */ + @Deprecated public static Region regionAs0() { return new Builder(). - region("na0"). + region("as0"). srcUpHost("up-as0.qiniup.com"). accUpHost("upload-as0.qiniup.com"). iovipHost("iovip-as0.qbox.me"). @@ -256,6 +278,25 @@ public static Region regionAs0() { build(); } + /** + * Region 构造方法 + * regionId 参考链接: + * + * @param regionId 根据区域 ID 创建 Region + * @return Region 实例 + */ + public static Region createWithRegionId(String regionId) { + return new Builder() + .region(regionId) + .srcUpHost("up-" + regionId + ".qiniup.com") + .accUpHost("upload-" + regionId + ".qiniup.com") + .iovipHost("iovip-" + regionId + ".qiniuio.com") + .rsHost("rs-" + regionId + ".qiniuapi.com") + .rsfHost("rsf-" + regionId + ".qiniuapi.com") + .apiHost("api-" + regionId + ".qiniuapi.com") + .build(); + } + /** * 新加坡机房相关域名 * @@ -434,10 +475,10 @@ public Region autoRegion(String... ucServers) { /** * 自动选择,其它参数设置无效 * - * @param retryMax 单个域名最大重试次数 - * @param retryInterval 重试间隔,单位:毫秒 + * @param retryMax 单个域名最大重试次数 + * @param retryInterval 重试间隔,单位:毫秒 * @param hostFreezeDuration 冻结时间,单位:毫秒;域名请求失败会被冻结,冻结后域名在冻结时间内不会被使用 - * @param ucServers uc host + * @param ucServers uc host * @return 区域信息 **/ public Region autoRegion(int retryMax, int retryInterval, int hostFreezeDuration, String... ucServers) { diff --git a/src/test/java/test/com/qiniu/TestConfig.java b/src/test/java/test/com/qiniu/TestConfig.java index e7162328..78826861 100644 --- a/src/test/java/test/com/qiniu/TestConfig.java +++ b/src/test/java/test/com/qiniu/TestConfig.java @@ -98,7 +98,7 @@ public static TestFile[] getTestFileArray(String fileSaveKey, String fileMimeTyp na0.testDomainTimeStamp = testDomain_na0_timeStamp; na0.testUrlTimeStamp = "http://" + testDomain_na0_timeStamp + "/" + fileSaveKey; na0.regionId = "na0"; - na0.region = Region.regionNa0(); + na0.region = Region.createWithRegionId("na0"); TestFile z0 = new TestFile(); z0.key = fileSaveKey; @@ -109,7 +109,7 @@ public static TestFile[] getTestFileArray(String fileSaveKey, String fileMimeTyp z0.testDomainTimeStamp = testDomain_z0_timeStamp; z0.testUrlTimeStamp = "http://" + testDomain_z0_timeStamp + "/" + fileSaveKey; z0.regionId = "z0"; - z0.region = Region.region0(); + z0.region = Region.createWithRegionId("z0"); TestFile z0_auto = new TestFile(); z0_auto.key = fileSaveKey; diff --git a/src/test/java/test/com/qiniu/storage/RegionTest.java b/src/test/java/test/com/qiniu/storage/RegionTest.java new file mode 100644 index 00000000..9a63b3ef --- /dev/null +++ b/src/test/java/test/com/qiniu/storage/RegionTest.java @@ -0,0 +1,70 @@ +package test.com.qiniu.storage; + +import com.qiniu.storage.Region; +import org.junit.jupiter.api.Tag; +import org.junit.jupiter.api.Test; + +import java.lang.reflect.Constructor; +import java.lang.reflect.Method; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class RegionTest { + + @Test + @Tag("UnitTest") + public void testCreateWithRegionId() throws Exception { + Class regionReqInfoClass = Class.forName("com.qiniu.storage.RegionReqInfo"); + Constructor regionReqInfoConstructor = regionReqInfoClass.getDeclaredConstructor(String.class, String.class); + regionReqInfoConstructor.setAccessible(true); + + Object info = regionReqInfoConstructor.newInstance("a", "b"); + Region na0 = Region.createWithRegionId("na0"); + + // region id + Method getRegion = Region.class.getDeclaredMethod("getRegion", regionReqInfoClass); + getRegion.setAccessible(true); + String regionId = (String) getRegion.invoke(na0, info); + assertEquals("na0", regionId); + + // up + // up src + Method getSrcUpHost = Region.class.getDeclaredMethod("getSrcUpHost", regionReqInfoClass); + getSrcUpHost.setAccessible(true); + List srcHosts = (List) getSrcUpHost.invoke(na0, info); + assertTrue(srcHosts.contains("up-na0.qiniup.com"), "check up src error"); + + // up acc + Method getAccUpHost = Region.class.getDeclaredMethod("getAccUpHost", regionReqInfoClass); + getAccUpHost.setAccessible(true); + List accHosts = (List) getAccUpHost.invoke(na0, info); + assertTrue(accHosts.contains("upload-na0.qiniup.com"), "check up acc error"); + + // io + Method getIoHost = Region.class.getDeclaredMethod("getIovipHost", regionReqInfoClass); + getIoHost.setAccessible(true); + String ioHost = (String) getIoHost.invoke(na0, info); + assertTrue(ioHost.equals("iovip-na0.qiniuio.com"), "check io error"); + + // rs + Method getRsHost = Region.class.getDeclaredMethod("getRsHost", regionReqInfoClass); + getRsHost.setAccessible(true); + String rsHost = (String) getRsHost.invoke(na0, info); + assertTrue(rsHost.equals("rs-na0.qiniuapi.com"), "check rs error"); + + // rsf + Method getRsfHost = Region.class.getDeclaredMethod("getRsfHost", regionReqInfoClass); + getRsfHost.setAccessible(true); + String rsfHost = (String) getRsfHost.invoke(na0, info); + assertTrue(rsfHost.equals("rsf-na0.qiniuapi.com"), "check rsf error"); + + // api + Method getApiHost = Region.class.getDeclaredMethod("getApiHost", regionReqInfoClass); + getApiHost.setAccessible(true); + String apiHost = (String) getApiHost.invoke(na0, info); + assertTrue(apiHost.equals("api-na0.qiniuapi.com"), "check api error"); + } + +} From c86c02c66f5f897427e769f0347ead98a5a56f96 Mon Sep 17 00:00:00 2001 From: YangSen-qn Date: Mon, 25 Dec 2023 16:12:01 +0800 Subject: [PATCH 3/5] version to v7.15.0 --- CHANGELOG.md | 6 ++++++ README.md | 4 ++-- src/main/java/com/qiniu/common/Constants.java | 2 +- src/main/java/com/qiniu/util/DefaultHeader.java | 4 +++- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 85e69e3a..70086595 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,10 @@ # Changelog +## 7.15.0(2023-12-25) +* 区域缓存支持磁盘缓存 +* 提供快速生成公有云的区域实例的方法 +* batch 操作接口增强 +* 支持归档直读 + ## 7.14.0(2023-07-18) * Region 移除亚太首尔区域 * BucketManager 的部分 Bucket 级别接口支持主备重试 diff --git a/README.md b/README.md index d30d2398..fa22979b 100644 --- a/README.md +++ b/README.md @@ -13,12 +13,12 @@ com.qiniu qiniu-java-sdk - [7.14.0, 7.14.99] + [7.15.0, 7.15.99] ``` 或者 Gradle: ```groovy -implementation 'com.qiniu:qiniu-java-sdk:7.14.+' +implementation 'com.qiniu:qiniu-java-sdk:7.15.+' ``` ## 运行环境 diff --git a/src/main/java/com/qiniu/common/Constants.java b/src/main/java/com/qiniu/common/Constants.java index e97887af..3441e977 100644 --- a/src/main/java/com/qiniu/common/Constants.java +++ b/src/main/java/com/qiniu/common/Constants.java @@ -10,7 +10,7 @@ public final class Constants { /** * 版本号 */ - public static final String VERSION = "7.14.0"; + public static final String VERSION = "7.15.0"; /** * 块大小,不能改变 */ diff --git a/src/main/java/com/qiniu/util/DefaultHeader.java b/src/main/java/com/qiniu/util/DefaultHeader.java index 95cc9df8..0bfdeb02 100644 --- a/src/main/java/com/qiniu/util/DefaultHeader.java +++ b/src/main/java/com/qiniu/util/DefaultHeader.java @@ -2,9 +2,11 @@ import com.qiniu.http.Client; +import java.nio.charset.StandardCharsets; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.Locale; import java.util.TimeZone; public final class DefaultHeader { @@ -35,7 +37,7 @@ private static boolean isDisableQiniuTimestampSignature() { } private static String xQiniuDate() { - DateFormat format = new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); + DateFormat format = new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'", Locale.US); format.setTimeZone(TimeZone.getTimeZone("UTC")); return format.format(new Date()); } From 81ac02205ddc903a9050d7cc17a80d33ac62ce17 Mon Sep 17 00:00:00 2001 From: YangSen-qn Date: Mon, 25 Dec 2023 18:06:15 +0800 Subject: [PATCH 4/5] delete useless code --- src/main/java/com/qiniu/util/DefaultHeader.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/qiniu/util/DefaultHeader.java b/src/main/java/com/qiniu/util/DefaultHeader.java index 0bfdeb02..1e520363 100644 --- a/src/main/java/com/qiniu/util/DefaultHeader.java +++ b/src/main/java/com/qiniu/util/DefaultHeader.java @@ -2,7 +2,6 @@ import com.qiniu.http.Client; -import java.nio.charset.StandardCharsets; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; From 7a951c6c629d659ae47cea784d9fd6a15b8095f3 Mon Sep 17 00:00:00 2001 From: YangSen-qn Date: Mon, 25 Dec 2023 18:30:10 +0800 Subject: [PATCH 5/5] delete useless code --- src/test/java/test/com/qiniu/storage/BucketTest.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/test/java/test/com/qiniu/storage/BucketTest.java b/src/test/java/test/com/qiniu/storage/BucketTest.java index 6e0e1356..01ac6115 100644 --- a/src/test/java/test/com/qiniu/storage/BucketTest.java +++ b/src/test/java/test/com/qiniu/storage/BucketTest.java @@ -6,9 +6,7 @@ import com.qiniu.http.Response; import com.qiniu.storage.BucketManager; import com.qiniu.storage.Configuration; -import com.qiniu.storage.Region; import com.qiniu.storage.model.*; -import com.qiniu.util.Auth; import com.qiniu.util.Json; import com.qiniu.util.StringUtils; import okhttp3.Call;