diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/Filter.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/Filter.java index fa7b3e40a3..fa33393123 100644 --- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/Filter.java +++ b/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/Filter.java @@ -18,6 +18,9 @@ package com.alibaba.dubbo.rpc; import org.apache.dubbo.rpc.AsyncRpcResult; +import org.apache.dubbo.rpc.AttachmentsAdapter; + +import java.util.Map; @Deprecated public interface Filter extends org.apache.dubbo.rpc.Filter { @@ -27,7 +30,7 @@ public interface Filter extends org.apache.dubbo.rpc.Filter { @Override default org.apache.dubbo.rpc.Result invoke(org.apache.dubbo.rpc.Invoker invoker, org.apache.dubbo.rpc.Invocation invocation) - throws org.apache.dubbo.rpc.RpcException { + throws org.apache.dubbo.rpc.RpcException { Result invokeResult = invoke(new Invoker.CompatibleInvoker<>(invoker), new Invocation.CompatibleInvocation(invocation)); @@ -38,6 +41,10 @@ public interface Filter extends org.apache.dubbo.rpc.Filter { AsyncRpcResult asyncRpcResult = AsyncRpcResult.newDefaultAsyncResult(invocation); asyncRpcResult.setValue(invokeResult.getValue()); asyncRpcResult.setException(invokeResult.getException()); + Map attachments = invokeResult.getAttachments(); + if (!(attachments instanceof AttachmentsAdapter.ObjectToStringMap)) { + asyncRpcResult.setAttachments(attachments); + } asyncRpcResult.setObjectAttachments(invokeResult.getObjectAttachments()); return asyncRpcResult; diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/Result.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/Result.java index 009ee707c2..040736647a 100644 --- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/Result.java +++ b/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/Result.java @@ -64,6 +64,16 @@ public interface Result extends org.apache.dubbo.rpc.Result { return null; } + + /** + * @see com.alibaba.dubbo.rpc.Result#getValue() + * @deprecated Replace to getValue() + */ + @Deprecated + default Object getResult() { + return getValue(); + } + class CompatibleResult implements Result { private org.apache.dubbo.rpc.Result delegate;