package io.vertx.ext.web.templ;
import io.vertx.ext.web.common.WebEnvironment;
import io.vertx.ext.web.impl.ConcurrentLRUCache;
import java.util.Objects;
public abstract class CachingTemplateEngine<T> implements TemplateEngine {
private final boolean enableCache = !WebEnvironment.development();
protected final ConcurrentLRUCache<String, T> cache;
protected String extension;
protected CachingTemplateEngine(String ext, int maxCacheSize) {
Objects.requireNonNull(ext);
if (maxCacheSize < 1) {
throw new IllegalArgumentException("maxCacheSize must be >= 1");
}
doSetExtension(ext);
this.cache = new ConcurrentLRUCache<>(maxCacheSize);
}
@Override
public boolean isCachingEnabled() {
return enableCache;
}
protected String adjustLocation(String location) {
if (!location.endsWith(extension)) {
location += extension;
}
return location;
}
protected void doSetExtension(String ext) {
this.extension = ext.charAt(0) == '.' ? ext : "." + ext;
}
}