Skip to content

Commit 7c6feb2

Browse files
authored
Merge pull request #138 from zzq996/master
Version 3.23.9.1 New features: Allow you set custom dns resolver Third-party dependence: Remove java-xmlbuilder, use default javax.xml lib
2 parents 247ddfd + 8f7159e commit 7c6feb2

16 files changed

+323
-334
lines changed

README-Android.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
Version 3.23.9.1
2+
New features:
3+
1. Allow you set custom dns resolver
4+
5+
Third-party dependence:
6+
1. Remove java-xmlbuilder, use default javax.xml lib
7+
-----------------------------------------------------------------------------------
18
Version 3.23.9
29
New features:
310
1. Allow you set\get\list\delete bucket inventory configuration

README-Java.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
Version 3.23.9.1
2+
New features:
3+
1. Allow you set custom dns resolver
4+
5+
Third-party dependence:
6+
1. Remove java-xmlbuilder, use default javax.xml lib
7+
-----------------------------------------------------------------------------------
18
Version 3.23.9
29
New features:
310
1. Allow you set\get\list\delete bucket inventory configuration

README.MD

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
Version 3.23.9.1
2+
New features:
3+
1. Allow you set custom dns resolver
4+
5+
Third-party dependence:
6+
1. Remove java-xmlbuilder, use default javax.xml lib
7+
-----------------------------------------------------------------------------------
18
Version 3.23.9
29
New features:
310
1. Allow you set\get\list\delete bucket inventory configuration

README_CN.MD

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
Version 3.23.9.1
2+
New features:
3+
1. 支持设置自定义dns解析器
4+
5+
Third-party dependence:
6+
1. 移除 java-xmlbuilder, 使用默认的javax.xml库
7+
-----------------------------------------------------------------------------------
18
Version 3.23.9
29
New features:
310
1. 新增配置桶清单接口

app/src/main/java/com/obs/services/AbstractClient.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,14 +50,9 @@
5050
import com.obs.services.model.V4PostSignatureResponse;
5151
import com.obs.services.model.V4TemporarySignatureRequest;
5252
import com.obs.services.model.V4TemporarySignatureResponse;
53-
import static com.jamesmurty.utils.BaseXMLBuilder.failIfExternalEntityParsingCannotBeConfigured;
5453

