From 85fff556ff9b56176e11e906562f6e2a31671b0e Mon Sep 17 00:00:00 2001 From: godotg Date: Sun, 3 Dec 2023 16:46:32 +0800 Subject: [PATCH] ref[protobuf]: refactor protobuf generate --- .../serializer/protobuf/GeneratePbUtils.java | 5 +- .../serializer/protobuf/PbMapField.java | 8 +-- .../protocol/serializer/protobuf/PbType.java | 68 ++++++++++++++++++ .../{parser/TypeJava.java => PbTypeJava.java} | 9 ++- .../protobuf/parser/ProtoParser.java | 7 +- .../protobuf/parser/TypeProtobuf.java | 69 ------------------- 6 files changed, 79 insertions(+), 87 deletions(-) create mode 100644 protocol/src/main/java/com/zfoo/protocol/serializer/protobuf/PbType.java rename protocol/src/main/java/com/zfoo/protocol/serializer/protobuf/{parser/TypeJava.java => PbTypeJava.java} (88%) delete mode 100644 protocol/src/main/java/com/zfoo/protocol/serializer/protobuf/parser/TypeProtobuf.java diff --git a/protocol/src/main/java/com/zfoo/protocol/serializer/protobuf/GeneratePbUtils.java b/protocol/src/main/java/com/zfoo/protocol/serializer/protobuf/GeneratePbUtils.java index d9cbe1b6..49de29d8 100644 --- a/protocol/src/main/java/com/zfoo/protocol/serializer/protobuf/GeneratePbUtils.java +++ b/protocol/src/main/java/com/zfoo/protocol/serializer/protobuf/GeneratePbUtils.java @@ -14,7 +14,6 @@ package com.zfoo.protocol.serializer.protobuf; import com.zfoo.protocol.collection.CollectionUtils; -import com.zfoo.protocol.serializer.protobuf.parser.TypeProtobuf; import com.zfoo.protocol.serializer.protobuf.parser.Proto; import com.zfoo.protocol.serializer.protobuf.parser.ProtoParser; import com.zfoo.protocol.util.FileUtils; @@ -118,7 +117,7 @@ public class GeneratePbUtils { } public static String getJavaType(String type) { - var typeProtobuf = TypeProtobuf.typeOfProtobuf(type); + var typeProtobuf = PbType.typeOfProtobuf(type); if (typeProtobuf == null) { return type; } @@ -131,7 +130,7 @@ public class GeneratePbUtils { } private static String getBoxJavaType(String type) { - var typeProtobuf = TypeProtobuf.typeOfProtobuf(type); + var typeProtobuf = PbType.typeOfProtobuf(type); if (typeProtobuf == null) { return type; } diff --git a/protocol/src/main/java/com/zfoo/protocol/serializer/protobuf/PbMapField.java b/protocol/src/main/java/com/zfoo/protocol/serializer/protobuf/PbMapField.java index b1723827..a04dc36f 100644 --- a/protocol/src/main/java/com/zfoo/protocol/serializer/protobuf/PbMapField.java +++ b/protocol/src/main/java/com/zfoo/protocol/serializer/protobuf/PbMapField.java @@ -12,21 +12,19 @@ package com.zfoo.protocol.serializer.protobuf; -import com.zfoo.protocol.serializer.protobuf.parser.TypeProtobuf; - /** * protocol buffer中Map的Field的结构体定义 */ public class PbMapField extends PbField { - private TypeProtobuf key; + private PbType key; private String value; - public TypeProtobuf getKey() { + public PbType getKey() { return key; } - public void setKey(TypeProtobuf key) { + public void setKey(PbType key) { this.key = key; } diff --git a/protocol/src/main/java/com/zfoo/protocol/serializer/protobuf/PbType.java b/protocol/src/main/java/com/zfoo/protocol/serializer/protobuf/PbType.java new file mode 100644 index 00000000..04b33983 --- /dev/null +++ b/protocol/src/main/java/com/zfoo/protocol/serializer/protobuf/PbType.java @@ -0,0 +1,68 @@ +/* + * 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.serializer.protobuf; + +import java.util.HashMap; +import java.util.Map; + +public enum PbType { + FLOAT("float", PbTypeJava.FLOAT), + DOUBLE("double", PbTypeJava.DOUBLE), + INT32("int32", PbTypeJava.INT), + INT64("int64", PbTypeJava.LONG), + UINT32("uint32", PbTypeJava.INT), + UINT64("uint64", PbTypeJava.LONG), + SINT32("sint32", PbTypeJava.INT), + SINT64("sint64", PbTypeJava.LONG), + FIXED32("fixed32", PbTypeJava.INT), + FIXED64("fixed64", PbTypeJava.LONG), + SFIXED32("sfixed32", PbTypeJava.INT), + SFIXED64("sfixed64", PbTypeJava.LONG), + BOOL("bool", PbTypeJava.BOOLEAN), + ENUM("enum", PbTypeJava.ENUM), + STRING("string", PbTypeJava.STRING), + BYTES("bytes", PbTypeJava.BYTES), + MESSAGE("", PbTypeJava.MESSAGE), + OBJECT("OBJECT", PbTypeJava.OBJECT), + GROUP("group", PbTypeJava.MESSAGE), + MAP("", PbTypeJava.MAP); + + private final String value; + private final PbTypeJava javaType; + + private static final Map map = new HashMap<>(); + + static { + for (var ele : PbType.values()) { + map.put(ele.value, ele); + } + } + + PbType(String value, PbTypeJava javaType) { + this.value = value; + this.javaType = javaType; + } + + public PbTypeJava javaType() { + return javaType; + } + + + public String value() { + return this.value; + } + + public static PbType typeOfProtobuf(String str) { + return map.get(str); + } +} diff --git a/protocol/src/main/java/com/zfoo/protocol/serializer/protobuf/parser/TypeJava.java b/protocol/src/main/java/com/zfoo/protocol/serializer/protobuf/PbTypeJava.java similarity index 88% rename from protocol/src/main/java/com/zfoo/protocol/serializer/protobuf/parser/TypeJava.java rename to protocol/src/main/java/com/zfoo/protocol/serializer/protobuf/PbTypeJava.java index 47bc3ce0..fb15a09d 100644 --- a/protocol/src/main/java/com/zfoo/protocol/serializer/protobuf/parser/TypeJava.java +++ b/protocol/src/main/java/com/zfoo/protocol/serializer/protobuf/PbTypeJava.java @@ -1,6 +1,5 @@ /* - * Copyright 2021 The edap Project - * + * 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 * @@ -11,13 +10,13 @@ * See the License for the specific language governing permissions and limitations under the License. */ -package com.zfoo.protocol.serializer.protobuf.parser; +package com.zfoo.protocol.serializer.protobuf; import com.zfoo.protocol.collection.ArrayUtils; /** * java的数据类型和protocol buffer的数据类型的对应关系以及默认值 */ -public enum TypeJava { +public enum PbTypeJava { INT("int", "Integer", 0), LONG("long", "Long", 0L), FLOAT("float", "Float", 0F), @@ -30,7 +29,7 @@ public enum TypeJava { OBJECT("Object", "Object", null), MAP("Map", "Map", null); - TypeJava(final String typeString, final String boxedType, final Object defaultValue) { + PbTypeJava(final String typeString, final String boxedType, final Object defaultValue) { this.typeString = typeString; this.boxedType = boxedType; this.defaultValue = defaultValue; 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 b7c64189..5bb4a108 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 @@ -14,11 +14,8 @@ package com.zfoo.protocol.serializer.protobuf.parser; import com.zfoo.protocol.collection.CollectionUtils; -import com.zfoo.protocol.serializer.protobuf.PbMapField; -import com.zfoo.protocol.serializer.protobuf.PbOption; -import com.zfoo.protocol.serializer.protobuf.PbField; +import com.zfoo.protocol.serializer.protobuf.*; import com.zfoo.protocol.serializer.protobuf.PbField.Cardinality; -import com.zfoo.protocol.serializer.protobuf.PbMessage; import com.zfoo.protocol.util.StringUtils; import java.util.*; @@ -405,7 +402,7 @@ public class ProtoParser { nextLine(); PbField field; if (gType != null) { - TypeProtobuf type = TypeProtobuf.valueOf(gType.getKeyType().toUpperCase(Locale.ENGLISH)); + PbType type = PbType.valueOf(gType.getKeyType().toUpperCase(Locale.ENGLISH)); var mapField = new PbMapField(); mapField.setKey(type); mapField.setValue(gType.getValueType()); diff --git a/protocol/src/main/java/com/zfoo/protocol/serializer/protobuf/parser/TypeProtobuf.java b/protocol/src/main/java/com/zfoo/protocol/serializer/protobuf/parser/TypeProtobuf.java deleted file mode 100644 index 3cadbb7c..00000000 --- a/protocol/src/main/java/com/zfoo/protocol/serializer/protobuf/parser/TypeProtobuf.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright 2021 The edap Project - * - * 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.serializer.protobuf.parser; - -import java.util.HashMap; -import java.util.Map; - -public enum TypeProtobuf { - FLOAT("float", TypeJava.FLOAT), - DOUBLE("double", TypeJava.DOUBLE), - INT32("int32", TypeJava.INT), - INT64("int64", TypeJava.LONG), - UINT32("uint32", TypeJava.INT), - UINT64("uint64", TypeJava.LONG), - SINT32("sint32", TypeJava.INT), - SINT64("sint64", TypeJava.LONG), - FIXED32("fixed32", TypeJava.INT), - FIXED64("fixed64", TypeJava.LONG), - SFIXED32("sfixed32", TypeJava.INT), - SFIXED64("sfixed64", TypeJava.LONG), - BOOL("bool", TypeJava.BOOLEAN), - ENUM("enum", TypeJava.ENUM), - STRING("string", TypeJava.STRING), - BYTES("bytes", TypeJava.BYTES), - MESSAGE("", TypeJava.MESSAGE), - OBJECT("OBJECT", TypeJava.OBJECT), - GROUP("group", TypeJava.MESSAGE), - MAP("", TypeJava.MAP); - - private final String value; - private final TypeJava javaType; - - private static final Map map = new HashMap<>(); - - static { - for (var ele : TypeProtobuf.values()) { - map.put(ele.value, ele); - } - } - - TypeProtobuf(String value, TypeJava javaType) { - this.value = value; - this.javaType = javaType; - } - - public TypeJava javaType() { - return javaType; - } - - - public String value() { - return this.value; - } - - public static TypeProtobuf typeOfProtobuf(String str) { - return map.get(str); - } -}