Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion soul-bootstrap/src/main/resources/application-local.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ spring:
read-timeout: 30
write-timeout: 10
zookeeper:
url : localhost:2181
url : zk.zookeeper:2181
sessionTimeout: 5000
connectionTimeout : 2000
serializer : KryoSerializer
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,8 @@ public class DubboServiceProxyTest extends BaseTest {
public void before() {

selectorHandle = new DubboSelectorHandle();
selectorHandle.setAppName("local");
selectorHandle.setRegistry("zookeeper://localhost:2181");
selectorHandle.setAppName("test-dubbo-service");
selectorHandle.setRegistry("zookeeper://zk.zookeeper:2181");

ruleHandle = new DubboRuleHandle();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package org.dromara.soul.test.dubbo.api.entity;


import lombok.Data;

import java.io.Serializable;

@Data
public class Address implements Serializable {

private String province;
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.net.URLEncoder;

/**
* DubboTest.
Expand All @@ -36,4 +37,12 @@ public class DubboTest implements Serializable {
private String id;

private String name;

private Address address;


public static void main(String[] args) throws Exception{
System.out.println(URLEncoder.encode("安徽","UTF-8"));
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,9 @@ public DubboTest findById(String id) {
@Override
public DubboTest insert(DubboTest dubboTest) {
DubboTest test = new DubboTest();
test.setId("2");
test.setName("myth");
test.setId(dubboTest.getId());
test.setName(dubboTest.getName());
test.setAddress(dubboTest.getAddress());
return test;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@

<dubbo:application name="test-dubbo-service"/>

<dubbo:registry protocol="zookeeper" address="localhost:2181"/>
<dubbo:registry protocol="zookeeper" address="zookeeper://zk.zookeeper:2181"/>

<dubbo:protocol accesslog="true" name="dubbo" port="20889"/>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import com.alibaba.dubbo.rpc.service.GenericService;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.gson.JsonArray;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
Expand Down Expand Up @@ -109,7 +110,8 @@ private Pair<String[], Object[]> buildParameter(final Map<String, Object> paramM
List<Object> args = Lists.newArrayList();
//如果参数里面包含class字段
//如果参数里面包含class字段
if (paramMap.containsKey(DubboParamConstants.PARAM_CLASS)) {
if (paramMap.containsKey(DubboParamConstants.PARAM_CLASS)
&& !StringUtils.equals(String.valueOf(paramMap.get(DubboParamConstants.PARAM_CLASS)), "null")) {
List<String> clazz = GSONUtils.getInstance()
.fromJson(paramMap.get(DubboParamConstants.PARAM_CLASS).toString(), List.class);
//设置参数为class 类型
Expand All @@ -123,21 +125,38 @@ private Pair<String[], Object[]> buildParameter(final Map<String, Object> paramM

if (hasList.get()) {
final Object classParams = paramMap.get(DubboParamConstants.CLASS_PARAMS);
List<Map> params = GSONUtils.getInstance().toListMap(classParams.toString());
args.add(params);
JsonArray classParamslist = (JsonArray) classParams;
classParamslist.forEach(classParam -> {
try {
List<Map> params = GSONUtils.getInstance().toListMap(classParam.toString());
args.add(params);
} catch (Exception e) {
try {
List<String> arg = GSONUtils.getInstance().fromJson(classParam.toString(), List.class);
arg.forEach(j -> {
args.add(j);
});
} catch (Exception e1) {
Object arg = GSONUtils.getInstance().fromJson(classParam.toString(), Object.class);
args.add(arg);
}
}
});

} else {
final Object classParams = paramMap.get(DubboParamConstants.CLASS_PARAMS);
args.addAll(GSONUtils.getInstance()
.fromJson(classParams.toString(), List.class));
}
}
//如果Map参数里面包含 params字段 规定params 里面是json字符串转成Map key为类型,value为值
if (paramMap.containsKey(DubboParamConstants.PARAMS)) {
if (paramMap.containsKey(DubboParamConstants.PARAMS)
&& !StringUtils.equals(String.valueOf(paramMap.get(DubboParamConstants.PARAMS)), "null")) {
final Object params = paramMap.get(DubboParamConstants.PARAMS);
final Map<String, Object> objectMap = GSONUtils.getInstance().toObjectMap(params.toString());
objectMap.forEach((k, v) -> {
//如果v是数组类型
if (v instanceof List) {
if (v instanceof JsonArray) {
List<String> arg = GSONUtils.getInstance().fromJson(v.toString(), List.class);
arg.forEach(j -> {
paramList.add(k);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import org.springframework.http.server.reactive.ServerHttpRequest;

import java.io.Serializable;
import java.net.URLDecoder;

/**
* the soul request DTO .
Expand Down Expand Up @@ -100,7 +101,13 @@ public static RequestDTO transform(final ServerHttpRequest request) {
final String rpcType = request.getHeaders().getFirst(Constants.RPC_TYPE);
final String sign = request.getHeaders().getFirst(Constants.SIGN);
final String timestamp = request.getHeaders().getFirst(Constants.TIMESTAMP);
final String dubboParams = request.getHeaders().getFirst(Constants.DUBBO_PARAMS);
String dubboParamsDecoder = null;
try {
dubboParamsDecoder = URLDecoder.decode(request.getHeaders().getFirst(Constants.DUBBO_PARAMS),"UTF-8");
}catch (Exception e ){

}
final String dubboParams = dubboParamsDecoder;
final String extInfo = request.getHeaders().getFirst(Constants.EXT_INFO);
RequestDTO requestDTO = new RequestDTO();
requestDTO.setModule(module);
Expand Down