Updated Branches: refs/heads/develop aa5abfe68 -> 74c2c7df4
MARMOTTA-382: added Content-Disposition header to SparqlWebService#buildQueryResponse (maybe the basename for the file should be improved) Project: http://git-wip-us.apache.org/repos/asf/marmotta/repo Commit: http://git-wip-us.apache.org/repos/asf/marmotta/commit/74c2c7df Tree: http://git-wip-us.apache.org/repos/asf/marmotta/tree/74c2c7df Diff: http://git-wip-us.apache.org/repos/asf/marmotta/diff/74c2c7df Branch: refs/heads/develop Commit: 74c2c7df4085805c6db292b3893811b83be0c04b Parents: aa5abfe Author: Jakob Frank <[email protected]> Authored: Thu Nov 28 17:14:36 2013 +0100 Committer: Jakob Frank <[email protected]> Committed: Thu Nov 28 17:17:23 2013 +0100 ---------------------------------------------------------------------- .../sparql/webservices/SparqlWebService.java | 28 +++++++++----------- 1 file changed, 13 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/marmotta/blob/74c2c7df/platform/marmotta-sparql/src/main/java/org/apache/marmotta/platform/sparql/webservices/SparqlWebService.java ---------------------------------------------------------------------- diff --git a/platform/marmotta-sparql/src/main/java/org/apache/marmotta/platform/sparql/webservices/SparqlWebService.java b/platform/marmotta-sparql/src/main/java/org/apache/marmotta/platform/sparql/webservices/SparqlWebService.java index 54181d9..974ef7f 100644 --- a/platform/marmotta-sparql/src/main/java/org/apache/marmotta/platform/sparql/webservices/SparqlWebService.java +++ b/platform/marmotta-sparql/src/main/java/org/apache/marmotta/platform/sparql/webservices/SparqlWebService.java @@ -1,4 +1,4 @@ -/** +/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information @@ -23,10 +23,8 @@ import java.io.UnsupportedEncodingException; import java.net.URI; import java.net.URISyntaxException; import java.net.URLDecoder; -import java.util.Collection; import java.util.HashMap; import java.util.HashSet; -import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -46,6 +44,7 @@ import javax.ws.rs.QueryParam; import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.Context; import javax.ws.rs.core.Response; +import javax.ws.rs.core.Response.ResponseBuilder; import javax.ws.rs.core.StreamingOutput; import javax.ws.rs.core.UriBuilder; @@ -60,21 +59,13 @@ import org.apache.marmotta.platform.core.exception.MarmottaException; import org.apache.marmotta.platform.core.util.WebServiceUtil; import org.apache.marmotta.platform.sparql.api.sparql.QueryType; import org.apache.marmotta.platform.sparql.api.sparql.SparqlService; -import org.apache.marmotta.platform.sparql.services.sparql.SparqlWritersHelper; import org.openrdf.query.MalformedQueryException; -import org.openrdf.query.QueryEvaluationException; import org.openrdf.query.QueryLanguage; import org.openrdf.query.UpdateExecutionException; -import org.openrdf.query.resultio.BooleanQueryResultFormat; -import org.openrdf.query.resultio.BooleanQueryResultWriter; import org.openrdf.query.resultio.BooleanQueryResultWriterRegistry; -import org.openrdf.query.resultio.QueryResultFormat; import org.openrdf.query.resultio.QueryResultIO; -import org.openrdf.query.resultio.QueryResultWriter; import org.openrdf.query.resultio.TupleQueryResultFormat; -import org.openrdf.query.resultio.TupleQueryResultWriter; import org.openrdf.query.resultio.TupleQueryResultWriterRegistry; -import org.openrdf.rio.RDFParserRegistry; import org.slf4j.Logger; import com.google.common.collect.Lists; @@ -91,15 +82,16 @@ import com.google.common.io.CharStreams; */ @ApplicationScoped @Path("/" + SparqlWebService.PATH) -public class - SparqlWebService { +public class SparqlWebService { public static final String PATH = "sparql"; public static final String SELECT = "/select"; public static final String UPDATE = "/update"; public static final String SNORQL = "/snorql"; - private static final Map<String,String> outputMapper = new HashMap<String,String>(){{ + private static final Map<String,String> outputMapper = new HashMap<String,String>(){ + private static final long serialVersionUID = 1L; + { put("json","application/sparql-results+json"); put("xml","application/sparql-results+xml"); put("tabs","text/tab-separated-values"); @@ -497,7 +489,13 @@ public class } } }; - return Response.ok().entity(entity).header("Content-Type", format.getMime()).build(); + + final ResponseBuilder responseBuilder = Response.ok().entity(entity).header("Content-Type", format.getMime()); + final TupleQueryResultFormat fmt = QueryResultIO.getWriterFormatForMIMEType(format.getMime()); + if (fmt != null) { + responseBuilder.header("Content-Disposition", String.format("attachment; filename=\"%s.%s\"", queryType.toString().toLowerCase(), fmt.getDefaultFileExtension())); + } + return responseBuilder.build(); } @Deprecated
