This is an automated email from the ASF dual-hosted git repository.
liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git
The following commit(s) were added to refs/heads/master by this push:
new c84a366 [SCB-1571]set tenantName parameter and add exceptions handle
c84a366 is described below
commit c84a36696649b72be993bde1ccc7ad25992f6629
Author: zhouzhongyuan <[email protected]>
AuthorDate: Fri Nov 8 16:47:42 2019 +0800
[SCB-1571]set tenantName parameter and add exceptions handle
---
.../service/center/client/ServiceCenterClient.java | 168 +++++++++++++--------
.../center/client/ServiceCenterRawClient.java | 96 ++++++------
.../OperationException.java} | 89 ++++++-----
.../service/center/client/http/HttpRequest.java | 75 ++++++++-
.../service/center/client/http/HttpTransport.java | 4 +-
.../center/client/http/HttpTransportImpl.java | 46 ++----
.../center/client/HttpTransportImplTest.java | 2 +-
.../center/client/ServiceCenterRawClientTest.java | 12 +-
8 files changed, 287 insertions(+), 205 deletions(-)
diff --git
a/client/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterClient.java
b/client/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterClient.java
index df4a372..5b0b30d 100755
---
a/client/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterClient.java
+++
b/client/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterClient.java
@@ -23,6 +23,7 @@ import java.util.Map;
import org.apache.http.HttpStatus;
import org.apache.http.client.utils.URIBuilder;
+import
org.apache.servicecomb.service.center.client.exception.OperationException;
import org.apache.servicecomb.service.center.client.http.HttpResponse;
import org.apache.servicecomb.service.center.client.http.HttpTransport;
import org.apache.servicecomb.service.center.client.http.HttpTransportFactory;
@@ -71,7 +72,7 @@ public class ServiceCenterClient {
* @param extraGlobalHeaders
*/
public ServiceCenterClient(Map<String, String> extraGlobalHeaders) {
- this(null, 0, null, null, extraGlobalHeaders);
+ this(null, 0, null, null, null, extraGlobalHeaders);
}
/**
@@ -80,7 +81,7 @@ public class ServiceCenterClient {
* @param extraGlobalHeaders
*/
public ServiceCenterClient(TLSConfig tlsConfig, Map<String, String>
extraGlobalHeaders) {
- this(null, 0, null, tlsConfig, extraGlobalHeaders);
+ this(null, 0, null, null, tlsConfig, extraGlobalHeaders);
}
/**
@@ -89,25 +90,31 @@ public class ServiceCenterClient {
* @param port
*/
public ServiceCenterClient(String host, int port) {
- this(host, port, null, null, null);
+ this(host, port, null, null, null, null);
}
/**
- * Customized host,port,domainName,TLSConf, headers and any one parameter
can be null.
+ * Customized host, port, projectName, tenantName, TLSConf, headers and any
one parameter can be null.
* @param host
* @param port
- * @param domainName
+ * @param projectName
+ * @param tenantName
* @param tlsConfig
* @param extraGlobalHeaders
*/
- public ServiceCenterClient(String host, int port, String domainName,
TLSConfig tlsConfig,
+ public ServiceCenterClient(String host, int port, String projectName, String
tenantName, TLSConfig tlsConfig,
Map<String, String> extraGlobalHeaders) {
HttpTransport httpTransport =
HttpTransportFactory.getDefaultHttpTransport();
if (tlsConfig != null) {
httpTransport = new TLSHttpsTransport(tlsConfig);
}
httpTransport.addHeaders(extraGlobalHeaders);
- this.httpClient = new
ServiceCenterRawClient.Builder().setHost(host).setPort(port).setDomainName(domainName)
+
+ this.httpClient = new ServiceCenterRawClient.Builder()
+ .setHost(host)
+ .setPort(port)
+ .setProjectName(projectName)
+ .setTenantName(tenantName)
.setHttpTransport(httpTransport).build();
}
@@ -118,7 +125,8 @@ public class ServiceCenterClient {
/**
* Get service-center instances message
*
- * @return MicroserviceInstancesResponse; when error happens,return null
+ * @return MicroserviceInstancesResponse
+ * @throws OperationException
*/
public MicroserviceInstancesResponse getServiceCenterInstances() {
try {
@@ -127,20 +135,23 @@ public class ServiceCenterClient {
ObjectMapper mapper = new ObjectMapper();
return mapper.readValue(response.getContent(),
MicroserviceInstancesResponse.class);
} else {
- LOGGER.error("get service-center instances fails,
responseStatusCode={}, responseMessage={}, responseContent{}",
- response.getStatusCode(), response.getMessage(),
response.getContent());
+ throw new OperationException(
+ "get service-center instances fails, statusCode = " +
response.getStatusCode() + "; message = " + response
+ .getMessage()
+ + "; content = " + response.getContent());
}
} catch (IOException e) {
- LOGGER.error("get service-center instances fails", e);
+ throw new OperationException(
+ "get service-center instances fails", e);
}
- return null;
}
/**
* Register microservice to service-center
*
* @param microservice
- * @return serviceId ; when error happens,return null
+ * @return serviceId
+ * @throws OperationException
*/
public String registerMicroservice(Microservice microservice) {
try {
@@ -151,19 +162,22 @@ public class ServiceCenterClient {
if (response.getStatusCode() == HttpStatus.SC_OK) {
return response.getContent();
} else {
- LOGGER.error("register service fails, responseStatusCode={},
responseMessage={}, responseContent{}",
- response.getStatusCode(), response.getMessage(),
response.getContent());
+ throw new OperationException(
+ "register service fails, statusCode = " + response.getStatusCode()
+ "; message = " + response
+ .getMessage()
+ + "; content = " + response.getContent());
}
} catch (IOException e) {
- LOGGER.error("register service fails", e);
+ throw new OperationException(
+ "register service fails", e);
}
- return null;
}
/**
* find all registerd microservice of service-center
*
- * @return MicroserviceResponse ; when error happens,return null
+ * @return MicroserviceResponse
+ * @throws OperationException
*/
public MicroservicesResponse getMicroserviceList() {
try {
@@ -173,19 +187,23 @@ public class ServiceCenterClient {
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,
false);
return mapper.readValue(response.getContent(),
MicroservicesResponse.class);
} else {
- LOGGER.error("get service List fails, responseStatusCode={},
responseMessage={}, responseContent{}",
- response.getStatusCode(), response.getMessage(),
response.getContent());
+ throw new OperationException(
+ "get service List fails, statusCode = " + response.getStatusCode()
+ "; message = " + response
+ .getMessage()
+ + "; content = " + response.getContent());
}
} catch (IOException e) {
- LOGGER.error("get service List fails", e);
+ throw new OperationException(
+ "get service List fails", e);
}
- return null;
}
/**
- * query serviceId
+ * query serviceId, temporary only supports Microservice type
+ *
* @param microservice
- * @return serviceId ; when error happens,return null
+ * @return serviceId
+ * @throws OperationException
*/
public String queryServiceId(Microservice microservice) {
try {
@@ -199,20 +217,26 @@ public class ServiceCenterClient {
if (response.getStatusCode() == HttpStatus.SC_OK) {
return response.getContent();
} else {
- LOGGER.error("query serviceId fails, responseStatusCode={},
responseMessage={}, responseContent{}",
- response.getStatusCode(), response.getMessage(),
response.getContent());
+ throw new OperationException(
+ "query serviceId fails, statusCode = " + response.getStatusCode()
+ "; message = " + response
+ .getMessage()
+ + "; content = " + response.getContent());
}
- } catch (IOException | URISyntaxException e) {
- LOGGER.error("query serviceId fails", e);
+ } catch (IOException e) {
+ throw new OperationException(
+ "query serviceId fails", e);
+ } catch (URISyntaxException e) {
+ throw new OperationException(
+ "build url failed.", e);
}
- return null;
}
/**
* Get one microservice message of service-center
*
* @param serviceId
- * @return Microservice ; when error happens,return null
+ * @return Microservice
+ * @throws OperationException
*/
@SuppressWarnings("unchecked")
public Microservice getMicroserviceByServiceId(String serviceId) {
@@ -224,13 +248,15 @@ public class ServiceCenterClient {
JsonNode jsonNode = mapper.readTree(response.getContent());
return mapper.readValue(jsonNode.get("service").toString(),
Microservice.class);
} else {
- LOGGER.error("get service message fails, responseStatusCode={},
responseMessage={}, responseContent{}",
- response.getStatusCode(), response.getMessage(),
response.getContent());
+ throw new OperationException(
+ "get service message fails, statusCode = " +
response.getStatusCode() + "; message = " + response
+ .getMessage()
+ + "; content = " + response.getContent());
}
} catch (IOException e) {
- LOGGER.error("get service message fails", e);
+ throw new OperationException(
+ "get service message fails", e);
}
- return null;
}
/**
@@ -238,7 +264,8 @@ public class ServiceCenterClient {
*
* @param instance
* @param serviceId
- * @return service instanceId ; when error happens,return null
+ * @return instanceId
+ * @throws OperationException
*/
public String registerMicroserviceInstance(MicroserviceInstance instance,
String serviceId) {
try {
@@ -249,20 +276,23 @@ public class ServiceCenterClient {
if (response.getStatusCode() == HttpStatus.SC_OK) {
return response.getContent();
} else {
- LOGGER.error("register service instance fails, responseStatusCode={},
responseMessage={}, responseContent{}",
- response.getStatusCode(), response.getMessage(),
response.getContent());
+ throw new OperationException(
+ "register service instance fails, statusCode = " +
response.getStatusCode() + "; message = " + response
+ .getMessage()
+ + "; content = " + response.getContent());
}
} catch (IOException e) {
- LOGGER.error("register service instance fails", e);
+ throw new OperationException(
+ "register service instance fails", e);
}
- return null;
}
/**
* Find microservice instances of service-center
*
* @param serviceId
- * @return MicroserviceInstancesResponse ; when error happens,return null
+ * @return MicroserviceInstancesResponse
+ * @throws OperationException
*/
public MicroserviceInstancesResponse getMicroserviceInstanceList(String
serviceId) {
try {
@@ -272,13 +302,15 @@ public class ServiceCenterClient {
ObjectMapper mapper = new ObjectMapper();
return mapper.readValue(response.getContent(),
MicroserviceInstancesResponse.class);
} else {
- LOGGER.error("get service instances list fails, responseStatusCode={},
responseMessage={}, responseContent{}",
- response.getStatusCode(), response.getMessage(),
response.getContent());
+ throw new OperationException(
+ "get service instances list fails, statusCode = " +
response.getStatusCode() + "; message = " + response
+ .getMessage()
+ + "; content = " + response.getContent());
}
} catch (IOException e) {
- LOGGER.error("get service instance list fails", e);
+ throw new OperationException(
+ "get service instances list fails", e);
}
- return null;
}
/**
@@ -286,7 +318,8 @@ public class ServiceCenterClient {
*
* @param serviceId
* @param instanceId
- * @return MicroserviceInstance; when error happens,return null
+ * @return MicroserviceInstance
+ * @throws OperationException
*/
@SuppressWarnings("unchecked")
public MicroserviceInstance getMicroserviceInstance(String serviceId, String
instanceId) {
@@ -298,13 +331,15 @@ public class ServiceCenterClient {
JsonNode jsonNode = mapper.readTree(response.getContent());
return mapper.readValue(jsonNode.get("instance").toString(),
MicroserviceInstance.class);
} else {
- LOGGER.error("get service instance message fails,
responseStatusCode={}, responseMessage={}, responseContent{}",
- response.getStatusCode(), response.getMessage(),
response.getContent());
+ throw new OperationException(
+ "get service instance message fails, statusCode = " +
response.getStatusCode() + "; message = " + response
+ .getMessage()
+ + "; content = " + response.getContent());
}
} catch (IOException e) {
- LOGGER.error("get service instance message fails", e);
+ throw new OperationException(
+ "get service instance message fails", e);
}
- return null;
}
/**
@@ -313,6 +348,7 @@ public class ServiceCenterClient {
* @param serviceId
* @param instanceId
* @return
+ * @throws OperationException
*/
public void deleteMicroserviceInstance(String serviceId, String instanceId) {
try {
@@ -321,11 +357,14 @@ public class ServiceCenterClient {
if (response.getStatusCode() == HttpStatus.SC_OK) {
LOGGER.info("DELETE SERVICE INSTANCE OK");
} else {
- LOGGER.error("delete service instance fails, responseStatusCode={},
responseMessage={}, responseContent{}",
- response.getStatusCode(), response.getMessage(),
response.getContent());
+ throw new OperationException(
+ "delete service instance fails, statusCode = " +
response.getStatusCode() + "; message = " + response
+ .getMessage()
+ + "; content = " + response.getContent());
}
} catch (IOException e) {
- LOGGER.error("delete service instance fails", e);
+ throw new OperationException(
+ "delete service instance fails", e);
}
}
@@ -335,7 +374,8 @@ public class ServiceCenterClient {
* @param serviceId
* @param instanceId
* @param status
- * @return
+ * @return true
+ * @throws OperationException
*/
public boolean updateMicroserviceInstanceStatus(String serviceId, String
instanceId,
MicroserviceInstanceStatus status) {
@@ -346,14 +386,15 @@ public class ServiceCenterClient {
LOGGER.info("UPDATE STATUS OK");
return true;
} else {
- LOGGER
- .error("update service instance status fails,
responseStatusCode={}, responseMessage={}, responseContent{}",
- response.getStatusCode(), response.getMessage(),
response.getContent());
+ throw new OperationException(
+ "update service instance status fails, statusCode = " +
response.getStatusCode() + "; message = " + response
+ .getMessage()
+ + "; content = " + response.getContent());
}
} catch (IOException e) {
- LOGGER.error("update service instance status fails", e);
+ throw new OperationException(
+ "update service instance status fails", e);
}
- return false;
}
/**
@@ -361,6 +402,7 @@ public class ServiceCenterClient {
*
* @param heartbeatsRequest
* @return
+ * @throws OperationException
*/
public void sendHeartBeats(HeartbeatsRequest heartbeatsRequest) {
try {
@@ -369,13 +411,15 @@ public class ServiceCenterClient {
.putHttpRequest("/registry/heartbeats", null,
mapper.writeValueAsString(heartbeatsRequest));
if (response.getStatusCode() == HttpStatus.SC_OK) {
- LOGGER.info("SEND HEARTBEATS OK");
+ LOGGER.info("HEARTBEATS SUCCESS");
} else {
- LOGGER.error("send heartbeats fails, responseStatusCode={},
responseMessage={}, responseContent{}",
- response.getStatusCode(), response.getMessage(),
response.getContent());
+ throw new OperationException(
+ "heartbeats fails, statusCode = " + response.getStatusCode() + ";
message = " + response.getMessage()
+ + "; content = " + response.getContent());
}
} catch (IOException e) {
- LOGGER.error("send heartbeats fails", e);
+ throw new OperationException(
+ "heartbeats fails ", e);
}
}
}
diff --git
a/client/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterRawClient.java
b/client/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterRawClient.java
index e503056..741ed89 100755
---
a/client/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterRawClient.java
+++
b/client/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/ServiceCenterRawClient.java
@@ -37,29 +37,38 @@ public class ServiceCenterRawClient {
private static final int DEFAULT_PORT = 30100;
- private static final String DOMAIN_NAME = "default";
+ private static final String PROJECT_NAME = "default";
private static final String V4_PREFIX = "v4";
+ private static final String HEADER_TENANT_NAME = "x-domain-name";
+
+ private static final String DEFAULT_HEADER_TENANT_NAME = "default";
+
private String basePath;
private String host;
private int port;
- private String domainName;
+ private String projectName;
+
+ private String tenantName;
private HttpTransport httpTransport;
public ServiceCenterRawClient() {
- this(DEFAULT_HOST, DEFAULT_PORT, DOMAIN_NAME,
HttpTransportFactory.getDefaultHttpTransport());
+ this(DEFAULT_HOST, DEFAULT_PORT, PROJECT_NAME,
HttpTransportFactory.getDefaultHttpTransport(),
+ DEFAULT_HEADER_TENANT_NAME);
}
- private ServiceCenterRawClient(String host, int port, String domainName,
HttpTransport httpTransport) {
+ private ServiceCenterRawClient(String host, int port, String projectName,
HttpTransport httpTransport,
+ String tenantName) {
this.host = host;
this.port = port;
- this.domainName = domainName;
+ this.projectName = projectName;
this.httpTransport = httpTransport;
+ this.tenantName = tenantName;
// check that host has scheme or not
String hostLowercase = host.toLowerCase();
@@ -72,59 +81,34 @@ public class ServiceCenterRawClient {
}
}
- this.basePath = host + ":" + port + "/" + V4_PREFIX + "/" + domainName;
+ this.basePath = host + ":" + port + "/" + V4_PREFIX + "/" + projectName;
}
public HttpResponse getHttpRequest(String url, Map<String, String> headers,
String content) throws IOException {
-
- if (headers == null) {
- headers = new HashMap<String, String>();
- }
-
- HttpRequest httpRequest = new HttpRequest(basePath + url, headers,
content);
-
- return httpTransport.get(httpRequest);
+ return doHttpRequest(url, headers, content, HttpRequest.GET);
}
public HttpResponse postHttpRequest(String url, Map<String, String> headers,
String content) throws IOException {
-
- if (headers == null) {
- headers = new HashMap<String, String>();
- }
-
- HttpRequest httpRequest = new HttpRequest(basePath + url, headers,
content);
-
- return httpTransport.post(httpRequest);
+ return doHttpRequest(url, headers, content, HttpRequest.POST);
}
public HttpResponse putHttpRequest(String url, Map<String, String> headers,
String content) throws IOException {
-
- if (headers == null) {
- headers = new HashMap<String, String>();
- }
-
- HttpRequest httpRequest = new HttpRequest(basePath + url, headers,
content);
-
- return httpTransport.put(httpRequest);
+ return doHttpRequest(url, headers, content, HttpRequest.PUT);
}
public HttpResponse deleteHttpRequest(String url, Map<String, String>
headers, String content) throws IOException {
+ return doHttpRequest(url, headers, content, HttpRequest.DELETE);
+ }
+ private HttpResponse doHttpRequest(String url, Map<String, String> headers,
String content, String method)
+ throws IOException {
if (headers == null) {
- headers = new HashMap<String, String>();
+ headers = new HashMap<>();
}
+ headers.put(HEADER_TENANT_NAME, tenantName);
+ HttpRequest httpRequest = new HttpRequest(basePath + url, headers,
content, method);
- HttpRequest httpRequest = new HttpRequest(basePath + url, headers,
content);
-
- return httpTransport.delete(httpRequest);
- }
-
- public HttpTransport getHttpTransport() {
- return httpTransport;
- }
-
- public void setHttpTransport(HttpTransport httpTransport) {
- this.httpTransport = httpTransport;
+ return httpTransport.doRequest(httpRequest);
}
public static class Builder {
@@ -132,25 +116,28 @@ public class ServiceCenterRawClient {
private int port;
- private String domainName;
+ private String projectName;
+
+ private String tenantName;
private HttpTransport httpTransport =
HttpTransportFactory.getDefaultHttpTransport();
public Builder() {
this.host = DEFAULT_HOST;
this.port = DEFAULT_PORT;
- this.domainName = DOMAIN_NAME;
+ this.projectName = PROJECT_NAME;
+ this.tenantName = DEFAULT_HEADER_TENANT_NAME;
}
- public String getDomainName() {
- return domainName;
+ public String getProjectName() {
+ return projectName;
}
- public Builder setDomainName(String domain_name) {
- if (domain_name == null) {
- domain_name = DOMAIN_NAME;
+ public Builder setProjectName(String projectName) {
+ if (projectName == null) {
+ projectName = PROJECT_NAME;
}
- this.domainName = domain_name;
+ this.projectName = projectName;
return this;
}
@@ -192,9 +179,16 @@ public class ServiceCenterRawClient {
return this;
}
+ public Builder setTenantName(String tenantName) {
+ if (tenantName == null) {
+ tenantName = DEFAULT_HEADER_TENANT_NAME;
+ }
+ this.tenantName = tenantName;
+ return this;
+ }
public ServiceCenterRawClient build() {
- return new ServiceCenterRawClient(host, port, domainName, httpTransport);
+ return new ServiceCenterRawClient(host, port, projectName,
httpTransport, tenantName);
}
}
}
diff --git
a/client/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/http/HttpRequest.java
b/client/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/exception/OperationException.java
old mode 100755
new mode 100644
similarity index 57%
copy from
client/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/http/HttpRequest.java
copy to
client/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/exception/OperationException.java
index 24397b0..95cb1a7
---
a/client/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/http/HttpRequest.java
+++
b/client/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/exception/OperationException.java
@@ -1,47 +1,42 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.servicecomb.service.center.client.http;
-
-import java.util.Map;
-
-public class HttpRequest {
-
- private String url;
-
- private Map<String, String> headers;
-
- private String content;
-
- public HttpRequest(String url, Map<String, String> headers, String content) {
- this.url = url;
- this.headers = headers;
- this.content = content;
- }
-
- public String getUrl() {
- return url;
- }
-
- public Map<String, String> getHeaders() {
- return headers;
- }
-
- public String getContent() {
- return content;
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.servicecomb.service.center.client.exception;
+
+public class OperationException extends RuntimeException {
+
+ private static final long serialVersionUID = 1L;
+
+ public OperationException() {
+ }
+
+ public OperationException(String message) {
+ super(message);
+ }
+
+ public OperationException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public OperationException(Throwable cause) {
+ super(cause);
+ }
+
+ public OperationException(String message, Throwable cause, boolean
enableSuppression, boolean writableStackTrace) {
+ super(message, cause, enableSuppression, writableStackTrace);
+ }
+}
diff --git
a/client/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/http/HttpRequest.java
b/client/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/http/HttpRequest.java
index 24397b0..d10034c 100755
---
a/client/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/http/HttpRequest.java
+++
b/client/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/http/HttpRequest.java
@@ -17,20 +17,41 @@
package org.apache.servicecomb.service.center.client.http;
+import java.util.HashMap;
import java.util.Map;
+import java.util.Optional;
+
+import org.apache.http.client.methods.HttpDelete;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.client.methods.HttpPut;
+import org.apache.http.client.methods.HttpUriRequest;
+import org.apache.http.client.methods.RequestBuilder;
+import org.apache.http.entity.StringEntity;
public class HttpRequest {
+ public static final String GET = "GET";
+
+ public static final String POST = "POST";
+
+ public static final String DELETE = "DELETE";
+
+ public static final String PUT = "PUT";
+
+ private String method;
+
private String url;
private Map<String, String> headers;
private String content;
- public HttpRequest(String url, Map<String, String> headers, String content) {
+ public HttpRequest(String url, Map<String, String> headers, String content,
String method) {
this.url = url;
this.headers = headers;
this.content = content;
+ this.method = method;
}
public String getUrl() {
@@ -41,7 +62,59 @@ public class HttpRequest {
return headers;
}
+ public void addHeader(String name, String value) {
+ if (headers == null) {
+ headers = new HashMap<>();
+ }
+ headers.put(name, value);
+ }
+
public String getContent() {
return content;
}
+
+ public String getMethod() {
+ return method;
+ }
+
+ public void setMethod(String method) {
+ this.method = method;
+ }
+
+ public HttpUriRequest getRealRequest() {
+
+ HttpUriRequest httpUriRequest = null;
+
+ switch (method) {
+ case GET: {
+ httpUriRequest = new HttpGet(url);
+ break;
+ }
+ case POST: {
+ httpUriRequest = new HttpPost(url);
+ if (content != null) {
+ ((HttpPost) httpUriRequest).setEntity(new StringEntity(content,
"UTF-8"));
+ }
+ break;
+ }
+ case DELETE: {
+ httpUriRequest = new HttpDelete(url);
+ break;
+ }
+ case PUT: {
+ httpUriRequest = new HttpPut(url);
+ if (content != null) {
+ ((HttpPut) httpUriRequest).setEntity(new StringEntity(content,
"UTF-8"));
+ }
+ break;
+ }
+ default: {
+ httpUriRequest = RequestBuilder.create(method).build();
+ }
+ }
+
+ Optional.ofNullable(httpUriRequest).ifPresent(request ->
headers.forEach(request::addHeader));
+
+ return httpUriRequest;
+ }
}
diff --git
a/client/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/http/HttpTransport.java
b/client/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/http/HttpTransport.java
index 802de7e..2ec7992 100755
---
a/client/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/http/HttpTransport.java
+++
b/client/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/http/HttpTransport.java
@@ -20,8 +20,6 @@ package org.apache.servicecomb.service.center.client.http;
import java.io.IOException;
import java.util.Map;
-import org.apache.http.client.methods.HttpUriRequest;
-
/**
* Created by on 2019/10/16.
*/
@@ -35,7 +33,7 @@ public interface HttpTransport {
HttpResponse delete(HttpRequest request) throws IOException;
- HttpResponse doRequest(HttpUriRequest httpRequest) throws IOException;
+ HttpResponse doRequest(HttpRequest request) throws IOException;
void addHeaders(Map<String, String> headers);
}
diff --git
a/client/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/http/HttpTransportImpl.java
b/client/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/http/HttpTransportImpl.java
index 1bbd87e..fce9bb7 100755
---
a/client/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/http/HttpTransportImpl.java
+++
b/client/service-center-client/src/main/java/org/apache/servicecomb/service/center/client/http/HttpTransportImpl.java
@@ -21,12 +21,6 @@ import java.io.IOException;
import java.util.Map;
import org.apache.http.client.HttpClient;
-import org.apache.http.client.methods.HttpDelete;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.client.methods.HttpPut;
-import org.apache.http.client.methods.HttpUriRequest;
-import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
@@ -39,8 +33,6 @@ public class HttpTransportImpl implements HttpTransport {
private static final String HEADER_USER_AGENT = "User-Agent";
- private static final String HEADER_TENANT_NAME = "x-domain-name";
-
protected HttpClient httpClient;
private Map<String, String> globalHeaders;
@@ -59,53 +51,39 @@ public class HttpTransportImpl implements HttpTransport {
@Override
public HttpResponse get(HttpRequest request) throws IOException {
-
- HttpGet httpGet = new HttpGet(request.getUrl());
-
- return doRequest(httpGet);
+ request.setMethod(HttpRequest.GET);
+ return doRequest(request);
}
@Override
public HttpResponse post(HttpRequest request) throws IOException {
-
- HttpPost httpPost = new HttpPost(request.getUrl());
-
- if (request.getContent() != null) {
- httpPost.setEntity(new StringEntity(request.getContent(), "UTF-8"));
- }
- return doRequest(httpPost);
+ request.setMethod(HttpRequest.POST);
+ return doRequest(request);
}
@Override
public HttpResponse put(HttpRequest request) throws IOException {
-
- HttpPut httpPut = new HttpPut(request.getUrl());
-
- if (request.getContent() != null) {
- httpPut.setEntity(new StringEntity(request.getContent(), "UTF-8"));
- }
- return doRequest(httpPut);
+ request.setMethod(HttpRequest.PUT);
+ return doRequest(request);
}
@Override
public HttpResponse delete(HttpRequest request) throws IOException {
-
- HttpDelete httpDelete = new HttpDelete(request.getUrl());
-
- return doRequest(httpDelete);
+ request.setMethod(HttpRequest.DELETE);
+ return doRequest(request);
}
- public HttpResponse doRequest(HttpUriRequest httpRequest) throws IOException
{
+ public HttpResponse doRequest(HttpRequest httpRequest) throws IOException {
//add header
httpRequest.addHeader(HEADER_CONTENT_TYPE, "application/json");
httpRequest.addHeader(HEADER_USER_AGENT,
"cse-serviceregistry-client/1.0.0");
- httpRequest.addHeader(HEADER_TENANT_NAME, "default");
+
if (globalHeaders != null) {
- globalHeaders.forEach((key, value) -> httpRequest.addHeader(key, value));
+ globalHeaders.forEach(httpRequest::addHeader);
}
//get Http response
- org.apache.http.HttpResponse response = httpClient.execute(httpRequest);
+ org.apache.http.HttpResponse response =
httpClient.execute(httpRequest.getRealRequest());
int statusCode = response.getStatusLine().getStatusCode();
String messgae = response.getStatusLine().getReasonPhrase();
diff --git
a/client/service-center-client/src/test/java/org/apache/servicecomb/service/center/client/HttpTransportImplTest.java
b/client/service-center-client/src/test/java/org/apache/servicecomb/service/center/client/HttpTransportImplTest.java
index dd2b523..d525a66 100644
---
a/client/service-center-client/src/test/java/org/apache/servicecomb/service/center/client/HttpTransportImplTest.java
+++
b/client/service-center-client/src/test/java/org/apache/servicecomb/service/center/client/HttpTransportImplTest.java
@@ -59,7 +59,7 @@ public class HttpTransportImplTest {
extraHeaders.put("test", "testContext");
httpTransport.addHeaders(extraHeaders);
- HttpRequest httpRequest = new HttpRequest("111", null, null);
+ HttpRequest httpRequest = new HttpRequest("111", null, null,
HttpRequest.GET);
HttpResponse actualResponse = httpTransport.get(httpRequest);
Assert.assertNotNull(actualResponse);
diff --git
a/client/service-center-client/src/test/java/org/apache/servicecomb/service/center/client/ServiceCenterRawClientTest.java
b/client/service-center-client/src/test/java/org/apache/servicecomb/service/center/client/ServiceCenterRawClientTest.java
index 5ee4c86..6c32435 100755
---
a/client/service-center-client/src/test/java/org/apache/servicecomb/service/center/client/ServiceCenterRawClientTest.java
+++
b/client/service-center-client/src/test/java/org/apache/servicecomb/service/center/client/ServiceCenterRawClientTest.java
@@ -34,7 +34,9 @@ public class ServiceCenterRawClientTest {
private static final int DEFAULT_PORT = 30100;
- private static final String DOMAIN_NAME = "default";
+ private static final String PROJECT_NAME = "default";
+
+ private static final String TENANT_NAME = "default";
@Test
public void TestDefaultParameter() throws IOException {
@@ -45,17 +47,15 @@ public class ServiceCenterRawClientTest {
.setHttpTransport(httpTransport)
.setHost(DEFAULT_HOST)
.setPort(DEFAULT_PORT)
- .setDomainName(DOMAIN_NAME)
+ .setProjectName(PROJECT_NAME)
+ .setTenantName(TENANT_NAME)
.build();
HttpResponse httpResponse = new HttpResponse();
httpResponse.setStatusCode(200);
httpResponse.setContent("ok");
- Mockito.when(httpTransport.get(Mockito.any())).thenReturn(httpResponse);
- Mockito.when(httpTransport.post(Mockito.any())).thenReturn(httpResponse);
- Mockito.when(httpTransport.put(Mockito.any())).thenReturn(httpResponse);
- Mockito.when(httpTransport.delete(Mockito.any())).thenReturn(httpResponse);
+
Mockito.when(httpTransport.doRequest(Mockito.any())).thenReturn(httpResponse);
HttpResponse actualGetResponse = client.getHttpRequest(null, null, null);
HttpResponse actualPostResponse = client.postHttpRequest(null, null, null);