package io.swagger.resources;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.models.GenericListWrapper;
import io.swagger.models.GenericType;
import io.swagger.models.GenericTypeWithApiModel;
import io.swagger.models.TestEnum;
import io.swagger.models.duplicated.Tag;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.QueryParam;
import java.util.List;
import java.util.Set;
import java.util.UUID;
@Api
@Path("/generics")
public class ResourceWithGenerics {
@POST
@Path("/testIntegerContainers")
@ApiOperation("Tests integer containers")
public void testIntegerContainers(@QueryParam("set") @ApiParam(allowableValues = "1, 2, 3") Set<Integer> set,
@QueryParam("list") List<Integer> list, @QueryParam("list2D") List<List<Integer>> list2D,
@QueryParam("array") Integer[] array, @QueryParam("arrayP") int[] arrayP, @QueryParam("scalar") Integer scalar,
@QueryParam("scalarP") int scalarP, @QueryParam("forced") @ApiParam(allowMultiple = true) int forced) {
}
@POST
@Path("/testStringContainers")
@ApiOperation("Tests string containers")
public void testStringContainers(@QueryParam("set") @ApiParam(allowableValues = "1, 2, 3") Set<String> set,
@QueryParam("list") List<String> list, @QueryParam("list2D") List<List<String>> list2D,
@QueryParam("array") String[] array, @QueryParam("scalar") String scalar) {
}
@POST
@Path("/testObjectContainers")
@ApiOperation("Tests object containers")
public void testObjectContainers(@QueryParam("set") Set<Tag> set, @QueryParam("list") List<Tag> list,
@QueryParam("list2D") List<List<Tag>> list2D, @QueryParam("array") Tag[] array, @QueryParam("scalar") Tag scalar) {
}
@POST
@Path("/testEnumContainers")
@ApiOperation("Tests enumeration containers")
public void testEnumContainers(@QueryParam("set") Set<TestEnum> set, @QueryParam("list") List<TestEnum> list,
@QueryParam("list2D") List<List<TestEnum>> list2D, @QueryParam("array") TestEnum[] array,
@QueryParam("scalar") TestEnum scalar) {
}
@POST
@Path("/testStringsInBody")
@ApiOperation("Tests string container as body parameter")
public void testStringsInBody(List<String> list) {
}
@POST
@Path("/testObjectsInBody")
@ApiOperation("Tests object container as body parameter")
public void testObjectsInBody(List<Tag> list) {
}
@POST
@Path("/testEnumsInBody")
@ApiOperation("Tests enumeration container as body parameter")
public void testEnumsInBody(List<TestEnum> list) {
}
@POST
@Path("/test2DInBody")
@ApiOperation("Tests object container as body parameter")
public void test2DInBody(List<List<Tag>> list) {
}
@ApiOperation(value = "Tests generic type")
@POST
@Path("/testGenericType")
public void testGenericType(GenericType<String> type) {
}
@ApiOperation(value = "Tests generic type")
@POST
@Path("/testStringBasedGenericType")
public void testStringBasedGenericType(GenericType<UUID> type) {
}
@ApiOperation(value = "Tests complex generic type")
@POST
@Path("/testComplexGenericType")
public void testComplexGenericType(GenericType<GenericType<String>> type) {
}
@ApiOperation(value = "Tests renamed generic type")
@POST
@Path("/testRenamedGenericType")
public void testRenamedGenericType(GenericTypeWithApiModel<GenericTypeWithApiModel<String>> type) {
}
@ApiOperation(value = "Tests generic result")
@GET
@Path("testGenericResult")
public GenericListWrapper<Tag> testGenericResult() {
return null;
}
}