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);