Author: ivol37 at gmail.com
Date: Wed Jan  5 09:57:35 2011
New Revision: 560

Log:
[AMDATU-80] Small improvement to prevent endless recursion which I ran into

Modified:
   
trunk/amdatu-web/rest-wink/src/main/java/org/amdatu/web/rest/wink/service/WinkServletFilter.java

Modified: 
trunk/amdatu-web/rest-wink/src/main/java/org/amdatu/web/rest/wink/service/WinkServletFilter.java
==============================================================================
--- 
trunk/amdatu-web/rest-wink/src/main/java/org/amdatu/web/rest/wink/service/WinkServletFilter.java
    (original)
+++ 
trunk/amdatu-web/rest-wink/src/main/java/org/amdatu/web/rest/wink/service/WinkServletFilter.java
    Wed Jan  5 09:57:35 2011
@@ -61,7 +61,12 @@
 
     public void doFilter(ServletRequest request, ServletResponse response, 
FilterChain chain) throws IOException, ServletException {
         String path = ((HttpServletRequest) request).getPathInfo();
-        if (path.startsWith(m_dispatchFrom)) {
+
+        // To prevent endless recursion we verify that the path doesn't start 
with our target path. There is one
+        // situation in which this fails; the case that a rest service with 
path 'example' also annotates one of
+        // its methods with 'example'. In this case /rest/example/example 
should be forwarded to /rest/example/example/example,
+        // but it's not.
+        if (path.startsWith(m_dispatchFrom) && !path.startsWith(m_dispatchTo)) 
{
             String targetPath = path.replace(m_dispatchFrom, m_dispatchTo);
             RequestDispatcher dispatcher = 
request.getRequestDispatcher(targetPath);
             dispatcher.forward(request, response);

Reply via email to