From be11b190bcc48bd5d54c923a8dbc2f52a0de0012 Mon Sep 17 00:00:00 2001 From: Jim Blake Date: Sat, 7 Jun 2014 13:47:34 -0400 Subject: [PATCH] VIVO-719 Don't use streaming unless required. At some point we need to find out who is not closing connections. --- .../rdfservice/impl/jena/RDFServiceJena.java | 37 +++++++++++++++++-- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/rdfservice/impl/jena/RDFServiceJena.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/rdfservice/impl/jena/RDFServiceJena.java index 43c6a9bb0..c704dd230 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/rdfservice/impl/jena/RDFServiceJena.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/rdfservice/impl/jena/RDFServiceJena.java @@ -478,12 +478,41 @@ public abstract class RDFServiceJena extends RDFServiceImpl implements RDFServic @Override public InputStream sparqlSelectQuery(String query, ResultFormat resultFormat) throws RDFServiceException { - ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - sparqlSelectQuery(query, resultFormat, outputStream); - return new ByteArrayInputStream(outputStream.toByteArray()); + DatasetWrapper dw = getDatasetWrapper(); + try { + Dataset d = dw.getDataset(); + Query q = createQuery(query); + QueryExecution qe = createQueryExecution(query, q, d); + try { + ResultSet resultSet = qe.execSelect(); + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + switch (resultFormat) { + case CSV: + ResultSetFormatter.outputAsCSV(outputStream,resultSet); + break; + case TEXT: + ResultSetFormatter.out(outputStream,resultSet); + break; + case JSON: + ResultSetFormatter.outputAsJSON(outputStream, resultSet); + break; + case XML: + ResultSetFormatter.outputAsXML(outputStream, resultSet); + break; + default: + throw new RDFServiceException("unrecognized result format"); + } + InputStream result = new ByteArrayInputStream(outputStream.toByteArray()); + return result; + } finally { + qe.close(); + } + } finally { + dw.close(); + } } - @Override + @Override public boolean sparqlAskQuery(String query) throws RDFServiceException { DatasetWrapper dw = getDatasetWrapper(); try {