Alon Bar-Lev has uploaded a new change for review.

Change subject: utils: ForwardServlet: enable accepting components before query 
parameters
......................................................................

utils: ForwardServlet: enable accepting components before query parameters

Example:
http://host/api/events;max=2

As more edge conditions, apply exceptional style.

Change-Id: Icfc5fd7bf98d3461ce8251c301de310237e0507c
Signed-off-by: Alon Bar-Lev <alo...@redhat.com>
---
M backend/manager/modules/root/src/main/webapp/WEB-INF/web.xml
M 
backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/servlet/ForwardServlet.java
2 files changed, 26 insertions(+), 20 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/35/21335/1

diff --git a/backend/manager/modules/root/src/main/webapp/WEB-INF/web.xml 
b/backend/manager/modules/root/src/main/webapp/WEB-INF/web.xml
index 448a4c7..ea237dc 100644
--- a/backend/manager/modules/root/src/main/webapp/WEB-INF/web.xml
+++ b/backend/manager/modules/root/src/main/webapp/WEB-INF/web.xml
@@ -110,7 +110,7 @@
     </init-param>
     <init-param>
       <param-name>uri</param-name>
-      <param-value>/</param-value>
+      <param-value></param-value>
     </init-param>
   </servlet>
   <servlet-mapping>
diff --git 
a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/servlet/ForwardServlet.java
 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/servlet/ForwardServlet.java
index a662e60..5e7ed0c 100644
--- 
a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/servlet/ForwardServlet.java
+++ 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/servlet/ForwardServlet.java
@@ -116,29 +116,35 @@
     @Override
     protected void service(final HttpServletRequest request, final 
HttpServletResponse response) throws IOException,
         ServletException {
-        final ServletContext forwardContext = 
getServletContext().getContext(targetContext);
-        if (forwardContext != null) {
-            String forwardUri = uri;
-            if (request.getPathInfo() != null) {
-                forwardUri += request.getPathInfo();
+
+        try {
+            if (!request.getRequestURI().startsWith(request.getContextPath() + 
request.getServletPath())) {
+                throw new RuntimeException("Unexpected request URI " + 
request.getRequestURI() +
+                    " with servlet path " + request.getContextPath() + 
request.getServletPath());
             }
+
+            final ServletContext forwardContext = 
getServletContext().getContext(targetContext);
+            if (forwardContext == null) {
+                throw new RuntimeException("Unable to determine forward 
context for " + targetContext);
+            }
+
+            final String forwardUri = uri + request.getRequestURI().substring(
+                request.getContextPath().length() + 
request.getServletPath().length());
             final RequestDispatcher dispatcher = 
forwardContext.getRequestDispatcher(forwardUri);
-            if (dispatcher != null) {
-                for (String initParam : 
Collections.list(getInitParameterNames())) {
-                    if (initParam.startsWith(ATTR_PREF)) {
-                        request.setAttribute(initParam.replaceFirst(ATTR_PREF, 
""), getInitParameter(initParam));
-                    }
-                }
-                dispatcher.forward(request, response);
-            } else {
-                log.error("Unable to determine dispatcher");
-                
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
-                        "unable to determine dispatcher");
+            if (dispatcher == null) {
+                throw new RuntimeException("Unable to determine dispatcher for 
" + forwardUri);
             }
-        } else {
-            log.error("Unable to determine forwarding context");
+
+            for (String initParam : Collections.list(getInitParameterNames())) 
{
+                if (initParam.startsWith(ATTR_PREF)) {
+                    request.setAttribute(initParam.replaceFirst(ATTR_PREF, 
""), getInitParameter(initParam));
+                }
+            }
+            dispatcher.forward(request, response);
+        } catch(Exception e) {
+            log.error("Forward failed", e);
             response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
-                    "unable to determine forward context");
+                    e.getMessage());
         }
     }
 


-- 
To view, visit http://gerrit.ovirt.org/21335
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Icfc5fd7bf98d3461ce8251c301de310237e0507c
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Alon Bar-Lev <alo...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to