Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 76f1524

Browse files
committed
modify endpoint.xml
1 parent 4702c03 commit 76f1524

File tree

11 files changed

+1458
-4161
lines changed

11 files changed

+1458
-4161
lines changed

aliyun-java-sdk-core/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<groupId>com.aliyun</groupId>
44
<artifactId>aliyun-java-sdk-core</artifactId>
55
<packaging>jar</packaging>
6-
<version>3.0.6</version>
6+
<version>3.0.9</version>
77
<name>aliyun-java-sdk-core</name>
88
<url>http://www.aliyun.com</url>
99
<description>Aliyun Open API SDK for Java
@@ -72,4 +72,4 @@ http://www.aliyun.com</description>
7272
</plugin>
7373
</plugins>
7474
</build>
75-
</project>
75+
</project>

aliyun-java-sdk-core/src/main/java/com/aliyuncs/AcsRequest.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,14 @@
2626
import java.util.Map;
2727
import java.util.Map.Entry;
2828

29-
import com.aliyuncs.http.FormatType;
30-
import com.aliyuncs.http.HttpRequest;
31-
import com.aliyuncs.http.ProtocolType;
32-
import com.aliyuncs.regions.ProductDomain;
3329
import com.aliyuncs.auth.AcsURLEncoder;
3430
import com.aliyuncs.auth.Credential;
3531
import com.aliyuncs.auth.ISignatureComposer;
3632
import com.aliyuncs.auth.ISigner;
33+
import com.aliyuncs.http.FormatType;
34+
import com.aliyuncs.http.HttpRequest;
35+
import com.aliyuncs.http.ProtocolType;
36+
import com.aliyuncs.regions.ProductDomain;
3737

