You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2012/07/02 12:12:50 UTC

svn commit: r1356160 - /jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java

Author: andy
Date: Mon Jul  2 10:12:49 2012
New Revision: 1356160

URL: http://svn.apache.org/viewvc?rev=1356160&view=rev
Log:
Ensure HTTP response flushBuffer only called after everythign is done because Jetty closes a gzip stream on flushBuffer.

Modified:
    jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java

Modified: jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java?rev=1356160&r1=1356159&r2=1356160&view=diff
==============================================================================
--- jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java (original)
+++ jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java Mon Jul  2 10:12:49 2012
@@ -93,8 +93,7 @@ public class ResponseResultSet
         if ( serializationType.equals(WebContent.contentTypeResultsXML) )
         {
             try {
-                output(contentType, null, new OutputContent()
-                {
+                sparqlXMLOutput(contentType, new OutputContent(){
                     @Override
                     public void output(ServletOutputStream out)
                     {
@@ -188,6 +187,7 @@ public class ResponseResultSet
                     } ;
                 }
                 textOutput(contentType, output, request, response) ;
+                response.flushBuffer() ;
             }
 //            catch (IOException ioEx)
 //            {
@@ -214,7 +214,8 @@ public class ResponseResultSet
             ServletOutputStream out = httpResponse.getOutputStream() ;
             proc.output(out) ;
             out.flush() ;
-            httpResponse.flushBuffer();
+            // Do not call httpResponse.flushBuffer(); here - Jetty closes the stream if it is a gzip stream
+            // then the JSON callback closing deatls can't be added. 
         } catch (IOException ex) { SPARQL_ServletBase.errorOccurred(ex) ; }
     }
 
@@ -246,6 +247,15 @@ public class ResponseResultSet
             || contentType.equals(WebContent.contentTypeXML) ; 
     }
 
+    private static void sparqlXMLOutput(String contentType, OutputContent proc,
+                                   HttpServletRequest httpRequest, HttpServletResponse httpResponse)
+    {
+        try {
+            output(contentType, null, proc, httpRequest, httpResponse) ;
+            httpResponse.flushBuffer() ;
+        } catch (IOException ex) { SPARQL_ServletBase.errorOccurred(ex) ; }
+    }
+    
     private static void jsonOutput(String contentType, OutputContent proc,
                                    HttpServletRequest httpRequest, HttpServletResponse httpResponse)
     {
@@ -263,11 +273,7 @@ public class ResponseResultSet
             output(contentType, WebContent.charsetUTF8, proc, httpRequest, httpResponse) ;
 
             if ( callback != null )
-            {
-                out.print(")") ;
-                out.println() ;
-            }
-            out.flush() ;
+                out.println(")") ;
             httpResponse.flushBuffer();
 
         } catch (IOException ex) { SPARQL_ServletBase.errorOccurred(ex) ; }