package org.apereo.cas.authentication.principal;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.core.annotation.AnnotationAwareOrderComparator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* This is {@link DefaultWebApplicationResponseBuilderLocator}.
*
* @author Misagh Moayyed
* @since 5.1.0
*/
public class DefaultWebApplicationResponseBuilderLocator implements ResponseBuilderLocator<WebApplicationService> {
private static final long serialVersionUID = 388417797622191740L;
@Autowired
private ApplicationContext applicationContext;
@Override
public ResponseBuilder locate(final WebApplicationService service) {
final Map<String, ResponseBuilder> beans = applicationContext.getBeansOfType(ResponseBuilder.class, false, true);
final List<ResponseBuilder> builders = beans.values().stream().collect(Collectors.toList());
AnnotationAwareOrderComparator.sortIfNecessary(builders);
return builders.stream().filter(r -> r.supports(service)).findFirst().orElse(null);
}
}