Skip to content

Inconsistent sorting criteria object (Pageable's sort) #979

@jernejcvek

Description

@jernejcvek

Bug description
Pageable holds inconsistent sort object of type List<String>. Please see the following examples:

  • query parameter: ?sort=id, sort object: ["id"], size of the object: 1
  • query parameter: ?sort=id,desc, sort object: ["id", "desc"], size of the object: 2
  • query parameter: ?sort=id,desc&sort=name, sort object: ["id,desc", "name"], size of the object: 2
  • query parameter: ?sort=id,desc&sort=name,desc, sort object: ["id,desc", "name,desc"], size of the object: 2
  • query parameter: ?sort=id,desc&sort=name,desc&sort=address, sort object: ["id,desc", "name,desc", "address"], size of the object: 3
  • query parameter: ?sort=id,desc&sort=name,desc&sort=address,desc, sort object: ["id,desc", "name,desc", "address,desc"], size of the object: 3

Versions and usage

  • Spring Boot 2.2.2
  • springdoc-openapi-ui & springdoc-openapi-data-rest: 1.4.8
  • Controller's method is annotated with @PageableAsQueryParam, with hidden method's parameter: @Parameter(hidden = true) Pageable pageable so that pagination and sorting criteria are properly shown in the UI:
    swagger-ui-sort
  • Example of Swagger UI's generated request URL for the problematic case: ...&page=0&size=20&sort=id%2Cdesc

Expected behaviour

  • When the query parameter is sort=id,desc (bolded example above) the Pageable's sort object should contain only one element ["id,desc"].

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions