Skip to content

Commit d3defc9

Browse files
fix: Consider PathItem parameters for resolveFully.
1 parent b61834f commit d3defc9

File tree

1 file changed

+32
-20
lines changed

1 file changed

+32
-20
lines changed

modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/util/ResolverFully.java

Lines changed: 32 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -134,29 +134,14 @@ public void resolveFully(OpenAPI openAPI) {
134134
}
135135

136136
public void resolvePath(PathItem pathItem){
137+
if (pathItem.getParameters() != null) {
138+
pathItem.setParameters(mapToResolvedParameters(pathItem.getParameters()));
139+
}
140+
137141
for(Operation op : pathItem.readOperations()) {
138142
// inputs
139143
if (op.getParameters() != null) {
140-
for (Parameter parameter : op.getParameters()) {
141-
parameter = parameter.get$ref() != null ? resolveParameter(parameter) : parameter;
142-
if (parameter.getSchema() != null) {
143-
Schema resolved = resolveSchema(parameter.getSchema());
144-
if (resolved != null) {
145-
parameter.setSchema(resolved);
146-
}
147-
}
148-
if(parameter.getContent() != null){
149-
Map<String,MediaType> content = parameter.getContent();
150-
for (String key: content.keySet()){
151-
if (content.get(key) != null && content.get(key).getSchema() != null ){
152-
Schema resolvedSchema = resolveSchema(content.get(key).getSchema());
153-
if (resolvedSchema != null) {
154-
content.get(key).setSchema(resolvedSchema);
155-
}
156-
}
157-
}
158-
}
159-
}
144+
op.setParameters(mapToResolvedParameters(op.getParameters()));
160145
}
161146

162147
if (op.getCallbacks() != null){
@@ -232,6 +217,33 @@ public void resolvePath(PathItem pathItem){
232217
}
233218
}
234219

220+
private List<Parameter> mapToResolvedParameters(List<Parameter> rawParameters) {
221+
List<Parameter> resolvedParameters = new ArrayList<>();
222+
for (Parameter parameter : rawParameters) {
223+
parameter = parameter.get$ref() != null ? resolveParameter(parameter) : parameter;
224+
if (parameter.getSchema() != null) {
225+
Schema resolved = resolveSchema(parameter.getSchema());
226+
if (resolved != null) {
227+
parameter.setSchema(resolved);
228+
}
229+
}
230+
if (parameter.getContent() != null) {
231+
Map<String, MediaType> content = parameter.getContent();
232+
for (String key : content.keySet()) {
233+
if (content.get(key) != null && content.get(key).getSchema() != null) {
234+
Schema resolvedSchema = resolveSchema(content.get(key).getSchema());
235+
if (resolvedSchema != null) {
236+
content.get(key).setSchema(resolvedSchema);
237+
}
238+
}
239+
}
240+
}
241+
resolvedParameters.add(parameter);
242+
}
243+
244+
return resolvedParameters;
245+
}
246+
235247
private void resolveHeaders(Map<String, Header> headers) {
236248
if (headers == null || headers.isEmpty()) {
237249
return;

0 commit comments

Comments
 (0)