Updated Branches:
  refs/heads/master 2ba0f0ad1 -> c8e0d1153

WICKET-4387 StringIndexOutOfBoundsException when forwarding requests

Add some debug logs to see what is the state when a problem occurs.


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/c8e0d115
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/c8e0d115
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/c8e0d115

Branch: refs/heads/master
Commit: c8e0d1153b49a39492b947e4c64494baadbf547e
Parents: 2ba0f0a
Author: Martin Tzvetanov Grigorov <[email protected]>
Authored: Mon Apr 2 11:42:11 2012 +0200
Committer: Martin Tzvetanov Grigorov <[email protected]>
Committed: Mon Apr 2 11:52:28 2012 +0200

----------------------------------------------------------------------
 .../protocol/http/servlet/ErrorAttributes.java     |   13 ++++++++-
 .../protocol/http/servlet/ServletWebRequest.java   |   21 ++++++++++++---
 2 files changed, 29 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/c8e0d115/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/ErrorAttributes.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/ErrorAttributes.java
 
b/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/ErrorAttributes.java
index da70ca8..7204eb0 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/ErrorAttributes.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/ErrorAttributes.java
@@ -159,5 +159,16 @@ public class ErrorAttributes
                return null;
        }
 
-
+       @Override
+       public String toString()
+       {
+               return "ErrorAttributes{" +
+                               "statusCode=" + statusCode +
+                               ", message='" + message + '\'' +
+                               ", requestUri='" + requestUri + '\'' +
+                               ", servletName='" + servletName + '\'' +
+                               ", exceptionType=" + exceptionType +
+                               ", exception=" + exception +
+                               '}';
+       }
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/c8e0d115/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java
 
b/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java
index 368f732..978c9f1 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java
@@ -58,6 +58,8 @@ import org.slf4j.LoggerFactory;
  */
 public class ServletWebRequest extends WebRequest
 {
+       private static final Logger LOG = 
LoggerFactory.getLogger(ServletWebRequest.class);
+
        private final HttpServletRequest httpServletRequest;
 
        private final Url url;
@@ -101,6 +103,11 @@ public class ServletWebRequest extends WebRequest
 
                if (forwardAttributes != null || errorAttributes != null)
                {
+                       if (LOG.isDebugEnabled())
+                       {
+                               LOG.debug("Setting filterPrefix('{}') to '' 
because there is either an error or a forward. {}, {}",
+                                               new Object[] {filterPrefix, 
forwardAttributes, errorAttributes});
+                       }
                        // the filter prefix is not needed when the current 
request is internal
                        // see WICKET-4387
                        this.filterPrefix = "";
@@ -154,9 +161,7 @@ public class ServletWebRequest extends WebRequest
                }
                else
                {
-                       String base = null;
-
-                       base = getHeader(HEADER_AJAX_BASE_URL);
+                       String base = getHeader(HEADER_AJAX_BASE_URL);
 
                        if (base == null)
                        {
@@ -185,7 +190,15 @@ public class ServletWebRequest extends WebRequest
                }
                StringBuilder url = new StringBuilder();
                uri = Strings.stripJSessionId(uri);
-               final int start = httpServletRequest.getContextPath().length() 
+ filterPrefix.length() + 1;
+               String contextPath = httpServletRequest.getContextPath();
+
+               if (LOG.isDebugEnabled())
+               {
+                       LOG.debug("Calculating context relative path from: 
context path '{}', filterPrefix '{}', uri '{}'",
+                                       new Object[] {contextPath, 
filterPrefix, uri});
+               }
+
+               final int start = contextPath.length() + filterPrefix.length() 
+ 1;
                url.append(uri.substring(start));
 
                if (errorAttributes == null)

Reply via email to