diff --git a/protocol/src/main/java/com/zfoo/protocol/registration/EnhanceUtils.java b/protocol/src/main/java/com/zfoo/protocol/registration/EnhanceUtils.java index 4e2b44d3..9b86c27b 100644 --- a/protocol/src/main/java/com/zfoo/protocol/registration/EnhanceUtils.java +++ b/protocol/src/main/java/com/zfoo/protocol/registration/EnhanceUtils.java @@ -219,12 +219,13 @@ public abstract class EnhanceUtils { for (var i = 0; i < fields.length; i++) { var field = fields[i]; var fieldRegistration = fieldRegistrations[i]; - var readObject = enhanceSerializer(fieldRegistration.serializer()).readObject(builder, field, fieldRegistration); - // 协议向后兼容 + // protocol backwards compatibility,协议向后兼容 if (field.isAnnotationPresent(Compatible.class)) { builder.append("if(!$1.isReadable()){ return packet; }"); } + var readObject = enhanceSerializer(fieldRegistration.serializer()).readObject(builder, field, fieldRegistration); + if (Modifier.isPublic(field.getModifiers())) { builder.append(StringUtils.format("packet.{}={};", field.getName(), readObject)); } else { diff --git a/protocol/src/test/java/com/zfoo/protocol/compatiblity/CompatiblityTest.java b/protocol/src/test/java/com/zfoo/protocol/compatiblity/CompatiblityTest.java index de6a0717..6c56636b 100644 --- a/protocol/src/test/java/com/zfoo/protocol/compatiblity/CompatiblityTest.java +++ b/protocol/src/test/java/com/zfoo/protocol/compatiblity/CompatiblityTest.java @@ -13,6 +13,8 @@ package com.zfoo.protocol.compatiblity; import com.zfoo.protocol.ProtocolManager; +import com.zfoo.protocol.generate.GenerateOperation; +import com.zfoo.protocol.packet.*; import com.zfoo.protocol.util.ClassUtils; import com.zfoo.protocol.util.IOUtils; import io.netty.buffer.ByteBufAllocator; @@ -21,6 +23,7 @@ import org.junit.Ignore; import org.junit.Test; import java.io.IOException; +import java.util.Set; import static com.zfoo.protocol.SpeedTest.complexObject; import static com.zfoo.protocol.SpeedTest.normalObject; @@ -31,12 +34,16 @@ import static com.zfoo.protocol.SpeedTest.normalObject; public class CompatiblityTest { /** - * 字节码增强的Map变量顺序会出现不一样,所以序列化的内容顺序会改变,关闭字节码增强就会发现序列化内容相同 - * @throws IOException + * EN: The order of the bytecode-enhanced Map traversal order will be different, so the order of the serialized content will change. + * You can see that the different ones are not consecutive. + *
+ * CN: 字节码增强的Map遍历顺序会出现不一样,所以序列化的内容顺序会改变,可以看到不相同的直接并不是连续的 */ @Ignore @Test public void compatiblityTest() throws IOException { + ProtocolManager.initProtocolAuto(Set.of(ComplexObject.class, NormalObject.class, SimpleObject.class, EmptyObject.class, VeryBigObject.class), GenerateOperation.NO_OPERATION); + var bytes = IOUtils.toByteArray(ClassUtils.getFileFromClassPath("ComplexObject.bytes")); var buffer = new UnpooledHeapByteBuf(ByteBufAllocator.DEFAULT, 100, 1_0000); buffer.writeBytes(bytes);