You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by fm...@apache.org on 2010/04/08 11:38:17 UTC

svn commit: r931850 - /felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/servlet/OsgiManager.java

Author: fmeschbe
Date: Thu Apr  8 09:38:16 2010
New Revision: 931850

URL: http://svn.apache.org/viewvc?rev=931850&view=rev
Log:
FELIX-2263 Ensure response is committed when the OsgiManager.service method terminates

Modified:
    felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/servlet/OsgiManager.java

Modified: felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/servlet/OsgiManager.java
URL: http://svn.apache.org/viewvc/felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/servlet/OsgiManager.java?rev=931850&r1=931849&r2=931850&view=diff
==============================================================================
--- felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/servlet/OsgiManager.java (original)
+++ felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/servlet/OsgiManager.java Thu Apr  8 09:38:16 2010
@@ -302,12 +302,20 @@ public class OsgiManager extends Generic
     }
 
 
-    public void service( ServletRequest req, ServletResponse res ) throws ServletException, IOException
+    public void service( final ServletRequest req, final ServletResponse res ) throws ServletException, IOException
     {
+        // don't really expect to be called within a non-HTTP environment
+        service( ( HttpServletRequest ) req, ( HttpServletResponse ) res );
+
+        // ensure response has been sent back and response is committed
+        // (we are authorative for our URL space and no other servlet should interfere)
+        res.flushBuffer();
+    }
 
-        HttpServletRequest request = ( HttpServletRequest ) req;
-        HttpServletResponse response = ( HttpServletResponse ) res;
 
+    private void service( final HttpServletRequest request, HttpServletResponse response ) throws ServletException,
+        IOException
+    {
         // check whether we are not at .../{webManagerRoot}
         final String pathInfo = request.getPathInfo();
         if ( pathInfo == null || pathInfo.equals( "/" ) )
@@ -344,14 +352,14 @@ public class OsgiManager extends Generic
             final Map labelMap = holder.getLocalizedLabelMap( resourceBundleManager, request.getLocale() );
 
             // the official request attributes
-            req.setAttribute( WebConsoleConstants.ATTR_LABEL_MAP, labelMap );
-            req.setAttribute( WebConsoleConstants.ATTR_APP_ROOT, request.getContextPath() + request.getServletPath() );
-            req.setAttribute( WebConsoleConstants.ATTR_PLUGIN_ROOT, request.getContextPath() + request.getServletPath()
+            request.setAttribute( WebConsoleConstants.ATTR_LABEL_MAP, labelMap );
+            request.setAttribute( WebConsoleConstants.ATTR_APP_ROOT, request.getContextPath() + request.getServletPath() );
+            request.setAttribute( WebConsoleConstants.ATTR_PLUGIN_ROOT, request.getContextPath() + request.getServletPath()
                 + '/' + label );
 
             // deprecated request attributes
-            req.setAttribute( ATTR_LABEL_MAP_OLD, labelMap );
-            req.setAttribute( ATTR_APP_ROOT_OLD, request.getContextPath() + request.getServletPath() );
+            request.setAttribute( ATTR_LABEL_MAP_OLD, labelMap );
+            request.setAttribute( ATTR_APP_ROOT_OLD, request.getContextPath() + request.getServletPath() );
 
             // wrap the response for localization and template variable replacement
             response = wrapResponse( request, response, plugin );
@@ -361,9 +369,7 @@ public class OsgiManager extends Generic
         else
         {
             response.sendError( HttpServletResponse.SC_NOT_FOUND );
-            return;
         }
-
     }