From 5440c975ad3868e93d5da5a44253c564ae850888 Mon Sep 17 00:00:00 2001 From: frantuma Date: Sat, 17 Apr 2021 12:18:12 +0200 Subject: [PATCH] refs #3904 - annotations support for @JsonValue types --- .../v3/core/jackson/ModelResolver.java | 1 + .../v3/core/resolving/Ticket3904Test.java | 52 +++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 modules/swagger-core/src/test/java/io/swagger/v3/core/resolving/Ticket3904Test.java diff --git a/modules/swagger-core/src/main/java/io/swagger/v3/core/jackson/ModelResolver.java b/modules/swagger-core/src/main/java/io/swagger/v3/core/jackson/ModelResolver.java index 9832b79869..a6c66f7f53 100644 --- a/modules/swagger-core/src/main/java/io/swagger/v3/core/jackson/ModelResolver.java +++ b/modules/swagger-core/src/main/java/io/swagger/v3/core/jackson/ModelResolver.java @@ -376,6 +376,7 @@ public Schema resolve(AnnotatedType annotatedType, ModelConverterContext context .resolveAsRef(annotatedType.isResolveAsRef()) .jsonViewAnnotation(annotatedType.getJsonViewAnnotation()) .propertyName(annotatedType.getPropertyName()) + .ctxAnnotations(annotatedType.getCtxAnnotations()) .skipOverride(true); return context.resolve(aType); } diff --git a/modules/swagger-core/src/test/java/io/swagger/v3/core/resolving/Ticket3904Test.java b/modules/swagger-core/src/test/java/io/swagger/v3/core/resolving/Ticket3904Test.java new file mode 100644 index 0000000000..578cb8b8b8 --- /dev/null +++ b/modules/swagger-core/src/test/java/io/swagger/v3/core/resolving/Ticket3904Test.java @@ -0,0 +1,52 @@ +package io.swagger.v3.core.resolving; + +import com.fasterxml.jackson.annotation.JsonValue; +import io.swagger.v3.core.converter.AnnotatedType; +import io.swagger.v3.core.converter.ModelConverterContextImpl; +import io.swagger.v3.core.jackson.ModelResolver; +import io.swagger.v3.core.matchers.SerializationMatchers; +import io.swagger.v3.oas.models.media.Schema; +import org.testng.annotations.Test; + +public class Ticket3904Test extends SwaggerTestBase { + + @Test + public void testJsonValueSchemaAnnotation() throws Exception { + + final ModelResolver modelResolver = new ModelResolver(mapper()); + + ModelConverterContextImpl context = new ModelConverterContextImpl(modelResolver); + + Schema model = context + .resolve(new AnnotatedType(Request.class)); + + SerializationMatchers.assertEqualsToYaml(context.getDefinedModels(), "Request:\n" + + " type: object\n" + + " properties:\n" + + " id:\n" + + " type: string\n" + + " description: Description of ID."); + + } + + static class Request { + @io.swagger.v3.oas.annotations.media.Schema(description = "Description of ID.") + private Id id; + + public Id getId() { + return id; + } + + public void setId(Id id) { + this.id = id; + } + } + static class Id { + private String value; + + @JsonValue + public String getValue() { + return value; + } + } +}