Merge pull request #439 from wehotel/develop
This commit is contained in:
@@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
<groupId>com.fizzgate</groupId>
|
<groupId>com.fizzgate</groupId>
|
||||||
<artifactId>fizz-bootstrap</artifactId>
|
<artifactId>fizz-bootstrap</artifactId>
|
||||||
<version>2.6.5</version>
|
<version>2.6.6-beta1</version>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<java.version>1.8</java.version>
|
<java.version>1.8</java.version>
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>fizz-gateway-community</artifactId>
|
<artifactId>fizz-gateway-community</artifactId>
|
||||||
<groupId>com.fizzgate</groupId>
|
<groupId>com.fizzgate</groupId>
|
||||||
<version>2.6.5</version>
|
<version>2.6.6-beta1</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>fizz-gateway-community</artifactId>
|
<artifactId>fizz-gateway-community</artifactId>
|
||||||
<groupId>com.fizzgate</groupId>
|
<groupId>com.fizzgate</groupId>
|
||||||
<version>2.6.5</version>
|
<version>2.6.6-beta1</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
package we.fizz.input;
|
package we.fizz.input;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
import javax.script.ScriptException;
|
import javax.script.ScriptException;
|
||||||
|
|
||||||
@@ -42,8 +43,8 @@ public class RPCInput extends Input {
|
|||||||
protected static final Logger LOGGER = LoggerFactory.getLogger(RPCInput.class.getName());
|
protected static final Logger LOGGER = LoggerFactory.getLogger(RPCInput.class.getName());
|
||||||
protected static final String FALLBACK_MODE_STOP = "stop";
|
protected static final String FALLBACK_MODE_STOP = "stop";
|
||||||
protected static final String FALLBACK_MODE_CONTINUE = "continue";
|
protected static final String FALLBACK_MODE_CONTINUE = "continue";
|
||||||
protected Map<String, Object> request = new HashMap<>();
|
protected Map<String, Object> request = new ConcurrentHashMap<>();
|
||||||
protected Map<String, Object> response = new HashMap<>();
|
protected Map<String, Object> response = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
protected void doRequestMapping(InputConfig aConfig, InputContext inputContext) {
|
protected void doRequestMapping(InputConfig aConfig, InputContext inputContext) {
|
||||||
|
|
||||||
|
|||||||
@@ -122,6 +122,8 @@ public class RequestInput extends RPCInput implements IInput{
|
|||||||
protected void doRequestMapping(InputConfig aConfig, InputContext inputContext) {
|
protected void doRequestMapping(InputConfig aConfig, InputContext inputContext) {
|
||||||
RequestInputConfig config = (RequestInputConfig) aConfig;
|
RequestInputConfig config = (RequestInputConfig) aConfig;
|
||||||
|
|
||||||
|
Map<String, Object> params = new HashMap<>();
|
||||||
|
synchronized (inputContext.getStepContext()) {
|
||||||
// 把请求信息放入stepContext
|
// 把请求信息放入stepContext
|
||||||
Map<String, Object> group = new HashMap<>();
|
Map<String, Object> group = new HashMap<>();
|
||||||
group.put("request", request);
|
group.put("request", request);
|
||||||
@@ -131,15 +133,16 @@ public class RequestInput extends RPCInput implements IInput{
|
|||||||
HttpMethod method = HttpMethod.valueOf(config.getMethod().toUpperCase());
|
HttpMethod method = HttpMethod.valueOf(config.getMethod().toUpperCase());
|
||||||
request.put("method", method);
|
request.put("method", method);
|
||||||
|
|
||||||
Map<String, Object> params = new HashMap<>();
|
|
||||||
params.putAll(MapUtil.toHashMap(config.getQueryParams()));
|
params.putAll(MapUtil.toHashMap(config.getQueryParams()));
|
||||||
request.put("params", params);
|
request.put("params", params);
|
||||||
|
}
|
||||||
|
|
||||||
ONode ctxNode = null;
|
ONode ctxNode = null;
|
||||||
// 数据转换
|
// 数据转换
|
||||||
if (inputContext != null && inputContext.getStepContext() != null) {
|
if (inputContext != null && inputContext.getStepContext() != null) {
|
||||||
StepContext<String, Object> stepContext = inputContext.getStepContext();
|
StepContext<String, Object> stepContext = inputContext.getStepContext();
|
||||||
ctxNode = PathMapping.toONode(stepContext);
|
ctxNode = PathMapping.toONode(stepContext);
|
||||||
|
synchronized (stepContext) {
|
||||||
Map<String, Object> dataMapping = this.getConfig().getDataMapping();
|
Map<String, Object> dataMapping = this.getConfig().getDataMapping();
|
||||||
if (dataMapping != null) {
|
if (dataMapping != null) {
|
||||||
Map<String, Object> requestMapping = (Map<String, Object>) dataMapping.get("request");
|
Map<String, Object> requestMapping = (Map<String, Object>) dataMapping.get("request");
|
||||||
@@ -199,6 +202,7 @@ public class RequestInput extends RPCInput implements IInput{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (config.isNewVersion()) {
|
if (config.isNewVersion()) {
|
||||||
String host = config.getServiceName();
|
String host = config.getServiceName();
|
||||||
@@ -223,13 +227,17 @@ public class RequestInput extends RPCInput implements IInput{
|
|||||||
UriComponents uriComponents = UriComponentsBuilder.fromUriString(sb.toString())
|
UriComponents uriComponents = UriComponentsBuilder.fromUriString(sb.toString())
|
||||||
.queryParams(MapUtil.toMultiValueMap(params)).build();
|
.queryParams(MapUtil.toMultiValueMap(params)).build();
|
||||||
|
|
||||||
|
synchronized (inputContext.getStepContext()) {
|
||||||
request.put("url", uriComponents.toUriString());
|
request.put("url", uriComponents.toUriString());
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
UriComponents uriComponents = UriComponentsBuilder.fromUriString(config.getBaseUrl() + setPathVariable(ctxNode, config.getPath()))
|
UriComponents uriComponents = UriComponentsBuilder.fromUriString(config.getBaseUrl() + setPathVariable(ctxNode, config.getPath()))
|
||||||
.queryParams(MapUtil.toMultiValueMap(params)).build();
|
.queryParams(MapUtil.toMultiValueMap(params)).build();
|
||||||
|
synchronized (inputContext.getStepContext()) {
|
||||||
request.put("url", uriComponents.toUriString());
|
request.put("url", uriComponents.toUriString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private String setPathVariable(ONode ctxNode, String path) {
|
private String setPathVariable(ONode ctxNode, String path) {
|
||||||
if (ctxNode == null || StringUtils.isBlank(path)) {
|
if (ctxNode == null || StringUtils.isBlank(path)) {
|
||||||
@@ -277,14 +285,16 @@ public class RequestInput extends RPCInput implements IInput{
|
|||||||
ct = CONTENT_TYPE_JSON;
|
ct = CONTENT_TYPE_JSON;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
synchronized (inputContext.getStepContext()) {
|
||||||
response.put("body", this.parseBody(ct, (String)responseBody));
|
response.put("body", this.parseBody(ct, (String)responseBody));
|
||||||
|
}
|
||||||
|
|
||||||
// 数据转换
|
// 数据转换
|
||||||
if (inputContext != null && inputContext.getStepContext() != null) {
|
if (inputContext != null && inputContext.getStepContext() != null) {
|
||||||
StepContext<String, Object> stepContext = inputContext.getStepContext();
|
StepContext<String, Object> stepContext = inputContext.getStepContext();
|
||||||
if (!CollectionUtils.isEmpty(responseMapping)) {
|
if (!CollectionUtils.isEmpty(responseMapping)) {
|
||||||
ONode ctxNode = PathMapping.toONode(stepContext);
|
ONode ctxNode = PathMapping.toONode(stepContext);
|
||||||
|
synchronized (stepContext) {
|
||||||
// headers
|
// headers
|
||||||
Map<String, Object> fixedHeaders = MapUtil.upperCaseKey((Map<String, Object>) responseMapping.get("fixedHeaders"));
|
Map<String, Object> fixedHeaders = MapUtil.upperCaseKey((Map<String, Object>) responseMapping.get("fixedHeaders"));
|
||||||
Map<String, Object> headerMapping = MapUtil.upperCaseKey((Map<String, Object>) responseMapping.get("headers"));
|
Map<String, Object> headerMapping = MapUtil.upperCaseKey((Map<String, Object>) responseMapping.get("headers"));
|
||||||
@@ -332,6 +342,7 @@ public class RequestInput extends RPCInput implements IInput{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Mono<RPCResponse> getClientSpecFromContext(InputConfig aConfig, InputContext inputContext) {
|
protected Mono<RPCResponse> getClientSpecFromContext(InputConfig aConfig, InputContext inputContext) {
|
||||||
@@ -385,12 +396,16 @@ public class RequestInput extends RPCInput implements IInput{
|
|||||||
|
|
||||||
headers.remove(CommonConstants.HEADER_CONTENT_LENGTH);
|
headers.remove(CommonConstants.HEADER_CONTENT_LENGTH);
|
||||||
headers.add(systemConfig.fizzTraceIdHeader(), inputContext.getStepContext().getTraceId());
|
headers.add(systemConfig.fizzTraceIdHeader(), inputContext.getStepContext().getTraceId());
|
||||||
|
synchronized (inputContext.getStepContext()) {
|
||||||
request.put("headers", MapUtil.headerToHashMap(headers));
|
request.put("headers", MapUtil.headerToHashMap(headers));
|
||||||
|
}
|
||||||
|
|
||||||
Object body = null;
|
Object body = null;
|
||||||
if (CONTENT_TYPE_XML.equals(reqContentType) || CONTENT_TYPE_TEXT_XML.equals(reqContentType)) {
|
if (CONTENT_TYPE_XML.equals(reqContentType) || CONTENT_TYPE_TEXT_XML.equals(reqContentType)) {
|
||||||
// convert JSON to XML if it is XML content type
|
// convert JSON to XML if it is XML content type
|
||||||
|
synchronized (inputContext.getStepContext()) {
|
||||||
request.put("jsonBody", request.get("body"));
|
request.put("jsonBody", request.get("body"));
|
||||||
|
}
|
||||||
String jsonStr = null;
|
String jsonStr = null;
|
||||||
if (TypeUtils.isBasicType(request.get("body"))) {
|
if (TypeUtils.isBasicType(request.get("body"))) {
|
||||||
jsonStr = request.get("body").toString();
|
jsonStr = request.get("body").toString();
|
||||||
@@ -404,7 +419,9 @@ public class RequestInput extends RPCInput implements IInput{
|
|||||||
} else {
|
} else {
|
||||||
body = jsonStr;
|
body = jsonStr;
|
||||||
}
|
}
|
||||||
|
synchronized (inputContext.getStepContext()) {
|
||||||
request.put("body", body);
|
request.put("body", body);
|
||||||
|
}
|
||||||
LOGGER.info("body={}", body);
|
LOGGER.info("body={}", body);
|
||||||
LOGGER.info("headers={}", JSON.toJSONString(headers));
|
LOGGER.info("headers={}", JSON.toJSONString(headers));
|
||||||
} else if (CONTENT_TYPE_MULTIPART_FORM_DATA.equals(reqContentType)) {
|
} else if (CONTENT_TYPE_MULTIPART_FORM_DATA.equals(reqContentType)) {
|
||||||
@@ -460,6 +477,7 @@ public class RequestInput extends RPCInput implements IInput{
|
|||||||
headers.put("ELAPSEDTIME", elapsedMillis + "ms");
|
headers.put("ELAPSEDTIME", elapsedMillis + "ms");
|
||||||
|
|
||||||
RequestRPCResponse reqCr = (RequestRPCResponse) cr;
|
RequestRPCResponse reqCr = (RequestRPCResponse) cr;
|
||||||
|
synchronized (inputContext.getStepContext()) {
|
||||||
if (reqCr.getStatusCode() != null) {
|
if (reqCr.getStatusCode() != null) {
|
||||||
this.response.put("httpStatus", reqCr.getStatusCode().value());
|
this.response.put("httpStatus", reqCr.getStatusCode().value());
|
||||||
}
|
}
|
||||||
@@ -468,6 +486,7 @@ public class RequestInput extends RPCInput implements IInput{
|
|||||||
inputContext.getStepContext().addElapsedTime(prefix + request.get("url"),
|
inputContext.getStepContext().addElapsedTime(prefix + request.get("url"),
|
||||||
elapsedMillis);
|
elapsedMillis);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
protected Mono<Object> bodyToMono(ClientResponse cr){
|
protected Mono<Object> bodyToMono(ClientResponse cr){
|
||||||
return cr.bodyToMono(String.class);
|
return cr.bodyToMono(String.class);
|
||||||
}
|
}
|
||||||
@@ -475,9 +494,11 @@ public class RequestInput extends RPCInput implements IInput{
|
|||||||
protected void doOnBodyError(Throwable ex, long elapsedMillis) {
|
protected void doOnBodyError(Throwable ex, long elapsedMillis) {
|
||||||
LogService.setBizId(inputContext.getStepContext().getTraceId());
|
LogService.setBizId(inputContext.getStepContext().getTraceId());
|
||||||
LOGGER.warn("failed to call {}", request.get("url"), ex);
|
LOGGER.warn("failed to call {}", request.get("url"), ex);
|
||||||
|
synchronized (inputContext.getStepContext()) {
|
||||||
inputContext.getStepContext().addElapsedTime(
|
inputContext.getStepContext().addElapsedTime(
|
||||||
stepResponse.getStepName() + "-" + "调用接口 failed " + request.get("url"), elapsedMillis);
|
stepResponse.getStepName() + "-" + "调用接口 failed " + request.get("url"), elapsedMillis);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Parse response body according to content-type header
|
// Parse response body according to content-type header
|
||||||
public Object parseBody(String contentType, String responseBody) {
|
public Object parseBody(String contentType, String responseBody) {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>fizz-gateway-community</artifactId>
|
<artifactId>fizz-gateway-community</artifactId>
|
||||||
<groupId>com.fizzgate</groupId>
|
<groupId>com.fizzgate</groupId>
|
||||||
<version>2.6.5</version>
|
<version>2.6.6-beta1</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>fizz-gateway-community</artifactId>
|
<artifactId>fizz-gateway-community</artifactId>
|
||||||
<groupId>com.fizzgate</groupId>
|
<groupId>com.fizzgate</groupId>
|
||||||
<version>2.6.5</version>
|
<version>2.6.6-beta1</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|||||||
2
pom.xml
2
pom.xml
@@ -37,7 +37,7 @@
|
|||||||
<artifactId>fizz-gateway-community</artifactId>
|
<artifactId>fizz-gateway-community</artifactId>
|
||||||
<name>${project.artifactId}</name>
|
<name>${project.artifactId}</name>
|
||||||
<description>fizz gateway community</description>
|
<description>fizz gateway community</description>
|
||||||
<version>2.6.5</version>
|
<version>2.6.6-beta1</version>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<modules>
|
<modules>
|
||||||
<module>fizz-common</module>
|
<module>fizz-common</module>
|
||||||
|
|||||||
Reference in New Issue
Block a user