forked from loafle/openapi-generator-original
[Go] add option to use class as enum prefix (#3675)
* add option to use class as enum prefix * update doc * fix go test * update go xml petstore * fix format
This commit is contained in:
@@ -13,4 +13,5 @@ sidebar_label: go-experimental
|
||||
|isGoSubmodule|whether the generated Go module is a submodule| |false|
|
||||
|withGoCodegenComment|whether to include Go codegen comment to disable Go Lint and collapse by default GitHub in PRs and diffs| |false|
|
||||
|withXml|whether to include support for application/xml content type and include XML annotations in the model (works with libraries that provide support for JSON and XML)| |false|
|
||||
|enumClassPrefix|Prefix enum with class name| |false|
|
||||
|prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false|
|
||||
|
||||
@@ -13,4 +13,5 @@ sidebar_label: go
|
||||
|isGoSubmodule|whether the generated Go module is a submodule| |false|
|
||||
|withGoCodegenComment|whether to include Go codegen comment to disable Go Lint and collapse by default GitHub in PRs and diffs| |false|
|
||||
|withXml|whether to include support for application/xml content type and include XML annotations in the model (works with libraries that provide support for JSON and XML)| |false|
|
||||
|enumClassPrefix|Prefix enum with class name| |false|
|
||||
|prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false|
|
||||
|
||||
@@ -308,4 +308,7 @@ public class CodegenConstants {
|
||||
|
||||
public static final String EXCEPTION_ON_FAILURE = "returnExceptionOnFailure";
|
||||
public static final String EXCEPTION_ON_FAILURE_DESC = "Throw an exception on non success response codes";
|
||||
|
||||
public static final String ENUM_CLASS_PREFIX = "enumClassPrefix";
|
||||
public static final String ENUM_CLASS_PREFIX_DESC = "Prefix enum with class name";
|
||||
}
|
||||
|
||||
@@ -38,6 +38,7 @@ public abstract class AbstractGoCodegen extends DefaultCodegen implements Codege
|
||||
|
||||
protected boolean withGoCodegenComment = false;
|
||||
protected boolean withXml = false;
|
||||
protected boolean enumClassPrefix = false;
|
||||
|
||||
protected String packageName = "openapi";
|
||||
|
||||
@@ -618,6 +619,10 @@ public abstract class AbstractGoCodegen extends DefaultCodegen implements Codege
|
||||
this.withXml = withXml;
|
||||
}
|
||||
|
||||
public void setEnumClassPrefix(boolean enumClassPrefix) {
|
||||
this.enumClassPrefix = enumClassPrefix;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toDefaultValue(Schema schema) {
|
||||
if (schema.getDefault() != null) {
|
||||
|
||||
@@ -55,7 +55,7 @@ public class GoClientCodegen extends AbstractGoCodegen {
|
||||
cliOptions.add(CliOption.newBoolean(CodegenConstants.IS_GO_SUBMODULE, CodegenConstants.IS_GO_SUBMODULE_DESC));
|
||||
cliOptions.add(CliOption.newBoolean(WITH_GO_CODEGEN_COMMENT, "whether to include Go codegen comment to disable Go Lint and collapse by default GitHub in PRs and diffs"));
|
||||
cliOptions.add(CliOption.newBoolean(WITH_XML, "whether to include support for application/xml content type and include XML annotations in the model (works with libraries that provide support for JSON and XML)"));
|
||||
|
||||
cliOptions.add(CliOption.newBoolean(CodegenConstants.ENUM_CLASS_PREFIX, CodegenConstants.ENUM_CLASS_PREFIX_DESC));
|
||||
|
||||
// option to change the order of form/body parameter
|
||||
cliOptions.add(CliOption.newBoolean(
|
||||
@@ -114,6 +114,13 @@ public class GoClientCodegen extends AbstractGoCodegen {
|
||||
}
|
||||
}
|
||||
|
||||
if (additionalProperties.containsKey(CodegenConstants.ENUM_CLASS_PREFIX)) {
|
||||
setEnumClassPrefix(Boolean.parseBoolean(additionalProperties.get(CodegenConstants.ENUM_CLASS_PREFIX).toString()));
|
||||
if (enumClassPrefix) {
|
||||
additionalProperties.put(CodegenConstants.ENUM_CLASS_PREFIX, "true");
|
||||
}
|
||||
}
|
||||
|
||||
if (additionalProperties.containsKey(CodegenConstants.IS_GO_SUBMODULE)) {
|
||||
setIsGoSubmodule(Boolean.parseBoolean(additionalProperties.get(CodegenConstants.IS_GO_SUBMODULE).toString()));
|
||||
if (isGoSubmodule) {
|
||||
|
||||
@@ -23,7 +23,7 @@ const (
|
||||
{{#enumVars}}
|
||||
{{^-first}}
|
||||
{{/-first}}
|
||||
{{{classname.toUpperCase}}}_{{name}} {{{classname}}} = "{{{value}}}"
|
||||
{{#enumClassPrefix}}{{{classname.toUpperCase}}}_{{/enumClassPrefix}}{{name}} {{{classname}}} = "{{{value}}}"
|
||||
{{/enumVars}}
|
||||
{{/allowableValues}}
|
||||
){{/isEnum}}{{^isEnum}}{{#description}}
|
||||
@@ -36,7 +36,7 @@ type {{classname}} struct {
|
||||
// {{{description}}}
|
||||
{{/description}}
|
||||
{{name}} *{{{dataType}}} `json:"{{baseName}},omitempty"{{#withXml}} xml:"{{baseName}}{{#isXmlAttribute}},attr{{/isXmlAttribute}}"{{/withXml}}{{#vendorExtensions.x-go-custom-tag}} {{{.}}}{{/vendorExtensions.x-go-custom-tag}}`
|
||||
{{#isNullable}} isExplicitNull{{name}} bool `json:"-"{{#withXml}} xml:"-"{{/withXml}}`{{/isNullable}}
|
||||
{{#isNullable}} isExplicitNull{{name}} bool `json:"-"{{#withXml}} xml:"-"{{/withXml}}`{{/isNullable}}
|
||||
{{/vars}}
|
||||
}
|
||||
{{/isEnum}}
|
||||
|
||||
@@ -23,7 +23,7 @@ const (
|
||||
{{#enumVars}}
|
||||
{{^-first}}
|
||||
{{/-first}}
|
||||
{{{classname.toUpperCase}}}_{{name}} {{{classname}}} = "{{{value}}}"
|
||||
{{#enumClassPrefix}}{{{classname.toUpperCase}}}_{{/enumClassPrefix}}{{name}} {{{classname}}} = "{{{value}}}"
|
||||
{{/enumVars}}
|
||||
{{/allowableValues}}
|
||||
){{/isEnum}}{{^isEnum}}{{#description}}
|
||||
|
||||
@@ -50,6 +50,8 @@ public class GoClientOptionsTest extends AbstractOptionsTest {
|
||||
times = 1;
|
||||
clientCodegen.setWithXml(GoClientOptionsProvider.WITH_XML_VALUE);
|
||||
times = 1;
|
||||
clientCodegen.setWithXml(GoClientOptionsProvider.ENUM_CLASS_PREFIX_VALUE);
|
||||
times = 1;
|
||||
clientCodegen.setPrependFormOrBodyParameters(Boolean.valueOf(GoClientOptionsProvider.PREPEND_FORM_OR_BODY_PARAMETERS_VALUE));
|
||||
times = 1;
|
||||
clientCodegen.setIsGoSubmodule(Boolean.valueOf(GoClientOptionsProvider.IS_GO_SUBMODULE_VALUE));
|
||||
|
||||
@@ -28,6 +28,7 @@ public class GoClientOptionsProvider implements OptionsProvider {
|
||||
public static final String PACKAGE_NAME_VALUE = "Go";
|
||||
public static final boolean WITH_GO_CODEGEN_COMMENT_VALUE = true;
|
||||
public static final boolean WITH_XML_VALUE = true;
|
||||
public static final boolean ENUM_CLASS_PREFIX_VALUE = true;
|
||||
public static final Boolean PREPEND_FORM_OR_BODY_PARAMETERS_VALUE = true;
|
||||
public static final boolean IS_GO_SUBMODULE_VALUE = true;
|
||||
|
||||
@@ -45,6 +46,7 @@ public class GoClientOptionsProvider implements OptionsProvider {
|
||||
.put(CodegenConstants.HIDE_GENERATION_TIMESTAMP, "true")
|
||||
.put(CodegenConstants.WITH_GO_CODEGEN_COMMENT, "true")
|
||||
.put(CodegenConstants.WITH_XML, "true")
|
||||
.put(CodegenConstants.ENUM_CLASS_PREFIX, "true")
|
||||
.put(CodegenConstants.PREPEND_FORM_OR_BODY_PARAMETERS, "true")
|
||||
.put(CodegenConstants.IS_GO_SUBMODULE, "true")
|
||||
.build();
|
||||
|
||||
@@ -13,7 +13,7 @@ type EnumClass string
|
||||
|
||||
// List of EnumClass
|
||||
const (
|
||||
ENUMCLASS_ABC EnumClass = "_abc"
|
||||
ENUMCLASS_EFG EnumClass = "-efg"
|
||||
ENUMCLASS_XYZ EnumClass = "(xyz)"
|
||||
ABC EnumClass = "_abc"
|
||||
EFG EnumClass = "-efg"
|
||||
XYZ EnumClass = "(xyz)"
|
||||
)
|
||||
@@ -13,7 +13,7 @@ type OuterEnum string
|
||||
|
||||
// List of OuterEnum
|
||||
const (
|
||||
OUTERENUM_PLACED OuterEnum = "placed"
|
||||
OUTERENUM_APPROVED OuterEnum = "approved"
|
||||
OUTERENUM_DELIVERED OuterEnum = "delivered"
|
||||
PLACED OuterEnum = "placed"
|
||||
APPROVED OuterEnum = "approved"
|
||||
DELIVERED OuterEnum = "delivered"
|
||||
)
|
||||
@@ -12,7 +12,7 @@ type EnumClass string
|
||||
|
||||
// List of EnumClass
|
||||
const (
|
||||
ENUMCLASS_ABC EnumClass = "_abc"
|
||||
ENUMCLASS_EFG EnumClass = "-efg"
|
||||
ENUMCLASS_XYZ EnumClass = "(xyz)"
|
||||
ABC EnumClass = "_abc"
|
||||
EFG EnumClass = "-efg"
|
||||
XYZ EnumClass = "(xyz)"
|
||||
)
|
||||
@@ -12,7 +12,7 @@ type OuterEnum string
|
||||
|
||||
// List of OuterEnum
|
||||
const (
|
||||
OUTERENUM_PLACED OuterEnum = "placed"
|
||||
OUTERENUM_APPROVED OuterEnum = "approved"
|
||||
OUTERENUM_DELIVERED OuterEnum = "delivered"
|
||||
PLACED OuterEnum = "placed"
|
||||
APPROVED OuterEnum = "approved"
|
||||
DELIVERED OuterEnum = "delivered"
|
||||
)
|
||||
Reference in New Issue
Block a user