Skip to content

Commit dc23a3d

Browse files
committed
resolves #122
1 parent a9cf01d commit dc23a3d

File tree

3 files changed

+57
-2
lines changed
  • openapi-processor-core/src

3 files changed

+57
-2
lines changed

openapi-processor-core/src/main/kotlin/io/openapiprocessor/core/parser/openapi4j/Operation.kt

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import io.openapiprocessor.core.parser.RequestBody as ParserRequestBody
1212
import io.openapiprocessor.core.parser.Response as ParserResponse
1313
import org.openapi4j.parser.model.v3.Operation as O4jOperation
1414
import org.openapi4j.parser.model.v3.Parameter as O4jParameter
15+
import org.openapi4j.parser.model.v3.Path as O4jPath
1516
import org.openapi4j.parser.model.v3.Response as O4jResponse
1617

1718
/**
@@ -20,7 +21,8 @@ import org.openapi4j.parser.model.v3.Response as O4jResponse
2021
class Operation(
2122
private val method: HttpMethod,
2223
private val operation: O4jOperation,
23-
private val refResolver: RefResolverNative,
24+
private val path: O4jPath,
25+
private val refResolver: RefResolverNative
2426
): ParserOperation {
2527

2628
override fun getMethod(): HttpMethod = method
@@ -32,6 +34,15 @@ class Operation(
3234
override fun getParameters(): List<ParserParameter> {
3335
val parameters = mutableListOf<ParserParameter>()
3436

37+
path.parameters?.map { p: O4jParameter ->
38+
var param = p
39+
if(p.isRef) {
40+
param = refResolver.resolve(p)
41+
}
42+
43+
parameters.add(Parameter(param))
44+
}
45+
3546
operation.parameters?.map { p: O4jParameter ->
3647
var param = p
3748
if(p.isRef) {

openapi-processor-core/src/main/kotlin/io/openapiprocessor/core/parser/openapi4j/Path.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ class Path(
4040
HttpMethod.values().map {
4141
val op = info.getOperation(it.method)
4242
if (op != null) {
43-
ops.add (Operation(it, op, refResolver))
43+
ops.add (Operation(it, op, info, refResolver))
4444
}
4545
}
4646

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/*
2+
* Copyright 2021 https://github.com/openapi-processor/openapi-processor-core
3+
* PDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.openapiprocessor.core.parser.openapi4j
7+
8+
import io.kotest.core.spec.style.StringSpec
9+
import io.kotest.matchers.collections.shouldNotBeEmpty
10+
import io.openapiprocessor.core.parser.ParserType
11+
import io.openapiprocessor.core.support.parse
12+
13+
class PathSpec : StringSpec({
14+
15+
"operation contains endpoint level parameters" {
16+
val openApi = parse ("""
17+
openapi: 3.0.2
18+
info:
19+
title: parameter at endpoint
20+
version: 1.0.0
21+
22+
paths:
23+
24+
/foo:
25+
parameters:
26+
- schema:
27+
type: string
28+
name: bar
29+
in: query
30+
required: true
31+
32+
get:
33+
responses:
34+
'204':
35+
description: empty
36+
""".trimIndent(), ParserType.OPENAPI4J)
37+
38+
val path = openApi.getPaths()["/foo"]
39+
val op = path!!.getOperations().first()
40+
41+
op.getParameters().shouldNotBeEmpty()
42+
}
43+
44+
})

0 commit comments

Comments
 (0)