feat[pb]: add new PbGenerateOperation recordExcludes to difine Which classes do not need to generate a record class

This commit is contained in:
godotg
2024-01-19 17:23:57 +08:00
parent 4483706c7d
commit 3459d41ce5
3 changed files with 25 additions and 2 deletions
@@ -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 {
@@ -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<String> 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<String> getRecordExcludes() {
return recordExcludes;
}
public void setRecordExcludes(List<String> recordExcludes) {
this.recordExcludes = recordExcludes;
}
public void setRecordClass(boolean recordClass) {
this.recordClass = recordClass;
}
@@ -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);
}