From 023649b9c54eb7e7857540e2a328d5e816e9e895 Mon Sep 17 00:00:00 2001 From: godotg Date: Thu, 28 Sep 2023 12:36:55 +0800 Subject: [PATCH] perf[protocol]: protocol output path --- .../javascript/GenerateJsUtils.java | 5 ++-- .../serializer/python/GeneratePyUtils.java | 29 ++++++++++++------- .../typescript/GenerateTsUtils.java | 6 ++-- .../protocol/generate/GenerateTesting.java | 11 ------- 4 files changed, 24 insertions(+), 27 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 0b682dfd..6960394b 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 @@ -42,8 +42,9 @@ import static com.zfoo.protocol.util.StringUtils.TAB; */ public abstract class GenerateJsUtils { - private static String protocolOutputRootPath = "zfoojs"; - private static String protocolOutputPath = StringUtils.EMPTY; + // custom configuration + public static String protocolOutputRootPath = "zfoojs"; + public static String protocolOutputPath = StringUtils.EMPTY; private static Map jsSerializerMap; 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 b6e7e2d8..abafa49b 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 @@ -43,7 +43,9 @@ import static com.zfoo.protocol.util.StringUtils.TAB; */ public abstract class GeneratePyUtils { - private static String protocolOutputRootPath = "pyProtocol/"; + // custom configuration + public static String protocolOutputRootPath = "zfoopy"; + public static String protocolOutputPath = StringUtils.EMPTY; private static Map pySerializerMap; @@ -53,10 +55,13 @@ public abstract class GeneratePyUtils { } public static void init(GenerateOperation generateOperation) { - protocolOutputRootPath = FileUtils.joinPath(generateOperation.getProtocolPath(), protocolOutputRootPath); - - FileUtils.deleteFile(new File(protocolOutputRootPath)); - FileUtils.createDirectory(protocolOutputRootPath); + // if not specify output path, then use current default path + if (StringUtils.isEmpty(generateOperation.getProtocolPath())) { + protocolOutputPath = FileUtils.joinPath(generateOperation.getProtocolPath(), protocolOutputRootPath); + } else { + protocolOutputPath = generateOperation.getProtocolPath(); + } + FileUtils.deleteFile(new File(protocolOutputPath)); pySerializerMap = new HashMap<>(); pySerializerMap.put(BooleanSerializer.INSTANCE, new PyBooleanSerializer()); @@ -75,15 +80,17 @@ public abstract class GeneratePyUtils { } public static void clear() { - pySerializerMap = null; + protocolOutputPath = null; protocolOutputRootPath = null; + pySerializerMap = null; } public static void createProtocolManager(List protocolList) throws IOException { var list = List.of("python/ByteBuffer.py"); for (var fileName : list) { var fileInputStream = ClassUtils.getFileFromClassPath(fileName); - var createFile = new File(StringUtils.format("{}/{}", protocolOutputRootPath, StringUtils.substringAfterFirst(fileName, "python/"))); + var outputPath = StringUtils.format("{}/{}", protocolOutputPath, StringUtils.substringAfterFirst(fileName, "python/")); + var createFile = new File(outputPath); FileUtils.writeInputStreamToFile(createFile, fileInputStream); } @@ -100,7 +107,8 @@ public abstract class GeneratePyUtils { } protocolManagerTemplate = StringUtils.format(protocolManagerTemplate, importBuilder.toString().trim(), StringUtils.EMPTY_JSON, initProtocolBuilder.toString().trim()); - FileUtils.writeStringToFile(new File(StringUtils.format("{}/{}", protocolOutputRootPath, "ProtocolManager.py")), protocolManagerTemplate, true); + var outputPath = StringUtils.format("{}/{}", protocolOutputPath, "ProtocolManager.py"); + FileUtils.writeStringToFile(new File(outputPath), protocolManagerTemplate, true); } public static void createPyProtocolFile(ProtocolRegistration registration) { @@ -119,9 +127,8 @@ public abstract class GeneratePyUtils { protocolTemplate = StringUtils.format(protocolTemplate, classNote, protocolClazzName , fieldDefinition.trim(), protocolId, writeObject.trim(), protocolClazzName, readObject.trim()); - var protocolOutputPath = StringUtils.format("{}/{}/{}.py", protocolOutputRootPath - , GenerateProtocolPath.getProtocolPath(protocolId), protocolClazzName); - FileUtils.writeStringToFile(new File(protocolOutputPath), protocolTemplate, true); + var outputPath = StringUtils.format("{}/{}/{}.py", protocolOutputPath, GenerateProtocolPath.getProtocolPath(protocolId), protocolClazzName); + FileUtils.writeStringToFile(new File(outputPath), protocolTemplate, true); } private static String fieldDefinition(ProtocolRegistration registration) { 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 cec3c408..7ae8b4a0 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 @@ -45,8 +45,9 @@ import static com.zfoo.protocol.util.StringUtils.TAB; */ public abstract class GenerateTsUtils { - private static String protocolOutputRootPath = "zfoots"; - private static String protocolOutputPath = StringUtils.EMPTY; + // custom configuration + public static String protocolOutputRootPath = "zfoots"; + public static String protocolOutputPath = StringUtils.EMPTY; private static Map tsSerializerMap; @@ -61,7 +62,6 @@ public abstract class GenerateTsUtils { } else { protocolOutputPath = generateOperation.getProtocolPath(); } - FileUtils.deleteFile(new File(protocolOutputPath)); tsSerializerMap = new HashMap<>(); diff --git a/protocol/src/test/java/com/zfoo/protocol/generate/GenerateTesting.java b/protocol/src/test/java/com/zfoo/protocol/generate/GenerateTesting.java index 6365311d..d2919d78 100644 --- a/protocol/src/test/java/com/zfoo/protocol/generate/GenerateTesting.java +++ b/protocol/src/test/java/com/zfoo/protocol/generate/GenerateTesting.java @@ -33,19 +33,8 @@ public class GenerateTesting { var generateLanguages = op.getGenerateLanguages(); - // generate the jsProtocol folder and its corresponding js protocol file in the current protocol directory - generateLanguages.add(CodeLanguage.Cpp); - generateLanguages.add(CodeLanguage.Go); - generateLanguages.add(CodeLanguage.JavaScript); - generateLanguages.add(CodeLanguage.TypeScript); - generateLanguages.add(CodeLanguage.Lua); - generateLanguages.add(CodeLanguage.CSharp); - generateLanguages.add(CodeLanguage.GdScript); generateLanguages.add(CodeLanguage.Python); - // Protobuf needs to specify protobuf.xml to generate a protocol - op.setProtocolParam("protobuf=protobuf.xml"); - generateLanguages.add(CodeLanguage.Protobuf); // Initialize and then generate the protocol ProtocolManager.initProtocolAuto(Set.of(ComplexObject.class, NormalObject.class, SimpleObject.class, EmptyObject.class, VeryBigObject.class), op);