mirror of
https://github.com/tiennm99/zfoo.git
synced 2026-08-07 06:30:17 +00:00
perf[protobuf]: generate pojo from proto
This commit is contained in:
+3
-3
@@ -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) {
|
||||
|
||||
+6
-5
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user