//# 2 errors, 144 messages
//#
/*
    //#RequestMappingFilter.java:1:1: class: org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter
 * Licensed to the Apache Software Foundation (ASF) under one or more
 *  contributor license agreements.  The ASF licenses this file to You
 * under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.  For additional information regarding
 * copyright in this work, please see the NOTICE file in the top level
 * directory of this distribution.
 */

package org.apache.roller.weblogger.ui.rendering.filters;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.servlet.Filter;
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.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.config.WebloggerConfig;
import org.apache.roller.weblogger.ui.rendering.RequestMapper;

/**
 * Provides generalized request mapping capablilites.
 *
 * Incoming requests can be inspected by a series of RequestMappers and can
 * potentially be re-routed to different places within the application.
 *
 * @web.filter name="RequestMappingFilter"
 */
public class RequestMappingFilter implements Filter {
    //#RequestMappingFilter.java:46: method: void org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter.org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter()
    //#input(void org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter()): this
    //#output(void org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter()): new ArrayList(RequestMappingFilter#1) num objects
    //#output(void org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter()): this.requestMappers
    //#new obj(void org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter()): new ArrayList(RequestMappingFilter#1)
    //#post(void org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter()): this.requestMappers == &new ArrayList(RequestMappingFilter#1)
    //#post(void org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter()): new ArrayList(RequestMappingFilter#1) num objects == 1
    
    private static Log log = LogFactory.getLog(RequestMappingFilter.class);
    //#RequestMappingFilter.java:48: method: org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter.org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter__static_init
    //#RequestMappingFilter.java:48: Warning: method not available
    //#    -- call on Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter
    //#    method: org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter__static_init
    //#    unanalyzed callee: Log org.apache.commons.logging.LogFactory:getLog(Class)
    //#output(org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter__static_init): __Descendant_Table[org/apache/roller/weblogger/ui/rendering/filters/RequestMappingFilter]
    //#output(org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter__static_init): __Dispatch_Table.destroy()V
    //#output(org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter__static_init): __Dispatch_Table.doFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;Ljavax/servlet/FilterChain;)V
    //#output(org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter__static_init): __Dispatch_Table.init(Ljavax/servlet/FilterConfig;)V
    //#output(org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter__static_init): log
    //#post(org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter__static_init): __Descendant_Table[org/apache/roller/weblogger/ui/rendering/filters/RequestMappingFilter] == &__Dispatch_Table
    //#post(org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter__static_init): __Dispatch_Table.destroy()V == &destroy
    //#post(org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter__static_init): __Dispatch_Table.doFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;Ljavax/servlet/FilterChain;)V == &doFilter
    //#post(org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter__static_init): __Dispatch_Table.init(Ljavax/servlet/FilterConfig;)V == &init
    //#post(org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter__static_init): init'ed(log)
    //#RequestMappingFilter.java:48: end of method: org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter.org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter__static_init
    
