WicketWICKET-6328 Add 'pathInfo' to ForwardAttributes

Use RequestDispatcher constants to refer to the attributes


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

Branch: refs/heads/master
Commit: de0eaf5315e5592c26b0acc83417feaf79bc140b
Parents: c624639
Author: Martin Tzvetanov Grigorov <[email protected]>
Authored: Mon Feb 27 09:06:12 2017 +0100
Committer: Martin Tzvetanov Grigorov <[email protected]>
Committed: Mon Feb 27 09:07:00 2017 +0100

----------------------------------------------------------------------
 .../protocol/http/servlet/ErrorAttributes.java  | 27 +++++------
 .../http/servlet/ForwardAttributes.java         | 48 +++++++++++++-------
 2 files changed, 45 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/de0eaf53/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 874af09..390fa56 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
@@ -16,6 +16,7 @@
  */
 package org.apache.wicket.protocol.http.servlet;
 
+import javax.servlet.RequestDispatcher;
 import javax.servlet.ServletRequest;
 import javax.servlet.http.HttpServletRequest;
 
@@ -23,18 +24,18 @@ import org.apache.wicket.util.lang.Args;
 import org.apache.wicket.util.string.Strings;
 
 /**
- * Represents additional error parameters present in a {@link ServletRequest} 
when the servlet
+ * Represents additional error attributes present in a {@link ServletRequest} 
when the servlet
  * container is handling an error or a forward to an error page mapped by 
{@code error-page} element
  * in {@code web.xml}.
  * 
  * See documentation for the following request attributes for the values 
stored in this object:
  * <ul>
- * <li>javax.servlet.error.status_code</li>
- * <li>javax.servlet.error.message</li>
- * <li>javax.servlet.error.request_uri</li>
- * <li>javax.servlet.error.servlet_name</li>
- * <li>javax.servlet.error.exception_type</li>
- * <li>javax.servlet.error.exception</li>
+ * <li>{@link RequestDispatcher#ERROR_STATUS_CODE}</li>
+ * <li>{@link RequestDispatcher#ERROR_MESSAGE}</li>
+ * <li>{@link RequestDispatcher#ERROR_REQUEST_URI}</li>
+ * <li>{@link RequestDispatcher#ERROR_SERVLET_NAME}</li>
+ * <li>{@link RequestDispatcher#ERROR_EXCEPTION_TYPE}</li>
+ * <li>{@link RequestDispatcher#ERROR_EXCEPTION}</li>
  * </ul>
  * 
  * @author igor
@@ -144,13 +145,13 @@ public class ErrorAttributes
        public static ErrorAttributes of(HttpServletRequest request, String 
filterPrefix)
        {
                Args.notNull(request, "request");
-               Integer code = 
(Integer)request.getAttribute("javax.servlet.error.status_code");
-               String message = 
(String)request.getAttribute("javax.servlet.error.message");
-               String uri = DispatchedRequestUtils.getRequestUri(request, 
"javax.servlet.error.request_uri", filterPrefix);
-               String servlet = 
(String)request.getAttribute("javax.servlet.error.servlet_name");
+               Integer code = 
(Integer)request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE);
+               String message = 
(String)request.getAttribute(RequestDispatcher.ERROR_MESSAGE);
+               String uri = DispatchedRequestUtils.getRequestUri(request, 
RequestDispatcher.ERROR_REQUEST_URI, filterPrefix);
+               String servlet = 
(String)request.getAttribute(RequestDispatcher.ERROR_SERVLET_NAME);
                @SuppressWarnings("unchecked")
-               Class<? extends Throwable> type = (Class<? extends 
Throwable>)request.getAttribute("javax.servlet.error.exception_type");
-               Throwable ex = 
(Throwable)request.getAttribute("javax.servlet.error.exception");
+               Class<? extends Throwable> type = (Class<? extends 
Throwable>)request.getAttribute(RequestDispatcher.ERROR_EXCEPTION_TYPE);
+               Throwable ex = 
(Throwable)request.getAttribute(RequestDispatcher.ERROR_EXCEPTION);
 
                if (!Strings.isEmpty(uri) || code != null || ex != null)
                {

http://git-wip-us.apache.org/repos/asf/wicket/blob/de0eaf53/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/ForwardAttributes.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/ForwardAttributes.java
 
b/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/ForwardAttributes.java
index 9741b32..5950468 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/ForwardAttributes.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/ForwardAttributes.java
@@ -16,6 +16,7 @@
  */
 package org.apache.wicket.protocol.http.servlet;
 
+import javax.servlet.RequestDispatcher;
 import javax.servlet.ServletRequest;
 import javax.servlet.http.HttpServletRequest;
 
@@ -23,18 +24,16 @@ import org.apache.wicket.util.lang.Args;
 import org.apache.wicket.util.string.Strings;
 
 /**
- * Represents additional error parameters present in a {@link ServletRequest} 
when the servlet
- * container is handling an error or a forward to an error page mapped by 
{@code error-page} element
- * in {@code web.xml}.
+ * Represents additional attributes present in a {@link ServletRequest} when 
the servlet
+ * container is handling a forward to another path than the initially 
requested one.
  * 
  * See documentation for the following request attributes for the values 
stored in this object:
  * <ul>
- * <li>javax.servlet.error.status_code</li>
- * <li>javax.servlet.error.message</li>
- * <li>javax.servlet.error.request_uri</li>
- * <li>javax.servlet.error.servlet_name</li>
- * <li>javax.servlet.error.exception_type</li>
- * <li>javax.servlet.error.exception</li>
+ * <li>{@link javax.servlet.RequestDispatcher#FORWARD_CONTEXT_PATH}</li>
+ * <li>{@link javax.servlet.RequestDispatcher#FORWARD_PATH_INFO}</li>
+ * <li>{@link javax.servlet.RequestDispatcher#FORWARD_QUERY_STRING}</li>
+ * <li>{@link javax.servlet.RequestDispatcher#FORWARD_REQUEST_URI}</li>
+ * <li>{@link javax.servlet.RequestDispatcher#FORWARD_SERVLET_PATH}</li>
  * </ul>
  * 
  */
@@ -52,6 +51,9 @@ public class ForwardAttributes
        // javax.servlet.forward.query_string
        private final String queryString;
 
+       // javax.servlet.forward.path_info
+       private final String pathInfo;
+
        /**
         * Constructor.
         * 
@@ -59,14 +61,16 @@ public class ForwardAttributes
         * @param servletPath
         * @param contextPath
         * @param queryString
+        * @param pathInfo
         */
        private ForwardAttributes(String requestUri, String servletPath, String 
contextPath,
-               String queryString)
+               String queryString, String pathInfo)
        {
                this.requestUri = requestUri;
                this.servletPath = servletPath;
                this.contextPath = contextPath;
                this.queryString = queryString;
+               this.pathInfo = pathInfo;
        }
 
        /**
@@ -110,6 +114,13 @@ public class ForwardAttributes
        }
 
        /**
+        * @return the path info of the request before the forward dispatch
+        */
+       public String getPathInfo() {
+               return pathInfo;
+       }
+
+       /**
         * Factory for creating instances of this class.
         * 
         * @param request
@@ -119,15 +130,17 @@ public class ForwardAttributes
        {
                Args.notNull(request, "request");
 
-               final String requestUri = 
DispatchedRequestUtils.getRequestUri(request, 
"javax.servlet.forward.request_uri", filterPrefix);
-               final String servletPath = 
(String)request.getAttribute("javax.servlet.forward.servlet_path");
-               final String contextPath = 
(String)request.getAttribute("javax.servlet.forward.context_path");
-               final String queryString = 
(String)request.getAttribute("javax.servlet.forward.query_string");
+               final String requestUri = 
DispatchedRequestUtils.getRequestUri(request, 
RequestDispatcher.FORWARD_REQUEST_URI, filterPrefix);
+               final String servletPath = 
(String)request.getAttribute(RequestDispatcher.FORWARD_SERVLET_PATH);
+               final String contextPath = 
(String)request.getAttribute(RequestDispatcher.FORWARD_CONTEXT_PATH);
+               final String queryString = 
(String)request.getAttribute(RequestDispatcher.FORWARD_QUERY_STRING);
+               final String pathInfo = 
(String)request.getAttribute(RequestDispatcher.FORWARD_PATH_INFO);
 
                if (!Strings.isEmpty(requestUri) || 
!Strings.isEmpty(servletPath) ||
-                       !Strings.isEmpty(contextPath) || 
!Strings.isEmpty(queryString))
+                       !Strings.isEmpty(contextPath) || 
!Strings.isEmpty(queryString) ||
+                       !Strings.isEmpty(pathInfo))
                {
-                       return new ForwardAttributes(requestUri, servletPath, 
contextPath, queryString);
+                       return new ForwardAttributes(requestUri, servletPath, 
contextPath, queryString, pathInfo);
                }
                return null;
        }
@@ -136,6 +149,7 @@ public class ForwardAttributes
        public String toString()
        {
                return "ForwardAttributes [requestUri=" + requestUri + ", 
servletPath=" + servletPath +
-                       ", contextPath=" + contextPath + ", queryString=" + 
queryString + "]";
+                       ", contextPath=" + contextPath + ", queryString=" + 
queryString +
+                          ", pathInfo=" + pathInfo + "]";
        }
 }

Reply via email to