package foundation.route;
|
|
import java.io.PrintWriter;
|
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
|
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.Logger;
|
|
import foundation.translator.Translator;
|
|
|
public abstract class RouteNavigator {
|
|
protected static Logger logger;
|
protected HttpServletRequest request;
|
protected ClientAcceptType clientAcceptType;
|
protected String uri;
|
protected String path;
|
protected Route route;
|
protected Route redirectTo;
|
protected boolean authorizeSensitive;
|
protected boolean debugEnabled;
|
|
static {
|
logger = LogManager.getLogger();
|
}
|
|
public RouteNavigator(HttpServletRequest request, String uri, String path, Route route, boolean authorizeSensitive) {
|
this.request = request;
|
this.clientAcceptType = ClientAcceptType.getInstance(request);
|
this.uri = uri;
|
this.path = path;
|
this.route = route;
|
this.authorizeSensitive = authorizeSensitive;
|
|
debugEnabled = !Translator.toBoolean(request.getParameter("silent"), false);
|
}
|
|
public abstract void sendTo(HttpServletResponse response, Object... args);
|
|
public void onSendToError(Exception e) {
|
// TODO Auto-generated method stub
|
}
|
|
public ClientAcceptType getClientAcceptType() {
|
return clientAcceptType;
|
}
|
|
public void redirectToTimeOut(HttpServletResponse response, ClientAcceptType acceptType) {
|
redirectTo = RouteTable.getTimeOutRoute();
|
redirectTo(response, redirectTo, acceptType);
|
}
|
|
public void redirectToInvalidUserRight(HttpServletResponse response, ClientAcceptType acceptType) {
|
redirectTo = RouteTable.getInvalidUserRightRoute();
|
redirectTo(response, redirectTo, acceptType);
|
}
|
|
private void redirectTo(HttpServletResponse response, Route route, ClientAcceptType acceptType) {
|
if (ClientAcceptType.Ajax == clientAcceptType) {
|
response.setHeader("Access-Control-Allow-Origin", "*");
|
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, PUT");
|
response.setHeader("Access-Control-Max-Age", "0");
|
response.setHeader("Cache-Control","no-cache");
|
response.setHeader("Access-Control-Allow-Credentials", "true");
|
response.setHeader("XDomainRequestAllowed","1");
|
response.setHeader("Access-Control-Allow-Headers", "Origin, No-Cache, X-Requested-With, If-Modified-Since, Pragma, Last-Modified, Cache-Control, Expires, Content-Type, X-E4M-With,userId,token");
|
response.setHeader("access-control-expose-headers", "Authorization");
|
}
|
|
PrintWriter writer;
|
try {
|
writer = response.getWriter();
|
((WriterRoute)route).write(writer, acceptType);
|
}
|
catch (Exception e) {
|
}
|
}
|
|
public Route getRoute() {
|
return route;
|
}
|
|
public boolean isAuthorizeSensitive() {
|
return authorizeSensitive;
|
}
|
|
public String getUri() {
|
return uri;
|
}
|
|
@Override
|
public String toString() {
|
return uri + " >> " + path + " : " + route.toString();
|
}
|
|
public boolean isDebugEnabled() {
|
return debugEnabled;
|
}
|
|
public void setDebugEnabled(boolean debugEnabled) {
|
this.debugEnabled = debugEnabled;
|
}
|
|
}
|