Skip to content

Commit

Permalink
refs #2862 - fix enum subtype
Browse files Browse the repository at this point in the history
  • Loading branch information
frantuma committed Jul 18, 2018
1 parent db6af73 commit 6ad6ffd
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -1108,7 +1108,8 @@ private boolean resolveSubtypes(Schema model, BeanDescription bean, ModelConvert

final Schema subtypeModel = context.resolve(new AnnotatedType().type(subtypeType));

if (subtypeModel.getName().equals(model.getName())) {
if ( StringUtils.isBlank(subtypeModel.getName()) ||
subtypeModel.getName().equals(model.getName())) {
subtypeModel.setName(_typeNameResolver.nameForType(_mapper.constructType(subtypeType),
TypeNameResolver.Options.SKIP_API_MODEL));
}
Expand Down Expand Up @@ -1153,6 +1154,7 @@ private boolean resolveSubtypes(Schema model, BeanDescription bean, ModelConvert
.xml(subtypeModel.getXml())
.extensions(subtypeModel.getExtensions());

composedSchema.setEnum(subtypeModel.getEnum());
} else {
composedSchema = (ComposedSchema) subtypeModel;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
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.core.resolving.resources.Ticket2862Model;
import io.swagger.v3.oas.models.media.Schema;
import org.testng.annotations.Test;

public class Ticket2862SubtypeTest extends SwaggerTestBase {
@Test
public void testSubType() throws Exception {
final ModelResolver modelResolver = new ModelResolver(mapper());

final ModelConverterContextImpl context = new ModelConverterContextImpl(modelResolver);

final Schema model = context
.resolve(new AnnotatedType(Ticket2862Model.class));

SerializationMatchers.assertEqualsToYaml(context.getDefinedModels(), "Ticket2862Model:\n" +
" type: object\n" +
"Ticket2862ModelImpl:\n" +
" type: string\n" +
" allOf:\n" +
" - $ref: '#/components/schemas/Ticket2862Model'\n" +
" enum:\n" +
" - VALUE1\n" +
" - VALUE2");
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package io.swagger.v3.core.resolving.resources;

@com.fasterxml.jackson.annotation.JsonTypeInfo(use = com.fasterxml.jackson.annotation.JsonTypeInfo.Id.NAME, include = com.fasterxml.jackson.annotation.JsonTypeInfo.As.WRAPPER_OBJECT)
@com.fasterxml.jackson.annotation.JsonSubTypes({
@com.fasterxml.jackson.annotation.JsonSubTypes.Type(value = Ticket2862ModelImpl.class)})
public interface Ticket2862Model {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package io.swagger.v3.core.resolving.resources;

public enum Ticket2862ModelImpl implements Ticket2862Model {
VALUE1,
VALUE2
}

0 comments on commit 6ad6ffd

Please sign in to comment.