This commit is contained in:
redkale
2024-10-03 01:05:12 +08:00
parent 67aa3c0609
commit 8e981e1b7e
14 changed files with 220 additions and 204 deletions

View File

@@ -26,7 +26,7 @@ public class RequiredBeanTest {
@Test
public void run() throws Exception {
RequiredBean bean = RequiredBean.create();
RequiredBean bean = createRequiredBean();
ProtobufConvert convert = ProtobufConvert.root();
byte[] bytes = convert.convertTo(bean);
System.out.println("序列化0: 26.[0x08,0x0c,0x12,0x03,0x61,0x61,0x61,0x12,0x03,0x62,0x62,0x62,"
@@ -52,83 +52,36 @@ public class RequiredBeanTest {
Assertions.assertEquals(jsons1, jsons2);
}
public static RequiredBean createRequiredBean() {
RequiredBean bean = new RequiredBean();
bean.id = 6;
bean.strs1 = new String[] {"aaa", "bbb"};
bean.strs2 = List.of("ccc", "ddd");
bean.zbig1 = List.of(new AtomicInteger(1), new AtomicInteger(2));
return bean;
}
public static class RequiredArray {
@ConvertColumn(index = 1)
private RequiredBean[] beans;
public RequiredBean[] beans;
@ConvertColumn(index = 2)
private int id;
public RequiredBean[] getBeans() {
return beans;
}
public void setBeans(RequiredBean[] beans) {
this.beans = beans;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int id;
}
public static class RequiredBean {
public static RequiredBean create() {
RequiredBean bean = new RequiredBean();
bean.id = 6;
bean.strs1 = new String[] {"aaa", "bbb"};
bean.strs2 = List.of("ccc", "ddd");
bean.zbig1 = List.of(new AtomicInteger(1), new AtomicInteger(2));
return bean;
}
@ConvertColumn(index = 1)
private int id;
public int id;
@ConvertColumn(index = 2)
private String[] strs1;
public String[] strs1;
@ConvertColumn(index = 3)
private List<String> strs2;
public List<String> strs2;
@ConvertColumn(index = 4)
private List<AtomicInteger> zbig1;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String[] getStrs1() {
return strs1;
}
public void setStrs1(String[] strs1) {
this.strs1 = strs1;
}
public List<String> getStrs2() {
return strs2;
}
public void setStrs2(List<String> strs2) {
this.strs2 = strs2;
}
public List<AtomicInteger> getZbig1() {
return zbig1;
}
public void setZbig1(List<AtomicInteger> zbig1) {
this.zbig1 = zbig1;
}
public List<AtomicInteger> zbig1;
}
}

View File

@@ -26,60 +26,60 @@ public class UserBeanProtoDynEncoder extends ProtobufDynEncoder<UserBean> {
}
@Override
public void convertTo(ProtobufWriter out0, EnMember parentMember, UserBean value) {
public void convertTo(ProtobufWriter out, EnMember parentMember, UserBean value) {
if (value == null) {
return;
}
ProtobufWriter out = objectWriter(out0, parentMember, value);
out.writeObjectB(value);
out.writeFieldValue(1, value.getSeqid());
out.writeFieldValue(2, value.getName());
out.writeFieldValue(3, value.getImg());
out.writeFieldValue(4, numberSimpledCoder, value.getNumber());
out.writeFieldValue(5, scaleSimpledCoder, value.getScale());
out.writeFieldValue(6, value.getBit());
ProtobufWriter subout = acceptWriter(out, parentMember);
subout.writeObjectB(value);
subout.writeFieldValue(1, value.getSeqid());
subout.writeFieldValue(2, value.getName());
subout.writeFieldValue(3, value.getImg());
subout.writeFieldValue(4, numberSimpledCoder, value.getNumber());
subout.writeFieldValue(5, scaleSimpledCoder, value.getScale());
subout.writeFieldValue(6, value.getBit());
out.writeFieldValue(7, value.isFlag());
out.writeFieldValue(8, value.getStatus());
out.writeFieldValue(9, value.getId());
out.writeFieldValue(10, value.getCreateTime());
out.writeFieldValue(11, value.getPoint());
out.writeFieldValue(12, value.getMoney());
subout.writeFieldValue(7, value.isFlag());
subout.writeFieldValue(8, value.getStatus());
subout.writeFieldValue(9, value.getId());
subout.writeFieldValue(10, value.getCreateTime());
subout.writeFieldValue(11, value.getPoint());
subout.writeFieldValue(12, value.getMoney());
out.writeFieldValue(13, value.getFlag2());
out.writeFieldValue(14, value.getStatus2());
out.writeFieldValue(15, value.getId2());
out.writeFieldValue(16, value.getCreateTime2());
out.writeFieldValue(17, value.getPoint2());
out.writeFieldValue(18, value.getMoney2());
subout.writeFieldValue(13, value.getFlag2());
subout.writeFieldValue(14, value.getStatus2());
subout.writeFieldValue(15, value.getId2());
subout.writeFieldValue(16, value.getCreateTime2());
subout.writeFieldValue(17, value.getPoint2());
subout.writeFieldValue(18, value.getMoney2());
out.writeFieldValue(19, value.id3);
out.writeFieldValue(20, value.createTime3);
out.writeFieldValue(21, value.point3);
out.writeFieldValue(22, value.money3);
out.writeFieldValue(23, value.bit3);
subout.writeFieldValue(19, value.id3);
subout.writeFieldValue(20, value.createTime3);
subout.writeFieldValue(21, value.point3);
subout.writeFieldValue(22, value.money3);
subout.writeFieldValue(23, value.bit3);
out.writeFieldValue(19, value.getId4());
out.writeFieldValue(20, value.getCreateTime4());
out.writeFieldValue(21, value.getPoint4());
out.writeFieldValue(22, value.getMoney4());
out.writeFieldValue(23, value.getBit4());
subout.writeFieldValue(19, value.getId4());
subout.writeFieldValue(20, value.getCreateTime4());
subout.writeFieldValue(21, value.getPoint4());
subout.writeFieldValue(22, value.getMoney4());
subout.writeFieldValue(23, value.getBit4());
out.writeFieldValue(19, value.getId5());
out.writeFieldValue(20, value.getCreateTime5());
out.writeFieldValue(21, value.getPoint5());
out.writeFieldValue(22, value.getMoney5());
out.writeFieldValue(23, value.getBit5());
subout.writeFieldValue(19, value.getId5());
subout.writeFieldValue(20, value.getCreateTime5());
subout.writeFieldValue(21, value.getPoint5());
subout.writeFieldValue(22, value.getMoney5());
subout.writeFieldValue(23, value.getBit5());
out.writeFieldIntsValue(19, value.getId6());
out.writeFieldLongsValue(20, value.getCreateTime6());
out.writeFieldFloatsValue(21, value.getPoint6());
out.writeFieldDoublesValue(22, value.getMoney6());
out.writeFieldBytesValue(23, value.getBit6());
out.writeFieldStringsValue(23, value.getStrs());
subout.writeFieldIntsValue(19, value.getId6());
subout.writeFieldLongsValue(20, value.getCreateTime6());
subout.writeFieldFloatsValue(21, value.getPoint6());
subout.writeFieldDoublesValue(22, value.getMoney6());
subout.writeFieldBytesValue(23, value.getBit6());
subout.writeFieldStringsValue(23, value.getStrs());
out.writeObjectField(mapEnMember, value);
out.writeObjectE(value);
offerWriter(out0, out);
subout.writeObjectField(mapEnMember, value);
subout.writeObjectE(value);
offerWriter(out, subout);
}
}

View File

@@ -4,6 +4,8 @@
*/
package org.redkale.test.convert.pb;
import java.lang.reflect.Method;
import java.lang.reflect.Type;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.redkale.convert.Encodeable;
@@ -19,10 +21,20 @@ public class UserDynTest {
public static void main(String[] args) throws Throwable {
UserDynTest test = new UserDynTest();
test.run1();
test.run2();
}
@Test
public void run1() throws Exception {
ProtobufFactory factory = ProtobufFactory.root();
Method method = ProtobufFactory.class.getDeclaredMethod("createObjectEncoder", Type.class);
method.setAccessible(true);
Encodeable encoder = (Encodeable) method.invoke(factory, UserBean.class);
Assertions.assertTrue(!ProtobufDynEncoder.class.isAssignableFrom(encoder.getClass()));
}
@Test
public void run2() throws Exception {
ProtobufFactory factory = ProtobufFactory.root();
Encodeable encoder = factory.loadEncoder(UserBean.class);
Assertions.assertTrue(ProtobufDynEncoder.class.isAssignableFrom(encoder.getClass()));