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);
}