diff --git a/protocol/src/main/java/com/zfoo/protocol/serializer/protobuf/builder/JavaBuilder.java b/protocol/src/main/java/com/zfoo/protocol/serializer/protobuf/builder/JavaBuilder.java index ef11fef2..2a109271 100644 --- a/protocol/src/main/java/com/zfoo/protocol/serializer/protobuf/builder/JavaBuilder.java +++ b/protocol/src/main/java/com/zfoo/protocol/serializer/protobuf/builder/JavaBuilder.java @@ -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) { diff --git a/protocol/src/main/java/com/zfoo/protocol/serializer/protobuf/parser/ProtoParser.java b/protocol/src/main/java/com/zfoo/protocol/serializer/protobuf/parser/ProtoParser.java index 7504699c..09eccc0a 100644 --- a/protocol/src/main/java/com/zfoo/protocol/serializer/protobuf/parser/ProtoParser.java +++ b/protocol/src/main/java/com/zfoo/protocol/serializer/protobuf/parser/ProtoParser.java @@ -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 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); diff --git a/protocol/src/main/java/com/zfoo/protocol/serializer/protobuf/wire/PbField.java b/protocol/src/main/java/com/zfoo/protocol/serializer/protobuf/wire/PbField.java index 8a537198..5a6c624c 100644 --- a/protocol/src/main/java/com/zfoo/protocol/serializer/protobuf/wire/PbField.java +++ b/protocol/src/main/java/com/zfoo/protocol/serializer/protobuf/wire/PbField.java @@ -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 map = new HashMap<>(); + + static { + for (var ele : Cardinality.values()) { + map.put(ele.value, ele); + } + } + + public static Cardinality cardinalityOf(String str) { + return map.get(str); + } } /** diff --git a/protocol/src/test/java/com/zfoo/protocol/protobuf/AllTypeBuilderTest.java b/protocol/src/test/java/com/zfoo/protocol/protobuf/AllTypeBuilderTest.java index ddd0bae4..3853c08d 100644 --- a/protocol/src/test/java/com/zfoo/protocol/protobuf/AllTypeBuilderTest.java +++ b/protocol/src/test/java/com/zfoo/protocol/protobuf/AllTypeBuilderTest.java @@ -31,6 +31,5 @@ public class AllTypeBuilderTest { buildOption.setOutputPath("D:\\github\\zfoo\\protocol\\src\\test\\tmpsrc/"); GeneratePbUtils.create(buildOption); - ThreadUtils.sleep(1000); } } diff --git a/protocol/src/test/resources/proto/one_message.proto b/protocol/src/test/resources/proto/one_message.proto index 818165e2..5d7ae580 100644 --- a/protocol/src/test/resources/proto/one_message.proto +++ b/protocol/src/test/resources/proto/one_message.proto @@ -9,6 +9,7 @@ message OneMessage { Proj value = 1; } +// 测试pb协议 message Proj { int64 id = 1; string name = 2;