Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -743,7 +743,7 @@ public Schema resolve(AnnotatedType annotatedType, ModelConverterContext context
propSchemaOrArray == null ?
null :
propSchemaOrArray instanceof io.swagger.v3.oas.annotations.media.ArraySchema ?
((io.swagger.v3.oas.annotations.media.ArraySchema) propSchemaOrArray).schema() :
((io.swagger.v3.oas.annotations.media.ArraySchema) propSchemaOrArray).arraySchema() :
(io.swagger.v3.oas.annotations.media.Schema) propSchemaOrArray;

io.swagger.v3.oas.annotations.media.Schema.AccessMode accessMode = resolveAccessMode(propDef, type, propResolvedSchemaAnnotation);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@
import io.swagger.v3.jaxrs2.resources.Ticket3731BisResource;
import io.swagger.v3.jaxrs2.resources.Ticket3731Resource;
import io.swagger.v3.jaxrs2.resources.Ticket4065Resource;
import io.swagger.v3.jaxrs2.resources.Ticket4341Resource;
import io.swagger.v3.jaxrs2.resources.Ticket4412Resource;
import io.swagger.v3.jaxrs2.resources.Ticket4446Resource;
import io.swagger.v3.jaxrs2.resources.Ticket4483Resource;
Expand Down Expand Up @@ -795,6 +796,21 @@ public void test2497() {
assertEquals(openAPI.getComponents().getSchemas().get("User").getRequired().get(0), "issue3438");
}

@Test(description = "array required property resolved from ArraySchema.arraySchema.requiredMode")
public void test4341() {
Reader reader = new Reader(new OpenAPI());
OpenAPI openAPI = reader.read(Ticket4341Resource.class);

Schema userSchema = openAPI.getComponents().getSchemas().get("User");
List<String> required = userSchema.getRequired();
assertTrue(required.contains("requiredArray"));
assertFalse(required.contains("notRequiredArray"));
assertFalse(required.contains("notRequiredArrayWithNotNull"));
assertTrue(required.contains("autoRequiredWithNotNull"));
assertFalse(required.contains("autoNotRequired"));
}


@Test(description = "test resource with subresources")
public void testResourceWithSubresources() {
Reader reader = new Reader(new OpenAPI());
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package io.swagger.v3.jaxrs2.resources;

import io.swagger.v3.oas.annotations.media.ArraySchema;
import io.swagger.v3.oas.annotations.media.Schema;
import javax.validation.constraints.NotNull;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import java.util.List;

public class Ticket4341Resource {

@GET
@Path("/user")
public User getUsers() {
return null;
}

static class User {
@ArraySchema(
arraySchema = @Schema(requiredMode = Schema.RequiredMode.REQUIRED),
schema = @Schema(type = "string")
)
public List<String> requiredArray;

@ArraySchema(
arraySchema = @Schema(requiredMode = Schema.RequiredMode.NOT_REQUIRED),
schema = @Schema(type = "string")
)
public List<String> notRequiredArray;

@ArraySchema(
arraySchema = @Schema(requiredMode = Schema.RequiredMode.NOT_REQUIRED),
schema = @Schema(type = "string")
)
@NotNull
public List<String> notRequiredArrayWithNotNull;

@ArraySchema(
arraySchema = @Schema(requiredMode = Schema.RequiredMode.AUTO),
schema = @Schema(type = "string")
)
@NotNull
public List<String> autoRequiredWithNotNull;

@ArraySchema(
arraySchema = @Schema(requiredMode = Schema.RequiredMode.AUTO),
schema = @Schema(type = "string")
)
public List<String> autoNotRequired;
}
}
Loading