package org.springframework.issues.config;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.Map;
import javax.servlet.ServletContext;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.handler.SimpleUrlHandlerMapping;
import org.springframework.web.servlet.resource.PathResourceResolver;
import org.springframework.web.servlet.resource.ResourceHttpRequestHandler;
import org.springframework.web.servlet.resource.ResourceResolver;
import org.springframework.web.servlet.resource.ResourceUrlProvider;
import org.springframework.web.servlet.resource.ResourceUrlProviderExposingInterceptor;
@Configuration
public class ResourceConfiguration {
@Bean
@Autowired
public SimpleUrlHandlerMapping wuicResourceHandlerMapping(ApplicationContext applicationContext,
ServletContext servletContext,
ResourceUrlProvider resourceUrlProvider) {
SimpleUrlHandlerMapping hm = new SimpleUrlHandlerMapping();
hm.setUrlMap(createResourceHandlingUrlMap(applicationContext, servletContext));
hm.setInterceptors(new HandlerInterceptor[] {
new ResourceUrlProviderExposingInterceptor(resourceUrlProvider)});
return hm;
}
private Map<String, ResourceHttpRequestHandler> createResourceHandlingUrlMap(ApplicationContext applicationContext,
ServletContext servletContext) {
Map<String, ResourceHttpRequestHandler> urlMap = new LinkedHashMap<String, ResourceHttpRequestHandler>();
ResourceHttpRequestHandler resourceHandler = new ResourceHttpRequestHandler();
resourceHandler.setServletContext(servletContext);
resourceHandler.setApplicationContext(applicationContext);
resourceHandler.setLocations(Collections.singletonList(applicationContext.getResource("classpath:/static/")));
resourceHandler.setResourceResolvers(Collections.<ResourceResolver>singletonList(new PathResourceResolver()));
urlMap.put("/static/**", resourceHandler);
return urlMap;
}
}