Commit decee8d8 authored by Phillip Webb's avatar Phillip Webb

Polish templates code

parent 1d5cddc1
...@@ -44,8 +44,9 @@ import org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver; ...@@ -44,8 +44,9 @@ import org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver;
/** /**
* {@link EnableAutoConfiguration Auto-configuration} for FreeMarker. * {@link EnableAutoConfiguration Auto-configuration} for FreeMarker.
* *
* @author Andy Wilkinson * @author Andy Wilkinson
* @since 1.1.0
*/ */
@Configuration @Configuration
@ConditionalOnClass(freemarker.template.Configuration.class) @ConditionalOnClass(freemarker.template.Configuration.class)
......
...@@ -22,11 +22,11 @@ import org.springframework.core.io.ResourceLoader; ...@@ -22,11 +22,11 @@ import org.springframework.core.io.ResourceLoader;
import org.springframework.util.ClassUtils; import org.springframework.util.ClassUtils;
/** /**
* {@link TemplateAvailabilityProvider} that provides availability information * {@link TemplateAvailabilityProvider} that provides availability information for
* for FreeMarker view templates * FreeMarker view templates
* *
* @author Andy Wilkinson * @author Andy Wilkinson
* * @since 1.1.0
*/ */
public class FreeMarkerTemplateAvailabilityProvider implements public class FreeMarkerTemplateAvailabilityProvider implements
TemplateAvailabilityProvider { TemplateAvailabilityProvider {
...@@ -34,15 +34,16 @@ public class FreeMarkerTemplateAvailabilityProvider implements ...@@ -34,15 +34,16 @@ public class FreeMarkerTemplateAvailabilityProvider implements
@Override @Override
public boolean isTemplateAvailable(String view, Environment environment, public boolean isTemplateAvailable(String view, Environment environment,
ClassLoader classLoader, ResourceLoader resourceLoader) { ClassLoader classLoader, ResourceLoader resourceLoader) {
if (ClassUtils.isPresent("freemarker.template.Configuration", if (ClassUtils.isPresent("freemarker.template.Configuration", classLoader)) {
classLoader)) { String loaderPath = environment.getProperty(
String loaderPath = environment.getProperty("spring.freemarker.templateLoaderPath", "spring.freemarker.templateLoaderPath",
FreeMarkerAutoConfiguration.DEFAULT_TEMPLATE_LOADER_PATH); FreeMarkerAutoConfiguration.DEFAULT_TEMPLATE_LOADER_PATH);
String prefix = environment.getProperty("spring.freemarker.prefix", String prefix = environment.getProperty("spring.freemarker.prefix",
FreeMarkerAutoConfiguration.DEFAULT_PREFIX); FreeMarkerAutoConfiguration.DEFAULT_PREFIX);
String suffix = environment.getProperty("spring.freemarker.suffix", String suffix = environment.getProperty("spring.freemarker.suffix",
FreeMarkerAutoConfiguration.DEFAULT_SUFFIX); FreeMarkerAutoConfiguration.DEFAULT_SUFFIX);
return resourceLoader.getResource(loaderPath + prefix + view + suffix).exists(); return resourceLoader.getResource(loaderPath + prefix + view + suffix)
.exists();
} }
return false; return false;
} }
......
...@@ -24,9 +24,9 @@ import org.springframework.util.ClassUtils; ...@@ -24,9 +24,9 @@ import org.springframework.util.ClassUtils;
/** /**
* {@link TemplateAvailabilityProvider} that provides availability information for * {@link TemplateAvailabilityProvider} that provides availability information for
* Thymeleaf view templates * Thymeleaf view templates
* *
* @author Andy Wilkinson * @author Andy Wilkinson
* * @since 1.1.0
*/ */
public class ThymeleafTemplateAvailabilityProvider implements public class ThymeleafTemplateAvailabilityProvider implements
TemplateAvailabilityProvider { TemplateAvailabilityProvider {
......
...@@ -58,7 +58,7 @@ import org.springframework.web.servlet.view.BeanNameViewResolver; ...@@ -58,7 +58,7 @@ import org.springframework.web.servlet.view.BeanNameViewResolver;
/** /**
* {@link EnableAutoConfiguration Auto-configuration} to render errors via a MVC error * {@link EnableAutoConfiguration Auto-configuration} to render errors via a MVC error
* controller. * controller.
* *
* @author Dave Syer * @author Dave Syer
* @author Andy Wilkinson * @author Andy Wilkinson
*/ */
......
...@@ -21,6 +21,13 @@ import org.springframework.core.env.Environment; ...@@ -21,6 +21,13 @@ import org.springframework.core.env.Environment;
import org.springframework.core.io.ResourceLoader; import org.springframework.core.io.ResourceLoader;
import org.springframework.util.ClassUtils; import org.springframework.util.ClassUtils;
/**
* {@link TemplateAvailabilityProvider} that provides availability information for JSP
* view templates
*
* @author Andy Wilkinson
* @since 1.1.0
*/
public class JspTemplateAvailabilityProvider implements TemplateAvailabilityProvider { public class JspTemplateAvailabilityProvider implements TemplateAvailabilityProvider {
@Override @Override
......
...@@ -41,7 +41,7 @@ import static org.junit.Assert.assertTrue; ...@@ -41,7 +41,7 @@ import static org.junit.Assert.assertTrue;
/** /**
* Tests for {@link FreeMarkerAutoConfiguration}. * Tests for {@link FreeMarkerAutoConfiguration}.
* *
* @author Andy Wilkinson * @author Andy Wilkinson
*/ */
public class FreeMarkerAutoConfigurationTests { public class FreeMarkerAutoConfigurationTests {
...@@ -85,8 +85,8 @@ public class FreeMarkerAutoConfigurationTests { ...@@ -85,8 +85,8 @@ public class FreeMarkerAutoConfigurationTests {
new File("target/test-classes/templates/empty-directory").mkdir(); new File("target/test-classes/templates/empty-directory").mkdir();
EnvironmentTestUtils EnvironmentTestUtils
.addEnvironment(this.context, .addEnvironment(this.context,
"spring.freemarker.templateLoaderPath:classpath:/templates/empty-directory/"); "spring.freemarker.templateLoaderPath:classpath:/templates/empty-directory/");
this.context.register(FreeMarkerAutoConfiguration.class); this.context.register(FreeMarkerAutoConfiguration.class);
this.context.refresh(); this.context.refresh();
......
...@@ -27,7 +27,7 @@ import static org.junit.Assert.assertTrue; ...@@ -27,7 +27,7 @@ import static org.junit.Assert.assertTrue;
/** /**
* Tests for {@link FreeMarkerTemplateAvailabilityProvider}. * Tests for {@link FreeMarkerTemplateAvailabilityProvider}.
* *
* @author Andy Wilkinson * @author Andy Wilkinson
*/ */
public class FreeMarkerTemplateAvailabilityProviderTests { public class FreeMarkerTemplateAvailabilityProviderTests {
......
...@@ -27,7 +27,7 @@ import static org.junit.Assert.assertTrue; ...@@ -27,7 +27,7 @@ import static org.junit.Assert.assertTrue;
/** /**
* Tests for {@link ThymeleafTemplateAvailabilityProvider}. * Tests for {@link ThymeleafTemplateAvailabilityProvider}.
* *
* @author Andy Wilkinson * @author Andy Wilkinson
*/ */
public class ThymeleafTemplateAvailabilityProviderTests { public class ThymeleafTemplateAvailabilityProviderTests {
......
...@@ -37,18 +37,18 @@ public class SampleController { ...@@ -37,18 +37,18 @@ public class SampleController {
@Autowired @Autowired
private HelloWorldService helloWorldService; private HelloWorldService helloWorldService;
@RequestMapping(value="/", method=RequestMethod.GET) @RequestMapping(value = "/", method = RequestMethod.GET)
@ResponseBody @ResponseBody
public Map<String, String> hello() { public Map<String, String> hello() {
return Collections.singletonMap("message", return Collections.singletonMap("message",
this.helloWorldService.getHelloMessage()); this.helloWorldService.getHelloMessage());
} }
@RequestMapping(value="/", method=RequestMethod.POST) @RequestMapping(value = "/", method = RequestMethod.POST)
@ResponseBody @ResponseBody
public Map<String, Object> olleh(@Validated Message message) { public Map<String, Object> olleh(@Validated Message message) {
Map<String, Object> model = new LinkedHashMap<String, Object>(); Map<String, Object> model = new LinkedHashMap<String, Object>();
model .put("message", message.getValue()); model.put("message", message.getValue());
model.put("title", "Hello Home"); model.put("title", "Hello Home");
model.put("date", new Date()); model.put("date", new Date());
return model; return model;
...@@ -59,14 +59,14 @@ public class SampleController { ...@@ -59,14 +59,14 @@ public class SampleController {
public String foo() { public String foo() {
throw new IllegalArgumentException("Server error"); throw new IllegalArgumentException("Server error");
} }
protected static class Message { protected static class Message {
@NotBlank(message="Message value cannot be empty") @NotBlank(message = "Message value cannot be empty")
private String value; private String value;
public String getValue() { public String getValue() {
return value; return this.value;
} }
public void setValue(String value) { public void setValue(String value) {
...@@ -74,5 +74,4 @@ public class SampleController { ...@@ -74,5 +74,4 @@ public class SampleController {
} }
} }
} }
...@@ -28,9 +28,8 @@ import org.springframework.transaction.annotation.EnableTransactionManagement; ...@@ -28,9 +28,8 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
* The GemstoneAppConfiguration class for allowing Spring Boot to pickup additional * The GemstoneAppConfiguration class for allowing Spring Boot to pickup additional
* application Spring configuration meta-data for GemFire, which must be specified in * application Spring configuration meta-data for GemFire, which must be specified in
* Spring Data GemFire's XML namespace. * Spring Data GemFire's XML namespace.
* <p/> *
* @author John Blum * @author John Blum
* @since 1.1.0
*/ */
@Configuration @Configuration
@ImportResource("/spring-data-gemfire-cache.xml") @ImportResource("/spring-data-gemfire-cache.xml")
......
...@@ -20,17 +20,20 @@ import org.springframework.core.env.Environment; ...@@ -20,17 +20,20 @@ import org.springframework.core.env.Environment;
import org.springframework.core.io.ResourceLoader; import org.springframework.core.io.ResourceLoader;
/** /**
* A {@code TemplateAvailabilityProvider} indicates the availability of view templates for * Indicates the availability of view templates for a particular templating engine such as
* a particular templating engine such as FreeMarker or Thymeleaf * FreeMarker or Thymeleaf
* *
* @author Andy Wilkinson * @author Andy Wilkinson
* * @since 1.1.0
*/ */
public interface TemplateAvailabilityProvider { public interface TemplateAvailabilityProvider {
/** /**
* Returns {@code true} if a template is available for the given {@code view}, * Returns {@code true} if a template is available for the given {@code view}.
* otherwise {@code false} is returned. * @param view the view name
* @param environment the environment
* @param classLoader the class loader
* @param resourceLoader the resource loader
*/ */
boolean isTemplateAvailable(String view, Environment environment, boolean isTemplateAvailable(String view, Environment environment,
ClassLoader classLoader, ResourceLoader resourceLoader); ClassLoader classLoader, ResourceLoader resourceLoader);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment