This is an automated email from the ASF dual-hosted git repository.
suncairong 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 6ec002d709 bugfix: application/x-www-form-urlencoded There is a
problem with parameter parsing (#14700)
6ec002d709 is described below
commit 6ec002d709dde67321de7ef08541c272b13904e2
Author: funkye <[email protected]>
AuthorDate: Fri Sep 20 21:57:56 2024 +0800
bugfix: application/x-www-form-urlencoded There is a problem with parameter
parsing (#14700)
* bugfix: application/x-www-form-urlencoded There is a problem with
parameter parsing
* bugfix: application/x-www-form-urlencoded There is a problem with
parameter parsing
---
.../main/java/org/apache/dubbo/metadata/rest/ArgInfo.java | 4 ++++
.../java/org/apache/dubbo/rpc/protocol/rest/RestInvoker.java | 10 +++++-----
.../param/parse/provider/BodyProviderParamParser.java | 3 +--
.../param/parse/provider/ParamProviderParamParser.java | 4 +++-
.../rpc/protocol/rest/message/HttpMessageCodecManager.java | 8 ++++----
.../dubbo/rpc/protocol/rest/message/HttpMessageDecode.java | 4 ++--
.../rpc/protocol/rest/message/codec/ByteArrayCodec.java | 4 ++--
.../dubbo/rpc/protocol/rest/message/codec/JsonCodec.java | 6 +++---
.../rpc/protocol/rest/message/codec/MultiValueCodec.java | 12 ++++--------
.../protocol/rest/message/codec/ResteasyResponseCodec.java | 4 ++--
.../dubbo/rpc/protocol/rest/message/codec/StringCodec.java | 4 ++--
.../dubbo/rpc/protocol/rest/message/codec/TextCodec.java | 6 +++---
.../dubbo/rpc/protocol/rest/message/codec/XMLCodec.java | 6 +++---
.../dubbo/rpc/protocol/rest/HttpMessageCodecManagerTest.java | 9 +++++----
14 files changed, 43 insertions(+), 41 deletions(-)
diff --git
a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/ArgInfo.java
b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/ArgInfo.java
index dc2f7001f8..18713e602a 100644
---
a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/ArgInfo.java
+++
b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/ArgInfo.java
@@ -160,6 +160,10 @@ public class ArgInfo {
return actualType;
}
+ public void setActualType(Type actualType) {
+ this.actualType = actualType;
+ }
+
@Override
public String toString() {
return "ArgInfo{" + "index="
diff --git
a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/RestInvoker.java
b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/RestInvoker.java
index 5afb5fecd1..0757d67126 100644
---
a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/RestInvoker.java
+++
b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/RestInvoker.java
@@ -18,6 +18,7 @@ package org.apache.dubbo.rpc.protocol.rest;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.metadata.ParameterTypesComparator;
+import org.apache.dubbo.metadata.rest.ArgInfo;
import org.apache.dubbo.metadata.rest.RestMethodMetadata;
import org.apache.dubbo.metadata.rest.ServiceRestMetadata;
import org.apache.dubbo.metadata.rest.media.MediaType;
@@ -109,11 +110,10 @@ public class RestInvoker<T> extends AbstractInvoker<T> {
Method reflectMethod =
restMethodMetadata.getReflectMethod();
mediaType =
MediaTypeUtil.convertMediaType(reflectMethod.getReturnType(),
r.getContentType());
- Object value =
HttpMessageCodecManager.httpMessageDecode(
- r.getBody(),
- reflectMethod.getReturnType(),
- reflectMethod.getGenericReturnType(),
- mediaType);
+ ArgInfo argInfo = new ArgInfo();
+
argInfo.setParamType(reflectMethod.getReturnType());
+
argInfo.setActualType(reflectMethod.getGenericReturnType());
+ Object value =
HttpMessageCodecManager.httpMessageDecode(r.getBody(), argInfo, mediaType);
appResponse.setValue(value);
// resolve response attribute & attachment
HttpHeaderUtil.parseResponseHeader(appResponse, r);
diff --git
a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/annotation/param/parse/provider/BodyProviderParamParser.java
b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/annotation/param/parse/provider/BodyProviderParamParser.java
index 022a1c7d60..3b7ac22d09 100644
---
a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/annotation/param/parse/provider/BodyProviderParamParser.java
+++
b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/annotation/param/parse/provider/BodyProviderParamParser.java
@@ -41,8 +41,7 @@ public class BodyProviderParamParser extends
ProviderParamParser {
try {
String contentType =
parseContext.getRequestFacade().getHeader(RestHeaderEnum.CONTENT_TYPE.getHeader());
MediaType mediaType =
MediaTypeUtil.convertMediaType(argInfo.getParamType(), contentType);
- Object param = HttpMessageCodecManager.httpMessageDecode(
- request.getInputStream(), argInfo.getParamType(),
argInfo.actualReflectType(), mediaType);
+ Object param =
HttpMessageCodecManager.httpMessageDecode(request.getInputStream(), argInfo,
mediaType);
parseContext.setValueByIndex(argInfo.getIndex(), param);
} catch (Throwable e) {
throw new ParamParseException("dubbo rest protocol provider body
param parser error: " + e.getMessage());
diff --git
a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/annotation/param/parse/provider/ParamProviderParamParser.java
b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/annotation/param/parse/provider/ParamProviderParamParser.java
index be489d33cf..bb7bde7cb4 100644
---
a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/annotation/param/parse/provider/ParamProviderParamParser.java
+++
b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/annotation/param/parse/provider/ParamProviderParamParser.java
@@ -53,7 +53,9 @@ public class ParamProviderParamParser extends
ProviderParamParser {
String param =
request.getParameter(argInfo.getAnnotationNameAttribute());
Object paramValue = paramTypeConvert(argInfo.getParamType(), param);
- parseContext.setValueByIndex(argInfo.getIndex(), paramValue);
+ if (paramValue != null) {
+ parseContext.setValueByIndex(argInfo.getIndex(), paramValue);
+ }
}
@Override
diff --git
a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/message/HttpMessageCodecManager.java
b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/message/HttpMessageCodecManager.java
index 212ebb4ffb..497b103dee 100644
---
a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/message/HttpMessageCodecManager.java
+++
b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/message/HttpMessageCodecManager.java
@@ -17,13 +17,13 @@
package org.apache.dubbo.rpc.protocol.rest.message;
import org.apache.dubbo.common.URL;
+import org.apache.dubbo.metadata.rest.ArgInfo;
import org.apache.dubbo.metadata.rest.media.MediaType;
import org.apache.dubbo.rpc.model.FrameworkModel;
import
org.apache.dubbo.rpc.protocol.rest.exception.UnSupportContentTypeException;
import org.apache.dubbo.rpc.protocol.rest.pair.MessageCodecResultPair;
import java.io.OutputStream;
-import java.lang.reflect.Type;
import java.util.Set;
public class HttpMessageCodecManager {
@@ -31,15 +31,15 @@ public class HttpMessageCodecManager {
.getExtensionLoader(HttpMessageCodec.class)
.getSupportedExtensionInstances();
- public static Object httpMessageDecode(byte[] body, Class<?> type, Type
actualType, MediaType mediaType)
- throws Exception {
+ public static Object httpMessageDecode(byte[] body, ArgInfo argInfo,
MediaType mediaType) throws Exception {
+ Class<?> type = argInfo.getParamType();
if (body == null || body.length == 0) {
return null;
}
for (HttpMessageCodec httpMessageCodec : httpMessageCodecs) {
if (httpMessageCodec.contentTypeSupport(mediaType, type) ||
typeJudge(mediaType, type, httpMessageCodec)) {
- return httpMessageCodec.decode(body, type, actualType);
+ return httpMessageCodec.decode(body, argInfo);
}
}
throw new UnSupportContentTypeException("UnSupport content-type :" +
mediaType.value);
diff --git
a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/message/HttpMessageDecode.java
b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/message/HttpMessageDecode.java
index 8b32281600..29e478eb8c 100644
---
a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/message/HttpMessageDecode.java
+++
b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/message/HttpMessageDecode.java
@@ -16,9 +16,9 @@
*/
package org.apache.dubbo.rpc.protocol.rest.message;
-import java.lang.reflect.Type;
+import org.apache.dubbo.metadata.rest.ArgInfo;
public interface HttpMessageDecode<InputStream> {
- Object decode(InputStream body, Class<?> targetType, Type actualTYpe)
throws Exception;
+ Object decode(InputStream body, ArgInfo argInfo) throws Exception;
}
diff --git
a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/message/codec/ByteArrayCodec.java
b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/message/codec/ByteArrayCodec.java
index 2dc0a85ad7..92c1b7ed04 100644
---
a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/message/codec/ByteArrayCodec.java
+++
b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/message/codec/ByteArrayCodec.java
@@ -18,11 +18,11 @@ package org.apache.dubbo.rpc.protocol.rest.message.codec;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.extension.Activate;
+import org.apache.dubbo.metadata.rest.ArgInfo;
import org.apache.dubbo.metadata.rest.media.MediaType;
import org.apache.dubbo.rpc.protocol.rest.message.HttpMessageCodec;
import java.io.OutputStream;
-import java.lang.reflect.Type;
/**
* body type is byte array
@@ -31,7 +31,7 @@ import java.lang.reflect.Type;
public class ByteArrayCodec implements HttpMessageCodec<byte[], OutputStream> {
@Override
- public Object decode(byte[] body, Class<?> targetType, Type type) throws
Exception {
+ public Object decode(byte[] body, ArgInfo argInfo) throws Exception {
return body;
}
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 49994f18b1..3863bdc5ee 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
@@ -19,13 +19,13 @@ package org.apache.dubbo.rpc.protocol.rest.message.codec;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.extension.Activate;
import org.apache.dubbo.common.utils.JsonUtils;
+import org.apache.dubbo.metadata.rest.ArgInfo;
import org.apache.dubbo.metadata.rest.media.MediaType;
import org.apache.dubbo.rpc.protocol.rest.message.HttpMessageCodec;
import org.apache.dubbo.rpc.protocol.rest.message.MediaTypeMatcher;
import org.apache.dubbo.rpc.protocol.rest.util.DataParseUtils;
import java.io.OutputStream;
-import java.lang.reflect.Type;
import java.nio.charset.StandardCharsets;
import java.util.HashSet;
import java.util.Set;
@@ -46,8 +46,8 @@ public class JsonCodec implements HttpMessageCodec<byte[],
OutputStream> {
}
@Override
- public Object decode(byte[] body, Class<?> targetType, Type actualType)
throws Exception {
- return DataParseUtils.jsonConvert(actualType, body);
+ public Object decode(byte[] body, ArgInfo argInfo) throws Exception {
+ return DataParseUtils.jsonConvert(argInfo.actualReflectType(), body);
}
@Override
diff --git
a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/message/codec/MultiValueCodec.java
b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/message/codec/MultiValueCodec.java
index a78f793c7b..794feecb51 100644
---
a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/message/codec/MultiValueCodec.java
+++
b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/message/codec/MultiValueCodec.java
@@ -19,6 +19,7 @@ package org.apache.dubbo.rpc.protocol.rest.message.codec;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.extension.Activate;
import org.apache.dubbo.common.utils.ReflectUtils;
+import org.apache.dubbo.metadata.rest.ArgInfo;
import org.apache.dubbo.metadata.rest.media.MediaType;
import org.apache.dubbo.rpc.protocol.rest.message.HttpMessageCodec;
import org.apache.dubbo.rpc.protocol.rest.message.MediaTypeMatcher;
@@ -26,11 +27,8 @@ import
org.apache.dubbo.rpc.protocol.rest.util.DataParseUtils;
import java.io.OutputStream;
import java.lang.reflect.Field;
-import java.lang.reflect.Type;
-import java.util.ArrayList;
import java.util.List;
import java.util.Map;
-import java.util.Set;
/**
* body is form
@@ -39,17 +37,15 @@ import java.util.Set;
public class MultiValueCodec implements HttpMessageCodec<byte[], OutputStream>
{
@Override
- public Object decode(byte[] body, Class<?> targetType, Type type) throws
Exception {
+ public Object decode(byte[] body, ArgInfo argInfo) throws Exception {
+ Class<?> targetType = argInfo.getParamType();
Object map = DataParseUtils.multipartFormConvert(body, targetType);
Map valuesMap = (Map) map;
if (Map.class.isAssignableFrom(targetType)) {
return map;
} else if (DataParseUtils.isTextType(targetType)) {
- // only fetch first
- Set set = valuesMap.keySet();
- ArrayList arrayList = new ArrayList<>(set);
- Object key = arrayList.get(0);
+ String key = argInfo.getParamName();
Object value = valuesMap.get(key);
if (value == null) {
return null;
diff --git
a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/message/codec/ResteasyResponseCodec.java
b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/message/codec/ResteasyResponseCodec.java
index 0cb0efc7b1..27ab3ff54b 100644
---
a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/message/codec/ResteasyResponseCodec.java
+++
b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/message/codec/ResteasyResponseCodec.java
@@ -20,12 +20,12 @@ import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.extension.Activate;
import org.apache.dubbo.common.utils.ClassUtils;
import org.apache.dubbo.common.utils.JsonUtils;
+import org.apache.dubbo.metadata.rest.ArgInfo;
import org.apache.dubbo.metadata.rest.media.MediaType;
import org.apache.dubbo.rpc.protocol.rest.message.HttpMessageCodec;
import java.io.OutputStream;
import java.lang.reflect.Method;
-import java.lang.reflect.Type;
import java.nio.charset.StandardCharsets;
@Activate(onClass = "javax.ws.rs.core.Response")
@@ -58,7 +58,7 @@ public class ResteasyResponseCodec implements
HttpMessageCodec<byte[], OutputStr
}
@Override
- public Object decode(byte[] body, Class<?> targetType, Type type) throws
Exception {
+ public Object decode(byte[] body, ArgInfo argInfo) throws Exception {
if (null == body || body.length == 0) {
return null;
}
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 1a543a2ad7..446939fe1f 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
@@ -18,11 +18,11 @@ package org.apache.dubbo.rpc.protocol.rest.message.codec;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.extension.Activate;
+import org.apache.dubbo.metadata.rest.ArgInfo;
import org.apache.dubbo.metadata.rest.media.MediaType;
import org.apache.dubbo.rpc.protocol.rest.message.HttpMessageCodec;
import java.io.OutputStream;
-import java.lang.reflect.Type;
import java.nio.charset.StandardCharsets;
/**
@@ -32,7 +32,7 @@ import java.nio.charset.StandardCharsets;
public class StringCodec implements HttpMessageCodec<byte[], OutputStream> {
@Override
- public Object decode(byte[] body, Class<?> targetType, Type type) throws
Exception {
+ public Object decode(byte[] body, ArgInfo argInfo) throws Exception {
if (body == null || body.length == 0) {
return null;
}
diff --git
a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/message/codec/TextCodec.java
b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/message/codec/TextCodec.java
index 16f13bd413..5897495a07 100644
---
a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/message/codec/TextCodec.java
+++
b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/message/codec/TextCodec.java
@@ -18,13 +18,13 @@ package org.apache.dubbo.rpc.protocol.rest.message.codec;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.extension.Activate;
+import org.apache.dubbo.metadata.rest.ArgInfo;
import org.apache.dubbo.metadata.rest.media.MediaType;
import org.apache.dubbo.rpc.protocol.rest.message.HttpMessageCodec;
import org.apache.dubbo.rpc.protocol.rest.message.MediaTypeMatcher;
import org.apache.dubbo.rpc.protocol.rest.util.DataParseUtils;
import java.io.OutputStream;
-import java.lang.reflect.Type;
import java.nio.charset.StandardCharsets;
/**
@@ -34,8 +34,8 @@ import java.nio.charset.StandardCharsets;
public class TextCodec implements HttpMessageCodec<byte[], OutputStream> {
@Override
- public Object decode(byte[] body, Class<?> targetType, Type type) throws
Exception {
- return DataParseUtils.stringTypeConvert(targetType, new String(body,
StandardCharsets.UTF_8));
+ public Object decode(byte[] body, ArgInfo argInfo) throws Exception {
+ return DataParseUtils.stringTypeConvert(argInfo.getParamType(), new
String(body, StandardCharsets.UTF_8));
}
@Override
diff --git
a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/message/codec/XMLCodec.java
b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/message/codec/XMLCodec.java
index f696c91e8e..e75b7dfce4 100644
---
a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/message/codec/XMLCodec.java
+++
b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/message/codec/XMLCodec.java
@@ -18,6 +18,7 @@ package org.apache.dubbo.rpc.protocol.rest.message.codec;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.extension.Activate;
+import org.apache.dubbo.metadata.rest.ArgInfo;
import org.apache.dubbo.metadata.rest.media.MediaType;
import org.apache.dubbo.rpc.protocol.rest.message.HttpMessageCodec;
import org.apache.dubbo.rpc.protocol.rest.message.MediaTypeMatcher;
@@ -31,7 +32,6 @@ import javax.xml.transform.sax.SAXSource;
import java.io.OutputStream;
import java.io.StringReader;
-import java.lang.reflect.Type;
import org.xml.sax.InputSource;
@@ -42,7 +42,7 @@ import org.xml.sax.InputSource;
public class XMLCodec implements HttpMessageCodec<byte[], OutputStream> {
@Override
- public Object decode(byte[] body, Class<?> targetType, Type type) throws
Exception {
+ public Object decode(byte[] body, ArgInfo argInfo) throws Exception {
SAXParserFactory spf = SAXParserFactory.newInstance();
spf.setFeature("http://xml.org/sax/features/external-general-entities", false);
@@ -53,7 +53,7 @@ public class XMLCodec implements HttpMessageCodec<byte[],
OutputStream> {
Source xmlSource =
new SAXSource(spf.newSAXParser().getXMLReader(), new
InputSource(new StringReader(new String(body))));
- JAXBContext context = JAXBContext.newInstance(targetType);
+ JAXBContext context = JAXBContext.newInstance(argInfo.getParamType());
Unmarshaller unmarshaller = context.createUnmarshaller();
return unmarshaller.unmarshal(xmlSource);
}
diff --git
a/dubbo-rpc/dubbo-rpc-rest/src/test/java/org/apache/dubbo/rpc/protocol/rest/HttpMessageCodecManagerTest.java
b/dubbo-rpc/dubbo-rpc-rest/src/test/java/org/apache/dubbo/rpc/protocol/rest/HttpMessageCodecManagerTest.java
index 06c0ff5e18..ab9a0481c1 100644
---
a/dubbo-rpc/dubbo-rpc-rest/src/test/java/org/apache/dubbo/rpc/protocol/rest/HttpMessageCodecManagerTest.java
+++
b/dubbo-rpc/dubbo-rpc-rest/src/test/java/org/apache/dubbo/rpc/protocol/rest/HttpMessageCodecManagerTest.java
@@ -16,6 +16,7 @@
*/
package org.apache.dubbo.rpc.protocol.rest;
+import org.apache.dubbo.metadata.rest.ArgInfo;
import org.apache.dubbo.metadata.rest.media.MediaType;
import org.apache.dubbo.rpc.protocol.rest.message.HttpMessageCodecManager;
import org.apache.dubbo.rpc.protocol.rest.message.codec.XMLCodec;
@@ -38,11 +39,11 @@ public class HttpMessageCodecManagerTest {
HttpMessageCodecManager.httpMessageEncode(
byteArrayOutputStream, registrationResult, null,
MediaType.TEXT_XML, null);
+ ArgInfo argInfo = new ArgInfo();
+ argInfo.setActualType(RegistrationResult.class);
+ argInfo.setParamType(RegistrationResult.class);
Object o = HttpMessageCodecManager.httpMessageDecode(
- byteArrayOutputStream.toByteArray(),
- RegistrationResult.class,
- RegistrationResult.class,
- MediaType.TEXT_XML);
+ byteArrayOutputStream.toByteArray(), argInfo,
MediaType.TEXT_XML);
Assertions.assertEquals(registrationResult, o);