From 953af3e9db735ca9db1c3132446fb8d1ddeb1a12 Mon Sep 17 00:00:00 2001 From: Martin Dendis Date: Sat, 18 Feb 2023 00:31:40 +0100 Subject: [PATCH] Fix for #4362 - Resolving Schema for system enums fails if enumsAsRef is enabled --- .../v3/core/jackson/ModelResolver.java | 2 +- .../v3/core/resolving/Ticket4362Test.java | 43 +++++++++++++++++++ 2 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 modules/swagger-core/src/test/java/io/swagger/v3/core/resolving/Ticket4362Test.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 22781fa6f0..230e67532c 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 @@ -188,7 +188,7 @@ public Schema resolve(AnnotatedType annotatedType, ModelConverterContext context if (!annotatedType.isSkipSchemaName() && resolvedSchemaAnnotation != null && !resolvedSchemaAnnotation.name().isEmpty()) { name = resolvedSchemaAnnotation.name(); } - if (StringUtils.isBlank(name) && !ReflectionUtils.isSystemType(type)) { + if (StringUtils.isBlank(name) && (type.isEnumType() || !ReflectionUtils.isSystemType(type))) { name = _typeName(type, beanDesc); } } diff --git a/modules/swagger-core/src/test/java/io/swagger/v3/core/resolving/Ticket4362Test.java b/modules/swagger-core/src/test/java/io/swagger/v3/core/resolving/Ticket4362Test.java new file mode 100644 index 0000000000..1a788a3fd8 --- /dev/null +++ b/modules/swagger-core/src/test/java/io/swagger/v3/core/resolving/Ticket4362Test.java @@ -0,0 +1,43 @@ +package io.swagger.v3.core.resolving; + +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.AfterMethod; +import org.testng.annotations.Test; + +import java.time.DayOfWeek; + +public class Ticket4362Test extends SwaggerTestBase { + + @AfterMethod + public void afterTest() { + ModelResolver.enumsAsRef = false; + } + + @Test + public void testAnyOf() throws Exception { + ModelResolver.enumsAsRef = true; + + final ModelResolver modelResolver = new ModelResolver(mapper()); + + final ModelConverterContextImpl context = new ModelConverterContextImpl(modelResolver); + + final Schema model = context + .resolve(new AnnotatedType(DayOfWeek.class)); + + SerializationMatchers.assertEqualsToYaml(context.getDefinedModels(), "DayOfWeek:\n" + + " type: string\n" + + " enum:\n" + + " - MONDAY\n" + + " - TUESDAY\n" + + " - WEDNESDAY\n" + + " - THURSDAY\n" + + " - FRIDAY\n" + + " - SATURDAY\n" + + " - SUNDAY"); + } + +}