@Override public void apply(ParameterContext context) { ResolvedMethodParameter parameter = context.resolvedMethodParameter(); Class<?> type = parameter.getParameterType().getErasedType(); if (type != null && Pageable.class.isAssignableFrom(type)) { Function<ResolvedType, ? extends ModelReference> factory = createModelRefFactory(context); ModelReference intModel = factory.apply(resolver.resolve(Integer.TYPE)); ModelReference stringModel = factory.apply(resolver.resolve(List.class, String.class)); List<Parameter> parameters = newArrayList( context.parameterBuilder() .parameterType("query").name("page").modelRef(intModel) .description("Page number of the requested page") .build(), context.parameterBuilder() .parameterType("query").name("size").modelRef(intModel) .description("Size of a page") .build(), context.parameterBuilder() .parameterType("query").name("sort").modelRef(stringModel).allowMultiple(true) .description("Sorting criteria in the format: property(,asc|desc). " + "Default sort order is ascending. " + "Multiple sort criteria are supported.") .build()); context.getOperationContext().operationBuilder().parameters(parameters); } }
private Function<ResolvedType, ? extends ModelReference> createModelRefFactory(ParameterContext context) { ModelContext modelContext = inputParam(context.resolvedMethodParameter().getParameterType(), context.getDocumentationType(), context.getAlternateTypeProvider(), context.getGenericNamingStrategy(), context.getIgnorableParameterTypes()); return modelRefFactory(modelContext, nameExtractor); }