Search in sources :

Example 51 with GenericWebApplicationContext

use of org.springframework.web.context.support.GenericWebApplicationContext in project spring-boot by spring-projects.

the class ClassLoaderFilesResourcePatternResolverTests method customResourceLoaderIsUsedInWebApplication.

@Test
public void customResourceLoaderIsUsedInWebApplication() throws Exception {
    GenericWebApplicationContext context = new GenericWebApplicationContext(new MockServletContext());
    ResourceLoader resourceLoader = mock(ResourceLoader.class);
    context.setResourceLoader(resourceLoader);
    this.resolver = new ClassLoaderFilesResourcePatternResolver(context, this.files);
    this.resolver.getResource("foo.txt");
    verify(resourceLoader).getResource("foo.txt");
}
Also used : ResourceLoader(org.springframework.core.io.ResourceLoader) GenericWebApplicationContext(org.springframework.web.context.support.GenericWebApplicationContext) MockServletContext(org.springframework.mock.web.MockServletContext) Test(org.junit.Test)

Example 52 with GenericWebApplicationContext

use of org.springframework.web.context.support.GenericWebApplicationContext in project spring-boot by spring-projects.

the class ClassLoaderFilesResourcePatternResolverTests method getResourceWhenHasServletContextShouldReturnServletResource.

@Test
public void getResourceWhenHasServletContextShouldReturnServletResource() throws Exception {
    GenericWebApplicationContext context = new GenericWebApplicationContext(new MockServletContext());
    this.resolver = new ClassLoaderFilesResourcePatternResolver(context, this.files);
    Resource resource = this.resolver.getResource("index.html");
    assertThat(resource).isNotNull().isInstanceOf(ServletContextResource.class);
}
Also used : DeletedClassLoaderFileResource(org.springframework.boot.devtools.restart.ClassLoaderFilesResourcePatternResolver.DeletedClassLoaderFileResource) ClassPathResource(org.springframework.core.io.ClassPathResource) ServletContextResource(org.springframework.web.context.support.ServletContextResource) Resource(org.springframework.core.io.Resource) GenericWebApplicationContext(org.springframework.web.context.support.GenericWebApplicationContext) MockServletContext(org.springframework.mock.web.MockServletContext) Test(org.junit.Test)

Example 53 with GenericWebApplicationContext

use of org.springframework.web.context.support.GenericWebApplicationContext in project spring-framework by spring-projects.

the class AbstractGenericWebContextLoader method configureWebResources.

/**
	 * Configures web resources for the supplied web application context (WAC).
	 *
	 * <h4>Implementation Details</h4>
	 *
	 * <p>If the supplied WAC has no parent or its parent is not a WAC, the
	 * supplied WAC will be configured as the Root WAC (see "<em>Root WAC
	 * Configuration</em>" below).
	 *
	 * <p>Otherwise the context hierarchy of the supplied WAC will be traversed
	 * to find the top-most WAC (i.e., the root); and the {@link ServletContext}
	 * of the Root WAC will be set as the {@code ServletContext} for the supplied
	 * WAC.
	 *
	 * <h4>Root WAC Configuration</h4>
	 *
	 * <ul>
	 * <li>The resource base path is retrieved from the supplied
	 * {@code WebMergedContextConfiguration}.</li>
	 * <li>A {@link ResourceLoader} is instantiated for the {@link MockServletContext}:
	 * if the resource base path is prefixed with "{@code classpath:}", a
	 * {@link DefaultResourceLoader} will be used; otherwise, a
	 * {@link FileSystemResourceLoader} will be used.</li>
	 * <li>A {@code MockServletContext} will be created using the resource base
	 * path and resource loader.</li>
	 * <li>The supplied {@link GenericWebApplicationContext} is then stored in
	 * the {@code MockServletContext} under the
	 * {@link WebApplicationContext#ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE} key.</li>
	 * <li>Finally, the {@code MockServletContext} is set in the
	 * {@code WebApplicationContext}.</li>
	 *
	 * @param context the web application context for which to configure the web
	 * resources
	 * @param webMergedConfig the merged context configuration to use to load the
	 * web application context
	 */
protected void configureWebResources(GenericWebApplicationContext context, WebMergedContextConfiguration webMergedConfig) {
    ApplicationContext parent = context.getParent();
    // the Root WAC:
    if (parent == null || (!(parent instanceof WebApplicationContext))) {
        String resourceBasePath = webMergedConfig.getResourceBasePath();
        ResourceLoader resourceLoader = resourceBasePath.startsWith(ResourceLoader.CLASSPATH_URL_PREFIX) ? new DefaultResourceLoader() : new FileSystemResourceLoader();
        ServletContext servletContext = new MockServletContext(resourceBasePath, resourceLoader);
        servletContext.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, context);
        context.setServletContext(servletContext);
    } else {
        ServletContext servletContext = null;
        // find the Root WAC
        while (parent != null) {
            if (parent instanceof WebApplicationContext && !(parent.getParent() instanceof WebApplicationContext)) {
                servletContext = ((WebApplicationContext) parent).getServletContext();
                break;
            }
            parent = parent.getParent();
        }
        Assert.state(servletContext != null, "Failed to find Root WebApplicationContext in the context hierarchy");
        context.setServletContext(servletContext);
    }
}
Also used : ResourceLoader(org.springframework.core.io.ResourceLoader) FileSystemResourceLoader(org.springframework.core.io.FileSystemResourceLoader) DefaultResourceLoader(org.springframework.core.io.DefaultResourceLoader) WebApplicationContext(org.springframework.web.context.WebApplicationContext) ApplicationContext(org.springframework.context.ApplicationContext) ConfigurableApplicationContext(org.springframework.context.ConfigurableApplicationContext) GenericWebApplicationContext(org.springframework.web.context.support.GenericWebApplicationContext) FileSystemResourceLoader(org.springframework.core.io.FileSystemResourceLoader) ServletContext(javax.servlet.ServletContext) MockServletContext(org.springframework.mock.web.MockServletContext) MockServletContext(org.springframework.mock.web.MockServletContext) WebApplicationContext(org.springframework.web.context.WebApplicationContext) GenericWebApplicationContext(org.springframework.web.context.support.GenericWebApplicationContext) DefaultResourceLoader(org.springframework.core.io.DefaultResourceLoader)

Aggregations

GenericWebApplicationContext (org.springframework.web.context.support.GenericWebApplicationContext)53 Test (org.junit.Test)35 MockHttpServletResponse (org.springframework.mock.web.test.MockHttpServletResponse)34 MockHttpServletRequest (org.springframework.mock.web.test.MockHttpServletRequest)33 RootBeanDefinition (org.springframework.beans.factory.support.RootBeanDefinition)31 WebApplicationContext (org.springframework.web.context.WebApplicationContext)7 Before (org.junit.Before)6 MockServletContext (org.springframework.mock.web.MockServletContext)6 HttpSession (javax.servlet.http.HttpSession)5 DefaultAdvisorAutoProxyCreator (org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator)5 SimpleTraceInterceptor (org.springframework.aop.interceptor.SimpleTraceInterceptor)5 DefaultPointcutAdvisor (org.springframework.aop.support.DefaultPointcutAdvisor)5 MockServletConfig (org.springframework.mock.web.test.MockServletConfig)4 ContentNegotiationManagerFactoryBean (org.springframework.web.accept.ContentNegotiationManagerFactoryBean)4 ConfigurableWebBindingInitializer (org.springframework.web.bind.support.ConfigurableWebBindingInitializer)4 Method (java.lang.reflect.Method)3 ArrayList (java.util.ArrayList)3 LinkedList (java.util.LinkedList)3 ConfigurableApplicationContext (org.springframework.context.ConfigurableApplicationContext)3 FormattingConversionServiceFactoryBean (org.springframework.format.support.FormattingConversionServiceFactoryBean)3