package com.jqmobile.core.server.servlet;
import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.dispatcher.Dispatcher;
import org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter;
import com.jqmobile.core.server.Application;
import com.jqmobile.core.server.session.Session;
public class CoreServletFilter extends StrutsPrepareAndExecuteFilter{
@Override
protected void postInit(Dispatcher dispatcher, FilterConfig filterConfig) {
super.postInit(dispatcher, filterConfig);
Application.getApplication();
}
@Override
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)req;
HttpServletResponse response = (HttpServletResponse) res;
String path = request.getRequestURI();
if(path.endsWith(".client") || path.endsWith(".do")){
new CoreHttpServlet().handler(request, response);
}else{
Session.activate(request);
try{
super.doFilter(req, res, chain);
}finally{
Session.release();
}
}
}
}