package org.jtwig.escape.config;
import org.apache.commons.lang3.builder.Builder;
import org.jtwig.escape.EscapeEngine;
import org.jtwig.util.builder.MapBuilder;
public class EscapeEngineConfigurationBuilder<B extends EscapeEngineConfigurationBuilder> implements Builder<EscapeEngineConfiguration> {
private String initialEngine;
private String defaultEngine;
private MapBuilder<B, String, EscapeEngine> escapeEngineMap;
public EscapeEngineConfigurationBuilder(EscapeEngineConfiguration prototype) {
this.escapeEngineMap = new MapBuilder<>(self(), prototype.getEscapeEngineMap());
this.initialEngine = prototype.getInitialEngine();
this.defaultEngine = prototype.getDefaultEngine();
}
public EscapeEngineConfigurationBuilder() {
this.escapeEngineMap = new MapBuilder<>(self());
}
public B withInitialEngine(String initialEngine) {
this.initialEngine = initialEngine;
return self();
}
public B withDefaultEngine(String defaultEngine) {
this.defaultEngine = defaultEngine;
return self();
}
private B self() {
return (B) this;
}
public MapBuilder<B, String, EscapeEngine> engines() {
return escapeEngineMap;
}
@Override
public EscapeEngineConfiguration build() {
return new EscapeEngineConfiguration(initialEngine, defaultEngine, escapeEngineMap.build());
}
}