Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -546,13 +546,16 @@ public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> o
}
}

setExportParameterName(operation.queryParams);
setExportParameterName(operation.formParams);
setExportParameterName(operation.headerParams);
setExportParameterName(operation.bodyParams);
setExportParameterName(operation.cookieParams);
setExportParameterName(operation.optionalParams);
setExportParameterName(operation.requiredParams);
boolean hasFormParams = !operation.formParams.isEmpty();

setExportParameterName(operation.allParams, hasFormParams);
setExportParameterName(operation.queryParams, hasFormParams);
setExportParameterName(operation.formParams, hasFormParams);
setExportParameterName(operation.headerParams, hasFormParams);
setExportParameterName(operation.bodyParams, hasFormParams);
setExportParameterName(operation.cookieParams, hasFormParams);
setExportParameterName(operation.optionalParams, hasFormParams);
setExportParameterName(operation.requiredParams, hasFormParams);

}

Expand All @@ -574,18 +577,22 @@ public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> o
return objs;
}

private void setExportParameterName(List<CodegenParameter> codegenParameters) {
private void setExportParameterName(List<CodegenParameter> codegenParameters, boolean hasFormParams) {
for (CodegenParameter param : codegenParameters) {
char nameFirstChar = param.paramName.charAt(0);
if (Character.isUpperCase(nameFirstChar)) {
// First char is already uppercase, just use paramName.
param.vendorExtensions.put("x-export-param-name", param.paramName);
} else {
// It's a lowercase first char, let's convert it to uppercase
StringBuilder sb = new StringBuilder(param.paramName);
sb.setCharAt(0, Character.toUpperCase(nameFirstChar));
param.vendorExtensions.put("x-export-param-name", sb.toString());
}
param.vendorExtensions.put("x-export-param-name", exportParameterNameFor(param, hasFormParams));
}
}

protected String exportParameterNameFor(CodegenParameter param, boolean hasFormParams) {
char nameFirstChar = param.paramName.charAt(0);
if (Character.isUpperCase(nameFirstChar)) {
// First char is already uppercase, just use paramName.
return param.paramName;
} else {
// It's a lowercase first char, let's convert it to uppercase
StringBuilder sb = new StringBuilder(param.paramName);
sb.setCharAt(0, Character.toUpperCase(nameFirstChar));
return sb.toString();
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@

import java.io.File;
import java.util.*;
import java.util.regex.Pattern;

import static org.openapitools.codegen.utils.StringUtils.camelize;

Expand Down Expand Up @@ -368,6 +369,32 @@ public CodegenProperty fromProperty(String name, Schema p) {
return prop;
}

private Pattern pattern = Pattern.compile("^(query|header|cookie|form).*$", Pattern.CASE_INSENSITIVE);

@Override
protected String exportParameterNameFor(CodegenParameter param, boolean hasFormParams) {
String prefix = param.isHeaderParam ? "Header"
: param.isCookieParam ? "Cookie"
: param.isQueryParam && (hasFormParams || pattern.matcher(param.paramName).matches()) ? "Query"
: param.isFormParam && pattern.matcher(param.paramName).matches() ? "Form"
: "";

return prefix + super.exportParameterNameFor(param, hasFormParams);
}

private void setNamespacedParameterName(List<CodegenParameter> codegenParameters) {
for (CodegenParameter param : codegenParameters) {
String namespacePrefix = param.isHeaderParam ? "header"
: param.isCookieParam ? "cookie"
: param.isQueryParam ? "query"
: param.isFormParam ? "form"
: param.isBodyParam ? "body"
: "path";

param.vendorExtensions.put("x-namespaced-param-name", namespacePrefix + param.paramName);
}
}

@Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) {
// The superclass determines the list of required golang imports. The actual list of imports
Expand Down Expand Up @@ -446,6 +473,16 @@ public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> o
p.vendorExtensions.put("x-go-example", constructExampleCode(p, modelMaps, processedModelMaps));
}
processedModelMaps.clear();

setNamespacedParameterName(op.allParams);
setNamespacedParameterName(op.queryParams);
setNamespacedParameterName(op.formParams);
setNamespacedParameterName(op.headerParams);
setNamespacedParameterName(op.bodyParams);
setNamespacedParameterName(op.cookieParams);
setNamespacedParameterName(op.optionalParams);
setNamespacedParameterName(op.requiredParams);
setNamespacedParameterName(op.pathParams);
}

for (CodegenOperation operation : operationList) {
Expand Down
64 changes: 32 additions & 32 deletions modules/openapi-generator/src/main/resources/go/api.mustache
Original file line number Diff line number Diff line change
Expand Up @@ -52,12 +52,12 @@ type {{#structPrefix}}{{&classname}}{{/structPrefix}}Api{{operationId}}Request s
ApiService *{{classname}}Service
{{/generateInterfaces}}
{{#allParams}}
{{paramName}} {{^isPathParam}}*{{/isPathParam}}{{{dataType}}}
{{vendorExtensions.x-namespaced-param-name}} {{^isPathParam}}*{{/isPathParam}}{{{dataType}}}
{{/allParams}}
}
{{#allParams}}{{^isPathParam}}
func (r {{#structPrefix}}{{&classname}}{{/structPrefix}}Api{{operationId}}Request) {{vendorExtensions.x-export-param-name}}({{paramName}} {{{dataType}}}) {{#structPrefix}}{{&classname}}{{/structPrefix}}Api{{operationId}}Request {
r.{{paramName}} = &{{paramName}}
r.{{vendorExtensions.x-namespaced-param-name}} = &{{paramName}}
return r
}{{/isPathParam}}{{/allParams}}

Expand All @@ -78,7 +78,7 @@ func (a *{{{classname}}}Service) {{{nickname}}}(ctx _context.Context{{#pathParam
return {{#structPrefix}}{{&classname}}{{/structPrefix}}Api{{operationId}}Request{
ApiService: a,
ctx: ctx,{{#pathParams}}
{{paramName}}: {{paramName}},{{/pathParams}}
{{vendorExtensions.x-namespaced-param-name}}: {{paramName}},{{/pathParams}}
}
}

Expand All @@ -104,56 +104,56 @@ func (a *{{{classname}}}Service) {{nickname}}Execute(r {{#structPrefix}}{{&class
}

localVarPath := localBasePath + "{{{path}}}"{{#pathParams}}
localVarPath = strings.Replace(localVarPath, "{"+"{{baseName}}"+"}", _neturl.PathEscape(parameterToString(r.{{paramName}}, "{{#collectionFormat}}{{collectionFormat}}{{/collectionFormat}}")), -1){{/pathParams}}
localVarPath = strings.Replace(localVarPath, "{"+"{{baseName}}"+"}", _neturl.PathEscape(parameterToString(r.{{vendorExtensions.x-namespaced-param-name}}, "{{#collectionFormat}}{{collectionFormat}}{{/collectionFormat}}")), -1){{/pathParams}}

localVarHeaderParams := make(map[string]string)
localVarQueryParams := _neturl.Values{}
localVarFormParams := _neturl.Values{}
{{#allParams}}
{{#required}}
{{^isPathParam}}
if r.{{paramName}} == nil {
if r.{{vendorExtensions.x-namespaced-param-name}} == nil {
return {{#returnType}}localVarReturnValue, {{/returnType}}nil, reportError("{{paramName}} is required and must be specified")
}
{{/isPathParam}}
{{#minItems}}
if len({{^isPathParam}}*{{/isPathParam}}r.{{paramName}}) < {{minItems}} {
if len({{^isPathParam}}*{{/isPathParam}}r.{{vendorExtensions.x-namespaced-param-name}}) < {{minItems}} {
return {{#returnType}}localVarReturnValue, {{/returnType}}nil, reportError("{{paramName}} must have at least {{minItems}} elements")
}
{{/minItems}}
{{#maxItems}}
if len({{^isPathParam}}*{{/isPathParam}}r.{{paramName}}) > {{maxItems}} {
if len({{^isPathParam}}*{{/isPathParam}}r.{{vendorExtensions.x-namespaced-param-name}}) > {{maxItems}} {
return {{#returnType}}localVarReturnValue, {{/returnType}}nil, reportError("{{paramName}} must have less than {{maxItems}} elements")
}
{{/maxItems}}
{{#minLength}}
if strlen({{^isPathParam}}*{{/isPathParam}}r.{{paramName}}) < {{minLength}} {
if strlen({{^isPathParam}}*{{/isPathParam}}r.{{vendorExtensions.x-namespaced-param-name}}) < {{minLength}} {
return {{#returnType}}localVarReturnValue, {{/returnType}}nil, reportError("{{paramName}} must have at least {{minLength}} elements")
}
{{/minLength}}
{{#maxLength}}
if strlen({{^isPathParam}}*{{/isPathParam}}r.{{paramName}}) > {{maxLength}} {
if strlen({{^isPathParam}}*{{/isPathParam}}r.{{vendorExtensions.x-namespaced-param-name}}) > {{maxLength}} {
return {{#returnType}}localVarReturnValue, {{/returnType}}nil, reportError("{{paramName}} must have less than {{maxLength}} elements")
}
{{/maxLength}}
{{#minimum}}
{{#isString}}
{{paramName}}Txt, err := atoi({{^isPathParam}}*{{/isPathParam}}r.{{paramName}})
if {{paramName}}Txt < {{minimum}} {
{{vendorExtensions.x-namespaced-param-name}}Txt, err := atoi({{^isPathParam}}*{{/isPathParam}}r.{{vendorExtensions.x-namespaced-param-name}})
if {{vendorExtensions.x-namespaced-param-name}}Txt < {{minimum}} {
{{/isString}}
{{^isString}}
if {{^isPathParam}}*{{/isPathParam}}r.{{paramName}} < {{minimum}} {
if {{^isPathParam}}*{{/isPathParam}}r.{{vendorExtensions.x-namespaced-param-name}} < {{minimum}} {
{{/isString}}
return {{#returnType}}localVarReturnValue, {{/returnType}}nil, reportError("{{paramName}} must be greater than {{minimum}}")
}
{{/minimum}}
{{#maximum}}
{{#isString}}
{{paramName}}Txt, err := atoi({{^isPathParam}}*{{/isPathParam}}r.{{paramName}})
if {{paramName}}Txt > {{maximum}} {
{{vendorExtensions.x-namespaced-param-name}}Txt, err := atoi({{^isPathParam}}*{{/isPathParam}}r.{{vendorExtensions.x-namespaced-param-name}})
if {{vendorExtensions.x-namespaced-param-name}}Txt > {{maximum}} {
{{/isString}}
{{^isString}}
if {{^isPathParam}}*{{/isPathParam}}r.{{paramName}} > {{maximum}} {
if {{^isPathParam}}*{{/isPathParam}}r.{{vendorExtensions.x-namespaced-param-name}} > {{maximum}} {
{{/isString}}
return {{#returnType}}localVarReturnValue, {{/returnType}}nil, reportError("{{paramName}} must be less than {{maximum}}")
}
Expand All @@ -165,7 +165,7 @@ func (a *{{{classname}}}Service) {{nickname}}Execute(r {{#structPrefix}}{{&class
{{#required}}
{{#isCollectionFormatMulti}}
{
t := *r.{{paramName}}
t := *r.{{vendorExtensions.x-namespaced-param-name}}
if reflect.TypeOf(t).Kind() == reflect.Slice {
s := reflect.ValueOf(t)
for i := 0; i < s.Len(); i++ {
Expand All @@ -177,13 +177,13 @@ func (a *{{{classname}}}Service) {{nickname}}Execute(r {{#structPrefix}}{{&class
}
{{/isCollectionFormatMulti}}
{{^isCollectionFormatMulti}}
localVarQueryParams.Add("{{baseName}}", parameterToString(*r.{{paramName}}, "{{#collectionFormat}}{{collectionFormat}}{{/collectionFormat}}"))
localVarQueryParams.Add("{{baseName}}", parameterToString(*r.{{vendorExtensions.x-namespaced-param-name}}, "{{#collectionFormat}}{{collectionFormat}}{{/collectionFormat}}"))
{{/isCollectionFormatMulti}}
{{/required}}
{{^required}}
if r.{{paramName}} != nil {
if r.{{vendorExtensions.x-namespaced-param-name}} != nil {
{{#isCollectionFormatMulti}}
t := *r.{{paramName}}
t := *r.{{vendorExtensions.x-namespaced-param-name}}
if reflect.TypeOf(t).Kind() == reflect.Slice {
s := reflect.ValueOf(t)
for i := 0; i < s.Len(); i++ {
Expand All @@ -194,7 +194,7 @@ func (a *{{{classname}}}Service) {{nickname}}Execute(r {{#structPrefix}}{{&class
}
{{/isCollectionFormatMulti}}
{{^isCollectionFormatMulti}}
localVarQueryParams.Add("{{baseName}}", parameterToString(*r.{{paramName}}, "{{#collectionFormat}}{{collectionFormat}}{{/collectionFormat}}"))
localVarQueryParams.Add("{{baseName}}", parameterToString(*r.{{vendorExtensions.x-namespaced-param-name}}, "{{#collectionFormat}}{{collectionFormat}}{{/collectionFormat}}"))
{{/isCollectionFormatMulti}}
}
{{/required}}
Expand Down Expand Up @@ -222,24 +222,24 @@ func (a *{{{classname}}}Service) {{nickname}}Execute(r {{#structPrefix}}{{&class
}
{{#headerParams}}
{{#required}}
localVarHeaderParams["{{baseName}}"] = parameterToString(*r.{{paramName}}, "{{#collectionFormat}}{{collectionFormat}}{{/collectionFormat}}")
localVarHeaderParams["{{baseName}}"] = parameterToString(*r.{{vendorExtensions.x-namespaced-param-name}}, "{{#collectionFormat}}{{collectionFormat}}{{/collectionFormat}}")
{{/required}}
{{^required}}
if r.{{paramName}} != nil {
localVarHeaderParams["{{baseName}}"] = parameterToString(*r.{{paramName}}, "{{#collectionFormat}}{{collectionFormat}}{{/collectionFormat}}")
if r.{{vendorExtensions.x-namespaced-param-name}} != nil {
localVarHeaderParams["{{baseName}}"] = parameterToString(*r.{{vendorExtensions.x-namespaced-param-name}}, "{{#collectionFormat}}{{collectionFormat}}{{/collectionFormat}}")
}
{{/required}}
{{/headerParams}}
{{#formParams}}
{{#isFile}}
localVarFormFileName = "{{baseName}}"
{{#required}}
localVarFile := *r.{{paramName}}
localVarFile := *r.{{vendorExtensions.x-namespaced-param-name}}
{{/required}}
{{^required}}
var localVarFile {{dataType}}
if r.{{paramName}} != nil {
localVarFile = *r.{{paramName}}
if r.{{vendorExtensions.x-namespaced-param-name}} != nil {
localVarFile = *r.{{vendorExtensions.x-namespaced-param-name}}
}
{{/required}}
if localVarFile != nil {
Expand All @@ -251,29 +251,29 @@ func (a *{{{classname}}}Service) {{nickname}}Execute(r {{#structPrefix}}{{&class
{{/isFile}}
{{^isFile}}
{{#required}}
localVarFormParams.Add("{{baseName}}", parameterToString(*r.{{paramName}}, "{{#collectionFormat}}{{collectionFormat}}{{/collectionFormat}}"))
localVarFormParams.Add("{{baseName}}", parameterToString(*r.{{vendorExtensions.x-namespaced-param-name}}, "{{#collectionFormat}}{{collectionFormat}}{{/collectionFormat}}"))
{{/required}}
{{^required}}
{{#isModel}}
if r.{{paramName}} != nil {
paramJson, err := parameterToJson(*r.{{paramName}})
if r.{{vendorExtensions.x-namespaced-param-name}} != nil {
paramJson, err := parameterToJson(*r.{{vendorExtensions.x-namespaced-param-name}})
if err != nil {
return {{#returnType}}localVarReturnValue, {{/returnType}}nil, err
}
localVarFormParams.Add("{{baseName}}", paramJson)
}
{{/isModel}}
{{^isModel}}
if r.{{paramName}} != nil {
localVarFormParams.Add("{{baseName}}", parameterToString(*r.{{paramName}}, "{{#collectionFormat}}{{collectionFormat}}{{/collectionFormat}}"))
if r.{{vendorExtensions.x-namespaced-param-name}} != nil {
localVarFormParams.Add("{{baseName}}", parameterToString(*r.{{vendorExtensions.x-namespaced-param-name}}, "{{#collectionFormat}}{{collectionFormat}}{{/collectionFormat}}"))
}
{{/isModel}}
{{/required}}
{{/isFile}}
{{/formParams}}
{{#bodyParams}}
// body params
localVarPostBody = r.{{paramName}}
localVarPostBody = r.{{vendorExtensions.x-namespaced-param-name}}
{{/bodyParams}}
{{#authMethods}}
{{#isApiKey}}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
openapi: 3.0.0

info:
version: 1.0.0
title: OpenAPI Petstore

paths:
/pet/{id}:
post:
operationId: create
parameters:
- in: path
name: id
required: true
schema:
type: integer
format: int32
- in: header
name: id
schema:
type: integer
format: int32
- in: cookie
name: id
schema:
type: integer
format: int32
- in: query
name: id
schema:
type: integer
format: int32
requestBody:
content:
multipart/form-data:
schema:
type: object
properties:
id:
type: integer
format: int32
pathid:
type: integer
format: int32
headerId2:
type: integer
format: int32
cookieId2:
type: integer
format: int32
queryId2:
type: integer
format: int32
responses:
'400':
description: Invalid pet value

Loading