1 18 19 package org.apache.roller.ui.core.filters; 20 21 import java.io.IOException ; 22 import javax.servlet.Filter ; 23 import javax.servlet.FilterChain ; 24 import javax.servlet.FilterConfig ; 25 import javax.servlet.ServletException ; 26 import javax.servlet.ServletRequest ; 27 import javax.servlet.ServletResponse ; 28 import javax.servlet.http.HttpServletRequest ; 29 import javax.servlet.http.HttpServletResponse ; 30 import org.apache.commons.logging.Log; 31 import org.apache.commons.logging.LogFactory; 32 import org.apache.roller.config.RollerRuntimeConfig; 33 34 35 42 public class InitFilter implements Filter { 43 44 private static Log log = LogFactory.getLog(InitFilter.class); 45 46 private boolean initialized = false; 47 48 49 public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) 50 throws IOException , ServletException { 51 52 if(!initialized) { 53 HttpServletRequest request = (HttpServletRequest ) req; 55 HttpServletResponse response = (HttpServletResponse ) res; 56 57 String relPath = request.getContextPath(); 59 String absPath = this.getAbsoluteUrl(request); 60 61 RollerRuntimeConfig.setAbsoluteContextURL(absPath); 63 RollerRuntimeConfig.setRelativeContextURL(relPath); 64 65 log.debug("relPath = "+relPath); 66 log.debug("absPath = "+absPath); 67 68 this.initialized = true; 69 } 70 71 chain.doFilter(req, res); 72 } 73 74 75 private String getAbsoluteUrl(HttpServletRequest request) { 76 77 String url = null; 78 79 String fullUrl = request.getRequestURL().toString(); 80 81 if("/".equals(request.getRequestURI())) { 83 log.info(fullUrl.substring(0, fullUrl.length()-1)); 84 return fullUrl.substring(0, fullUrl.length()-1); 85 } 86 87 int index = fullUrl.indexOf("/", fullUrl.indexOf(request.getServerName())); 89 90 url = fullUrl.substring(0, index); 92 93 url += request.getContextPath(); 95 96 if(url.endsWith("/")) { 98 url = url.substring(0, url.length()-1); 99 } 100 101 return url; 102 } 103 104 105 public void init(FilterConfig filterConfig) throws ServletException {} 106 107 public void destroy() {} 108 109 } 110 | Popular Tags |