From 3aebff4d2ea9d39a780bea02c37a3d72a10fe1f3 Mon Sep 17 00:00:00 2001 From: godotg Date: Thu, 5 Oct 2023 18:38:11 +0800 Subject: [PATCH] perf[generate]: when generate source code fields, use origin fields sort --- .../protocol/serializer/javascript/GenerateJsUtils.java | 9 ++++++--- .../zfoo/protocol/serializer/python/GeneratePyUtils.java | 4 ++-- .../protocol/serializer/typescript/GenerateTsUtils.java | 8 +++++--- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/protocol/src/main/java/com/zfoo/protocol/serializer/javascript/GenerateJsUtils.java b/protocol/src/main/java/com/zfoo/protocol/serializer/javascript/GenerateJsUtils.java index 6960394b..32c45a9d 100644 --- a/protocol/src/main/java/com/zfoo/protocol/serializer/javascript/GenerateJsUtils.java +++ b/protocol/src/main/java/com/zfoo/protocol/serializer/javascript/GenerateJsUtils.java @@ -25,6 +25,7 @@ import com.zfoo.protocol.serializer.CodeLanguage; import com.zfoo.protocol.serializer.reflect.*; import com.zfoo.protocol.util.ClassUtils; import com.zfoo.protocol.util.FileUtils; +import com.zfoo.protocol.util.ReflectionUtils; import com.zfoo.protocol.util.StringUtils; import java.io.File; @@ -136,10 +137,12 @@ public abstract class GenerateJsUtils { var protocolId = registration.getId(); var fields = registration.getFields(); var fieldRegistrations = registration.getFieldRegistrations(); + // when generate source code fields, use origin fields sort + var sequencedFields = ReflectionUtils.notStaticAndTransientFields(registration.getConstructor().getDeclaringClass()); var fieldDefinitionBuilder = new StringBuilder(); - for (int i = 0; i < fields.length; i++) { - var field = fields[i]; - IFieldRegistration fieldRegistration = fieldRegistrations[i]; + for (int i = 0; i < sequencedFields.size(); i++) { + var field = sequencedFields.get(i); + var fieldRegistration = fieldRegistrations[GenerateProtocolFile.indexOf(fields, field)]; var fieldName = field.getName(); // 生成注释 var fieldNote = GenerateProtocolNote.fieldNote(protocolId, fieldName, CodeLanguage.JavaScript); diff --git a/protocol/src/main/java/com/zfoo/protocol/serializer/python/GeneratePyUtils.java b/protocol/src/main/java/com/zfoo/protocol/serializer/python/GeneratePyUtils.java index abafa49b..19968c52 100644 --- a/protocol/src/main/java/com/zfoo/protocol/serializer/python/GeneratePyUtils.java +++ b/protocol/src/main/java/com/zfoo/protocol/serializer/python/GeneratePyUtils.java @@ -136,11 +136,11 @@ public abstract class GeneratePyUtils { var fields = registration.getFields(); var fieldRegistrations = registration.getFieldRegistrations(); var pyBuilder = new StringBuilder(); - // 生成源代码字段的时候,按照原始定义的方式生成 + // when generate source code fields, use origin fields sort var sequencedFields = ReflectionUtils.notStaticAndTransientFields(registration.getConstructor().getDeclaringClass()); for (int i = 0; i < sequencedFields.size(); i++) { var field = sequencedFields.get(i); - IFieldRegistration fieldRegistration = fieldRegistrations[GenerateProtocolFile.indexOf(fields, field)]; + var fieldRegistration = fieldRegistrations[GenerateProtocolFile.indexOf(fields, field)]; var fieldName = field.getName(); // 生成注释 var fieldNote = GenerateProtocolNote.fieldNote(protocolId, fieldName, CodeLanguage.Python); diff --git a/protocol/src/main/java/com/zfoo/protocol/serializer/typescript/GenerateTsUtils.java b/protocol/src/main/java/com/zfoo/protocol/serializer/typescript/GenerateTsUtils.java index 7ae8b4a0..336ac05b 100644 --- a/protocol/src/main/java/com/zfoo/protocol/serializer/typescript/GenerateTsUtils.java +++ b/protocol/src/main/java/com/zfoo/protocol/serializer/typescript/GenerateTsUtils.java @@ -159,10 +159,12 @@ public abstract class GenerateTsUtils { var protocolId = registration.protocolId(); var fields = registration.getFields(); var fieldRegistrations = registration.getFieldRegistrations(); + // when generate source code fields, use origin fields sort + var sequencedFields = ReflectionUtils.notStaticAndTransientFields(registration.getConstructor().getDeclaringClass()); var fieldDefinitionBuilder = new StringBuilder(); - for (int i = 0; i < fields.length; i++) { - var field = fields[i]; - IFieldRegistration fieldRegistration = fieldRegistrations[i]; + for (int i = 0; i < sequencedFields.size(); i++) { + var field = sequencedFields.get(i); + var fieldRegistration = fieldRegistrations[GenerateProtocolFile.indexOf(fields, field)]; var fieldName = field.getName(); // 生成注释 var fieldNote = GenerateProtocolNote.fieldNote(protocolId, fieldName, CodeLanguage.TypeScript);