Search in sources :

Example 1 with SortDefaults

use of org.springframework.data.web.SortDefault.SortDefaults in project spring-data-commons by spring-projects.

the class SortHandlerMethodArgumentResolver method getDefaultFromAnnotationOrFallback.

/**
 * Reads the default {@link Sort} to be used from the given {@link MethodParameter}. Rejects the parameter if both an
 * {@link SortDefaults} and {@link SortDefault} annotation is found as we cannot build a reliable {@link Sort}
 * instance then (property ordering).
 *
 * @param parameter will never be {@literal null}.
 * @return the default {@link Sort} instance derived from the parameter annotations or the configured fallback-sort
 *         {@link #setFallbackSort(Sort)}.
 */
private Sort getDefaultFromAnnotationOrFallback(MethodParameter parameter) {
    SortDefaults annotatedDefaults = parameter.getParameterAnnotation(SortDefaults.class);
    SortDefault annotatedDefault = parameter.getParameterAnnotation(SortDefault.class);
    if (annotatedDefault != null && annotatedDefaults != null) {
        throw new IllegalArgumentException(String.format("Cannot use both @%s and @%s on parameter %s! Move %s into %s to define sorting order!", SORT_DEFAULTS_NAME, SORT_DEFAULT_NAME, parameter.toString(), SORT_DEFAULT_NAME, SORT_DEFAULTS_NAME));
    }
    if (annotatedDefault != null) {
        return appendOrCreateSortTo(annotatedDefault, Sort.unsorted());
    }
    if (annotatedDefaults != null) {
        Sort sort = Sort.unsorted();
        for (SortDefault currentAnnotatedDefault : annotatedDefaults.value()) {
            sort = appendOrCreateSortTo(currentAnnotatedDefault, sort);
        }
        return sort;
    }
    return fallbackSort;
}
Also used : Sort(org.springframework.data.domain.Sort) SortDefaults(org.springframework.data.web.SortDefault.SortDefaults)

Aggregations

Sort (org.springframework.data.domain.Sort)1 SortDefaults (org.springframework.data.web.SortDefault.SortDefaults)1