3838
public abstract class AcsRequest<T extends AcsResponse> extends HttpRequest {
3939

@@ -45,8 +45,8 @@ public abstract class AcsRequest<T extends AcsResponse> extends HttpRequest {
4545
private FormatType acceptFormat = null;
4646
protected ISignatureComposer composer = null;
4747
private ProtocolType protocol = ProtocolType.HTTP;
48-
private Map<String, String> queryParameters = new HashMap<String, String>();
49-
private Map<String, String> domainParameters = new HashMap<String, String>();
48+
private final Map<String, String> queryParameters = new HashMap<String, String>();
49+
private final Map<String, String> domainParameters = new HashMap<String, String>();
5050

5151
private String locationProduct;
5252
private String endpointType;
@@ -69,6 +69,7 @@ public String getLocationProduct() {
6969

7070
public void setLocationProduct(String locationProduct) {
7171
this.locationProduct = locationProduct;
72+
putQueryParameter("ServiceCode", locationProduct);
7273
}
7374

7475
public String getEndpointType() {
@@ -77,6 +78,7 @@ public String getEndpointType() {
7778

7879
public void setEndpointType(String endpointType) {
7980
this.endpointType = endpointType;
81+
putQueryParameter("Type", endpointType);
8082
}
8183

8284
public String getActionName() {
@@ -162,6 +164,7 @@ public String getSecurityToken() {
162164

163165
public void setSecurityToken(String securityToken) {
164166
this.securityToken = securityToken;
167+
putQueryParameter("SecurityToken", securityToken);
165168
}
166169

167170
public static String concatQueryString(Map<String, String> parameters)

aliyun-java-sdk-core/src/main/java/com/aliyuncs/DefaultAcsClient.java

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -79,18 +79,22 @@ public <T extends AcsResponse> HttpResponse doAction(AcsRequest<T> request, Stri
7979
ISigner signer = null;
8080
FormatType format = null;
8181
List<Endpoint> endpoints = null;
82+
if (null == request.getRegionId()) {
83+
request.setRegionId(regionId);
84+
}
8285
if (null != this.clientProfile) {
8386
signer = clientProfile.getSigner();
8487
format = clientProfile.getFormat();
8588
try {
86-
endpoints = clientProfile.getEndpoints(request.getProduct(), request.getLocationProduct(),
89+
endpoints = clientProfile.getEndpoints(request.getProduct(), request.getRegionId(),
90+
request.getLocationProduct(),
8791
request.getEndpointType());
8892
} catch (Throwable e) {
89-
endpoints = clientProfile.getEndpoints(regionId, request.getProduct());
93+
endpoints = clientProfile.getEndpoints(request.getRegionId(), request.getProduct());
9094
}
9195
}
9296

93-
return this.doAction(request, retry, retryNumber, regionId, credential, signer, format, endpoints);
97+
return this.doAction(request, retry, retryNumber, request.getRegionId(), credential, signer, format, endpoints);
9498
}
9599

96100
@Override
@@ -130,17 +134,21 @@ public <T extends AcsResponse> HttpResponse doAction(AcsRequest<T> request, bool
130134
boolean retry = autoRetry;
131135
int retryNumber = maxRetryCounts;
132136
String region = profile.getRegionId();
137+
if (null == request.getRegionId()) {
138+
request.setRegionId(region);
139+
}
133140
Credential credential = profile.getCredential();
134141
ISigner signer = profile.getSigner();
135142
FormatType format = profile.getFormat();
136143
List<Endpoint> endpoints;
137144
try {
138-
endpoints = clientProfile.getEndpoints(request.getProduct(), request.getLocationProduct(),
145+
endpoints = clientProfile.getEndpoints(request.getProduct(), request.getRegionId(),
146+
request.getLocationProduct(),
139147
request.getEndpointType());
140148
} catch (Throwable e) {
141-
endpoints = clientProfile.getEndpoints(region, request.getProduct());
149+
endpoints = clientProfile.getEndpoints(request.getRegionId(), request.getProduct());
142150
}
143-
return this.doAction(request, retry, retryNumber, region, credential, signer, format, endpoints);
151+
return this.doAction(request, retry, retryNumber, request.getRegionId(), credential, signer, format, endpoints);
144152
}
145153

146154
private <T extends AcsResponse> T parseAcsResponse(Class<T> clasz, HttpResponse baseResponse)
@@ -172,10 +180,7 @@ public <T extends AcsResponse> HttpResponse doAction(AcsRequest<T> request,
172180
if (null != requestFormatType){
173181
format = requestFormatType;
174182
}
175-
if(null == request.getRegionId()){
176-
request.setRegionId(regionId);
177-
}
178-
ProductDomain domain = Endpoint.findProductDomain(request.getRegionId(), request.getProduct(), endpoints);
183+
ProductDomain domain = Endpoint.findProductDomain(regionId, request.getProduct(), endpoints);
179184
if (null == domain){
180185
throw new ClientException("SDK.InvalidRegionId", "Can not find endpoint to access.");
181186
}

aliyun-java-sdk-core/src/main/java/com/aliyuncs/auth/Credential.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323

2424
public class Credential {
2525

26-
private Date refreshDate;
26+
private final Date refreshDate;
2727
private Date expiredDate;
2828
private String accessKeyId;
2929
private String accessSecret;
@@ -39,6 +39,13 @@ public Credential(String keyId, String secret) {
3939
this.refreshDate = new Date();
4040
}
4141

42+
public Credential(String keyId, String secret, String securityToken) {
43+
this.accessKeyId = keyId;
44+
this.accessSecret = secret;
45+
this.securityToken = securityToken;
46+
this.refreshDate = new Date();
47+
}
48+
4249
public Credential(String keyId, String secret, int expiredHours) {
4350
this.accessKeyId = keyId;
4451
this.accessSecret = secret;
@@ -47,6 +54,15 @@ public Credential(String keyId, String secret, int expiredHours) {
4754
setExpiredDate(expiredHours);
4855
}
4956

57+
public Credential(String keyId, String secret, String securityToken, int expiredHours) {
58+
this.accessKeyId = keyId;
59+
this.accessSecret = secret;
60+
this.securityToken = securityToken;
61+
this.refreshDate = new Date();
62+
63+
setExpiredDate(expiredHours);
64+
}
65+
5066
private void setExpiredDate(int expiredHours) {
5167
if (expiredHours > 0) {
5268
Calendar cal = Calendar.getInstance();

aliyun-java-sdk-core/src/main/java/com/aliyuncs/profile/DefaultProfile.java

Lines changed: 39 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,11 @@ public synchronized void setLocationConfig(String regionId, String product, Stri
127127
this.locationConfig = LocationConfig.createLocationConfig(regionId, product, endpoint);
128128
}
129129

130+
@Override
131+
public List<Endpoint> getEndpoints() throws ClientException {
132+
throw new UnsupportedOperationException();
133+
}
134+
130135
@Override
131136
public synchronized List<Endpoint> getEndpoints(String regionId, String product) throws ClientException {
132137
if (null == endpoints) {
@@ -154,7 +159,8 @@ public synchronized List<Endpoint> getEndpoints(String regionId, String product)
154159
// }
155160

156161
@Override
157-
public synchronized List<Endpoint> getEndpoints(String product,String serviceCode, String endpointType) throws ClientException {
162+
public synchronized List<Endpoint> getEndpoints(String product, String regionId, String serviceCode,
163+
String endpointType) throws ClientException {
158164
if (null == endpoints) {
159165
Endpoint endpoint = null;
160166
if (serviceCode != null) {
@@ -178,9 +184,9 @@ public synchronized List<Endpoint> getEndpoints(String product,String serviceCod
178184
endpoint = iendpoints.getEndpoint(regionId, product);
179185
}
180186
if (endpoint != null) {
181-
for (String regionId : endpoint.getRegionIds()) {
187+
for (String region : endpoint.getRegionIds()) {
182188
for (ProductDomain productDomain : endpoint.getProductDomains()) {
183-
addEndpoint(endpoint.getName(), regionId, product, productDomain.getDomianName());
189+
addEndpoint(endpoint.getName(), region, product, productDomain.getDomianName());
184190
}
185191
}
186192
}
@@ -207,13 +213,21 @@ public synchronized static DefaultProfile getProfile(String regionId, String acc
207213
return profile;
208214
}
209215

216+
public synchronized static DefaultProfile getProfile(String regionId, String accessKeyId, String secret,
217+
String stsToken) {
218+
Credential creden = new Credential(accessKeyId, secret, stsToken);
219+
profile = new DefaultProfile(regionId, creden);
220+
return profile;
221+
}
222+
210223
/**
211-
* regionId,eg: cn-hangzhou
212-
* productDomainMap,eg:
213-
* Map<String, String> productDomainMap= new HashMap<String,String>();
214-
* productDomainMap.put("ecs","ecs.aliyuncs.com")
215-
* accessKeyId
216-
* secret
224+
* <pre>
225+
* 给个性化用户使用的,CustomizedEndpointsParser 通过这个去解析endpoint,
226+
* 非本地和location;所以一般情况不要使用这个 regionId,
227+
* </pre>
228+
* eg: cn-hangzhou productDomainMap,eg: Map<String, String>
229+
* productDomainMap= new HashMap<String,String>();
230+
* productDomainMap.put("ecs","ecs.aliyuncs.com") accessKeyId secret
217231
*/
218232
public synchronized static DefaultProfile getProfile(String regionId, Map<String, String> productDomainMap,
219233
String accessKeyId, String secret) {
@@ -223,13 +237,28 @@ public synchronized static DefaultProfile getProfile(String regionId, Map<String
223237
return profile;
224238
}
225239

240+
public synchronized static DefaultProfile getProfile(String regionId, Map<String, String> productDomainMap,
241+
String accessKeyId, String secret, String stsToken) {
242+
Credential creden = new Credential(accessKeyId, secret, stsToken);
243+
IEndpointsProvider provider = CustomizedEndpointsParser.initParser(regionId, productDomainMap);
244+
profile = new DefaultProfile(regionId, creden, provider);
245+
return profile;
246+
}
247+
226248
public synchronized static DefaultProfile getProfile(String regionId, IEndpointsProvider provider,
227249
String accessKeyId, String secret) {
228250
Credential creden = new Credential(accessKeyId, secret);
229251
profile = new DefaultProfile(regionId, creden, provider);
230252
return profile;
231253
}
232254

255+
public synchronized static DefaultProfile getProfile(String regionId, IEndpointsProvider provider,
256+
String accessKeyId, String secret, String stsToken) {
257+
Credential creden = new Credential(accessKeyId, secret, stsToken);
258+
profile = new DefaultProfile(regionId, creden, provider);
259+
return profile;
260+
}
261+
233262
public synchronized static void addEndpoint(String endpointName, String regionId, String product, String domain)
234263
throws ClientException {
235264
if (null == endpoints) {
@@ -291,4 +320,5 @@ private static ProductDomain findProductDomain(List<ProductDomain> productDomain
291320
return null;
292321
}
293322

323+
294324
}

aliyun-java-sdk-core/src/main/java/com/aliyuncs/profile/IClientProfile.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,10 @@ public interface IClientProfile {
3838

3939
public void setLocationConfig(String regionId, String product, String endpoint);
4040

41+
public List<Endpoint> getEndpoints() throws ClientException;
42+
4143
public List<Endpoint> getEndpoints(String regionId, String product) throws ClientException;
4244

43-
public List<Endpoint> getEndpoints(String product, String serviceCode, String endpointType) throws ClientException;
45+
public List<Endpoint> getEndpoints(String product, String regionId, String serviceCode, String endpointType)
46+
throws ClientException;
4447
}

aliyun-java-sdk-core/src/main/java/com/aliyuncs/regions/CustomizedEndpointsParser.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public Endpoint getEndpoint(String regionId, String product) throws ClientExcept
2222
for (String region : endpoint.getRegionIds()) {
2323
if (region.equals(regionId)) {
2424
for (ProductDomain productDomain : endpoint.getProductDomains()) {
25-
if (productDomain.equals(product)) {
25+
if (productDomain.getProductName().equals(product)) {
2626
return this.endpoint;
2727
}
2828
}

aliyun-java-sdk-core/src/main/java/com/aliyuncs/regions/DescribeEndpointRequest.java

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,11 @@
77
*/
88
public class DescribeEndpointRequest extends RpcAcsRequest<DescribeEndpointResponse> {
99
public DescribeEndpointRequest() {
10-
super("Location", "2015-06-12", "DescribeEndpoint");
10+
super("Location", "2015-06-12", "DescribeEndpoints");
1111
}
1212

1313
private String id;
1414

15-
private String serviceCode;
16-
1715
private String password;
1816

1917
public String getId() {
@@ -25,14 +23,6 @@ public void setId(String id) {
2523
putQueryParameter("Id", id);
2624
}
2725

28-
public String getLocationProduct() {
29-
return this.serviceCode;
30-
}
31-
32-
public void setServiceCode(String serviceCode) {
33-
this.serviceCode = serviceCode;
34-
putQueryParameter("ServiceCode", serviceCode);
35-
}
3626

3727
public String getPassword() {
3828
return this.password;
@@ -48,4 +38,5 @@ public Class<DescribeEndpointResponse> getResponseClass() {
4838
return DescribeEndpointResponse.class;
4939
}
5040

41+
5142
}

aliyun-java-sdk-core/src/main/java/com/aliyuncs/regions/DescribeEndpointServiceImpl.java

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,24 @@
11
package com.aliyuncs.regions;
22

3+
import java.io.UnsupportedEncodingException;
4+
35
import com.aliyuncs.AcsError;
46
import com.aliyuncs.auth.Credential;
57
import com.aliyuncs.auth.ISigner;
68
import com.aliyuncs.auth.ShaHmac1Singleton;
79
import com.aliyuncs.exceptions.ClientException;
8-
import com.aliyuncs.exceptions.ServerException;
910
import com.aliyuncs.http.FormatType;
1011
import com.aliyuncs.http.HttpRequest;
1112
import com.aliyuncs.http.HttpResponse;
1213
import com.aliyuncs.reader.Reader;
1314
import com.aliyuncs.reader.ReaderFactory;
1415
import com.aliyuncs.transform.UnmarshallerContext;
1516

16-
import java.io.UnsupportedEncodingException;
17-
import java.util.Map;
18-
import java.util.concurrent.ConcurrentHashMap;
19-
2017
/**
2118
* Created by hi.yan.li on 2016/4/26.
2219
*/
2320
public class DescribeEndpointServiceImpl implements DescribeEndpointService {
21+
private static final String DEFAULT_ENDPOINT_TYPE = "openAPI";
2422

2523
private boolean isEmpty(String str) {
2624
return ((str == null) || (str.length() == 0));
@@ -37,7 +35,9 @@ public DescribeEndpointResponse describeEndpoint(String regionId, String service
3735
request.setAcceptFormat(FormatType.JSON);
3836
request.setId(regionId);
3937
request.setRegionId(locationConfig.getRegionId());
40-
request.setServiceCode(serviceCode);
38+
request.setLocationProduct(serviceCode);
39+
request.setSecurityToken(credential.getSecurityToken());
40+
request.setEndpointType(DEFAULT_ENDPOINT_TYPE);
4141

4242
ISigner signer = ShaHmac1Singleton.INSTANCE.getInstance();
4343
ProductDomain domain = new ProductDomain(locationConfig.getProduct(), locationConfig.getEndpoint());
@@ -71,13 +71,23 @@ public DescribeEndpointResponse describeEndpoint(String regionId, String service
7171
private DescribeEndpointResponse getEndpointResponse(String data) throws ClientException {
7272
Reader reader = ReaderFactory.createInstance(FormatType.JSON);
7373
UnmarshallerContext context = new UnmarshallerContext();
74-
DescribeEndpointResponse response = new DescribeEndpointResponse();
75-
context.setResponseMap(reader.read(data, "DescribeEndpointResponse"));
76-
response.setRequestId(context.stringValue("DescribeEndpointResponse.RequestId"));
77-
response.setProduct(context.stringValue("DescribeEndpointResponse.SerivceCode"));
78-
response.setEndpoint(context.stringValue("DescribeEndpointResponse.Endpoint"));
79-
response.setRegionId(context.stringValue("DescribeEndpointResponse.Id"));
80-
return response;
74+
75+
context.setResponseMap(reader.read(data, "DescribeEndpointsResponse"));
76+
77+
int endpointsLength = context.lengthValue("DescribeEndpointsResponse.Endpoints.Length");
78+
for (int i = 0; i < endpointsLength; i++) {
79+
if (DEFAULT_ENDPOINT_TYPE.equalsIgnoreCase(context.stringValue("DescribeEndpointsResponse.Endpoints[" + i
80+
+ "].Type"))) {
81+
DescribeEndpointResponse response = new DescribeEndpointResponse();
82+
83+
response.setRequestId(context.stringValue("DescribeEndpointsResponse.RequestId"));
84+
response.setProduct(context.stringValue("DescribeEndpointsResponse.Endpoints[" + i + "].SerivceCode"));
85+
response.setEndpoint(context.stringValue("DescribeEndpointsResponse.Endpoints[" + i + "].Endpoint"));
86+
response.setRegionId(context.stringValue("DescribeEndpointsResponse.Endpoints[" + i + "].Id"));
87+
return response;
88+
}
89+
}
90+
return null;
8191
}
8292

8393
private AcsError readError(HttpResponse httpResponse, FormatType format) throws ClientException {

0 commit comments

Comments
 (0)