You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by xu...@apache.org on 2012/02/16 15:44:38 UTC

svn commit: r1245001 - /geronimo/server/branches/3.0-beta/plugins/tomcat/geronimo-tomcat7/src/main/java/org/apache/geronimo/tomcat/interceptor/RequestListenerBeforeAfter.java

Author: xuhaihong
Date: Thu Feb 16 14:44:38 2012
New Revision: 1245001

URL: http://svn.apache.org/viewvc?rev=1245001&view=rev
Log:
Only invoke the request listener while entering the application and only invoking the listener if the forwarding tag is set

Modified:
    geronimo/server/branches/3.0-beta/plugins/tomcat/geronimo-tomcat7/src/main/java/org/apache/geronimo/tomcat/interceptor/RequestListenerBeforeAfter.java

Modified: geronimo/server/branches/3.0-beta/plugins/tomcat/geronimo-tomcat7/src/main/java/org/apache/geronimo/tomcat/interceptor/RequestListenerBeforeAfter.java
URL: http://svn.apache.org/viewvc/geronimo/server/branches/3.0-beta/plugins/tomcat/geronimo-tomcat7/src/main/java/org/apache/geronimo/tomcat/interceptor/RequestListenerBeforeAfter.java?rev=1245001&r1=1245000&r2=1245001&view=diff
==============================================================================
--- geronimo/server/branches/3.0-beta/plugins/tomcat/geronimo-tomcat7/src/main/java/org/apache/geronimo/tomcat/interceptor/RequestListenerBeforeAfter.java (original)
+++ geronimo/server/branches/3.0-beta/plugins/tomcat/geronimo-tomcat7/src/main/java/org/apache/geronimo/tomcat/interceptor/RequestListenerBeforeAfter.java Thu Feb 16 14:44:38 2012
@@ -14,16 +14,21 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
+
 package org.apache.geronimo.tomcat.interceptor;
 
+import javax.servlet.DispatcherType;
 import javax.servlet.ServletRequest;
 import javax.servlet.ServletResponse;
 
 import org.apache.geronimo.tomcat.GeronimoStandardContext;
 
-public class RequestListenerBeforeAfter implements BeforeAfter{
+public class RequestListenerBeforeAfter implements BeforeAfter {
+
     private final BeforeAfter next;
+
     private final int index;
+
     private final GeronimoStandardContext standardContext;
 
     public RequestListenerBeforeAfter(BeforeAfter next, int index, GeronimoStandardContext standardContext) {
@@ -32,20 +37,24 @@ public class RequestListenerBeforeAfter 
         this.standardContext = standardContext;
     }
 
-    public void before(BeforeAfterContext beforeAfterContext, ServletRequest httpRequest, ServletResponse httpResponse, int dispatch) {
+    public void before(BeforeAfterContext beforeAfterContext, ServletRequest httpRequest, ServletResponse httpResponse,
+            int dispatch) {
         if (httpRequest != null && httpResponse != null) {
-            standardContext.fireRequestInitEventInBeforeAfter(httpRequest);
+            DispatcherType dispatcherType = httpRequest.getDispatcherType();
+            if (dispatcherType == DispatcherType.REQUEST
+                    || (dispatcherType == DispatcherType.FORWARD && standardContext.getFireRequestListenersOnForwards())) {
+                standardContext.fireRequestInitEventInBeforeAfter(httpRequest);
+            }
         }
         if (next != null) {
             next.before(beforeAfterContext, httpRequest, httpResponse, dispatch);
         }
     }
-    
 
-    public void after(BeforeAfterContext beforeAfterContext, ServletRequest httpRequest, ServletResponse httpResponse, int dispatch) {       
-            if (next != null) {
-                next.after(beforeAfterContext, httpRequest, httpResponse, dispatch);
-            }
+    public void after(BeforeAfterContext beforeAfterContext, ServletRequest httpRequest, ServletResponse httpResponse,
+            int dispatch) {
+        if (next != null) {
+            next.after(beforeAfterContext, httpRequest, httpResponse, dispatch);
+        }
     }
-
 }