diff --git a/protocol/src/main/java/com/zfoo/protocol/generate/GenerateOperation.java b/protocol/src/main/java/com/zfoo/protocol/generate/GenerateOperation.java
index eecc704f..eb93b4b9 100644
--- a/protocol/src/main/java/com/zfoo/protocol/generate/GenerateOperation.java
+++ b/protocol/src/main/java/com/zfoo/protocol/generate/GenerateOperation.java
@@ -20,7 +20,8 @@ import java.util.EnumSet;
import java.util.Set;
/**
- * 创建协议文件的操作类
+ * EN: Action class for creating protocol files
+ * CN: 创建协议文件的操作类
*
* @author godotg
* @version 3.0
@@ -28,27 +29,33 @@ import java.util.Set;
public class GenerateOperation {
/**
- * 不创建任何协议文件
+ * EN: No protocol file is created
+ * CN: 不创建任何协议文件
*/
public static final GenerateOperation NO_OPERATION = new GenerateOperation();
/**
- * 折叠协议,生成协议文件会和Java源文件保持相同的目录结构,默认不折叠
+ * EN: Fold the protocol. The generated protocol file will maintain the same directory structure as the Java source file.
+ * It will not be folded by default.
+ *
+ * CN: 折叠协议,生成协议文件会和Java源文件保持相同的目录结构,默认不折叠
*/
private boolean foldProtocol;
/**
- * 生成协议的路径,默认为当前运行项目的路径
+ * EN: The path to generate the protocol, the default is the path of the currently running project
+ * CN: 生成协议的路径,默认为当前运行项目的路径
*/
private String protocolPath = StringUtils.EMPTY;
/**
- * 保留参数
+ * Reserved parameters,保留参数
*/
private String protocolParam;
/**
- * 需要生成的协议文件(c#、js、ts...等需要生成协议的语言都列出来)
+ * EN: The protocol files that need to be generated (c#, js, ts... and other languages that need to generate the protocol are listed)
+ * CN: 需要生成的协议文件(c#、js、ts...等需要生成协议的语言都列出来)
*/
private final Set generateLanguages = EnumSet.noneOf(CodeLanguage.class);
diff --git a/protocol/src/main/java/com/zfoo/protocol/generate/GenerateProtocolFile.java b/protocol/src/main/java/com/zfoo/protocol/generate/GenerateProtocolFile.java
index c34b3d2e..0d3c65b0 100644
--- a/protocol/src/main/java/com/zfoo/protocol/generate/GenerateProtocolFile.java
+++ b/protocol/src/main/java/com/zfoo/protocol/generate/GenerateProtocolFile.java
@@ -47,7 +47,8 @@ import static com.zfoo.protocol.util.StringUtils.TAB_ASCII;
public abstract class GenerateProtocolFile {
/**
- * 生成协议的过滤器,默认不过滤
+ * EN: Filter for generating protocol files. If no filter is set, all protocols will be generated by default.
+ * CN: 生成协议文件的过滤器,如果没有设置过滤器默认生成全部的协议
*/
public static Predicate generateProtocolFilter = registration -> true;
diff --git a/protocol/src/main/java/com/zfoo/protocol/generate/GenerateProtocolPath.java b/protocol/src/main/java/com/zfoo/protocol/generate/GenerateProtocolPath.java
index b9d83a12..39fc1e92 100644
--- a/protocol/src/main/java/com/zfoo/protocol/generate/GenerateProtocolPath.java
+++ b/protocol/src/main/java/com/zfoo/protocol/generate/GenerateProtocolPath.java
@@ -15,7 +15,6 @@ package com.zfoo.protocol.generate;
import com.zfoo.protocol.collection.CollectionUtils;
import com.zfoo.protocol.collection.tree.GeneralTree;
import com.zfoo.protocol.collection.tree.TreeNode;
-import com.zfoo.protocol.exception.RunException;
import com.zfoo.protocol.registration.IProtocolRegistration;
import com.zfoo.protocol.serializer.CodeLanguage;
import com.zfoo.protocol.serializer.enhance.EnhanceObjectProtocolSerializer;
@@ -26,14 +25,18 @@ import java.util.*;
import java.util.stream.Collectors;
/**
- * 生成协议的时候,协议的最终生成路径会使用这个类
+ * EN: When generating a protocol, the final generation path of the protocol will use this class.
+ * CN: 生成协议的时候,协议的最终生成路径会使用这个类
*
* @author godotg
* @version 3.0
*/
public abstract class GenerateProtocolPath {
- // 临时变量,启动完成就会销毁,协议生成的路径
+ /**
+ * EN: The paths and temporary variables generated by the protocol will be destroyed after startup is completed.
+ * CN: 协议生成的路径,临时变量,启动完成就会销毁
+ */
private static Map protocolPathMap = new HashMap<>();
@@ -73,13 +76,11 @@ public abstract class GenerateProtocolPath {
path = StringUtils.PERIOD;
} else {
path = StringUtils.substringBeforeLast(path, StringUtils.SLASH);
- path = path.replaceAll(StringUtils.SLASH , StringUtils.PERIOD);
+ path = path.replaceAll(StringUtils.SLASH, StringUtils.PERIOD);
}
break;
case Enhance:
break;
- default:
- throw new RunException("无法识别的枚举类型[{}]", language);
}
return path;
}
@@ -88,7 +89,9 @@ public abstract class GenerateProtocolPath {
* 获取协议生成的路径
*/
public static String getProtocolPath(short protocolId) {
- AssertionUtils.notNull(protocolPathMap, "[{}]已经初始完成,初始化完成过后不能调用getProtocolPath", GenerateProtocolPath.class.getSimpleName());
+ AssertionUtils.notNull(protocolPathMap
+ , "[{}]The initialization has been completed. Get Protocol Path cannot be called after the initialization is completed."
+ , GenerateProtocolPath.class.getSimpleName());
var protocolPath = protocolPathMap.get(protocolId);
if (StringUtils.isBlank(protocolPath)) {
@@ -137,7 +140,9 @@ public abstract class GenerateProtocolPath {
* @param protocolRegistrations 需要解析的路径
*/
public static void initProtocolPath(List protocolRegistrations) {
- AssertionUtils.notNull(protocolPathMap, "[{}]已经初始完成,初始化完成过后不能调用initProtocolPath", GenerateProtocolPath.class.getSimpleName());
+ AssertionUtils.notNull(protocolPathMap
+ , "[{}]The initialization has been completed. Get Protocol Path cannot be called after the initialization is completed."
+ , GenerateProtocolPath.class.getSimpleName());
// 将需要生成的协议的路径添加到多叉树中
var protocolPathTree = new GeneralTree();
@@ -181,7 +186,7 @@ public abstract class GenerateProtocolPath {
for (var child : allChildren) {
var protocolSimpleName = child.getData().protocolConstructor().getDeclaringClass().getSimpleName();
var splits = Arrays.stream(StringUtils.substringBeforeLast(StringUtils.substringAfterFirst(child.fullName(), pathBefore), protocolSimpleName)
- .split(StringUtils.PERIOD_REGEX))
+ .split(StringUtils.PERIOD_REGEX))
.filter(it -> StringUtils.isNotBlank(it))
.toArray();
protocolPathMap.put(child.getData().protocolId(), StringUtils.joinWith(StringUtils.PERIOD, splits));
diff --git a/protocol/src/test/java/com/zfoo/protocol/SpeedTest.java b/protocol/src/test/java/com/zfoo/protocol/SpeedTest.java
index 7e5c0040..e2b71e17 100644
--- a/protocol/src/test/java/com/zfoo/protocol/SpeedTest.java
+++ b/protocol/src/test/java/com/zfoo/protocol/SpeedTest.java
@@ -23,7 +23,6 @@ import com.google.protobuf.CodedOutputStream;
import com.zfoo.protocol.collection.ArrayUtils;
import com.zfoo.protocol.generate.GenerateOperation;
import com.zfoo.protocol.packet.*;
-import com.zfoo.protocol.serializer.CodeLanguage;
import com.zfoo.protocol.util.StringUtils;
import io.fury.Fury;
import io.fury.Language;
@@ -358,23 +357,8 @@ public class SpeedTest {
};
static {
- var op = GenerateOperation.NO_OPERATION;
-
- // 这行加上,会在protocol目录下,生成jsProtocol文件夹及其对应的js协议文件
-// op.getGenerateLanguages().add(CodeLanguage.Cpp);
-// op.getGenerateLanguages().add(CodeLanguage.JavaScript);
-// op.getGenerateLanguages().add(CodeLanguage.TypeScript);
-// op.getGenerateLanguages().add(CodeLanguage.Lua);
-// op.getGenerateLanguages().add(CodeLanguage.CSharp);
-// op.getGenerateLanguages().add(CodeLanguage.GdScript);
- op.getGenerateLanguages().add(CodeLanguage.Python);
-
- // 需要protocol协议的字段里面都加上JProtobuf注解才能用
-// op.setProtocolParam("protobuf=protobuf.xml");
-// op.getGenerateLanguages().add(CodeLanguage.Protobuf);
-
// zfoo协议注册(其实就是:将Set里面的协议号和对应的类注册好,这样子就可以根据协议号知道是反序列化为哪个类)
- ProtocolManager.initProtocolAuto(Set.of(ComplexObject.class, NormalObject.class, SimpleObject.class, EmptyObject.class, VeryBigObject.class), op);
+ ProtocolManager.initProtocolAuto(Set.of(ComplexObject.class, NormalObject.class, SimpleObject.class, EmptyObject.class, VeryBigObject.class), GenerateOperation.NO_OPERATION);
for (int i = 0; i < executors.length; i++) {
executors[i] = Executors.newSingleThreadExecutor();
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 6c56636b..79c263eb 100644
--- a/protocol/src/test/java/com/zfoo/protocol/compatiblity/CompatiblityTest.java
+++ b/protocol/src/test/java/com/zfoo/protocol/compatiblity/CompatiblityTest.java
@@ -35,9 +35,9 @@ public class CompatiblityTest {
/**
* 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.
+ * You can see that the different bytes are not consecutive.
*
- * CN: 字节码增强的Map遍历顺序会出现不一样,所以序列化的内容顺序会改变,可以看到不相同的直接并不是连续的
+ * CN: 字节码增强的Map遍历顺序会出现不一样,所以序列化的内容顺序会改变,可以看到不相同的字节并不是连续的
*/
@Ignore
@Test
diff --git a/protocol/src/test/java/com/zfoo/protocol/generate/GenerateTest.java b/protocol/src/test/java/com/zfoo/protocol/generate/GenerateTest.java
new file mode 100644
index 00000000..91b0bcbb
--- /dev/null
+++ b/protocol/src/test/java/com/zfoo/protocol/generate/GenerateTest.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2020 The zfoo Authors
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed
+ * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and limitations under the License.
+ */
+
+package com.zfoo.protocol.generate;
+
+import com.zfoo.protocol.ProtocolManager;
+import com.zfoo.protocol.packet.*;
+import com.zfoo.protocol.serializer.CodeLanguage;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import java.util.Set;
+
+/**
+ * @author godotg
+ */
+@Ignore
+public class GenerateTest {
+
+ @Test
+ public void generateAllProtocols() {
+ var op = GenerateOperation.NO_OPERATION;
+ op.setFoldProtocol(true);
+
+ 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);
+ }
+
+}