修复RestConvertCoder不生效的bug
This commit is contained in:
@@ -341,5 +341,5 @@ public interface HttpRequestDesc {
|
||||
public void setAttribute(String name, Object value);
|
||||
|
||||
// 获取request创建时间
|
||||
public long getCreatetime();
|
||||
public long getCreateTime();
|
||||
}
|
||||
|
||||
59
src/test/java/org/redkale/test/http/RestConvertBean.java
Normal file
59
src/test/java/org/redkale/test/http/RestConvertBean.java
Normal file
@@ -0,0 +1,59 @@
|
||||
/*
|
||||
|
||||
*/
|
||||
|
||||
package org.redkale.test.http;
|
||||
|
||||
import org.redkale.convert.json.JsonConvert;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author zhangjx
|
||||
*/
|
||||
public class RestConvertBean {
|
||||
|
||||
private int id;
|
||||
|
||||
private boolean enable;
|
||||
|
||||
private String name;
|
||||
|
||||
private RestConvertItem content;
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public boolean isEnable() {
|
||||
return enable;
|
||||
}
|
||||
|
||||
public void setEnable(boolean enable) {
|
||||
this.enable = enable;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public RestConvertItem getContent() {
|
||||
return content;
|
||||
}
|
||||
|
||||
public void setContent(RestConvertItem content) {
|
||||
this.content = content;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return JsonConvert.root().convertTo(this);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
/*
|
||||
|
||||
*/
|
||||
|
||||
package org.redkale.test.http;
|
||||
|
||||
import org.redkale.convert.Reader;
|
||||
import org.redkale.convert.SimpledCoder;
|
||||
import org.redkale.convert.Writer;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author zhangjx
|
||||
* @param <R> Reader
|
||||
* @param <W> Writer
|
||||
*/
|
||||
public class RestConvertBoolCoder<R extends Reader, W extends Writer> extends SimpledCoder<R, W, Boolean> {
|
||||
|
||||
@Override
|
||||
public void convertTo(W out, Boolean value) {
|
||||
out.writeInt(value == null || !value ? 0 : 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean convertFrom(R in) {
|
||||
return in.readInt() == 1;
|
||||
}
|
||||
}
|
||||
41
src/test/java/org/redkale/test/http/RestConvertItem.java
Normal file
41
src/test/java/org/redkale/test/http/RestConvertItem.java
Normal file
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
|
||||
*/
|
||||
|
||||
package org.redkale.test.http;
|
||||
|
||||
import org.redkale.convert.ConvertColumn;
|
||||
import org.redkale.convert.json.JsonConvert;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author zhangjx
|
||||
*/
|
||||
public class RestConvertItem {
|
||||
|
||||
private long createTime;
|
||||
|
||||
@ConvertColumn(ignore = true)
|
||||
private String aesKey;
|
||||
|
||||
public long getCreateTime() {
|
||||
return createTime;
|
||||
}
|
||||
|
||||
public void setCreateTime(long createTime) {
|
||||
this.createTime = createTime;
|
||||
}
|
||||
|
||||
public String getAesKey() {
|
||||
return aesKey;
|
||||
}
|
||||
|
||||
public void setAesKey(String aesKey) {
|
||||
this.aesKey = aesKey;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return JsonConvert.root().convertTo(this);
|
||||
}
|
||||
}
|
||||
49
src/test/java/org/redkale/test/http/RestConvertService.java
Normal file
49
src/test/java/org/redkale/test/http/RestConvertService.java
Normal file
@@ -0,0 +1,49 @@
|
||||
/*
|
||||
|
||||
*/
|
||||
|
||||
package org.redkale.test.http;
|
||||
|
||||
import org.redkale.net.http.RestConvert;
|
||||
import org.redkale.net.http.RestConvertCoder;
|
||||
import org.redkale.net.http.RestService;
|
||||
import org.redkale.service.AbstractService;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author zhangjx
|
||||
*/
|
||||
@RestService(name = "test", autoMapping = true)
|
||||
public class RestConvertService extends AbstractService {
|
||||
|
||||
public RestConvertBean load1() {
|
||||
return createBean();
|
||||
}
|
||||
|
||||
@RestConvert(type = RestConvertItem.class, skipIgnore = true)
|
||||
public RestConvertBean load2() {
|
||||
return createBean();
|
||||
}
|
||||
|
||||
@RestConvert(type = RestConvertBean.class, onlyColumns = "id")
|
||||
public RestConvertBean load3() {
|
||||
return createBean();
|
||||
}
|
||||
|
||||
@RestConvertCoder(type = RestConvertBean.class, field = "enable", coder = RestConvertBoolCoder.class)
|
||||
public RestConvertBean load4() {
|
||||
return createBean();
|
||||
}
|
||||
|
||||
private RestConvertBean createBean() {
|
||||
RestConvertBean bean = new RestConvertBean();
|
||||
bean.setId(123);
|
||||
bean.setName("haha");
|
||||
bean.setEnable(true);
|
||||
RestConvertItem item = new RestConvertItem();
|
||||
item.setCreateTime(100);
|
||||
item.setAesKey("keykey");
|
||||
bean.setContent(item);
|
||||
return bean;
|
||||
}
|
||||
}
|
||||
129
src/test/java/org/redkale/test/http/RestConvertTest.java
Normal file
129
src/test/java/org/redkale/test/http/RestConvertTest.java
Normal file
@@ -0,0 +1,129 @@
|
||||
/*
|
||||
|
||||
*/
|
||||
|
||||
package org.redkale.test.http;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.lang.reflect.Method;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.net.Socket;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.redkale.boot.Application;
|
||||
import org.redkale.convert.bson.BsonConvert;
|
||||
import org.redkale.convert.json.JsonConvert;
|
||||
import org.redkale.inject.ResourceFactory;
|
||||
import org.redkale.net.AsyncIOGroup;
|
||||
import org.redkale.net.http.HttpServer;
|
||||
import org.redkale.net.http.HttpServlet;
|
||||
import org.redkale.net.sncp.Sncp;
|
||||
import org.redkale.util.AnyValueWriter;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author zhangjx
|
||||
*/
|
||||
public class RestConvertTest {
|
||||
|
||||
public static void main(String[] args) throws Throwable {
|
||||
RestConvertTest test = new RestConvertTest();
|
||||
test.run();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void run() throws Exception {
|
||||
System.out.println("------------------- 并发调用 -----------------------------------");
|
||||
final Application application = Application.create(true);
|
||||
final AsyncIOGroup asyncGroup = new AsyncIOGroup(8192, 16);
|
||||
asyncGroup.start();
|
||||
final ResourceFactory resFactory = ResourceFactory.create();
|
||||
resFactory.register(JsonConvert.root());
|
||||
resFactory.register(BsonConvert.root());
|
||||
Method method = Application.class.getDeclaredMethod("initWorkExecutor");
|
||||
method.setAccessible(true);
|
||||
method.invoke(application);
|
||||
|
||||
// ------------------------ 初始化 CService ------------------------------------
|
||||
RestConvertService service = Sncp.createSimpleLocalService(RestConvertService.class, resFactory);
|
||||
HttpServer server = new HttpServer(application, System.currentTimeMillis(), resFactory);
|
||||
server.getResourceFactory().register(application);
|
||||
System.out.println("servlet = " + server.addRestServlet(null, service, null, HttpServlet.class, ""));
|
||||
server.init(AnyValueWriter.create("port", 0));
|
||||
server.start();
|
||||
|
||||
int port = server.getSocketAddress().getPort();
|
||||
System.out.println("服务器启动端口: " + port);
|
||||
InetSocketAddress httpAddress = new InetSocketAddress("127.0.0.1", port);
|
||||
Socket socket = new Socket(httpAddress.getAddress(), port);
|
||||
OutputStream out = socket.getOutputStream();
|
||||
byte[] bytes = new byte[8192];
|
||||
long s, e;
|
||||
{
|
||||
out.write(("GET /test/load1 HTTP/1.1\r\nConnection: Keep-Alive\r\nContent-Length: 0\r\n\r\n").getBytes());
|
||||
InputStream in = socket.getInputStream();
|
||||
s = System.currentTimeMillis();
|
||||
int pos = in.read(bytes);
|
||||
e = System.currentTimeMillis() - s;
|
||||
String rs = new String(bytes, 0, pos);
|
||||
System.out.println("返回字节: " + rs);
|
||||
System.out.println("耗时: " + e + " ms");
|
||||
String json = rs.substring(rs.lastIndexOf('\n') + 1);
|
||||
System.out.println("返回的json结果: " + json);
|
||||
Assertions.assertEquals(
|
||||
"{\"content\":{\"createTime\":100},\"enable\":true,\"id\":123,\"name\":\"haha\"}", json);
|
||||
System.out.println("------------------1--------------------");
|
||||
Assertions.assertTrue(e < 100);
|
||||
}
|
||||
{
|
||||
out.write(("GET /test/load2 HTTP/1.1\r\nConnection: Keep-Alive\r\nContent-Length: 0\r\n\r\n").getBytes());
|
||||
InputStream in = socket.getInputStream();
|
||||
s = System.currentTimeMillis();
|
||||
int pos = in.read(bytes);
|
||||
e = System.currentTimeMillis() - s;
|
||||
String rs = new String(bytes, 0, pos);
|
||||
System.out.println("返回字节: " + rs);
|
||||
System.out.println("耗时: " + e + " ms");
|
||||
String json = rs.substring(rs.lastIndexOf('\n') + 1);
|
||||
System.out.println("返回的json结果: " + json);
|
||||
Assertions.assertEquals(
|
||||
"{\"content\":{\"aesKey\":\"keykey\",\"createTime\":100},\"enable\":true,\"id\":123,\"name\":\"haha\"}",
|
||||
json);
|
||||
System.out.println("------------------2--------------------");
|
||||
Assertions.assertTrue(e < 100);
|
||||
}
|
||||
{
|
||||
out.write(("GET /test/load3 HTTP/1.1\r\nConnection: Keep-Alive\r\nContent-Length: 0\r\n\r\n").getBytes());
|
||||
InputStream in = socket.getInputStream();
|
||||
s = System.currentTimeMillis();
|
||||
int pos = in.read(bytes);
|
||||
e = System.currentTimeMillis() - s;
|
||||
String rs = new String(bytes, 0, pos);
|
||||
System.out.println("返回字节: " + rs);
|
||||
System.out.println("耗时: " + e + " ms");
|
||||
String json = rs.substring(rs.lastIndexOf('\n') + 1);
|
||||
System.out.println("返回的json结果: " + json);
|
||||
Assertions.assertEquals("{\"id\":123}", json);
|
||||
System.out.println("-----------------3---------------------");
|
||||
Assertions.assertTrue(e < 100);
|
||||
}
|
||||
{
|
||||
out.write(("GET /test/load4 HTTP/1.1\r\nConnection: Keep-Alive\r\nContent-Length: 0\r\n\r\n").getBytes());
|
||||
InputStream in = socket.getInputStream();
|
||||
s = System.currentTimeMillis();
|
||||
int pos = in.read(bytes);
|
||||
e = System.currentTimeMillis() - s;
|
||||
String rs = new String(bytes, 0, pos);
|
||||
System.out.println("返回字节: " + rs);
|
||||
System.out.println("耗时: " + e + " ms");
|
||||
String json = rs.substring(rs.lastIndexOf('\n') + 1);
|
||||
System.out.println("返回的json结果: " + json);
|
||||
Assertions.assertEquals(
|
||||
"{\"content\":{\"createTime\":100},\"enable\":1,\"id\":123,\"name\":\"haha\"}", json);
|
||||
System.out.println("-----------------4---------------------");
|
||||
Assertions.assertTrue(e < 100);
|
||||
}
|
||||
server.shutdown();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user