Skip to content

Commit

Permalink
fixup! GH-4968: server-spring - Close query result on pre-render exce…
Browse files Browse the repository at this point in the history
…ption
  • Loading branch information
vtermanis committed May 16, 2024
1 parent 0fe681c commit fb01e2a
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 47 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ protected void renderInternal(Map model, HttpServletRequest request, HttpServlet
if (!headersOnly) {
try (OutputStream out = response.getOutputStream()) {
BooleanQueryResultWriter qrWriter = brWriterFactory.getWriter(out);
boolean value = ((BooleanQueryResultWrapper) model.get(QUERY_RESULT_KEY)).get();
boolean value = (Boolean) model.get(QUERY_RESULT_KEY);
qrWriter.handleBoolean(value);
} catch (QueryResultHandlerException e) {
if (e.getCause() != null && e.getCause() instanceof IOException) {
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ public ModelAndView handleQueryRequest(HttpServletRequest request, RequestMethod
HttpServletResponse response) throws HTTPException, IOException {

RepositoryConnection repositoryCon = null;
AutoCloseable queryResponse = null;
Object queryResponse = null;

try {
Repository repository = repositoryResolver.getRepository(request);
Expand Down Expand Up @@ -115,22 +115,26 @@ public ModelAndView handleQueryRequest(HttpServletRequest request, RequestMethod
// only close the response & connection when an exception occurs. Otherwise, the QueryResultView will take
// care of closing it.
try {
if (queryResponse != null) {
queryResponse.close();
if (queryResponse instanceof AutoCloseable) {
((AutoCloseable)queryResponse).close();
}
} catch (Exception qre) {
logger.warn("Query response closing error", qre);
} finally {
if (repositoryCon != null) {
repositoryCon.close();
try {
if (repositoryCon != null) {
repositoryCon.close();
}
} catch (Exception qre) {
logger.warn("Connection closing error", qre);
}
}
throw e;
}

}

abstract protected AutoCloseable evaluateQuery(Query query, long limit, long offset, boolean distinct)
abstract protected Object evaluateQuery(Query query, long limit, long offset, boolean distinct)
throws ClientHTTPException;

abstract protected View getViewFor(Query query);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@
import org.eclipse.rdf4j.http.server.HTTPException;
import org.eclipse.rdf4j.http.server.ProtocolUtil;
import org.eclipse.rdf4j.http.server.repository.BooleanQueryResultView;
import org.eclipse.rdf4j.http.server.repository.BooleanQueryResultWrapper;
import org.eclipse.rdf4j.http.server.repository.GraphQueryResultView;
import org.eclipse.rdf4j.http.server.repository.TupleQueryResultView;
import org.eclipse.rdf4j.http.server.repository.resolver.RepositoryResolver;
Expand Down Expand Up @@ -77,8 +76,7 @@ public DefaultQueryRequestHandler(RepositoryResolver repositoryResolver) {
}

@Override
protected AutoCloseable evaluateQuery(Query query, long limit, long offset, boolean distinct)
throws ClientHTTPException {
protected Object evaluateQuery(Query query, long limit, long offset, boolean distinct) throws ClientHTTPException {
if (query instanceof TupleQuery) {
return evaluateQuery((TupleQuery) query, limit, offset, distinct);
} else if (query instanceof GraphQuery) {
Expand All @@ -91,8 +89,8 @@ protected AutoCloseable evaluateQuery(Query query, long limit, long offset, bool
}
}

protected BooleanQueryResultWrapper evaluateQuery(BooleanQuery query, long limit, long offset, boolean distinct) {
return new BooleanQueryResultWrapper(query.evaluate());
protected Boolean evaluateQuery(BooleanQuery query, long limit, long offset, boolean distinct) {
return query.evaluate();
}

protected GraphQueryResult evaluateQuery(GraphQuery query, long limit, long offset, boolean distinct) {
Expand Down

0 comments on commit fb01e2a

Please sign in to comment.