openapi-generator: [GO] Problem with generating go client code, too many structs re-declared
Description
I’m unable to run the following:
java -jar ~/Downloads/openapi-generator-cli-4.0.0-20180728.030217-16.jar generate -i https://products.solace.com/download/PUBSUB_SEMPV2_SCHEMA_JSON -g go
go get -v ./...
github.com/SolaceDev/semp-v2-go
# github.com/SolaceDev/semp-v2-go
./api_msg_vpn.go:149:6: CreateMsgVpnAclProfileOpts redeclared in this block
previous declaration at ./api_acl_profile.go:41:6
./api_msg_vpn.go:260:6: CreateMsgVpnAclProfileClientConnectExceptionOpts redeclared in this block
previous declaration at ./api_acl_profile.go:152:6
./api_msg_vpn.go:372:6: CreateMsgVpnAclProfilePublishExceptionOpts redeclared in this block
previous declaration at ./api_acl_profile.go:264:6
./api_msg_vpn.go:484:6: CreateMsgVpnAclProfileSubscribeExceptionOpts redeclared in this block
previous declaration at ./api_acl_profile.go:376:6
./api_msg_vpn.go:595:6: CreateMsgVpnAuthorizationGroupOpts redeclared in this block
previous declaration at ./api_authorization_group.go:41:6
./api_msg_vpn.go:705:6: CreateMsgVpnBridgeOpts redeclared in this block
previous declaration at ./api_bridge.go:41:6
./api_msg_vpn.go:817:6: CreateMsgVpnBridgeRemoteMsgVpnOpts redeclared in this block
previous declaration at ./api_bridge.go:153:6
./api_msg_vpn.go:931:6: CreateMsgVpnBridgeRemoteSubscriptionOpts redeclared in this block
previous declaration at ./api_bridge.go:267:6
./api_msg_vpn.go:1045:6: CreateMsgVpnBridgeTlsTrustedCommonNameOpts redeclared in this block
previous declaration at ./api_bridge.go:381:6
./api_msg_vpn.go:1157:6: CreateMsgVpnClientProfileOpts redeclared in this block
previous declaration at ./api_client_profile.go:41:6
./api_msg_vpn.go:1157:6: too many errors
openapi-generator version
openapi-generator-cli-4.0.0-20180728.030217-16.jar including earlier release versions (and swagger 2.4.0 as well)
OpenAPI declaration file content or url
https://products.solace.com/download/PUBSUB_SEMPV2_SCHEMA_JSON
Command line used for generation
java -jar ~/Downloads/openapi-generator-cli-4.0.0-20180728.030217-16.jar generate -i https://products.solace.com/download/PUBSUB_SEMPV2_SCHEMA_JSON -g go
Steps to reproduce
java -jar ~/Downloads/openapi-generator-cli-4.0.0-20180728.030217-16.jar generate -i https://products.solace.com/download/PUBSUB_SEMPV2_SCHEMA_JSON -g go
go get -v ./...
Related issues/PRs
Might be similar: https://github.com/OpenAPITools/openapi-generator/issues/535
Suggest a fix/enhancement
None I can think of at the moment
About this issue
- Original URL
- State: open
- Created 6 years ago
- Reactions: 3
- Comments: 21 (7 by maintainers)
Hi, a me too report and some additional info.
Using mvn version openapi-generator-cli-5.2.0.jar and latest build openapi-generator-cli-5.2.1-20210719.023544-9.jar and have same (and more ) issues.
4.2.2 works BUT to prevent duplicate structs need to use -p enumClassPrefix=true
5.2.0 or 20210719.023544-9 versions seem to ignore it or some other mechanism generates lots of duplicates.
Can’t remember i’ve seen it with an early 5.0.1 version, but that was almost a year ago when tested.
[vendor provided swagger file used] (https://vdc-download.vmware.com/vmwb-repository/dcr-public/d8e1559c-3fd9-4d48-a895-b1036479cea6/9e2aee74-1a4d-46ba-ac14-8694815b8ce2/swagger-4.4.0-dist.json)
To make it compilable without duplicates I need to modify the vendor provider with the suggested jq statement:
And with that it compiles.
Not sure if it affects anything else at this point. update:“Functions are no longer available in respective api collection (defined by tags), which again could be workaround by hardcoding all tags to same value, instead of first tag found. I found another open issue (#9500) which states based on tags different packages should be created”.
PS: i need the
-p enumClassPrefix=trueto hide the issue with generating ModMap’s which are not defined anywhere (which happens about just 6 times or so in the swagger spec file), this is for version 4.2.2, 5.2.0 and 5.2.1-20210917Regards
What about an option to only generate code for the 1st tag (assuming there’re multiple tags defined in the operation)?
Hi, Confirmed that set
structPrefix=truethen the issue is resolved. I have tested with OpenApiGenerator gradle plugin version 5.3.1FWIW, I wrote a quick
Makefiletarget to remove the duplicate options and fix any vestigial imports:Whats about this: Create
*Optsstructs inmodel_*_opts.gofiles. for example:GetAboutUserOptsmove tomodel_about_user_opts.goGetAboutUserMsgVpnOptsmove tomodel_about_user_msg_vpn_opts.goGetAboutUserMsgVpnsOptsmove tomodel_about_user_msg_vpns_opts.goand so on…@wari I’ll take another look later today
Sorry for client generator, I mean Python, Ruby, PHP client generators instead of the Go client generator.
If you manually clean up the tags to keep the first one only, does it solve your problem?