001    package org.apache.geronimo.tomcat.valve;
002    
003    import java.io.IOException;
004    
005    import javax.servlet.ServletException;
006    
007    import org.apache.catalina.Valve;
008    import org.apache.catalina.connector.Request;
009    import org.apache.catalina.connector.Response;
010    import org.apache.catalina.valves.ValveBase;
011    import org.apache.geronimo.tomcat.interceptor.BeforeAfter;
012    
013    public class GeronimoBeforeAfterValve extends ValveBase{
014        
015        private final BeforeAfter beforeAfter;
016        private final int contextIndexCount;
017    
018        public GeronimoBeforeAfterValve(BeforeAfter beforeAfter, int contextIndexCount) {
019            this.beforeAfter = beforeAfter;
020            this.contextIndexCount = contextIndexCount;
021        }
022    
023        public void invoke(Request request, Response response) throws IOException, ServletException {
024            Object context[] = new Object[contextIndexCount];
025            
026            if (beforeAfter != null){
027                beforeAfter.before(context, request, response);
028            }
029            
030            // Pass this request on to the next valve in our pipeline
031            getNext().invoke(request, response);
032            
033            if (beforeAfter != null){
034                beforeAfter.after(context, request, response);
035            }
036            
037        }
038    
039    }