This is an automated email from the ASF dual-hosted git repository.

crazyhzm pushed a commit to branch 3.2
in repository https://gitbox.apache.org/repos/asf/dubbo.git


The following commit(s) were added to refs/heads/3.2 by this push:
     new 69dd801db2 Fix incorrect rest response header and demo double path 
error (#13789)
69dd801db2 is described below

commit 69dd801db2f50e03faf58c60f6eb3f4ea72fee5f
Author: suncairong163 <[email protected]>
AuthorDate: Wed Feb 28 10:44:29 2024 +0800

    Fix incorrect rest response header and demo double path error (#13789)
    
    * fix dubbo demo xml double path error
    
    * fix  restEasy response  headers formate
    
    * fix content-type judge
    
    * remove unused code
---
 .../src/main/java/org/apache/dubbo/demo/RestDemoService.java     | 2 +-
 .../rpc/protocol/rest/extension/resteasy/ResteasyContext.java    | 7 +++++--
 .../extension/resteasy/filter/ResteasyNettyHttpResponse.java     | 9 ++++++++-
 .../apache/dubbo/rpc/protocol/rest/message/codec/JsonCodec.java  | 3 +--
 .../dubbo/rpc/protocol/rest/message/codec/StringCodec.java       | 2 +-
 .../apache/dubbo/rpc/protocol/rest/netty/NettyHttpResponse.java  | 4 ++++
 6 files changed, 20 insertions(+), 7 deletions(-)

diff --git 
a/dubbo-demo/dubbo-demo-interface/src/main/java/org/apache/dubbo/demo/RestDemoService.java
 
b/dubbo-demo/dubbo-demo-interface/src/main/java/org/apache/dubbo/demo/RestDemoService.java
index f12536bfd1..0405b739f2 100644
--- 
a/dubbo-demo/dubbo-demo-interface/src/main/java/org/apache/dubbo/demo/RestDemoService.java
+++ 
b/dubbo-demo/dubbo-demo-interface/src/main/java/org/apache/dubbo/demo/RestDemoService.java
@@ -65,7 +65,7 @@ public interface RestDemoService {
     Boolean testBody2(Boolean b);
 
     @POST
-    @Path("/testBody3")
+    @Path("/testBody4")
     @Consumes({MediaType.TEXT_PLAIN})
     TestPO testBody2(TestPO b);
 
diff --git 
a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/extension/resteasy/ResteasyContext.java
 
b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/extension/resteasy/ResteasyContext.java
index d1e6ec0fa4..91f2edfb43 100644
--- 
a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/extension/resteasy/ResteasyContext.java
+++ 
b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/extension/resteasy/ResteasyContext.java
@@ -169,10 +169,13 @@ public interface ResteasyContext {
         for (Map.Entry<String, List<Object>> entry : headers.entrySet()) {
 
             String key = entry.getKey();
-            if (entry.getValue() == null) {
+            List<Object> value = entry.getValue();
+            if (value == null || value.isEmpty()) {
                 continue;
             }
-            response.addOutputHeaders(key, entry.getValue().toString());
+            for (Object tmp : value) {
+                response.addOutputHeaders(key, tmp.toString());
+            }
         }
     }
 
diff --git 
a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/extension/resteasy/filter/ResteasyNettyHttpResponse.java
 
b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/extension/resteasy/filter/ResteasyNettyHttpResponse.java
index 826f84df70..92de82f8d9 100644
--- 
a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/extension/resteasy/filter/ResteasyNettyHttpResponse.java
+++ 
b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/extension/resteasy/filter/ResteasyNettyHttpResponse.java
@@ -42,7 +42,14 @@ public class ResteasyNettyHttpResponse implements 
HttpResponse {
         for (Map.Entry<String, List<String>> headers : 
outputHeaders.entrySet()) {
             String key = headers.getKey();
             List<String> value = headers.getValue();
-            multivaluedMap.add(key, value);
+
+            if (value == null || value.isEmpty()) {
+                continue;
+            }
+
+            for (String val : value) {
+                multivaluedMap.add(key, val);
+            }
         }
     }
 
diff --git 
a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/message/codec/JsonCodec.java
 
b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/message/codec/JsonCodec.java
index c03ed001d4..49994f18b1 100644
--- 
a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/message/codec/JsonCodec.java
+++ 
b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/message/codec/JsonCodec.java
@@ -33,13 +33,12 @@ import java.util.Set;
 /**
  * body is json
  */
-@Activate("json")
+@Activate(value = "json", order = 100)
 public class JsonCodec implements HttpMessageCodec<byte[], OutputStream> {
     private static final Set<Class> unSupportClasses = new HashSet<>();
 
     static {
         unSupportClasses.add(byte[].class);
-        unSupportClasses.add(String.class);
     }
 
     public static void addUnSupportClass(Class<?> unSupportClass) {
diff --git 
a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/message/codec/StringCodec.java
 
b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/message/codec/StringCodec.java
index 4f939ea7fb..1a543a2ad7 100644
--- 
a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/message/codec/StringCodec.java
+++ 
b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/message/codec/StringCodec.java
@@ -28,7 +28,7 @@ import java.nio.charset.StandardCharsets;
 /**
  *  body is string
  */
-@Activate("string")
+@Activate(value = "string", order = 200)
 public class StringCodec implements HttpMessageCodec<byte[], OutputStream> {
 
     @Override
diff --git 
a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/netty/NettyHttpResponse.java
 
b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/netty/NettyHttpResponse.java
index 72256f53e9..d29e194104 100644
--- 
a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/netty/NettyHttpResponse.java
+++ 
b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/netty/NettyHttpResponse.java
@@ -190,6 +190,10 @@ public class NettyHttpResponse implements HttpResponse {
             outputHeaders.put(name, values);
         }
 
+        if (values.contains(value)) {
+            return;
+        }
+
         values.add(value);
     }
 

Reply via email to