package org.apereo.cas.web; import org.apereo.cas.config.support.CasConfigurationEmbeddedValueResolver; import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext; import org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor; import org.springframework.scheduling.config.TaskManagementConfigUtils; /** * This is {@link CasWebApplicationContext}. * * @author Misagh Moayyed * @since 5.1.0 */ public class CasWebApplicationContext extends AnnotationConfigEmbeddedWebApplicationContext { /** * {@inheritDoc} * Reset the value resolver on the inner {@link ScheduledAnnotationBeanPostProcessor} * so that we can parse durations. This is due to how {@link org.springframework.scheduling.annotation.SchedulingConfiguration} * creates the processor and does not provide a way for one to inject a value resolver. */ @Override protected void onRefresh() { final ScheduledAnnotationBeanPostProcessor sch = (ScheduledAnnotationBeanPostProcessor) getBeanFactory().getBean(TaskManagementConfigUtils.SCHEDULED_ANNOTATION_PROCESSOR_BEAN_NAME, BeanPostProcessor.class); sch.setEmbeddedValueResolver(new CasConfigurationEmbeddedValueResolver(this)); super.onRefresh(); } @Override public String toString() { return getClass().getSimpleName(); } }