You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by cz...@apache.org on 2009/02/05 15:54:21 UTC

svn commit: r741116 - in /felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole: AbstractWebConsolePlugin.java internal/compendium/ConfigManager.java

Author: cziegeler
Date: Thu Feb  5 14:54:21 2009
New Revision: 741116

URL: http://svn.apache.org/viewvc?rev=741116&view=rev
Log:
FELIX-918 : Add utility method for making relative redirects absolute.

Modified:
    felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/AbstractWebConsolePlugin.java
    felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/compendium/ConfigManager.java

Modified: felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/AbstractWebConsolePlugin.java
URL: http://svn.apache.org/viewvc/felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/AbstractWebConsolePlugin.java?rev=741116&r1=741115&r2=741116&view=diff
==============================================================================
--- felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/AbstractWebConsolePlugin.java (original)
+++ felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/AbstractWebConsolePlugin.java Thu Feb  5 14:54:21 2009
@@ -300,4 +300,31 @@
         // no valid string parameter, fail
         return null;
     }
+
+    /**
+     * Utility method to handle relative redirects.
+     * Some app servers like web sphere handle relative redirects differently
+     * therefore we should make an absolute url before invoking send redirect.
+     */
+    protected void sendRedirect(final HttpServletRequest request,
+                                final HttpServletResponse response,
+                                String redirectUrl) throws IOException {
+        // check for relative url
+        if ( !redirectUrl.startsWith("/") ) {
+            String base = request.getContextPath() + request.getServletPath() + request.getPathInfo();
+            int i = base.lastIndexOf('/');
+            if (i > -1) {
+                base = base.substring(0, i);
+            } else {
+                i = base.indexOf(':');
+                base = (i > -1) ? base.substring(i + 1, base.length()) : "";
+            }
+            if (!base.startsWith("/")) {
+                base = '/' + base;
+            }
+            redirectUrl = base + '/' + redirectUrl;
+
+        }
+        response.sendRedirect(redirectUrl);
+    }
 }

Modified: felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/compendium/ConfigManager.java
URL: http://svn.apache.org/viewvc/felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/compendium/ConfigManager.java?rev=741116&r1=741115&r2=741116&view=diff
==============================================================================
--- felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/compendium/ConfigManager.java (original)
+++ felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/compendium/ConfigManager.java Thu Feb  5 14:54:21 2009
@@ -106,7 +106,7 @@
                     redirect += "?" + PID_FILTER + "=" + pidFilter;
                 }
 
-                response.sendRedirect( redirect );
+                this.sendRedirect(request, response, redirect);
             }
 
             return;