package rfx.server.http.data.service; import io.netty.handler.codec.http.Cookie; import io.netty.handler.codec.http.DefaultHttpHeaders; import io.netty.handler.codec.http.HttpHeaders; import io.netty.handler.codec.http.HttpHeaders.Names; import io.netty.handler.codec.http.ServerCookieEncoder; import java.util.ArrayList; import java.util.List; import rfx.server.http.common.CookieUtil; import rfx.server.util.StringUtil; /** * * the base model for HttpProcessor implementations, that use Template Engine for outputable text (the accessible Web for all browsers) * * @author trieu <br> * */ public abstract class WebDataService implements DataService{ public abstract WebDataService build(); protected List<HttpHeaders> httpHeaders = new ArrayList<>(); protected HttpHeaders defaultHttpHeaders = new DefaultHttpHeaders(); @Override public boolean isRenderedByTemplate() { return true; } @Override public String getClasspath() { return DataService.getClasspath(this); } @Override public void freeResource() {} @Override public List<HttpHeaders> getHttpHeaders() { return httpHeaders; } public void setHttpHeader(String name, String value) { if(StringUtil.isNotEmpty(name) && value != null){ defaultHttpHeaders.add(name, value); } } public void setCookie(String name, String value, String domain, String path, long maxAge) { if(StringUtil.isNotEmpty(name) && value != null){ Cookie cookie = CookieUtil.createCookie(name, value, domain, path, maxAge); defaultHttpHeaders.add(Names.SET_COOKIE, ServerCookieEncoder.encode(cookie)); defaultHttpHeaders.add(name, value); } } } //http://www.javacreed.com/gson-annotations-example/