perf[protobuf]: generate pojo from proto

This commit is contained in:
godotg
2023-12-03 13:54:12 +08:00
parent 04dbdd018d
commit 6a6ba53636
5 changed files with 24 additions and 9 deletions
@@ -95,9 +95,9 @@ public class JavaBuilder {
if (CollectionUtils.isEmpty(msg.getComments())) {
return;
}
cb.t(1).c("/**").ln();
msg.getComments().forEach(c -> cb.t(1).c(" * ").c(c).ln());
cb.t(1).c(" */").ln();
cb.t(0).c("/**").ln();
msg.getComments().forEach(c -> cb.t(0).c(" * ").c(c).ln());
cb.t(0).c(" */").ln();
}
private void buildFieldComment(CodeBuilder cb, PbField pbField) {
@@ -13,8 +13,11 @@
package com.zfoo.protocol.serializer.protobuf.parser;
import com.zfoo.protocol.collection.CollectionUtils;
import com.zfoo.protocol.serializer.protobuf.wire.*;
import com.zfoo.protocol.serializer.protobuf.wire.MapField;
import com.zfoo.protocol.serializer.protobuf.wire.Option;
import com.zfoo.protocol.serializer.protobuf.wire.PbField;
import com.zfoo.protocol.serializer.protobuf.wire.PbField.Cardinality;
import com.zfoo.protocol.serializer.protobuf.wire.ProtoMessage;
import com.zfoo.protocol.util.StringUtils;
import java.util.*;
@@ -27,7 +30,6 @@ import java.util.*;
*/
public class ProtoParser {
private static final List<String> fieldCardinalities = List.of("repeated", "optional", "required");
private static final String VALUE_END_ERROR = " value not end with \";\"";
private static final String ROW_MSG = "row [";
private static final String START_MSG = " start...";
@@ -116,7 +118,6 @@ public class ProtoParser {
comments.clear();
break;
case "message":
addCommentsToProto(proto);
ProtoMessage msg = parseMessage();
proto.addMsg(msg);
comments.clear();
@@ -172,8 +173,8 @@ public class ProtoParser {
// 为了让用法简单,屏蔽内部类的消息定义
// msg.addMessage(parseMessage());
notSupportInnerMessage();
} else if (fieldCardinalities.contains(token)) {
PbField field = parseField(Cardinality.valueOf(token.toUpperCase(Locale.ENGLISH)), null);
} else if (Cardinality.cardinalityOf(token) != null) {
PbField field = parseField(Cardinality.cardinalityOf(token), null);
msg.addField(field);
} else {
PbField field = parseField(Cardinality.OPTIONAL, token);
@@ -15,7 +15,9 @@ package com.zfoo.protocol.serializer.protobuf.wire;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* protocol buffer协议消息体属性数据类型定义
@@ -51,6 +53,18 @@ public class PbField {
Cardinality(String value) {
this.value = value;
}
private static final Map<String, Cardinality> map = new HashMap<>();
static {
for (var ele : Cardinality.values()) {
map.put(ele.value, ele);
}
}
public static Cardinality cardinalityOf(String str) {
return map.get(str);
}
}
/**
@@ -31,6 +31,5 @@ public class AllTypeBuilderTest {
buildOption.setOutputPath("D:\\github\\zfoo\\protocol\\src\\test\\tmpsrc/");
GeneratePbUtils.create(buildOption);
ThreadUtils.sleep(1000);
}
}
@@ -9,6 +9,7 @@ message OneMessage {
Proj value = 1;
}
// 测试pb协议
message Proj {
int64 id = 1;
string name = 2;