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) ; }