5554
public abstract class AbstractClient extends ObsService implements Closeable, IObsClient, IFSClient {
5655
private static final ILogger ILOG = LoggerBuilder.getLogger(AbstractClient.class);
57-
58-
static {
59-
failIfExternalEntityParsingCannotBeConfigured = false;
60-
}
6156

6257
protected void init(String accessKey, String secretKey, String securityToken, ObsConfiguration config) {
6358
InterfaceLogBean reqBean = new InterfaceLogBean("ObsClient", config.getEndPoint(), "");
@@ -73,7 +68,7 @@ protected void init(String accessKey, String secretKey, String securityToken, Ob
7368
if (this.isAuthTypeNegotiation()) {
7469
this.getProviderCredentials().setIsAuthTypeNegotiation(true);
7570
}
76-
this.initHttpClient(config.getHttpDispatcher());
71+
this.initHttpClient(config.getHttpDispatcher(), config.getCustomizedDnsImpl());
7772
OBSXMLBuilder.setXmlDocumentBuilderFactoryClass(config.getXmlDocumentBuilderFactoryClass());
7873
reqBean.setRespTime(new Date());
7974
reqBean.setResultCode(Constants.RESULTCODE_SUCCESS);

app/src/main/java/com/obs/services/ObsConfiguration.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import com.obs.services.model.HttpProtocolTypeEnum;
2323

2424
import okhttp3.Dispatcher;
25+
import okhttp3.Dns;
2526

2627
import java.security.SecureRandom;
2728

@@ -96,6 +97,8 @@ public class ObsConfiguration implements Cloneable {
9697
private HttpProtocolTypeEnum httpProtocolType;
9798

9899
private Dispatcher httpDispatcher;
100+
101+
private Dns customizedDnsImpl;
99102

100103
private String xmlDocumentBuilderFactoryClass;
101104

@@ -878,6 +881,26 @@ public void setHttpDispatcher(Dispatcher httpDispatcher) {
878881
this.httpDispatcher = httpDispatcher;
879882
}
880883

884+
885+
/**
886+
* Obtain the customized Dns.
887+
*
888+
* @return customizedDnsImpl
889+
*
890+
*/
891+
public Dns getCustomizedDnsImpl() {
892+
return customizedDnsImpl;
893+
}
894+
895+
/**
896+
* set the customized Dns.
897+
*
898+
* @param customizedDnsImpl
899+
* Customized Dns
900+
*/
901+
public void setCustomizedDnsImpl(Dns customizedDnsImpl) {
902+
this.customizedDnsImpl = customizedDnsImpl;
903+
}
881904
public String getXmlDocumentBuilderFactoryClass() {
882905
return xmlDocumentBuilderFactoryClass;
883906
}

app/src/main/java/com/obs/services/internal/Constants.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ public static class ObsRequestParams {
213213

214214
public static final TimeZone GMT_TIMEZONE = TimeZone.getTimeZone("GMT");
215215

216-
public static final String OBS_SDK_VERSION = "3.23.9";
216+
public static final String OBS_SDK_VERSION = "3.23.9.1";
217217

218218
public static final String USER_AGENT_VALUE = "obs-sdk-java/" + Constants.OBS_SDK_VERSION;
219219

app/src/main/java/com/obs/services/internal/RestConnectionService.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import com.obs.services.internal.utils.ServiceUtils;
3333
import com.obs.services.model.HttpMethodEnum;
3434
import okhttp3.Dispatcher;
35+
import okhttp3.Dns;
3536
import okhttp3.OkHttpClient;
3637
import okhttp3.Request;
3738
import okhttp3.RequestBody;
@@ -55,10 +56,10 @@ public class RestConnectionService {
5556

5657
protected volatile ProviderCredentials credentials;
5758

58-
protected void initHttpClient(Dispatcher httpDispatcher) {
59+
protected void initHttpClient(Dispatcher httpDispatcher, Dns customizedDnsImpl) {
5960

6061
OkHttpClient.Builder builder = RestUtils.initHttpClientBuilder(obsProperties, keyManagerFactory,
61-
trustManagerFactory, httpDispatcher, credentials.getSecureRandom());
62+
trustManagerFactory, httpDispatcher, customizedDnsImpl, credentials.getSecureRandom());
6263

6364
if (this.obsProperties.getBoolProperty(ObsConstraint.PROXY_ISABLE, true)) {
6465
String proxyHostAddress = this.obsProperties.getStringProperty(ObsConstraint.PROXY_HOST, null);

app/src/main/java/com/obs/services/internal/utils/RestUtils.java

Lines changed: 53 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,37 @@
1414

1515
package com.obs.services.internal.utils;
1616

17+
import com.obs.log.ILogger;
18+
import com.obs.log.LoggerBuilder;
19+
import com.obs.services.exception.ObsException;
20+
import com.obs.services.internal.Constants;
21+
import com.obs.services.internal.Constants.CommonHeaders;
22+
import com.obs.services.internal.ObsConstraint;
23+
import com.obs.services.internal.ObsProperties;
24+
import com.obs.services.internal.ServiceException;
25+
import com.obs.services.internal.ext.ExtObsConstraint;
26+
import com.obs.services.model.HttpProtocolTypeEnum;
27+
import okhttp3.Authenticator;
28+
import okhttp3.ConnectionPool;
29+
import okhttp3.Credentials;
30+
import okhttp3.Dispatcher;
31+
import okhttp3.Dns;
32+
import okhttp3.OkHttpClient;
33+
import okhttp3.Protocol;
34+
import okhttp3.Request;
35+
import okhttp3.Response;
36+
import okhttp3.Route;
37+
import org.jetbrains.annotations.NotNull;
38+
39+
import javax.net.SocketFactory;
40+
import javax.net.ssl.HttpsURLConnection;
41+
import javax.net.ssl.KeyManager;
42+
import javax.net.ssl.KeyManagerFactory;
43+
import javax.net.ssl.SSLContext;
44+
import javax.net.ssl.SSLSocketFactory;
45+
import javax.net.ssl.TrustManager;
46+
import javax.net.ssl.TrustManagerFactory;
47+
import javax.net.ssl.X509TrustManager;
1748
import java.io.IOException;
1849
import java.io.UnsupportedEncodingException;
1950
import java.lang.reflect.Method;
@@ -36,38 +67,6 @@
3667
import java.util.regex.Matcher;
3768
import java.util.regex.Pattern;
3869

39-
import javax.net.SocketFactory;
40-
import javax.net.ssl.HttpsURLConnection;
41-
import javax.net.ssl.KeyManager;
42-
import javax.net.ssl.KeyManagerFactory;
43-
import javax.net.ssl.SSLContext;
44-
import javax.net.ssl.SSLSocketFactory;
45-
import javax.net.ssl.TrustManager;
46-
import javax.net.ssl.TrustManagerFactory;
47-
import javax.net.ssl.X509TrustManager;
48-
49-
import com.obs.log.ILogger;
50-
import com.obs.log.LoggerBuilder;
51-
import com.obs.services.exception.ObsException;
52-
import com.obs.services.internal.Constants;
53-
import com.obs.services.internal.Constants.CommonHeaders;
54-
import com.obs.services.internal.ObsConstraint;
55-
import com.obs.services.internal.ObsProperties;
56-
import com.obs.services.internal.ServiceException;
57-
import com.obs.services.internal.ext.ExtObsConstraint;
58-
import com.obs.services.model.HttpProtocolTypeEnum;
59-
60-
import okhttp3.Authenticator;
61-
import okhttp3.ConnectionPool;
62-
import okhttp3.Credentials;
63-
import okhttp3.Dispatcher;
64-
import okhttp3.Dns;
65-
import okhttp3.OkHttpClient;
66-
import okhttp3.Protocol;
67-
import okhttp3.Request;
68-
import okhttp3.Response;
69-
import okhttp3.Route;
70-
7170
public class RestUtils {
7271

7372
private static final ILogger log = LoggerBuilder.getLogger(RestUtils.class);
@@ -330,7 +329,7 @@ public Socket createSocket(InetAddress address, int port, InetAddress localAddre
330329

331330
public static OkHttpClient.Builder initHttpClientBuilder(ObsProperties obsProperties,
332331
KeyManagerFactory keyManagerFactory, TrustManagerFactory trustManagerFactory,
333-
Dispatcher httpDispatcher, SecureRandom secureRandom) {
332+
Dispatcher httpDispatcher, Dns customizedDnsImpl, SecureRandom secureRandom) {
334333

335334
List<Protocol> protocols = new ArrayList<Protocol>(2);
336335
protocols.add(Protocol.HTTP_1_1);
@@ -351,6 +350,8 @@ public static OkHttpClient.Builder initHttpClientBuilder(ObsProperties obsProper
351350
ObsConstraint.DEFAULT_IDLE_CONNECTION_TIME),
352351
TimeUnit.MILLISECONDS);
353352

353+
Dns dns = customizedDnsImpl == null ? new DefaultObsDns() : customizedDnsImpl;
354+
354355
builder.protocols(protocols).followRedirects(false).followSslRedirects(false)
355356
.retryOnConnectionFailure(
356357
obsProperties.getBoolProperty(ExtObsConstraint.IS_RETRY_ON_CONNECTION_FAILURE_IN_OKHTTP, false))
@@ -364,11 +365,7 @@ public static OkHttpClient.Builder initHttpClientBuilder(ObsProperties obsProper
364365
.connectionPool(pool)
365366
.hostnameVerifier((hostname, session) -> !obsProperties.getBoolProperty(ObsConstraint.HTTP_STRICT_HOSTNAME_VERIFICATION, false)
366367
|| HttpsURLConnection.getDefaultHostnameVerifier().verify(obsProperties.getStringProperty(ObsConstraint.END_POINT, ""), session))
367-
.dns(hostname -> {
368-
List<InetAddress> adds = Dns.SYSTEM.lookup(hostname);
369-
log.info("internet host address:" + adds);
370-
return adds;
371-
});
368+
.dns(dns);
372369

373370
int socketReadBufferSize = obsProperties.getIntProperty(ObsConstraint.SOCKET_READ_BUFFER_SIZE, -1);
374371
int socketWriteBufferSize = obsProperties.getIntProperty(ObsConstraint.SOCKET_WRITE_BUFFER_SIZE, -1);
@@ -479,4 +476,22 @@ public static String readBodyFromResponse(Response response) {
479476
}
480477
return body;
481478
}
479+
public static class DefaultObsDns implements Dns {
480+
public DefaultObsDns() {
481+
log.info("use Default Dns");
482+
}
483+
484+
/**
485+
* @param hostname
486+
* @return
487+
* @throws UnknownHostException
488+
*/
489+
@NotNull
490+
@Override
491+
public List<InetAddress> lookup(@NotNull String hostname) throws UnknownHostException {
492+
List<InetAddress> adds = Dns.SYSTEM.lookup(hostname);
493+
log.info("internet host address:" + adds);
494+
return adds;
495+
}
496+
}
482497
}

0 commit comments

Comments
 (0)