Use URLs for groovy template resources

This commit is contained in:
Dave Syer 2014-05-16 13:03:50 +01:00
parent e471759be8
commit c8ca2495de
2 changed files with 10 additions and 18 deletions

View File

@ -36,6 +36,7 @@ import org.springframework.boot.autoconfigure.groovy.template.web.GroovyTemplate
import org.springframework.boot.autoconfigure.groovy.template.web.LocaleAwareTemplate;
import org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.i18n.LocaleContextHolder;
@ -70,7 +71,7 @@ public class GroovyTemplateAutoConfiguration {
public static class GroovyWebConfiguration implements BeanClassLoaderAware {
@Autowired
private final ResourceLoader resourceLoader = new DefaultResourceLoader();
private ApplicationContext resourceLoader;
@Autowired
private GroovyTemplateProperties properties;
@ -95,11 +96,14 @@ public class GroovyTemplateAutoConfiguration {
}
private ClassLoader createParentLoaderForTemplates() throws Exception {
Resource resource = this.resourceLoader.getResource(this.properties
Resource[] resources = this.resourceLoader.getResources(this.properties
.getPrefix());
if (resource.exists()) {
return new URLClassLoader(new URL[] { resource.getURL() },
this.classLoader);
if (resources.length > 0) {
URL[] urls = new URL[resources.length];
for (int i = 0; i < resources.length; i++) {
urls[i] = resources[i].getURL();
}
return new URLClassLoader(urls, this.classLoader);
}
else {
return this.classLoader;
@ -114,7 +118,6 @@ public class GroovyTemplateAutoConfiguration {
resolver.setSuffix(this.properties.getSuffix());
resolver.setCache(this.properties.isCache());
resolver.setContentType(this.properties.getContentType());
resolver.setCharSet(this.properties.getCharSet());
resolver.setViewNames(this.properties.getViewNames());
resolver.setTemplateEngine(engine);

View File

@ -20,7 +20,6 @@ import groovy.text.SimpleTemplateEngine;
import groovy.text.Template;
import groovy.text.TemplateEngine;
import java.io.InputStreamReader;
import java.util.Locale;
import org.springframework.beans.propertyeditors.LocaleEditor;
@ -36,8 +35,6 @@ public class GroovyTemplateViewResolver extends UrlBasedViewResolver {
private TemplateEngine engine = new SimpleTemplateEngine();
private String charSet = "UTF-8";
public GroovyTemplateViewResolver() {
setViewClass(GroovyTemplateView.class);
}
@ -49,21 +46,13 @@ public class GroovyTemplateViewResolver extends UrlBasedViewResolver {
this.engine = engine;
}
/**
* @param charSet the charSet to set
*/
public void setCharSet(String charSet) {
this.charSet = charSet;
}
@Override
protected View loadView(String viewName, Locale locale) throws Exception {
Resource resource = resolveResource(viewName, locale);
if (resource == null) {
return null;
}
Template template = this.engine.createTemplate(new InputStreamReader(resource
.getInputStream(), this.charSet));
Template template = this.engine.createTemplate(resource.getURL());
GroovyTemplateView view = new GroovyTemplateView(template);
view.setApplicationContext(getApplicationContext());
view.setServletContext(getServletContext());