From a932a99f904fb72f3a1782ad9088b9b41aa9ed07 Mon Sep 17 00:00:00 2001 From: zhenqiangyi <835576511@qq.com> Date: Sat, 11 Sep 2021 11:20:16 +0800 Subject: [PATCH 1/8] Use MapUtils instead of AttachmentsAdapter --- .../cluster/directory/MockDirInvocation.java | 12 +++--- .../apache/dubbo/common/utils/MapUtils.java | 42 +++++++++++++++++++ .../apache/dubbo/service/MockInvocation.java | 4 +- .../org/apache/dubbo/rpc/AppResponse.java | 3 +- .../apache/dubbo/rpc/AttachmentsAdapter.java | 6 +++ .../java/org/apache/dubbo/rpc/RpcContext.java | 3 +- .../org/apache/dubbo/rpc/RpcInvocation.java | 3 +- .../dubbo/rpc/support/MockInvocation.java | 4 +- 8 files changed, 63 insertions(+), 14 deletions(-) create mode 100644 dubbo-common/src/main/java/org/apache/dubbo/common/utils/MapUtils.java diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/directory/MockDirInvocation.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/directory/MockDirInvocation.java index bc237b91bb4..de4235ef655 100644 --- a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/directory/MockDirInvocation.java +++ b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/directory/MockDirInvocation.java @@ -16,19 +16,17 @@ */ package org.apache.dubbo.rpc.cluster.directory; -import org.apache.dubbo.rpc.AttachmentsAdapter; -import org.apache.dubbo.rpc.Invocation; -import org.apache.dubbo.rpc.Invoker; - import java.util.HashMap; import java.util.Map; - import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_VERSION_KEY; import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY; import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY; import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY; import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY; +import org.apache.dubbo.common.utils.MapUtils; import static org.apache.dubbo.rpc.Constants.TOKEN_KEY; +import org.apache.dubbo.rpc.Invocation; +import org.apache.dubbo.rpc.Invoker; /** * MockInvocation.java @@ -75,7 +73,7 @@ public Object[] getArguments() { } public Map getAttachments() { - return new AttachmentsAdapter.ObjectToStringMap(attachments); + return MapUtils.objectToStringMap(attachments); } @Override @@ -90,7 +88,7 @@ public void setAttachment(String key, String value) { @Override public void setAttachment(String key, Object value) { - setObjectAttachment(key, value); + setObjectAttachment(key, value); } @Override diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/MapUtils.java b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/MapUtils.java new file mode 100644 index 00000000000..c2c6209b5d8 --- /dev/null +++ b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/MapUtils.java @@ -0,0 +1,42 @@ +package org.apache.dubbo.common.utils; + +import java.util.HashMap; +import java.util.Map; + +/** + * Map tools + */ +public class MapUtils { + + /** + * switch Map to Map + * + * @param originMap + * @return + * @apiNote If the value of the original Map is not of type String, then toString() of value will be called + */ + public static Map objectToStringMap(Map originMap) { + Map newStrMap = new HashMap<>(); + + if (originMap == null) { + return newStrMap; + } + + for (Map.Entry entry : originMap.entrySet()) { + String stringValue = convertToString(entry.getValue()); + if (stringValue != null) { + newStrMap.put(entry.getKey(), stringValue); + } + } + + return newStrMap; + } + + private static String convertToString(Object obj) { + if (obj == null) { + return null; + } else { + return obj.toString(); + } + } +} diff --git a/dubbo-compatible/src/test/java/org/apache/dubbo/service/MockInvocation.java b/dubbo-compatible/src/test/java/org/apache/dubbo/service/MockInvocation.java index a2cb52e1a87..3a1b76eeeff 100644 --- a/dubbo-compatible/src/test/java/org/apache/dubbo/service/MockInvocation.java +++ b/dubbo-compatible/src/test/java/org/apache/dubbo/service/MockInvocation.java @@ -16,7 +16,7 @@ */ package org.apache.dubbo.service; -import org.apache.dubbo.rpc.AttachmentsAdapter; +import org.apache.dubbo.common.utils.MapUtils; import org.apache.dubbo.rpc.Invocation; import org.apache.dubbo.rpc.Invoker; @@ -79,7 +79,7 @@ public Object[] getArguments() { } public Map getAttachments() { - return new AttachmentsAdapter.ObjectToStringMap(attachments); + return MapUtils.objectToStringMap(attachments); } @Override diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/AppResponse.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/AppResponse.java index 27df08acdc4..65d859aa4bd 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/AppResponse.java +++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/AppResponse.java @@ -17,6 +17,7 @@ package org.apache.dubbo.rpc; +import org.apache.dubbo.common.utils.MapUtils; import org.apache.dubbo.rpc.proxy.InvokerInvocationHandler; import java.util.HashMap; @@ -121,7 +122,7 @@ public boolean hasException() { @Override @Deprecated public Map getAttachments() { - return new AttachmentsAdapter.ObjectToStringMap(attachments); + return MapUtils.objectToStringMap(attachments); } @Override diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/AttachmentsAdapter.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/AttachmentsAdapter.java index def349a7530..6fd70bb94ad 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/AttachmentsAdapter.java +++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/AttachmentsAdapter.java @@ -22,12 +22,18 @@ /** * This class provides map adapters to support attachments in RpcContext, Invocation and Result switch from * to + * + * please use {@link org.apache.dubbo.common.utils.MapUtils} + * */ +@Deprecated public class AttachmentsAdapter { + @Deprecated public static class ObjectToStringMap extends HashMap { private Map attachments; + @Deprecated public ObjectToStringMap(Map attachments) { for (Entry entry : attachments.entrySet()) { String convertResult = convert(entry.getValue()); diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/RpcContext.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/RpcContext.java index 8077067378d..2a189f26983 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/RpcContext.java +++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/RpcContext.java @@ -20,6 +20,7 @@ import org.apache.dubbo.common.URL; import org.apache.dubbo.common.threadlocal.InternalThreadLocal; import org.apache.dubbo.common.utils.CollectionUtils; +import org.apache.dubbo.common.utils.MapUtils; import org.apache.dubbo.common.utils.NetUtils; import org.apache.dubbo.common.utils.StringUtils; @@ -552,7 +553,7 @@ public RpcContext removeAttachment(String key) { */ @Deprecated public Map getAttachments() { - return new AttachmentsAdapter.ObjectToStringMap(this.getObjectAttachments()); + return MapUtils.objectToStringMap(this.getObjectAttachments()); } /** diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/RpcInvocation.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/RpcInvocation.java index f94c001989e..116f3e64fba 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/RpcInvocation.java +++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/RpcInvocation.java @@ -17,6 +17,7 @@ package org.apache.dubbo.rpc; import org.apache.dubbo.common.URL; +import org.apache.dubbo.common.utils.MapUtils; import org.apache.dubbo.common.utils.ReflectUtils; import org.apache.dubbo.common.utils.StringUtils; import org.apache.dubbo.rpc.model.ApplicationModel; @@ -277,7 +278,7 @@ public void setAttachment(String key, String value) { @Deprecated @Override public Map getAttachments() { - return new AttachmentsAdapter.ObjectToStringMap(attachments); + return MapUtils.objectToStringMap(attachments); } @Deprecated diff --git a/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/support/MockInvocation.java b/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/support/MockInvocation.java index 586c990bdd6..2eb2ddd6351 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/support/MockInvocation.java +++ b/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/support/MockInvocation.java @@ -16,7 +16,7 @@ */ package org.apache.dubbo.rpc.support; -import org.apache.dubbo.rpc.AttachmentsAdapter; +import org.apache.dubbo.common.utils.MapUtils; import org.apache.dubbo.rpc.Invocation; import org.apache.dubbo.rpc.Invoker; @@ -75,7 +75,7 @@ public Object[] getArguments() { } public Map getAttachments() { - return new AttachmentsAdapter.ObjectToStringMap(attachments); + return MapUtils.objectToStringMap(attachments); } @Override From 6af1d176f8103756229d7b8fd5da30cd113d2777 Mon Sep 17 00:00:00 2001 From: zhenqiangyi <835576511@qq.com> Date: Sat, 11 Sep 2021 11:27:53 +0800 Subject: [PATCH 2/8] Use MapUtils instead of AttachmentsAdapter --- .../src/main/java/org/apache/dubbo/rpc/RpcContext.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/RpcContext.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/RpcContext.java index 2a189f26983..b27dc09f8e7 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/RpcContext.java +++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/RpcContext.java @@ -547,8 +547,9 @@ public RpcContext removeAttachment(String key) { } /** - * get attachments. + * get String type attachments. * + * @apiNote Best to use {{@link #getObjectAttachments()}} * @return attachments */ @Deprecated From e975cdb6c21c996607ef423f4ad1c0710ec9b50c Mon Sep 17 00:00:00 2001 From: zhenqiangyi <835576511@qq.com> Date: Sat, 11 Sep 2021 11:55:33 +0800 Subject: [PATCH 3/8] Use MapUtils instead of AttachmentsAdapter --- .../main/java/org/apache/dubbo/common/utils/MapUtils.java | 3 ++- .../src/main/java/org/apache/dubbo/rpc/RpcContext.java | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/MapUtils.java b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/MapUtils.java index c2c6209b5d8..32d706a0d1f 100644 --- a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/MapUtils.java +++ b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/MapUtils.java @@ -11,9 +11,10 @@ public class MapUtils { /** * switch Map to Map * + * If the value of the original Map is not of type String, then toString() of value will be called + * * @param originMap * @return - * @apiNote If the value of the original Map is not of type String, then toString() of value will be called */ public static Map objectToStringMap(Map originMap) { Map newStrMap = new HashMap<>(); diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/RpcContext.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/RpcContext.java index b27dc09f8e7..95cd6aa255c 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/RpcContext.java +++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/RpcContext.java @@ -549,7 +549,8 @@ public RpcContext removeAttachment(String key) { /** * get String type attachments. * - * @apiNote Best to use {{@link #getObjectAttachments()}} + * Best to use {{@link #getObjectAttachments()}} + * * @return attachments */ @Deprecated @@ -797,7 +798,7 @@ public boolean stopAsync() { return asyncContext.stop(); } - public AsyncContext getAsyncContext() { + public AsyncContext getcontgetAsyncContext() { return asyncContext; } From 3c2072073dec843861d53d5c37118dff20dce4b2 Mon Sep 17 00:00:00 2001 From: zhenqiangyi <835576511@qq.com> Date: Sat, 11 Sep 2021 11:59:17 +0800 Subject: [PATCH 4/8] Use MapUtils instead of AttachmentsAdapter --- .../src/main/java/org/apache/dubbo/rpc/RpcContext.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/RpcContext.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/RpcContext.java index 95cd6aa255c..0a48f7cde58 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/RpcContext.java +++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/RpcContext.java @@ -798,7 +798,7 @@ public boolean stopAsync() { return asyncContext.stop(); } - public AsyncContext getcontgetAsyncContext() { + public AsyncContext getAsyncContext() { return asyncContext; } From d2498193acfa8d0d7d1adde3f432df129fb8b550 Mon Sep 17 00:00:00 2001 From: zhenqiangyi <835576511@qq.com> Date: Sat, 11 Sep 2021 12:22:50 +0800 Subject: [PATCH 5/8] Use MapUtils instead of AttachmentsAdapter --- .../main/java/org/apache/dubbo/common/utils/MapUtils.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/MapUtils.java b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/MapUtils.java index 32d706a0d1f..fbd96cf9f08 100644 --- a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/MapUtils.java +++ b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/MapUtils.java @@ -33,6 +33,11 @@ public static Map objectToStringMap(Map originMa return newStrMap; } + /** + * use {@link Object#toString()} switch Obj to String + * @param obj + * @return + */ private static String convertToString(Object obj) { if (obj == null) { return null; From 23f03029c1522437b05ee775f796274b8fd20216 Mon Sep 17 00:00:00 2001 From: zhenqiangyi <835576511@qq.com> Date: Sat, 11 Sep 2021 13:01:50 +0800 Subject: [PATCH 6/8] Use MapUtils instead of AttachmentsAdapter --- .../org/apache/dubbo/common/utils/MapUtils.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/MapUtils.java b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/MapUtils.java index fbd96cf9f08..1b9cd369a84 100644 --- a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/MapUtils.java +++ b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/MapUtils.java @@ -1,3 +1,19 @@ +/* + * 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.dubbo.common.utils; import java.util.HashMap; From 327144ffa143ed8d34d08b6c0447379ef8237a2f Mon Sep 17 00:00:00 2001 From: zhenqiangyi <835576511@qq.com> Date: Sat, 11 Sep 2021 22:15:49 +0800 Subject: [PATCH 7/8] Use MapUtils instead of AttachmentsAdapter --- .../src/main/java/org/apache/dubbo/common/utils/MapUtils.java | 1 + 1 file changed, 1 insertion(+) diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/MapUtils.java b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/MapUtils.java index 1b9cd369a84..00454a5ed9a 100644 --- a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/MapUtils.java +++ b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/MapUtils.java @@ -51,6 +51,7 @@ public static Map objectToStringMap(Map originMa /** * use {@link Object#toString()} switch Obj to String + * * @param obj * @return */ From 49a3b06f870e0944254510f74dcb3ef5bc98a7b5 Mon Sep 17 00:00:00 2001 From: zhenqiangyi <835576511@qq.com> Date: Mon, 13 Sep 2021 18:49:00 +0800 Subject: [PATCH 8/8] Use MapUtils instead of AttachmentsAdapter --- .../main/java/org/apache/dubbo/rpc/AttachmentsAdapter.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/AttachmentsAdapter.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/AttachmentsAdapter.java index 6fd70bb94ad..e6cb643357b 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/AttachmentsAdapter.java +++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/AttachmentsAdapter.java @@ -57,10 +57,11 @@ public String remove(Object key) { } private String convert(Object obj) { - if (obj instanceof String) { - return (String) obj; + if (obj == null) { + return null; + } else { + return obj.toString(); } - return null; // or JSON.toString(obj); } @Override