From 3459d41ce5faf5139b322d9e70afdb98bbee4a91 Mon Sep 17 00:00:00 2001 From: godotg Date: Fri, 19 Jan 2024 17:23:57 +0800 Subject: [PATCH] feat[pb]: add new PbGenerateOperation recordExcludes to difine Which classes do not need to generate a record class --- .../serializer/protobuf/GeneratePbUtils.java | 4 ++-- .../protobuf/PbGenerateOperation.java | 22 +++++++++++++++++++ .../generate/GenerateProtobufTesting.java | 1 + 3 files changed, 25 insertions(+), 2 deletions(-) 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 b06593a9..8e797f87 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 @@ -158,7 +158,7 @@ public abstract class GeneratePbUtils { var documentComment = buildDocumentComment(pbMessage); builder.append(GenerateProtocolFile.addTabs(documentComment, 1)); // message - if (pbGenerateOperation.isRecordClass()) { + if (pbGenerateOperation.generateRecordClass(pbMessage.getName())) { var recordBody = buildRecordBody(pbMessage); builder.append(GenerateProtocolFile.addTabs(recordBody, 1)); } else { @@ -243,7 +243,7 @@ public abstract class GeneratePbUtils { builder.append(documentComment); // message - if (pbGenerateOperation.isRecordClass()) { + if (pbGenerateOperation.generateRecordClass(pbMessage.getName())) { var recordBody = buildRecordBody(pbMessage); builder.append(recordBody); } else { diff --git a/protocol/src/main/java/com/zfoo/protocol/serializer/protobuf/PbGenerateOperation.java b/protocol/src/main/java/com/zfoo/protocol/serializer/protobuf/PbGenerateOperation.java index 53e9678f..cfbc1b22 100644 --- a/protocol/src/main/java/com/zfoo/protocol/serializer/protobuf/PbGenerateOperation.java +++ b/protocol/src/main/java/com/zfoo/protocol/serializer/protobuf/PbGenerateOperation.java @@ -13,6 +13,9 @@ package com.zfoo.protocol.serializer.protobuf; +import java.util.ArrayList; +import java.util.List; + public class PbGenerateOperation { private String protoPath; @@ -22,11 +25,22 @@ public class PbGenerateOperation { * Whether generated class is record */ private boolean recordClass; + /** + * Which classes do not need to generate a record class + */ + private List recordExcludes = new ArrayList<>(); /** * All protocol files are generated in a single protocol file. */ private boolean oneProtocol; + public boolean generateRecordClass(String protocolName) { + if (recordExcludes.contains(protocolName)) { + return false; + } + return recordClass; + } + public String getProtoPath() { return protoPath; } @@ -55,6 +69,14 @@ public class PbGenerateOperation { return recordClass; } + public List getRecordExcludes() { + return recordExcludes; + } + + public void setRecordExcludes(List recordExcludes) { + this.recordExcludes = recordExcludes; + } + public void setRecordClass(boolean recordClass) { this.recordClass = recordClass; } diff --git a/protocol/src/test/java/com/zfoo/protocol/generate/GenerateProtobufTesting.java b/protocol/src/test/java/com/zfoo/protocol/generate/GenerateProtobufTesting.java index 048d38ca..c7b6c5e6 100644 --- a/protocol/src/test/java/com/zfoo/protocol/generate/GenerateProtobufTesting.java +++ b/protocol/src/test/java/com/zfoo/protocol/generate/GenerateProtobufTesting.java @@ -28,6 +28,7 @@ public class GenerateProtobufTesting { buildOption.setOutputPath("zfoopb"); buildOption.setJavaPackage("com.zfoo.protocol.generate.test"); // buildOption.setRecordClass(true); +// buildOption.getRecordExcludes().add("SimpleObject"); // buildOption.setOneProtocol(true); GeneratePbUtils.create(buildOption); }