From 3c5b9d1b88c86fa1e79eb5c3d7f0304af5459ffc Mon Sep 17 00:00:00 2001 From: godotg Date: Sat, 8 Apr 2023 21:46:59 +0800 Subject: [PATCH] perf[protocol]: typescript protocol template --- .../typescript/GenerateTsUtils.java | 36 +++++++++++-------- .../typescript/ProtocolManagerTemplate.ts | 2 +- .../resources/typescript/ProtocolTemplate.ts | 4 ++- 3 files changed, 26 insertions(+), 16 deletions(-) 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 30860d11..55eecda0 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 @@ -36,6 +36,7 @@ import java.util.Map; import static com.zfoo.protocol.util.FileUtils.LS; import static com.zfoo.protocol.util.StringUtils.TAB; +import static com.zfoo.protocol.util.StringUtils.TAB_ASCII; /** * @author godotg @@ -43,7 +44,8 @@ import static com.zfoo.protocol.util.StringUtils.TAB; */ public abstract class GenerateTsUtils { - private static String protocolOutputRootPath = "tsProtocol/"; + private static String protocolOutputRootPath = "tsProtocol"; + private static String protocolOutputPath = StringUtils.EMPTY; private static Map tsSerializerMap; @@ -52,10 +54,16 @@ public abstract class GenerateTsUtils { } public static void init(GenerateOperation generateOperation) { - protocolOutputRootPath = FileUtils.joinPath(generateOperation.getProtocolPath(), protocolOutputRootPath); + // 如果没有配置路径,则使用默认路径 + if (StringUtils.isEmpty(generateOperation.getProtocolPath())) { + protocolOutputPath = FileUtils.joinPath(generateOperation.getProtocolPath(), protocolOutputRootPath); + } else { + protocolOutputPath = generateOperation.getProtocolPath(); + } - FileUtils.deleteFile(new File(protocolOutputRootPath)); - FileUtils.createDirectory(protocolOutputRootPath); + FileUtils.deleteFile(new File(protocolOutputPath)); + var protocolOutputPathFile = FileUtils.createDirectory(protocolOutputPath); + protocolOutputRootPath = protocolOutputPathFile.getName(); tsSerializerMap = new HashMap<>(); tsSerializerMap.put(BooleanSerializer.INSTANCE, new TsBooleanSerializer()); @@ -83,7 +91,7 @@ public abstract class GenerateTsUtils { var list = List.of("typescript/buffer/ByteBuffer.ts", "typescript/buffer/long.js", "typescript/buffer/longbits.js"); for (var fileName : list) { var fileInputStream = ClassUtils.getFileFromClassPath(fileName); - var createFile = new File(StringUtils.format("{}/{}", protocolOutputRootPath, StringUtils.substringAfterFirst(fileName, "typescript/"))); + var createFile = new File(StringUtils.format("{}/{}", protocolOutputPath, StringUtils.substringAfterFirst(fileName, "typescript/"))); FileUtils.writeInputStreamToFile(createFile, fileInputStream); } @@ -94,14 +102,15 @@ public abstract class GenerateTsUtils { var initProtocolBuilder = new StringBuilder(); for (var protocol : protocolList) { var protocolId = protocol.protocolId(); - var protocolClassName = EnhanceObjectProtocolSerializer.getProtocolClassSimpleName(protocolId); - var path = GenerateProtocolPath.getProtocolPath(protocolId); - importBuilder.append(StringUtils.format("import {} from './{}';", protocolClassName, path)).append(LS); - initProtocolBuilder.append(StringUtils.format("protocols.set({}, {});", protocolId, protocolClassName)).append(LS); + var name = protocol.protocolConstructor().getDeclaringClass().getSimpleName(); + var path = GenerateProtocolPath.protocolAbsolutePath(protocolId, CodeLanguage.GdScript); + importBuilder.append(StringUtils.format("import {} from './{}';", name, path)).append(LS); + initProtocolBuilder.append(StringUtils.format("protocols.set({}, {});", protocolId, name)).append(LS); + } protocolManagerTemplate = StringUtils.format(protocolManagerTemplate, importBuilder.toString().trim(), initProtocolBuilder.toString().trim()); - FileUtils.writeStringToFile(new File(StringUtils.format("{}/{}", protocolOutputRootPath, "ProtocolManager.ts")), protocolManagerTemplate, true); + FileUtils.writeStringToFile(new File(StringUtils.format("{}/{}", protocolOutputPath, "ProtocolManager.ts")), protocolManagerTemplate, true); } public static void createTsProtocolFile(ProtocolRegistration registration) throws IOException { @@ -121,10 +130,9 @@ public abstract class GenerateTsUtils { var readObject = readObject(registration); protocolTemplate = StringUtils.format(protocolTemplate, importSubProtocol, classNote, protocolClazzName, fieldDefinition.trim() - , protocolId, protocolClazzName, writeObject.trim(), protocolClazzName, protocolClazzName, readObject.trim(), protocolClazzName); - var protocolOutputPath = StringUtils.format("{}/{}/{}.ts", protocolOutputRootPath - , GenerateProtocolPath.getProtocolPath(protocolId), protocolClazzName); - FileUtils.writeStringToFile(new File(protocolOutputPath), protocolTemplate, true); + , protocolId, protocolClazzName, protocolClazzName, writeObject.trim(), protocolClazzName, protocolClazzName, readObject.trim(), protocolClazzName); + FileUtils.writeStringToFile(new File(StringUtils.format("{}/{}/{}.ts", protocolOutputPath + , GenerateProtocolPath.getProtocolPath(protocolId), protocolClazzName)), protocolTemplate, true); } private static String importSubProtocol(ProtocolRegistration registration) { diff --git a/protocol/src/main/resources/typescript/ProtocolManagerTemplate.ts b/protocol/src/main/resources/typescript/ProtocolManagerTemplate.ts index a9e2673e..61d8eef6 100644 --- a/protocol/src/main/resources/typescript/ProtocolManagerTemplate.ts +++ b/protocol/src/main/resources/typescript/ProtocolManagerTemplate.ts @@ -9,7 +9,7 @@ class ProtocolManager { static getProtocol(protocolId: number): any { const protocol = protocols.get(protocolId); if (protocol === null) { - throw new Error('[protocolId:' + protocolId + ']协议不存在'); + throw '[protocolId:' + protocolId + ']协议不存在'; } return protocol; } diff --git a/protocol/src/main/resources/typescript/ProtocolTemplate.ts b/protocol/src/main/resources/typescript/ProtocolTemplate.ts index 836a982a..eaa22d0e 100644 --- a/protocol/src/main/resources/typescript/ProtocolTemplate.ts +++ b/protocol/src/main/resources/typescript/ProtocolTemplate.ts @@ -4,8 +4,10 @@ class {} { {} + static PROTOCOL_ID: number = {} + protocolId(): number { - return {}; + return {}.PROTOCOL_ID; } static write(buffer: any, packet: {} | null) {