From e6b2c1a297c21026d51ff4403a53fa9909e4ecf6 Mon Sep 17 00:00:00 2001 From: pandaapo <35672972+pandaapo@users.noreply.github.com> Date: Thu, 29 Sep 2022 15:21:10 +0800 Subject: [PATCH] fix pr 606: modify a part of changes requested by review. (#620) --- CHANGELOG.md | 3 ++- .../core/DecodeTransferMetadataReactiveFilter.java | 7 +++---- .../core/DecodeTransferMetadataServletFilter.java | 8 ++++---- .../metadata/core/EncodeTransferMedataScgFilter.java | 7 +++---- .../cloud/common/metadata/StaticMetadataManager.java | 2 +- 5 files changed, 13 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5e5d18a7..1bb25974 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,4 +8,5 @@ - [Automatically transmit some headers specified by a environment varaible that directly defines header keys.](https://github.com/Tencent/spring-cloud-tencent/pull/606) - [Optimize: Maybe remove Chinese characters](https://github.com/Tencent/spring-cloud-tencent/pull/607) - [ fix pr #606 cause ci fail](https://github.com/Tencent/spring-cloud-tencent/pull/613) -- [fix pr 613: modify a judgment logic](https://github.com/Tencent/spring-cloud-tencent/pull/618) \ No newline at end of file +- [fix pr 606: modify a part of changes requested by review.](https://github.com/Tencent/spring-cloud-tencent/pull/620) +- [fix pr 613: modify a judgment logic](https://github.com/Tencent/spring-cloud-tencent/pull/618) diff --git a/spring-cloud-starter-tencent-metadata-transfer/src/main/java/com/tencent/cloud/metadata/core/DecodeTransferMetadataReactiveFilter.java b/spring-cloud-starter-tencent-metadata-transfer/src/main/java/com/tencent/cloud/metadata/core/DecodeTransferMetadataReactiveFilter.java index cd6453c6..c5ce5bfb 100644 --- a/spring-cloud-starter-tencent-metadata-transfer/src/main/java/com/tencent/cloud/metadata/core/DecodeTransferMetadataReactiveFilter.java +++ b/spring-cloud-starter-tencent-metadata-transfer/src/main/java/com/tencent/cloud/metadata/core/DecodeTransferMetadataReactiveFilter.java @@ -25,7 +25,6 @@ import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; -import java.util.Optional; import java.util.Set; import com.tencent.cloud.common.constant.MetadataConstant; @@ -99,12 +98,12 @@ public class DecodeTransferMetadataReactiveFilter implements WebFilter, Ordered * the complete headers(key-value list in map type) into metadata. */ private void setCompleteTransHeaderIntoMC(ServerHttpRequest serverHttpRequest) { - // transHeaderMetadata: for example, {"trans-headers" : {"header1;header2;header3":""}} + // transHeaderMetadata: for example, {"trans-headers" : {"header1,header2,header3":""}} Map transHeaderMetadata = MetadataContextHolder.get() .getFragmentContext(FRAGMENT_RAW_TRANSHEADERS); if (!CollectionUtils.isEmpty(transHeaderMetadata)) { - Optional transHeaders = transHeaderMetadata.keySet().stream().findFirst(); - String[] transHeaderArray = transHeaders.get().split(","); + String transHeaders = transHeaderMetadata.keySet().stream().findFirst().orElse(""); + String[] transHeaderArray = transHeaders.split(","); HttpHeaders headers = serverHttpRequest.getHeaders(); Set headerKeys = headers.keySet(); Iterator iterator = headerKeys.iterator(); diff --git a/spring-cloud-starter-tencent-metadata-transfer/src/main/java/com/tencent/cloud/metadata/core/DecodeTransferMetadataServletFilter.java b/spring-cloud-starter-tencent-metadata-transfer/src/main/java/com/tencent/cloud/metadata/core/DecodeTransferMetadataServletFilter.java index 83dce6bb..4432a41c 100644 --- a/spring-cloud-starter-tencent-metadata-transfer/src/main/java/com/tencent/cloud/metadata/core/DecodeTransferMetadataServletFilter.java +++ b/spring-cloud-starter-tencent-metadata-transfer/src/main/java/com/tencent/cloud/metadata/core/DecodeTransferMetadataServletFilter.java @@ -25,7 +25,6 @@ import java.util.Arrays; import java.util.Enumeration; import java.util.HashMap; import java.util.Map; -import java.util.Optional; import javax.servlet.FilterChain; import javax.servlet.ServletException; @@ -86,18 +85,19 @@ public class DecodeTransferMetadataServletFilter extends OncePerRequestFilter { * the complete headers(key-value list in map type) into metadata. */ private void setCompleteTransHeaderIntoMC(HttpServletRequest httpServletRequest) { - // transHeaderMetadata: for example, {"trans-headers" : {"header1;header2;header3":""}} + // transHeaderMetadata: for example, {"trans-headers" : {"header1,header2,header3":""}} Map transHeaderMetadata = MetadataContextHolder.get() .getFragmentContext(FRAGMENT_RAW_TRANSHEADERS); if (!CollectionUtils.isEmpty(transHeaderMetadata)) { - Optional transHeaders = transHeaderMetadata.keySet().stream().findFirst(); - String[] transHeaderArray = transHeaders.get().split(","); + String transHeaders = transHeaderMetadata.keySet().stream().findFirst().orElse(""); + String[] transHeaderArray = transHeaders.split(","); Enumeration httpHeaders = httpServletRequest.getHeaderNames(); while (httpHeaders.hasMoreElements()) { String httpHeader = httpHeaders.nextElement(); Arrays.stream(transHeaderArray).forEach(transHeader -> { if (transHeader.equals(httpHeader)) { String httpHeaderValue = httpServletRequest.getHeader(httpHeader); + // for example, {"trans-headers-kv" : {"header1":"v1","header2":"v2"...}} MetadataContextHolder.get().putContext(FRAGMENT_RAW_TRANSHEADERS_KV, httpHeader, httpHeaderValue); return; } diff --git a/spring-cloud-starter-tencent-metadata-transfer/src/main/java/com/tencent/cloud/metadata/core/EncodeTransferMedataScgFilter.java b/spring-cloud-starter-tencent-metadata-transfer/src/main/java/com/tencent/cloud/metadata/core/EncodeTransferMedataScgFilter.java index 97db4fb6..348d6d0c 100644 --- a/spring-cloud-starter-tencent-metadata-transfer/src/main/java/com/tencent/cloud/metadata/core/EncodeTransferMedataScgFilter.java +++ b/spring-cloud-starter-tencent-metadata-transfer/src/main/java/com/tencent/cloud/metadata/core/EncodeTransferMedataScgFilter.java @@ -25,7 +25,6 @@ import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; -import java.util.Optional; import java.util.Set; import com.tencent.cloud.common.constant.MetadataConstant; @@ -97,12 +96,12 @@ public class EncodeTransferMedataScgFilter implements GlobalFilter, Ordered { * the complete headers(key-value list in map type) into metadata. */ private void setCompleteTransHeaderIntoMC(ServerHttpRequest serverHttpRequest) { - // transHeaderMetadata: for example, {"trans-headers" : {"header1;header2;header3":""}} + // transHeaderMetadata: for example, {"trans-headers" : {"header1,header2,header3":""}} Map transHeaderMetadata = MetadataContextHolder.get() .getFragmentContext(FRAGMENT_RAW_TRANSHEADERS); if (!CollectionUtils.isEmpty(transHeaderMetadata)) { - Optional transHeaders = transHeaderMetadata.keySet().stream().findFirst(); - String[] transHeaderArray = transHeaders.get().split(","); + String transHeaders = transHeaderMetadata.keySet().stream().findFirst().orElse(""); + String[] transHeaderArray = transHeaders.split(","); HttpHeaders headers = serverHttpRequest.getHeaders(); Set headerKeys = headers.keySet(); Iterator iterator = headerKeys.iterator(); diff --git a/spring-cloud-tencent-commons/src/main/java/com/tencent/cloud/common/metadata/StaticMetadataManager.java b/spring-cloud-tencent-commons/src/main/java/com/tencent/cloud/common/metadata/StaticMetadataManager.java index 0007c02c..e71804ad 100644 --- a/spring-cloud-tencent-commons/src/main/java/com/tencent/cloud/common/metadata/StaticMetadataManager.java +++ b/spring-cloud-tencent-commons/src/main/java/com/tencent/cloud/common/metadata/StaticMetadataManager.java @@ -56,7 +56,7 @@ public class StaticMetadataManager { private static final String ENV_METADATA_CONTENT_TRANSITIVE = "SCT_METADATA_CONTENT_TRANSITIVE"; private static final String ENV_METADATA_CONTENT_DISPOSABLE = "SCT_METADATA_CONTENT_DISPOSABLE"; /** - * This is the key of the header's key list needed to be transmitted. The list is a string split with ;. + * This is the key of the header's key list needed to be transmitted. The list is a string split with ,. * The value mapped by this key was specified by user. * This is configured in environment variables. */