1 18 19 package org.apache.roller.ui.rendering.filters; 20 21 import java.io.IOException ; 22 import java.util.ArrayList ; 23 import java.util.Iterator ; 24 import java.util.List ; 25 import javax.servlet.Filter ; 26 import javax.servlet.FilterChain ; 27 import javax.servlet.FilterConfig ; 28 import javax.servlet.ServletException ; 29 import javax.servlet.ServletRequest ; 30 import javax.servlet.ServletResponse ; 31 import javax.servlet.http.HttpServletRequest ; 32 import javax.servlet.http.HttpServletResponse ; 33 import org.apache.commons.logging.Log; 34 import org.apache.commons.logging.LogFactory; 35 import org.apache.roller.config.RollerConfig; 36 import org.apache.roller.ui.rendering.RequestMapper; 37 38 46 public class RequestMappingFilter implements Filter { 47 48 private static Log log = LogFactory.getLog(RequestMappingFilter.class); 49 50 private final List requestMappers = new ArrayList (); 52 53 54 public void init(FilterConfig filterConfig) { 55 56 String rollerMappers = RollerConfig.getProperty("rendering.rollerRequestMappers"); 58 String userMappers = RollerConfig.getProperty("rendering.userRequestMappers"); 59 60 if(userMappers != null && userMappers.trim().length() > 0) { 62 63 RequestMapper requestMapper = null; 64 String [] uMappers = userMappers.split(","); 65 for(int i=0; i < uMappers.length; i++) { 66 try { 67 Class mapperClass = Class.forName(uMappers[i]); 68 requestMapper = (RequestMapper) mapperClass.newInstance(); 69 requestMappers.add(requestMapper); 70 } catch(ClassCastException cce) { 71 log.error("It appears that your mapper does not implement "+ 72 "the RequestMapper interface", cce); 73 } catch(Exception e) { 74 log.error("Unable to instantiate request mapper ["+uMappers[i]+"]", e); 75 } 76 } 77 } 78 79 if(rollerMappers != null && rollerMappers.trim().length() > 0) { 81 82 RequestMapper requestMapper = null; 83 String [] rMappers = rollerMappers.split(","); 84 for(int i=0; i < rMappers.length; i++) { 85 try { 86 Class mapperClass = Class.forName(rMappers[i]); 87 requestMapper = (RequestMapper) mapperClass.newInstance(); 88 requestMappers.add(requestMapper); 89 } catch(ClassCastException cce) { 90 log.error("It appears that your mapper does not implement "+ 91 "the RequestMapper interface", cce); 92 } catch(Exception e) { 93 log.error("Unable to instantiate request mapper ["+rMappers[i]+"]", e); 94 } 95 } 96 } 97 98 if(requestMappers.size() < 1) { 99 log.warn("Failed to load any request mappers. "+ 101 "Weblog urls probably won't function as you expect."); 102 } 103 104 log.info("Request mapping filter initialized, "+requestMappers.size()+ 105 " mappers configured."); 106 } 107 108 109 112 public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) 113 throws IOException , ServletException { 114 115 HttpServletRequest request = (HttpServletRequest ) req; 116 HttpServletResponse response = (HttpServletResponse ) res; 117 118 log.debug("entering"); 119 120 RequestMapper mapper = null; 122 Iterator mappersIT = this.requestMappers.iterator(); 123 while(mappersIT.hasNext()) { 124 mapper = (RequestMapper) mappersIT.next(); 125 126 log.debug("trying mapper "+mapper.getClass().getName()); 127 128 boolean wasHandled = mapper.handleRequest(request, response); 129 if(wasHandled) { 130 log.debug("request handled by "+mapper.getClass().getName()); 132 log.debug("exiting"); 133 return; 134 } 135 } 136 137 log.debug("request not mapped"); 138 139 chain.doFilter(request, response); 141 142 log.debug("exiting"); 143 } 144 145 146 public void destroy() {} 147 148 } 149 | Popular Tags |