Skip to content
Merged
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 @@ -263,6 +263,16 @@ class DataTypeConverter {
)
}
}

// check global parameter mapping
List<ParameterTypeMapping> parameters = getParameterMappings (options.typeMappings)
def parameter = parameters.find { it.parameterName == pn && it.mapping.sourceTypeName == 'object' }
if (parameter) {
return new TargetType (
typeName: parameter.mapping.targetTypeName,
genericNames: parameter.mapping.genericTypeNames
)
}
}

// check global mapping
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,14 @@ import com.github.hauner.openapi.spring.converter.mapping.ParameterTypeMapping
import com.github.hauner.openapi.spring.converter.mapping.TypeMapping
import com.github.hauner.openapi.spring.model.Api
import spock.lang.Specification
import spock.lang.Unroll

import static com.github.hauner.openapi.spring.support.OpenApiParser.parse

class DataTypeConverterParameterTypeMappingSpec extends Specification {

void "converts object parameter schema to java type via endpoint mapping" () {
@Unroll
void "converts object parameter schema to java type via #type" () {
def openApi = parse ("""\
openapi: 3.0.2
info:
Expand All @@ -53,25 +55,40 @@ paths:
""")

when:
def options = new ApiOptions(
packageName: 'pkg',
typeMappings: [
new EndpointTypeMapping (path: '/foobar',
typeMappings: [
new ParameterTypeMapping (
parameterName: 'foobar',
mapping: new TypeMapping(
sourceTypeName: 'object',
targetTypeName: 'pkg.TargetClass')
)
])
])
def options = new ApiOptions(packageName: 'pkg', typeMappings: mappings)
Api api = new ApiConverter (options).convert (openApi)

then:
def itf = api.interfaces.first ()
def ep = itf.endpoints.first ()
ep.parameters.first ().dataType.name == 'TargetClass'

where:
type << [
'endpoint parameter mapping',
'global parameter mapping'
]

mappings << [
[
new EndpointTypeMapping (path: '/foobar',
typeMappings: [
new ParameterTypeMapping (
parameterName: 'foobar',
mapping: new TypeMapping (
sourceTypeName: 'object',
targetTypeName: 'pkg.TargetClass')
)
])
], [
new ParameterTypeMapping (
parameterName: 'foobar',
mapping: new TypeMapping (
sourceTypeName: 'object',
targetTypeName: 'pkg.TargetClass')
)
]
]
}

}