Skip to content

Commit d489adb

Browse files
authored
Merge pull request #2963 from swagger-api/fix-callback-deser
fix ref callback deserialization
2 parents 0ac66b4 + 53097d5 commit d489adb

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-0
lines changed

modules/swagger-core/src/main/java/io/swagger/v3/core/util/CallbackDeserializer.java

+2
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ public Callback deserialize(JsonParser jp, DeserializationContext ctxt)
2828
// if name start with `x-` consider it an extesion
2929
if (childName.startsWith("x-")) {
3030
extensions.put(childName, Json.mapper().convertValue(child, Object.class));
31+
} else if (childName.equals("$ref")) {
32+
result.$ref(child.asText());
3133
} else {
3234
result.put(childName, Json.mapper().convertValue(child, PathItem.class));
3335
}

modules/swagger-core/src/test/java/io/swagger/v3/core/deserialization/JsonDeserializationTest.java

+29
Original file line numberDiff line numberDiff line change
@@ -256,4 +256,33 @@ public void deserializeLongSchema() throws IOException {
256256
assertEquals(s.getEnum().get(1), 3147483647L);
257257
assertEquals(s.getEnum().get(2), 31474836475505055L);
258258
}
259+
260+
@Test(description = "Deserialize ref callback")
261+
public void testDeserializeRefCallback() throws Exception {
262+
String yaml = "openapi: 3.0.1\n" +
263+
"info:\n" +
264+
" description: info\n" +
265+
"paths:\n" +
266+
" /simplecallback:\n" +
267+
" get:\n" +
268+
" summary: Simple get operation\n" +
269+
" operationId: getWithNoParameters\n" +
270+
" responses:\n" +
271+
" 200:\n" +
272+
" description: voila!\n" +
273+
" callbacks:\n" +
274+
" testCallback1:\n" +
275+
" $ref: '#/components/callbacks/Callback'\n" +
276+
" callbacks:\n" +
277+
" testCallback1:\n" +
278+
" $ref: '#/components/callbacks/Callback'\n" +
279+
"components:\n" +
280+
" callbacks:\n" +
281+
" Callback:\n" +
282+
" /post:\n" +
283+
" description: Post Path Item\n";
284+
285+
OpenAPI oas = Yaml.mapper().readValue(yaml, OpenAPI.class);
286+
assertEquals(oas.getPaths().get("/simplecallback").getGet().getCallbacks().get("testCallback1").get$ref(), "#/components/callbacks/Callback");
287+
}
259288
}

0 commit comments

Comments
 (0)