Hi Andrew,
This is how you can request the value of output:media-type:
import org.basex.io.serial.SerializerOptions;
....
SerializerOptions sopts = proc.qc.serParams();
String type = sopts.get(SerializerOptions.MEDIA_TYPE);
As the media type can be empty, you can additionally take advantage of
the HTTPConnection.mediaType() function [1], which will always returns
a media type (provided that you have the basex-api classes embedded):
import org.basex.http.HTTPConnection;
import org.basex.io.serial.SerializerOptions;
....
SerializerOptions sopts = proc.qc.serParams();
response.setContentType(HTTPConnection.mediaType( sopts).toString());
Hope this helps,
Christian
[1] https://github.com/BaseXdb/basex/blob/master/basex-api/ src/main/java/org/basex/http/ HTTPConnection.java#L293
On Wed, Jul 26, 2017 at 10:55 PM, Andrew Tsui <a.tpw25@googlemail.com> wrote:
> Hi,
>
> Is it possible to get the value of "output:media-type" through
> QueryProcessor?
>
> I am currently trying to use BaseX as a view renderer for a Spring MVC
> application. The view is rendering fine using embedded BaseX. However, I
> can't figure out how to get the "output:media-type" value from the XQuery so
> that I can set the response header during runtime. I can set the
> content-type through the controller in Spring. But I would rather not have
> to do it in two separate places. Below is the relevant code snippet from the
> view renderer.
>
> try(QueryProcessor proc = new QueryProcessor(query, context)) {
> Iter iter = proc.iter();
>
> //response is HTTPServletResponse
> response.setContentType(????);
>
> try(Serializer ser = proc.getSerializer(response.getOutputStream())) {
> for(Item item; (item = iter.next()) != null;) {
> ser.serialize(item);
> }
> }
> }
>
> Any suggestion?
>
>
> Thanks
> Andrew