package pl.matisoft.soy.render;
import com.google.common.base.Optional;
import com.google.template.soy.data.SoyMapData;
import com.google.template.soy.msgs.SoyMsgBundle;
import com.google.template.soy.tofu.SoyTofu;
import pl.matisoft.soy.SoyView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Created with IntelliJ IDEA.
* User: mszczap
* Date: 12.07.13
* Time: 09:28
*
* An objects that wraps parameters needed to render a template
*/
public class RenderRequest {
private final Optional<SoyTofu> compiledTemplates;
private final String templateName;
private final HttpServletRequest request;
private final HttpServletResponse response;
private final Object model;
private final SoyView soyView;
private final Optional<SoyMapData> globalRuntimeModel;
private final Optional<SoyMsgBundle> soyMsgBundle;
private RenderRequest(final Builder builder) {
this.compiledTemplates = builder.compiledTemplates;
this.templateName = builder.templateName;
this.request = builder.request;
this.response = builder.response;
this.model = builder.model;
this.globalRuntimeModel = builder.globalRuntimeModel;
this.soyMsgBundle = builder.soyMsgBundle;
this.soyView = builder.soyView;
}
public SoyView getSoyView() {
return soyView;
}
public Object getModel() {
return model;
}
public Optional<SoyMapData> getGlobalRuntimeModel() {
return globalRuntimeModel;
}
public Optional<SoyMsgBundle> getSoyMsgBundle() {
return soyMsgBundle;
}
public Optional<SoyTofu> getCompiledTemplates() {
return compiledTemplates;
}
public String getTemplateName() {
return templateName;
}
public HttpServletRequest getRequest() {
return request;
}
public HttpServletResponse getResponse() {
return response;
}
public static class Builder {
private Optional<SoyTofu> compiledTemplates;
private String templateName;
private HttpServletRequest request;
private HttpServletResponse response;
private Object model;
private SoyView soyView;
private Optional<SoyMapData> globalRuntimeModel = Optional.absent();
private Optional<SoyMsgBundle> soyMsgBundle = Optional.absent();
public Builder soyView(final SoyView soyView) {
this.soyView = soyView;
return this;
}
public Builder compiledTemplates(final Optional<SoyTofu> compiledTemplates) {
this.compiledTemplates = compiledTemplates;
return this;
}
public Builder templateName(final String templateName) {
this.templateName = templateName;
return this;
}
public Builder response(final HttpServletResponse response) {
this.response = response;
return this;
}
public Builder request(final HttpServletRequest request) {
this.request = request;
return this;
}
public Builder model(final Object model) {
this.model = model;
return this;
}
public Builder globalRuntimeModel(final Optional<SoyMapData> globalRuntimeModel) {
this.globalRuntimeModel = globalRuntimeModel;
return this;
}
public Builder soyMsgBundle(final Optional<SoyMsgBundle> soyMsgBundle) {
this.soyMsgBundle = soyMsgBundle;
return this;
}
public RenderRequest build() {
return new RenderRequest(this);
}
}
}