Skip to content

Commit 4b56fd2

Browse files
authored
[Go] uses sanitized model name instead of the name (#18644)
* uses sanitized model name instead of the name * commit sample * samples updated * update CI file to test the changes * adds a pom.xml to the sample
1 parent 9704246 commit 4b56fd2

File tree

25 files changed

+2657
-5
lines changed

25 files changed

+2657
-5
lines changed

CI/circle_parallel.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ elif [ "$NODE_INDEX" = "2" ]; then
4343
(cd samples/client/petstore/go && mvn integration-test)
4444
(cd samples/openapi3/client/petstore/go && mvn integration-test)
4545
(cd samples/openapi3/client/petstore/go-petstore-generateMarshalJSON-false && mvn integration-test)
46+
(cd samples/client/others/go/allof_multiple_ref_and_discriminator && mvn integration-test)
4647

4748
elif [ "$NODE_INDEX" = "3" ]; then
4849

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
generatorName: go
2+
outputDir: samples/client/others/go/allof_multiple_ref_and_discriminator
3+
inputSpec: modules/openapi-generator/src/test/resources/3_0/go/allof_multiple_ref_and_discriminator.yaml
4+
additionalProperties:
5+
hideGenerationTimestamp: "true"

modules/openapi-generator/src/main/resources/go/model_simple.mustache

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ var _ MappedNullable = &{{classname}}{}
55
type {{classname}} struct {
66
{{#parentModel.name}}
77
{{^isArray}}
8-
{{{parentModel.name}}}
8+
{{{parentModel.classname}}}
99
{{/isArray}}
1010
{{#isArray}}
11-
Items {{{parentModel.name}}}
11+
Items {{{parentModel.classname}}}
1212
{{/isArray}}
1313
{{/parentModel.name}}
1414
{{#vars}}

modules/openapi-generator/src/test/resources/3_0/go/allof_multiple_ref_and_discriminator.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ components:
88
FinalItem:
99
type: object
1010
allOf:
11-
- $ref: '#/components/schemas/BaseItem'
11+
- $ref: '#/components/schemas/base.item'
1212
- $ref: '#/components/schemas/AdditionalData'
13-
BaseItem:
13+
base.item:
1414
type: object
1515
properties:
1616
title:
@@ -51,4 +51,4 @@ components:
5151
- prop1
5252
- quantity
5353
- unitPrice
54-
- totalPrice
54+
- totalPrice
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# Compiled Object files, Static and Dynamic libs (Shared Objects)
2+
*.o
3+
*.a
4+
*.so
5+
6+
# Folders
7+
_obj
8+
_test
9+
10+
# Architecture specific extensions/prefixes
11+
*.[568vq]
12+
[568vq].out
13+
14+
*.cgo1.go
15+
*.cgo2.c
16+
_cgo_defun.c
17+
_cgo_gotypes.go
18+
_cgo_export.*
19+
20+
_testmain.go
21+
22+
*.exe
23+
*.test
24+
*.prof
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# OpenAPI Generator Ignore
2+
# Generated by openapi-generator https://github.com/openapitools/openapi-generator
3+
4+
# Use this file to prevent files from being overwritten by the generator.
5+
# The patterns follow closely to .gitignore or .dockerignore.
6+
7+
# As an example, the C# client generator defines ApiClient.cs.
8+
# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
9+
#ApiClient.cs
10+
11+
# You can match any string of characters against a directory, file or extension with a single asterisk (*):
12+
#foo/*/qux
13+
# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux
14+
15+
# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
16+
#foo/**/qux
17+
# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux
18+
19+
# You can also negate patterns with an exclamation (!).
20+
# For example, you can ignore all files in a docs folder with the file extension .md:
21+
#docs/*.md
22+
# Then explicitly reverse the ignore rule for a single file:
23+
#!docs/README.md
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
.gitignore
2+
.travis.yml
3+
README.md
4+
api/openapi.yaml
5+
client.go
6+
configuration.go
7+
docs/AdditionalData.md
8+
docs/BaseItem.md
9+
docs/FinalItem.md
10+
git_push.sh
11+
go.mod
12+
go.sum
13+
model_additional_data.go
14+
model_base_item.go
15+
model_final_item.go
16+
response.go
17+
utils.go
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
7.6.0-SNAPSHOT
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
language: go
2+
3+
install:
4+
- go get -d -v .
5+
6+
script:
7+
- go build -v ./
8+
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
# Go API client for openapi
2+
3+
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
4+
5+
## Overview
6+
This API client was generated by the [OpenAPI Generator](https://openapi-generator.tech) project. By using the [OpenAPI-spec](https://www.openapis.org/) from a remote server, you can easily generate an API client.
7+
8+
- API version: 1.0.0
9+
- Package version: 1.0.0
10+
- Generator version: 7.6.0-SNAPSHOT
11+
- Build package: org.openapitools.codegen.languages.GoClientCodegen
12+
13+
## Installation
14+
15+
Install the following dependencies:
16+
17+
```sh
18+
go get github.com/stretchr/testify/assert
19+
go get golang.org/x/net/context
20+
```
21+
22+
Put the package under your project folder and add the following in import:
23+
24+
```go
25+
import openapi "github.com/GIT_USER_ID/GIT_REPO_ID"
26+
```
27+
28+
To use a proxy, set the environment variable `HTTP_PROXY`:
29+
30+
```go
31+
os.Setenv("HTTP_PROXY", "http://proxy_name:proxy_port")
32+
```
33+
34+
## Configuration of Server URL
35+
36+
Default configuration comes with `Servers` field that contains server objects as defined in the OpenAPI specification.
37+
38+
### Select Server Configuration
39+
40+
For using other server than the one defined on index 0 set context value `openapi.ContextServerIndex` of type `int`.
41+
42+
```go
43+
ctx := context.WithValue(context.Background(), openapi.ContextServerIndex, 1)
44+
```
45+
46+
### Templated Server URL
47+
48+
Templated server URL is formatted using default variables from configuration or from context value `openapi.ContextServerVariables` of type `map[string]string`.
49+
50+
```go
51+
ctx := context.WithValue(context.Background(), openapi.ContextServerVariables, map[string]string{
52+
"basePath": "v2",
53+
})
54+
```
55+
56+
Note, enum values are always validated and all unused variables are silently ignored.
57+
58+
### URLs Configuration per Operation
59+
60+
Each operation can use different server URL defined using `OperationServers` map in the `Configuration`.
61+
An operation is uniquely identified by `"{classname}Service.{nickname}"` string.
62+
Similar rules for overriding default operation server index and variables applies by using `openapi.ContextOperationServerIndices` and `openapi.ContextOperationServerVariables` context maps.
63+
64+
```go
65+
ctx := context.WithValue(context.Background(), openapi.ContextOperationServerIndices, map[string]int{
66+
"{classname}Service.{nickname}": 2,
67+
})
68+
ctx = context.WithValue(context.Background(), openapi.ContextOperationServerVariables, map[string]map[string]string{
69+
"{classname}Service.{nickname}": {
70+
"port": "8443",
71+
},
72+
})
73+
```
74+
75+
## Documentation for API Endpoints
76+
77+
All URIs are relative to *http://localhost*
78+
79+
Class | Method | HTTP request | Description
80+
------------ | ------------- | ------------- | -------------
81+
82+
83+
## Documentation For Models
84+
85+
- [AdditionalData](docs/AdditionalData.md)
86+
- [BaseItem](docs/BaseItem.md)
87+
- [FinalItem](docs/FinalItem.md)
88+
89+
90+
## Documentation For Authorization
91+
92+
Endpoints do not require authorization.
93+
94+
95+
## Documentation for Utility Methods
96+
97+
Due to the fact that model structure members are all pointers, this package contains
98+
a number of utility functions to easily obtain pointers to values of basic types.
99+
Each of these functions takes a value of the given basic type and returns a pointer to it:
100+
101+
* `PtrBool`
102+
* `PtrInt`
103+
* `PtrInt32`
104+
* `PtrInt64`
105+
* `PtrFloat`
106+
* `PtrFloat32`
107+
* `PtrFloat64`
108+
* `PtrString`
109+
* `PtrTime`
110+
111+
## Author
112+
113+
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
openapi: 3.0.0
2+
info:
3+
title: Test
4+
version: 1.0.0
5+
servers:
6+
- url: /
7+
paths: {}
8+
components:
9+
schemas:
10+
FinalItem:
11+
allOf:
12+
- $ref: '#/components/schemas/base.item'
13+
- $ref: '#/components/schemas/AdditionalData'
14+
type: object
15+
base.item:
16+
discriminator:
17+
mapping:
18+
FINAL: '#/components/schemas/FinalItem'
19+
propertyName: type
20+
properties:
21+
title:
22+
type: string
23+
type:
24+
enum:
25+
- FINAL
26+
example: FINAL
27+
type: string
28+
required:
29+
- title
30+
- type
31+
type: object
32+
AdditionalData:
33+
properties:
34+
prop1:
35+
type: string
36+
quantity:
37+
example: 1
38+
format: int32
39+
minimum: 1
40+
type: integer
41+
unitPrice:
42+
example: 9.99
43+
format: double
44+
minimum: 0.0
45+
type: number
46+
totalPrice:
47+
example: 9.99
48+
format: double
49+
minimum: 0.0
50+
type: number
51+
required:
52+
- prop1
53+
- quantity
54+
- totalPrice
55+
- unitPrice
56+
type: object

0 commit comments

Comments
 (0)