enum zero index is UNSPECIFIED suffix (#20473)

Co-authored-by: xil <xil@uber.com>
This commit is contained in:
lucy66hw 2025-02-18 22:30:53 -08:00 committed by GitHub
parent 2722fdcdc8
commit 4883de51c1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 20 additions and 20 deletions

View File

@ -16,10 +16,10 @@ title: Documentation for the protobuf-schema Generator
## CONFIG OPTIONS
These options may be applied as additional-properties (cli) or configOptions (plugins). Refer to [configuration docs](https://openapi-generator.tech/docs/configuration) for more details.
| Option | Description | Values | Default |
| ------ | ----------- | ------ | ------- |
|numberedFieldNumberList|Field numbers in order.| |false|
|startEnumsWithUnknown|Introduces &quot;UNKNOWN&quot; as the first element of enumerations.| |false|
| Option | Description | Values | Default |
|---------------------------|--------------------------------------------------------------------------| ------ | ------- |
| numberedFieldNumberList | Field numbers in order. | |false|
| startEnumsWithUnspecified | Introduces &quot;UNSPECIFIED&quot; as the first element of enumerations. | |false|
## IMPORT MAPPING

View File

@ -52,7 +52,7 @@ public class ProtobufSchemaCodegen extends DefaultCodegen implements CodegenConf
public static final String NUMBERED_FIELD_NUMBER_LIST = "numberedFieldNumberList";
public static final String START_ENUMS_WITH_UNKNOWN = "startEnumsWithUnknown";
public static final String START_ENUMS_WITH_UNSPECIFIED = "startEnumsWithUnspecified";
private final Logger LOGGER = LoggerFactory.getLogger(ProtobufSchemaCodegen.class);
@ -60,7 +60,7 @@ public class ProtobufSchemaCodegen extends DefaultCodegen implements CodegenConf
private boolean numberedFieldNumberList = false;
private boolean startEnumsWithUnknown = false;
private boolean startEnumsWithUnspecified = false;
@Override
public CodegenType getTag() {
@ -164,7 +164,7 @@ public class ProtobufSchemaCodegen extends DefaultCodegen implements CodegenConf
cliOptions.clear();
addSwitch(NUMBERED_FIELD_NUMBER_LIST, "Field numbers in order.", numberedFieldNumberList);
addSwitch(START_ENUMS_WITH_UNKNOWN, "Introduces \"UNKNOWN\" as the first element of enumerations.", startEnumsWithUnknown);
addSwitch(START_ENUMS_WITH_UNSPECIFIED, "Introduces \"UNSPECIFIED\" as the first element of enumerations.", startEnumsWithUnspecified);
}
@Override
@ -195,8 +195,8 @@ public class ProtobufSchemaCodegen extends DefaultCodegen implements CodegenConf
this.numberedFieldNumberList = convertPropertyToBooleanAndWriteBack(NUMBERED_FIELD_NUMBER_LIST);
}
if (additionalProperties.containsKey(this.START_ENUMS_WITH_UNKNOWN)) {
this.startEnumsWithUnknown = convertPropertyToBooleanAndWriteBack(START_ENUMS_WITH_UNKNOWN);
if (additionalProperties.containsKey(this.START_ENUMS_WITH_UNSPECIFIED)) {
this.startEnumsWithUnspecified = convertPropertyToBooleanAndWriteBack(START_ENUMS_WITH_UNSPECIFIED);
}
supportingFiles.add(new SupportingFile("README.mustache", "", "README.md"));
@ -233,6 +233,7 @@ public class ProtobufSchemaCodegen extends DefaultCodegen implements CodegenConf
String name = (String) value.get("name");
value.put("name", prefix + "_" + name);
value.put("value", "\"" + prefix + "_" + name + "\"");
}
}
@ -249,22 +250,21 @@ public class ProtobufSchemaCodegen extends DefaultCodegen implements CodegenConf
*
* @param allowableValues allowable values
*/
public void addUnknownToAllowableValues(Map<String, Object> allowableValues) {
if (startEnumsWithUnknown) {
public void addUnspecifiedToAllowableValues(Map<String, Object> allowableValues) {
if (startEnumsWithUnspecified) {
if (allowableValues.containsKey("enumVars")) {
List<Map<String, Object>> enumVars = (List<Map<String, Object>>) allowableValues.get("enumVars");
HashMap<String, Object> unknown = new HashMap<String, Object>();
unknown.put("name", "UNKNOWN");
unknown.put("isString", "false");
unknown.put("value", "\"UNKNOWN\"");
enumVars.add(0, unknown);
HashMap<String, Object> unspecified = new HashMap<String, Object>();
unspecified.put("name", "UNSPECIFIED");
unspecified.put("isString", "false");
unspecified.put("value", "\"UNSPECIFIED\"");
enumVars.add(0, unspecified);
}
if (allowableValues.containsKey("values")) {
List<String> values = (List<String>) allowableValues.get("values");
values.add(0, "UNKNOWN");
values.add(0, "UNSPECIFIED");
}
}
}
@ -291,7 +291,7 @@ public class ProtobufSchemaCodegen extends DefaultCodegen implements CodegenConf
if (cm.isEnum) {
Map<String, Object> allowableValues = cm.getAllowableValues();
addUnknownToAllowableValues(allowableValues);
addUnspecifiedToAllowableValues(allowableValues);
addEnumValuesPrefix(allowableValues, cm.getClassname());
if (allowableValues.containsKey("enumVars")) {
List<Map<String, Object>> enumVars = (List<Map<String, Object>>) allowableValues.get("enumVars");
@ -319,7 +319,7 @@ public class ProtobufSchemaCodegen extends DefaultCodegen implements CodegenConf
}
if (var.isEnum) {
addUnknownToAllowableValues(var.allowableValues);
addUnspecifiedToAllowableValues(var.allowableValues);
addEnumValuesPrefix(var.allowableValues, var.getEnumName());
if (var.allowableValues.containsKey("enumVars")) {