    // list of RequestMappers that want to inspect the request
    private final List requestMappers = new ArrayList();
    //#RequestMappingFilter.java:51: end of method: void org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter.org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter()
    
    
    public void init(FilterConfig filterConfig) {
        
        // lookup set of request mappers we are going to use
        String rollerMappers = WebloggerConfig.getProperty("rendering.rollerRequestMappers");
    //#RequestMappingFilter.java:57: method: void org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter.init(FilterConfig)
    //#RequestMappingFilter.java:57: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.config.WebloggerConfig:getProperty(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter
    //#    method: void init(FilterConfig)
    //#    unanalyzed callee: String org.apache.roller.weblogger.config.WebloggerConfig:getProperty(String)
    //#input(void init(FilterConfig)): " mappers configured."._tainted
    //#input(void init(FilterConfig)): "Request mapping filter initialized, "._tainted
    //#input(void init(FilterConfig)): "Unable to instantiate request mapper ["._tainted
    //#input(void init(FilterConfig)): "]"._tainted
    //#input(void init(FilterConfig)): log
    //#input(void init(FilterConfig)): org/apache/roller/weblogger/ui/rendering/RequestMapper.__Descendant_Table[org/apache/roller/weblogger/ui/rendering/RequestMapper]
    //#input(void init(FilterConfig)): org/apache/roller/weblogger/ui/rendering/RequestMapper.__Descendant_Table[org/apache/roller/weblogger/ui/rendering/WeblogRequestMapper]
    //#input(void init(FilterConfig)): org/apache/roller/weblogger/ui/rendering/RequestMapper.__Descendant_Table[others]
    //#input(void init(FilterConfig)): this
    //#input(void init(FilterConfig)): this.requestMappers
    //#pre[1] (void init(FilterConfig)): log != null
    //#pre[3] (void init(FilterConfig)): this.requestMappers != null
    //#test_vector(void init(FilterConfig)): java.lang.String:length(...)@61: {0}, {1..4_294_967_295}
    //#test_vector(void init(FilterConfig)): java.lang.String:length(...)@80: {0}, {1..4_294_967_295}
    //#test_vector(void init(FilterConfig)): java.util.List:size(...)@98: {1..4_294_967_295}, {-2_147_483_648..0}
    //#test_vector(void init(FilterConfig)): org.apache.roller.weblogger.config.WebloggerConfig:getProperty(...)@57: Addr_Set{null}, Inverse{null}
    //#test_vector(void init(FilterConfig)): org.apache.roller.weblogger.config.WebloggerConfig:getProperty(...)@58: Addr_Set{null}, Inverse{null}
        String userMappers = WebloggerConfig.getProperty("rendering.userRequestMappers");
    //#RequestMappingFilter.java:58: Warning: method not available
    //#    -- call on String org.apache.roller.weblogger.config.WebloggerConfig:getProperty(String)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter
    //#    method: void init(FilterConfig)
    //#    unanalyzed callee: String org.apache.roller.weblogger.config.WebloggerConfig:getProperty(String)
        
        // instantiate user defined request mapper classes
        if(userMappers != null && userMappers.trim().length() > 0) {
            
            RequestMapper requestMapper = null;
    //#RequestMappingFilter.java:63: Warning: unused assignment
    //#    unused assignment into requestMapper
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter
    //#    method: void init(FilterConfig)
    //#    Attribs:  Uncertain
            String[] uMappers = userMappers.split(",");
            for(int i=0; i < uMappers.length; i++) {
    //#RequestMappingFilter.java:65: ?use of default init
    //#    init'ed(uMappers.length)
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter
    //#    method: void init(FilterConfig)
    //#    basic block: bb_4
    //#    assertion: init'ed(uMappers.length)
    //#    VN: undefined
    //#    Expected: {-Inf..+Inf}
    //#    Bad: {Invalid}
    //#    Attribs:  Int  Bad only invalid
    //#RequestMappingFilter.java:65: Warning: test always goes same way
    //#    test predetermined because i == uMappers.length
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter
    //#    method: void init(FilterConfig)
    //#    from bb: bb_4
    //#    live edge: bb_4-->bb_10
    //#    tested vn: i - undefined
    //#    tested vn values: {0}
    //#RequestMappingFilter.java:65: Warning: dead code continues
    //#    dead code continues
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter
    //#    method: void init(FilterConfig)
    //#    dead bb: bb_9
                try {
                    Class mapperClass = Class.forName(uMappers[i]);
    //#RequestMappingFilter.java:67: Warning: dead code
    //#    dead code here because i == uMappers.length
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter
    //#    method: void init(FilterConfig)
    //#    dead bb: bb_5
    //#RequestMappingFilter.java:67: Warning: dead code continues
    //#    dead code continues
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter
    //#    method: void init(FilterConfig)
    //#    dead bb: bb_6
                    requestMapper = (RequestMapper) mapperClass.newInstance();
    //#RequestMappingFilter.java:68: Warning: dead code continues
    //#    dead code continues
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter
    //#    method: void init(FilterConfig)
    //#    dead bb: bb_24
                    requestMappers.add(requestMapper);
                } catch(ClassCastException cce) {
                    log.error("It appears that your mapper does not implement "+
                            "the RequestMapper interface", cce);
                } catch(Exception e) {
                    log.error("Unable to instantiate request mapper ["+uMappers[i]+"]", e);
                }
            }
        }
        
        // instantiate roller standard request mapper classes
        if(rollerMappers != null && rollerMappers.trim().length() > 0) {
            
            RequestMapper requestMapper = null;
    //#RequestMappingFilter.java:82: Warning: unused assignment
    //#    unused assignment into requestMapper
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter
    //#    method: void init(FilterConfig)
    //#    Attribs:  Uncertain
            String[] rMappers = rollerMappers.split(",");
            for(int i=0; i < rMappers.length; i++) {
    //#RequestMappingFilter.java:84: ?use of default init
    //#    init'ed(rMappers.length)
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter
    //#    method: void init(FilterConfig)
    //#    basic block: bb_13
    //#    assertion: init'ed(rMappers.length)
    //#    VN: undefined
    //#    Expected: {-Inf..+Inf}
    //#    Bad: {Invalid}
    //#    Attribs:  Int  Bad only invalid
    //#RequestMappingFilter.java:84: Warning: test always goes same way
    //#    test predetermined because i == rMappers.length
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter
    //#    method: void init(FilterConfig)
    //#    from bb: bb_13
    //#    live edge: bb_13-->bb_19
    //#    tested vn: i - undefined
    //#    tested vn values: {0}
    //#RequestMappingFilter.java:84: Warning: dead code continues
    //#    dead code continues
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter
    //#    method: void init(FilterConfig)
    //#    dead bb: bb_18
                try {
                    Class mapperClass = Class.forName(rMappers[i]);
    //#RequestMappingFilter.java:86: Warning: dead code
    //#    dead code here because i == rMappers.length
    //#    severity: LOW
    //#    class: org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter
    //#    method: void init(FilterConfig)
    //#    dead bb: bb_14
    //#RequestMappingFilter.java:86: Warning: dead code continues
    //#    dead code continues
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter
    //#    method: void init(FilterConfig)
    //#    dead bb: bb_15
                    requestMapper = (RequestMapper) mapperClass.newInstance();
    //#RequestMappingFilter.java:87: Warning: dead code continues
    //#    dead code continues
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter
    //#    method: void init(FilterConfig)
    //#    dead bb: bb_22
                    requestMappers.add(requestMapper);
                } catch(ClassCastException cce) {
                    log.error("It appears that your mapper does not implement "+
                            "the RequestMapper interface", cce);
                } catch(Exception e) {
                    log.error("Unable to instantiate request mapper ["+rMappers[i]+"]", e);
                }
            }
        }
        
        if(requestMappers.size() < 1) {
            // hmm ... failed to load any request mappers?
            log.warn("Failed to load any request mappers.  "+
    //#RequestMappingFilter.java:100: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:warn(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter
    //#    method: void init(FilterConfig)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:warn(Object)
                    "Weblog urls probably won't function as you expect.");
        }
        
        log.info("Request mapping filter initialized, "+requestMappers.size()+
    //#RequestMappingFilter.java:104: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:info(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter
    //#    method: void init(FilterConfig)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:info(Object)
                " mappers configured.");
    }
    //#RequestMappingFilter.java:106: end of method: void org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter.init(FilterConfig)
    
    
    /**
     * Inspect incoming urls and see if they should be routed.
     */
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
            throws IOException, ServletException {
        
        HttpServletRequest request = (HttpServletRequest) req;
    //#RequestMappingFilter.java:115: method: void org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter.doFilter(ServletRequest, ServletResponse, FilterChain)
    //#input(void doFilter(ServletRequest, ServletResponse, FilterChain)): ","._tainted
    //#input(void doFilter(ServletRequest, ServletResponse, FilterChain)): "."._tainted
    //#input(void doFilter(ServletRequest, ServletResponse, FilterChain)): ".roller-ui.rendering.comment"._tainted
    //#input(void doFilter(ServletRequest, ServletResponse, FilterChain)): ".roller-ui.rendering.feed"._tainted
    //#input(void doFilter(ServletRequest, ServletResponse, FilterChain)): ".roller-ui.rendering.page"._tainted
    //#input(void doFilter(ServletRequest, ServletResponse, FilterChain)): ".roller-ui.rendering.resources"._tainted
    //#input(void doFilter(ServletRequest, ServletResponse, FilterChain)): ".roller-ui.rendering.rsd"._tainted
    //#input(void doFilter(ServletRequest, ServletResponse, FilterChain)): ".roller-ui.rendering.search"._tainted
    //#input(void doFilter(ServletRequest, ServletResponse, FilterChain)): ".roller-ui.rendering.trackback"._tainted
    //#input(void doFilter(ServletRequest, ServletResponse, FilterChain)): "?"._tainted
    //#input(void doFilter(ServletRequest, ServletResponse, FilterChain)): "FORWARD_URL "._tainted
    //#input(void doFilter(ServletRequest, ServletResponse, FilterChain)): "SKIPPED "._tainted
    //#input(void doFilter(ServletRequest, ServletResponse, FilterChain)): "WEBLOG_URL "._tainted
    //#input(void doFilter(ServletRequest, ServletResponse, FilterChain)): "]"._tainted
    //#input(void doFilter(ServletRequest, ServletResponse, FilterChain)): "checking weblog handle "._tainted
    //#input(void doFilter(ServletRequest, ServletResponse, FilterChain)): "evaluating ["._tainted
    //#input(void doFilter(ServletRequest, ServletResponse, FilterChain)): "forwarding to "._tainted
    //#input(void doFilter(ServletRequest, ServletResponse, FilterChain)): "potential weblog handle = "._tainted
    //#input(void doFilter(ServletRequest, ServletResponse, FilterChain)): "request handled by "._tainted
    //#input(void doFilter(ServletRequest, ServletResponse, FilterChain)): "trying mapper "._tainted
    //#input(void doFilter(ServletRequest, ServletResponse, FilterChain)): chain
    //#input(void doFilter(ServletRequest, ServletResponse, FilterChain)): log
    //#input(void doFilter(ServletRequest, ServletResponse, FilterChain)): org/apache/roller/weblogger/ui/rendering/RequestMapper.__Descendant_Table[org/apache/roller/weblogger/ui/rendering/RequestMapper]
    //#input(void doFilter(ServletRequest, ServletResponse, FilterChain)): org/apache/roller/weblogger/ui/rendering/RequestMapper.__Descendant_Table[org/apache/roller/weblogger/ui/rendering/WeblogRequestMapper]
    //#input(void doFilter(ServletRequest, ServletResponse, FilterChain)): org/apache/roller/weblogger/ui/rendering/RequestMapper.__Descendant_Table[others]
    //#input(void doFilter(ServletRequest, ServletResponse, FilterChain)): org/apache/roller/weblogger/ui/rendering/RequestMapper.__Dispatch_Table.handleRequest(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)Z
    //#input(void doFilter(ServletRequest, ServletResponse, FilterChain)): org/apache/roller/weblogger/ui/rendering/WeblogRequestMapper.__Dispatch_Table.handleRequest(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)Z
    //#input(void doFilter(ServletRequest, ServletResponse, FilterChain)): org/apache/roller/weblogger/ui/rendering/WeblogRequestMapper.log
    //#input(void doFilter(ServletRequest, ServletResponse, FilterChain)): req
    //#input(void doFilter(ServletRequest, ServletResponse, FilterChain)): res
    //#input(void doFilter(ServletRequest, ServletResponse, FilterChain)): this
    //#input(void doFilter(ServletRequest, ServletResponse, FilterChain)): this.requestMappers
    //#pre[2] (void doFilter(ServletRequest, ServletResponse, FilterChain)): log != null
    //#pre[7] (void doFilter(ServletRequest, ServletResponse, FilterChain)): this.requestMappers != null
    //#pre[1] (void doFilter(ServletRequest, ServletResponse, FilterChain)): (soft) chain != null
    //#pre[3] (void doFilter(ServletRequest, ServletResponse, FilterChain)): (soft) org/apache/roller/weblogger/ui/rendering/WeblogRequestMapper.log != null
    //#pre[4] (void doFilter(ServletRequest, ServletResponse, FilterChain)): (soft) req != null
    //#pre[5] (void doFilter(ServletRequest, ServletResponse, FilterChain)): (soft) res != null
    //#presumption(void doFilter(ServletRequest, ServletResponse, FilterChain)): java.lang.Object:getClass(...)@126 != null
    //#presumption(void doFilter(ServletRequest, ServletResponse, FilterChain)): java.lang.Object:getClass(...)@131 != null
    //#presumption(void doFilter(ServletRequest, ServletResponse, FilterChain)): java.util.Iterator:next(...).__Tag@124 in {org/apache/roller/weblogger/ui/rendering/RequestMapper, org/apache/roller/weblogger/ui/rendering/WeblogRequestMapper}
    //#presumption(void doFilter(ServletRequest, ServletResponse, FilterChain)): java.util.Iterator:next(...)@124 != null
    //#presumption(void doFilter(ServletRequest, ServletResponse, FilterChain)): mapper.restricted@126 != null
    //#unanalyzed(void doFilter(ServletRequest, ServletResponse, FilterChain)): Effects-of-calling:java.lang.String:trim
    //#unanalyzed(void doFilter(ServletRequest, ServletResponse, FilterChain)): Effects-of-calling:java.lang.String:length
    //#unanalyzed(void doFilter(ServletRequest, ServletResponse, FilterChain)): Effects-of-calling:java.lang.String:split
    //#unanalyzed(void doFilter(ServletRequest, ServletResponse, FilterChain)): Effects-of-calling:java.lang.StringBuilder
    //#unanalyzed(void doFilter(ServletRequest, ServletResponse, FilterChain)): Effects-of-calling:java.lang.StringBuilder:append
    //#unanalyzed(void doFilter(ServletRequest, ServletResponse, FilterChain)): Effects-of-calling:java.lang.StringBuilder:toString
    //#unanalyzed(void doFilter(ServletRequest, ServletResponse, FilterChain)): Effects-of-calling:org.apache.commons.logging.Log:debug
    //#unanalyzed(void doFilter(ServletRequest, ServletResponse, FilterChain)): Effects-of-calling:org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger
    //#unanalyzed(void doFilter(ServletRequest, ServletResponse, FilterChain)): Effects-of-calling:org.apache.roller.weblogger.business.Weblogger:getUserManager
    //#unanalyzed(void doFilter(ServletRequest, ServletResponse, FilterChain)): Effects-of-calling:org.apache.roller.weblogger.business.UserManager:getWebsiteByHandle
    //#unanalyzed(void doFilter(ServletRequest, ServletResponse, FilterChain)): Effects-of-calling:java.lang.Throwable:__curr_excep_obj
    //#unanalyzed(void doFilter(ServletRequest, ServletResponse, FilterChain)): Effects-of-calling:java.lang.StringBuffer
    //#unanalyzed(void doFilter(ServletRequest, ServletResponse, FilterChain)): Effects-of-calling:javax.servlet.http.HttpServletRequest:getMethod
    //#unanalyzed(void doFilter(ServletRequest, ServletResponse, FilterChain)): Effects-of-calling:java.lang.String:equals
    //#unanalyzed(void doFilter(ServletRequest, ServletResponse, FilterChain)): Effects-of-calling:javax.servlet.http.HttpServletRequest:getParameter
    //#unanalyzed(void doFilter(ServletRequest, ServletResponse, FilterChain)): Effects-of-calling:java.lang.StringBuffer:append
    //#unanalyzed(void doFilter(ServletRequest, ServletResponse, FilterChain)): Effects-of-calling:java.lang.StringBuffer:toString
    //#unanalyzed(void doFilter(ServletRequest, ServletResponse, FilterChain)): Effects-of-calling:javax.servlet.http.HttpServletRequest:getRequestURI
    //#unanalyzed(void doFilter(ServletRequest, ServletResponse, FilterChain)): Effects-of-calling:javax.servlet.http.HttpServletRequest:getContextPath
    //#unanalyzed(void doFilter(ServletRequest, ServletResponse, FilterChain)): Effects-of-calling:java.lang.String:substring
    //#unanalyzed(void doFilter(ServletRequest, ServletResponse, FilterChain)): Effects-of-calling:java.lang.String:endsWith
    //#unanalyzed(void doFilter(ServletRequest, ServletResponse, FilterChain)): Effects-of-calling:java.lang.String:indexOf
    //#unanalyzed(void doFilter(ServletRequest, ServletResponse, FilterChain)): Effects-of-calling:java.util.Set:contains
    //#unanalyzed(void doFilter(ServletRequest, ServletResponse, FilterChain)): Effects-of-calling:javax.servlet.http.HttpServletRequest:getServletPath
    //#unanalyzed(void doFilter(ServletRequest, ServletResponse, FilterChain)): Effects-of-calling:javax.servlet.http.HttpServletRequest:getQueryString
    //#unanalyzed(void doFilter(ServletRequest, ServletResponse, FilterChain)): Effects-of-calling:javax.servlet.http.HttpServletResponse:sendRedirect
    //#unanalyzed(void doFilter(ServletRequest, ServletResponse, FilterChain)): Effects-of-calling:javax.servlet.http.HttpServletResponse:sendError
    //#unanalyzed(void doFilter(ServletRequest, ServletResponse, FilterChain)): Effects-of-calling:javax.servlet.http.HttpServletRequest:getRequestDispatcher
    //#unanalyzed(void doFilter(ServletRequest, ServletResponse, FilterChain)): Effects-of-calling:javax.servlet.RequestDispatcher:forward
    //#test_vector(void doFilter(ServletRequest, ServletResponse, FilterChain)): java.util.Iterator:hasNext(...)@123: {0}, {1}
        HttpServletResponse response = (HttpServletResponse) res;
        
        log.debug("entering");
    //#RequestMappingFilter.java:118: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter
    //#    method: void doFilter(ServletRequest, ServletResponse, FilterChain)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        
        // give each mapper a chance to handle the request
        RequestMapper mapper = null;
    //#RequestMappingFilter.java:121: Warning: unused assignment
    //#    unused assignment into mapper
    //#    severity: SUPPRESSED
    //#    class: org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter
    //#    method: void doFilter(ServletRequest, ServletResponse, FilterChain)
    //#    Attribs:  Uncertain
        Iterator mappersIT = this.requestMappers.iterator();
        while(mappersIT.hasNext()) {
            mapper = (RequestMapper) mappersIT.next();
            
            log.debug("trying mapper "+mapper.getClass().getName());
    //#RequestMappingFilter.java:126: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter
    //#    method: void doFilter(ServletRequest, ServletResponse, FilterChain)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
            
            boolean wasHandled = mapper.handleRequest(request, response);
            if(wasHandled) {
                // if mapper has handled the request then we are done
                log.debug("request handled by "+mapper.getClass().getName());
    //#RequestMappingFilter.java:131: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter
    //#    method: void doFilter(ServletRequest, ServletResponse, FilterChain)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
                log.debug("exiting");
    //#RequestMappingFilter.java:132: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter
    //#    method: void doFilter(ServletRequest, ServletResponse, FilterChain)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
                return;
            }
        }
        
        log.debug("request not mapped");
    //#RequestMappingFilter.java:137: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter
    //#    method: void doFilter(ServletRequest, ServletResponse, FilterChain)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
        
        // nobody handled the request, so let it continue as usual
        chain.doFilter(request, response);
        
        log.debug("exiting");
    //#RequestMappingFilter.java:142: Warning: method not available
    //#    -- call on void org.apache.commons.logging.Log:debug(Object)
    //#    severity: INFORMATIONAL
    //#    class: org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter
    //#    method: void doFilter(ServletRequest, ServletResponse, FilterChain)
    //#    unanalyzed callee: void org.apache.commons.logging.Log:debug(Object)
    }
    //#RequestMappingFilter.java:143: end of method: void org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter.doFilter(ServletRequest, ServletResponse, FilterChain)
    
    
    public void destroy() {}
    //#RequestMappingFilter.java:146: method: void org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter.destroy()
    //#RequestMappingFilter.java:146: end of method: void org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter.destroy()
    
}
    //#RequestMappingFilter.java:: end of class: org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter
