package com.firefly.server.http2.router.handler.template;
import com.firefly.server.http2.router.spi.TemplateHandlerSPI;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ServiceLoader;
/**
* @author Pengtao Qiu
*/
public class TemplateHandlerSPILoader {
private static final Logger log = LoggerFactory.getLogger("firefly-system");
private static TemplateHandlerSPILoader ourInstance = new TemplateHandlerSPILoader();
public static TemplateHandlerSPILoader getInstance() {
return ourInstance;
}
private TemplateHandlerSPI templateHandlerSPI;
private TemplateHandlerSPILoader() {
ServiceLoader<TemplateHandlerSPI> serviceLoader = ServiceLoader.load(TemplateHandlerSPI.class);
for(TemplateHandlerSPI s : serviceLoader) {
templateHandlerSPI = s;
log.info("load TemplateHandlerSPI, implement class -> {}", s.getClass().getName());
}
if (templateHandlerSPI == null) {
templateHandlerSPI = new MustacheTemplateHandlerSPIImpl();
}
log.info("load TemplateHandlerSPI, selected -> {}", templateHandlerSPI.getClass().getName());
}
public TemplateHandlerSPI getTemplateHandlerSPI() {
return templateHandlerSPI;
}
}