PathBasedTemplateAvailabilityProvider Class — spring-boot Architecture
Architecture documentation for the PathBasedTemplateAvailabilityProvider class in PathBasedTemplateAvailabilityProvider.java from the spring-boot codebase.
Entity Profile
Relationship Graph
Source Code
core/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/template/PathBasedTemplateAvailabilityProvider.java lines 35–104
public abstract class PathBasedTemplateAvailabilityProvider implements TemplateAvailabilityProvider {
private final String className;
private final Class<TemplateAvailabilityProperties> propertiesClass;
private final String propertyPrefix;
@SuppressWarnings("unchecked")
public PathBasedTemplateAvailabilityProvider(String className,
Class<? extends TemplateAvailabilityProperties> propertiesClass, String propertyPrefix) {
this.className = className;
this.propertiesClass = (Class<TemplateAvailabilityProperties>) propertiesClass;
this.propertyPrefix = propertyPrefix;
}
@Override
public boolean isTemplateAvailable(String view, Environment environment, ClassLoader classLoader,
ResourceLoader resourceLoader) {
if (ClassUtils.isPresent(this.className, classLoader)) {
Binder binder = Binder.get(environment);
TemplateAvailabilityProperties properties = binder.bindOrCreate(this.propertyPrefix, this.propertiesClass);
return isTemplateAvailable(view, resourceLoader, properties);
}
return false;
}
private boolean isTemplateAvailable(String view, ResourceLoader resourceLoader,
TemplateAvailabilityProperties properties) {
String location = properties.getPrefix() + view + properties.getSuffix();
for (String path : properties.getLoaderPath()) {
if (resourceLoader.getResource(path + location).exists()) {
return true;
}
}
return false;
}
protected abstract static class TemplateAvailabilityProperties {
private String prefix;
private String suffix;
protected TemplateAvailabilityProperties(String prefix, String suffix) {
this.prefix = prefix;
this.suffix = suffix;
}
protected abstract List<String> getLoaderPath();
public String getPrefix() {
return this.prefix;
}
public void setPrefix(String prefix) {
this.prefix = prefix;
}
public String getSuffix() {
return this.suffix;
}
public void setSuffix(String suffix) {
this.suffix = suffix;
}
}
}
Domain
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free