From ec30922c90cf8f540256f77b9303b1fb2a336ff7 Mon Sep 17 00:00:00 2001 From: longbai Date: Thu, 14 Jul 2016 13:44:21 +0800 Subject: [PATCH 1/2] add final tag --- src/main/java/com/qiniu/common/Config.java | 2 +- src/main/java/com/qiniu/common/QiniuException.java | 2 +- src/main/java/com/qiniu/http/Proxy.java | 2 +- src/main/java/com/qiniu/processing/OperationManager.java | 2 +- src/main/java/com/qiniu/storage/AsyncResumeUploader.java | 7 ------- src/main/java/com/qiniu/storage/model/BatchStatus.java | 2 +- src/main/java/com/qiniu/storage/model/DefaultPutRet.java | 2 +- src/main/java/com/qiniu/storage/model/FileInfo.java | 2 +- src/main/java/com/qiniu/storage/model/FileListing.java | 2 +- src/main/java/com/qiniu/storage/model/ResumeBlockInfo.java | 2 +- 10 files changed, 9 insertions(+), 16 deletions(-) delete mode 100644 src/main/java/com/qiniu/storage/AsyncResumeUploader.java diff --git a/src/main/java/com/qiniu/common/Config.java b/src/main/java/com/qiniu/common/Config.java index 0a3564f58..c57f72d69 100644 --- a/src/main/java/com/qiniu/common/Config.java +++ b/src/main/java/com/qiniu/common/Config.java @@ -6,7 +6,7 @@ public final class Config { - public static final String VERSION = "7.1.1"; + public static final String VERSION = "7.1.2"; /** * 断点上传时的分块大小(默认的分块大小, 不允许改变) */ diff --git a/src/main/java/com/qiniu/common/QiniuException.java b/src/main/java/com/qiniu/common/QiniuException.java index 9ae9fa141..7ff0bb81e 100644 --- a/src/main/java/com/qiniu/common/QiniuException.java +++ b/src/main/java/com/qiniu/common/QiniuException.java @@ -5,7 +5,7 @@ import java.io.IOException; -public class QiniuException extends IOException { +public final class QiniuException extends IOException { public final Response response; diff --git a/src/main/java/com/qiniu/http/Proxy.java b/src/main/java/com/qiniu/http/Proxy.java index d923ddc1b..dab60d457 100644 --- a/src/main/java/com/qiniu/http/Proxy.java +++ b/src/main/java/com/qiniu/http/Proxy.java @@ -3,7 +3,7 @@ /** * http 代理 */ -public class Proxy { +public final class Proxy { public final String hostAddress; public final int port; diff --git a/src/main/java/com/qiniu/processing/OperationManager.java b/src/main/java/com/qiniu/processing/OperationManager.java index 75238b04f..448bf7916 100644 --- a/src/main/java/com/qiniu/processing/OperationManager.java +++ b/src/main/java/com/qiniu/processing/OperationManager.java @@ -12,7 +12,7 @@ * 触发持久化处理 * 针对七牛空间文件,触发异步文件处理。如异步视频转码等 */ -public class OperationManager { +public final class OperationManager { private final Client client; private final Auth auth; diff --git a/src/main/java/com/qiniu/storage/AsyncResumeUploader.java b/src/main/java/com/qiniu/storage/AsyncResumeUploader.java deleted file mode 100644 index b27739d9c..000000000 --- a/src/main/java/com/qiniu/storage/AsyncResumeUploader.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.qiniu.storage; - -/** - * Created by bailong on 15/10/8. - */ -public class AsyncResumeUploader { -} diff --git a/src/main/java/com/qiniu/storage/model/BatchStatus.java b/src/main/java/com/qiniu/storage/model/BatchStatus.java index aab55a812..933b6b566 100644 --- a/src/main/java/com/qiniu/storage/model/BatchStatus.java +++ b/src/main/java/com/qiniu/storage/model/BatchStatus.java @@ -3,6 +3,6 @@ /** * Created by bailong on 15/2/22. */ -public class BatchStatus { +public final class BatchStatus { public int code; } diff --git a/src/main/java/com/qiniu/storage/model/DefaultPutRet.java b/src/main/java/com/qiniu/storage/model/DefaultPutRet.java index 9e903f435..9f7844c8c 100644 --- a/src/main/java/com/qiniu/storage/model/DefaultPutRet.java +++ b/src/main/java/com/qiniu/storage/model/DefaultPutRet.java @@ -1,6 +1,6 @@ package com.qiniu.storage.model; -public class DefaultPutRet { +public final class DefaultPutRet { public String hash; public String key; } diff --git a/src/main/java/com/qiniu/storage/model/FileInfo.java b/src/main/java/com/qiniu/storage/model/FileInfo.java index e8d1a7bec..cbbfc06e0 100644 --- a/src/main/java/com/qiniu/storage/model/FileInfo.java +++ b/src/main/java/com/qiniu/storage/model/FileInfo.java @@ -1,6 +1,6 @@ package com.qiniu.storage.model; -public class FileInfo { +public final class FileInfo { public String key; public String hash; public long fsize; diff --git a/src/main/java/com/qiniu/storage/model/FileListing.java b/src/main/java/com/qiniu/storage/model/FileListing.java index e5de45ae2..dc8f667d9 100644 --- a/src/main/java/com/qiniu/storage/model/FileListing.java +++ b/src/main/java/com/qiniu/storage/model/FileListing.java @@ -5,7 +5,7 @@ /** * Created by bailong on 15/2/20. */ -public class FileListing { +public final class FileListing { public FileInfo[] items; public String marker; public String[] commonPrefixes; diff --git a/src/main/java/com/qiniu/storage/model/ResumeBlockInfo.java b/src/main/java/com/qiniu/storage/model/ResumeBlockInfo.java index 654538fb2..e2d9fad87 100644 --- a/src/main/java/com/qiniu/storage/model/ResumeBlockInfo.java +++ b/src/main/java/com/qiniu/storage/model/ResumeBlockInfo.java @@ -3,7 +3,7 @@ /** * Created by bailong on 15/2/23. */ -public class ResumeBlockInfo { +public final class ResumeBlockInfo { public String ctx; public long crc32; } From 0273b9fe7450bf429563738f16da718d6f4ed741 Mon Sep 17 00:00:00 2001 From: longbai Date: Thu, 14 Jul 2016 16:13:11 +0800 Subject: [PATCH 2/2] add happydns --- build.gradle | 6 +-- gradle/wrapper/gradle-wrapper.properties | 4 +- src/main/java/com/qiniu/common/Config.java | 7 +++ src/main/java/com/qiniu/http/Client.java | 29 ++++++++++++ src/main/java/com/qiniu/util/Dns.java | 44 ------------------- src/test/java/com/qiniu/HttpTest.java | 30 +++++++++++++ src/test/java/com/qiniu/TempFile.java | 4 +- .../com/qiniu/storage/RecordUploadTest.java | 4 +- src/test/java/com/qiniu/util/DnsTest.java | 16 ------- 9 files changed, 75 insertions(+), 69 deletions(-) delete mode 100644 src/main/java/com/qiniu/util/Dns.java delete mode 100644 src/test/java/com/qiniu/util/DnsTest.java diff --git a/build.gradle b/build.gradle index 2c82b5fd3..41477ea97 100755 --- a/build.gradle +++ b/build.gradle @@ -12,8 +12,8 @@ repositories { } dependencies { -// String version = System.getProperty("java.version") -// println("JDK: " + version) +// String ver = System.getProperty("java.version") +// println("JDK: " + ver) // int c = version.compareTo("1.7") // if (c < 0) { // compile fileTree(dir: 'libs', include: '*.jar') @@ -21,8 +21,8 @@ dependencies { compile group:'com.squareup.okhttp3', name:'okhttp', version:'3.3.1' // } compile group:'com.google.code.gson', name:'gson', version:'2.6.2' + compile group:'com.qiniu', name:'happy-dns-java', version:'0.1.3' testCompile group: 'junit', name: 'junit', version: '4.12' - println("JDK : " + version) } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 0d565eada..0f14805ec 100755 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Wed Jan 07 13:33:33 CST 2015 +#Thu Jul 14 15:30:24 CST 2016 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.13-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-2.14-bin.zip diff --git a/src/main/java/com/qiniu/common/Config.java b/src/main/java/com/qiniu/common/Config.java index c57f72d69..00b5c453e 100644 --- a/src/main/java/com/qiniu/common/Config.java +++ b/src/main/java/com/qiniu/common/Config.java @@ -1,5 +1,7 @@ package com.qiniu.common; +import qiniu.happydns.DnsClient; + import java.nio.charset.Charset; // CHECKSTYLE:OFF @@ -54,6 +56,11 @@ public final class Config { */ public static int RETRY_MAX = 5; + /** + * 外部dns + */ + public static DnsClient dns = null; + private Config() { } } diff --git a/src/main/java/com/qiniu/http/Client.java b/src/main/java/com/qiniu/http/Client.java index 4af0ca670..cc62ac2c4 100644 --- a/src/main/java/com/qiniu/http/Client.java +++ b/src/main/java/com/qiniu/http/Client.java @@ -6,9 +6,16 @@ import com.qiniu.util.StringUtils; import okhttp3.*; import okio.BufferedSink; +import qiniu.happydns.DnsClient; +import qiniu.happydns.Domain; import java.io.File; import java.io.IOException; +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; import java.util.concurrent.TimeUnit; /** @@ -46,10 +53,32 @@ public okhttp3.Response intercept(Chain chain) throws IOException { return response; } }); + if (Config.dns != null) { + final DnsClient d = Config.dns; + builder.dns(new Dns() { + @Override + public List lookup(String hostname) throws UnknownHostException { + InetAddress[] ips; + try { + ips = d.queryInetAddress(new Domain(hostname)); + } catch (IOException e) { + e.printStackTrace(); + throw new UnknownHostException(e.getMessage()); + } + if (ips == null) { + throw new UnknownHostException(hostname + " resolve failed"); + } + List l = new ArrayList<>(); + Collections.addAll(l, ips); + return l; + } + }); + } builder.connectTimeout(Config.CONNECT_TIMEOUT, TimeUnit.SECONDS); builder.readTimeout(Config.RESPONSE_TIMEOUT, TimeUnit.SECONDS); builder.writeTimeout(Config.WRITE_TIMEOUT, TimeUnit.SECONDS); httpClient = builder.build(); + } private static String userAgent() { diff --git a/src/main/java/com/qiniu/util/Dns.java b/src/main/java/com/qiniu/util/Dns.java deleted file mode 100644 index 33080bde5..000000000 --- a/src/main/java/com/qiniu/util/Dns.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.qiniu.util; - -import java.net.InetAddress; -import java.net.UnknownHostException; - -/** - * Dns解析类 - */ -public final class Dns { - - private Dns() { - } - - /** - * 根据域名解析出来 IP数组 - * - * @param hostName 域名 - * @return IP 数组 - */ - public static String[] getAddresses(String hostName) { - InetAddress[] ret = null; - try { - ret = InetAddress.getAllByName(hostName); - } catch (UnknownHostException e) { -// e.printStackTrace(); - return new String[0]; - } - String[] r = new String[ret.length]; - for (int i = 0; i < r.length; i++) { - r[i] = ret[i].getHostAddress(); - } - return r; - } - - /** - * 根据域名解析出来IP列表,并合并为一个字符串,通过';'分隔 - * - * @param hostName 域名 - * @return IP列表 - */ - public static String getAddressesString(String hostName) { - return StringUtils.join(getAddresses(hostName), ";"); - } -} diff --git a/src/test/java/com/qiniu/HttpTest.java b/src/test/java/com/qiniu/HttpTest.java index 6b50ba9a9..6ef681cac 100644 --- a/src/test/java/com/qiniu/HttpTest.java +++ b/src/test/java/com/qiniu/HttpTest.java @@ -1,10 +1,19 @@ package com.qiniu; +import com.qiniu.common.Config; import com.qiniu.common.QiniuException; import com.qiniu.http.Client; import com.qiniu.http.Response; import org.junit.Assert; import org.junit.Test; +import qiniu.happydns.DnsClient; +import qiniu.happydns.IResolver; +import qiniu.happydns.local.Hosts; +import qiniu.happydns.local.Resolver; +import qiniu.happydns.local.SystemDnsServer; + +import java.io.IOException; +import java.net.InetAddress; public class HttpTest { @@ -32,6 +41,27 @@ public void testPost2() { } } + @Test + public void testDns() { + IResolver r1 = SystemDnsServer.defaultResolver(); + IResolver r2 = null; + try { + r2 = new Resolver(InetAddress.getByName("119.29.29.29")); + } catch (IOException ex) { + ex.printStackTrace(); + } + Hosts h = new Hosts(); + h.put("upnonodns.qiniu.com", "115.231.183.168"); + Config.dns = new DnsClient(new IResolver[]{r1, r2}, h); + Response r = null; + try { + r = new Client().post("http://upnonodns.qiniu.com", "hello", null); + Assert.fail(); + } catch (QiniuException e) { + Assert.assertNotNull(e.response.reqId); + } + } + @Test public void testPost3() { Response r = null; diff --git a/src/test/java/com/qiniu/TempFile.java b/src/test/java/com/qiniu/TempFile.java index aabcbb454..3eba79e1b 100644 --- a/src/test/java/com/qiniu/TempFile.java +++ b/src/test/java/com/qiniu/TempFile.java @@ -9,11 +9,11 @@ * Created by bailong on 14/10/11. */ public final class TempFile { + static final Random r = new Random(); + private TempFile() { } - static final Random r = new Random(); - public static void remove(File f) { f.delete(); } diff --git a/src/test/java/com/qiniu/storage/RecordUploadTest.java b/src/test/java/com/qiniu/storage/RecordUploadTest.java index eae8e2940..9677bcd56 100644 --- a/src/test/java/com/qiniu/storage/RecordUploadTest.java +++ b/src/test/java/com/qiniu/storage/RecordUploadTest.java @@ -24,15 +24,15 @@ */ public class RecordUploadTest { final Random r = new Random(); - private Response response = null; final RecordKeyGenerator keyGen = new RecordKeyGenerator() { @Override public String gen(String key, File file) { return key + "_._" + file.getAbsolutePath(); } }; - FileRecorder recorder = null; final Client client = new Client(); + FileRecorder recorder = null; + private Response response = null; private void template(final int size) throws IOException { response = null; diff --git a/src/test/java/com/qiniu/util/DnsTest.java b/src/test/java/com/qiniu/util/DnsTest.java deleted file mode 100644 index ac02c6c15..000000000 --- a/src/test/java/com/qiniu/util/DnsTest.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.qiniu.util; - -import org.junit.Test; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -public class DnsTest { - @Test - public void testDns() { - String ip = Dns.getAddressesString("qiniu.com"); - assertTrue(!ip.equals("")); - ip = Dns.getAddressesString("nodns.qiniu.com"); - assertEquals("", ip); - } -}