From: Ben B. <be...@gr...> - 2008-05-28 02:15:22
Attachments:
smime.p7s
|
I think I'm using util:declare-option() properly, but the output type still seems to come across as XML instead of text. This works: declare option exist:serialize "method=text media-type=applicaiton/ json omit-xml-declaration=yes"; But this does not: util:declare-option("exist:serialize", "method=text media- type=applicaiton/json omit-xml-declaration=yes"), ...more data... What am I missing? Thanks, Ben |
From: Ben B. <be...@gr...> - 2008-05-28 02:35:01
Attachments:
smime.p7s
|
On May 27, 2008, at 7:15 PM, Ben Bangert wrote: > I think I'm using util:declare-option() properly, but the output > type still seems to come across as XML instead of text. This works: > > declare option exist:serialize "method=text media-type=applicaiton/ > json omit-xml-declaration=yes"; > > But this does not: > util:declare-option("exist:serialize", "method=text media- > type=applicaiton/json omit-xml-declaration=yes"), > ...more data... Even weird, this only sort of works. If I hit refresh, it does come down as text properly. I have a line like this at the bottom of the stored XQuery I'm hitting that looks like this: return if ($method = 'json') then (util:declare-option("exist:serialize", "method=text media- type=applicaiton/json omit-xml-declaration=yes"), json:xml-to-json($data) ) else $data Oddly, when I first save it, and hit the URL, I get XML. When I add method='json' to it, then I get JSON from then on, and can't get XML anymore. I assume there's some sort of caching going on here.... how do I disable it? Thanks, Ben |
From: Ben B. <be...@gr...> - 2008-05-28 02:38:06
Attachments:
smime.p7s
|
On May 27, 2008, at 7:34 PM, Ben Bangert wrote: > Oddly, when I first save it, and hit the URL, I get XML. When I add > method='json' to it, then I get JSON from then on, and can't get XML > anymore. I assume there's some sort of caching going on here.... how > do I disable it? Sorry for the noise, eXist was working fine, its all the browsers that are doing caching of things. Using wget revealed that things were working just fine. It'd prolly be useful to set anti-caching headers to stop the browser from doing this. Cheers, Ben |
From: Ben B. <be...@gr...> - 2008-05-28 02:55:54
Attachments:
smime.p7s
|
On May 27, 2008, at 7:37 PM, Ben Bangert wrote: > Sorry for the noise, eXist was working fine, its all the browsers > that are doing caching of things. Using wget revealed that things > were working just fine. It'd prolly be useful to set anti-caching > headers to stop the browser from doing this. I'm going to be an entire thread here by myself at this point. Anyways, its not the browser after all. There's something about the declare options which seems to persist in some fashion. Here's my stored xquery I'm hitting via REST: xquery version "1.0"; import module namespace json="http://www.json.org" at "json.xq"; import module namespace request="http://exist-db.org/xquery/request"; import module namespace response="http://exist-db.org/xquery/response"; import module namespace util="http://exist-db.org/xquery/util"; let $method := request:get-parameter('mode', 'xml') let $anticache := (response:set-header('Cache-Control', 'no-cache'), response:set-header('Pragma', 'no-cache')) let $data := <cases> { for $case in collection('/db/solon')/Case return <case><title>{ $case/Title }</title></case> } </cases> return if ($method = 'json') then (util:declare-option("exist:serialize", "method=text media- type=applicaiton/json omit-xml-declaration=yes"), json:xml-to-json($data) ) else $data Now, the first request gets the XML back as it should. Then I add ? mode=json, and it gets JSON (in wget, in the web browser, it sees an XML Parsing error, where apparently the JSON is output, but the serialization is NOT set). Hitting refresh in the browser gets proper JSON, and the wget gets proper JSON. I then remove the ?mode=json query param, and get a plain text serialized set of data (so the last declare option is STILL in effect), but its the JSON output. So that isn't proper at all. Is this a bug where declare-option is sticking around between requests? Cheers, Ben |
From: Adam R. <ad...@ex...> - 2008-05-28 08:32:08
|
Just to confirm your suspicions, I had noticed something similar myself during development but had not had any time to investigate in any detail. Perhaps you could file a bug on our SourceForge page, with exact simple steps for reproducing it? 2008/5/28 Ben Bangert <be...@gr...>: > On May 27, 2008, at 7:37 PM, Ben Bangert wrote: > >> Sorry for the noise, eXist was working fine, its all the browsers that are >> doing caching of things. Using wget revealed that things were working just >> fine. It'd prolly be useful to set anti-caching headers to stop the browser >> from doing this. > > I'm going to be an entire thread here by myself at this point. Anyways, its > not the browser after all. There's something about the declare options which > seems to persist in some fashion. Here's my stored xquery I'm hitting via > REST: > > xquery version "1.0"; > import module namespace json="http://www.json.org" at "json.xq"; > import module namespace request="http://exist-db.org/xquery/request"; > import module namespace response="http://exist-db.org/xquery/response"; > import module namespace util="http://exist-db.org/xquery/util"; > > let $method := request:get-parameter('mode', 'xml') > let $anticache := (response:set-header('Cache-Control', 'no-cache'), > response:set-header('Pragma', 'no-cache')) > let $data := > <cases> > { for $case in collection('/db/solon')/Case > return <case><title>{ $case/Title }</title></case> > } > </cases> > return > if ($method = 'json') then > (util:declare-option("exist:serialize", "method=text > media-type=applicaiton/json omit-xml-declaration=yes"), > json:xml-to-json($data) > ) > else > $data > > Now, the first request gets the XML back as it should. Then I add > ?mode=json, and it gets JSON (in wget, in the web browser, it sees an XML > Parsing error, where apparently the JSON is output, but the serialization is > NOT set). Hitting refresh in the browser gets proper JSON, and the wget gets > proper JSON. I then remove the ?mode=json query param, and get a plain text > serialized set of data (so the last declare option is STILL in effect), but > its the JSON output. So that isn't proper at all. > > Is this a bug where declare-option is sticking around between requests? > > Cheers, > Ben > ------------------------------------------------------------------------- > This SF.net email is sponsored by: Microsoft > Defy all challenges. Microsoft(R) Visual Studio 2008. > http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ > _______________________________________________ > Exist-open mailing list > Exi...@li... > https://lists.sourceforge.net/lists/listinfo/exist-open > > -- Adam Retter eXist Developer { England } ad...@ex... irc://irc.freenode.net/existdb |
From: Ben B. <be...@gr...> - 2008-05-28 16:46:17
Attachments:
smime.p7s
|
On May 28, 2008, at 1:32 AM, Adam Retter wrote: > Just to confirm your suspicions, I had noticed something similar > myself during development but had not had any time to investigate in > any detail. Perhaps you could file a bug on our SourceForge page, with > exact simple steps for reproducing it? Sure, I've added it here with full details, along with the full output including headers from eXist for each request: http://sourceforge.net/tracker/index.php?func=detail&aid=1976930&group_id=17691&atid=117691 - Ben |