class ProjectionTypeArgumentResolver implements HandlerMethodArgumentResolver {

    @Override
    public Class<?> resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) {
        var desiredProjectionName = webRequest.getParameter(projectionParamName);
        var projectionTarget = parameter.getParameterAnnotation(ProjectionType.class).value();

        if(Objects.isNull(desiredProjectionName) || desiredProjectionName.isEmpty()) {
            return projectionService.getDefault(projectionTarget);
        }

        return projectionService.getByNameOrDefault(desiredProjectionName, projectionTarget);
    }

    @Autowired public  ProjectionTypeArgumentResolver(ProjectionService projectionService, ProjectBoardConfigurationProperties properties);

}