Vadim Gritsenko skrev:
Grzegorz Kossakowski wrote:
Given that mime type (and other http header informations) are calculated during setup phase of service's pipeline setup phase it's guaranteed that this information can be properly determined without providing any content (in service call, it's POSTed one). Thus, it's enough to perform HTTP HEAD request that does not post any data and does not expect any data returned by the service.
It means that serializer will need to perform two requests:
1. HTTP HEAD which is meant only to collect all data required to set all http headers correctly (including Content-Type) 2. Actual HTTP POST that POSTs the data and gets transformed data returned by the service

The obvious drawback of this method is that we need to perform two requests. However, first one should be really cheap because pipeline needs only to setup components to gather all required meta information, no processing will be performed.

IIUC, generally this will not work. Suppose that you are calling this simple sitemap:

  <map:generate src="file.xml"/>
  <map:act type="authenticate">
    <map:act type="delete">
      <map:transform src="file.xsl"/>
      <map:serialize mime-type="foo/bar"/>
    </map:act>
    <map:serialize status-code="404"/>
  </map:act>
  <map:serialize status-code="401"/>

Building this pipeline twice will invoke delete action twice - and this would give two different results.
Exactly, an implicit, automatic HTTP HEAD handling would work for sitemap rules that are idempotent (i.e. calling any number of times gives the same result as calling once, which GET is supposed to be even if that not always is the case). But for any sitemap with actions or flowscripts it would typically not work.

One could have automatic HTTP HEAD handling anyway, and combining it with explicit sitemap (or flowscript rules) for HEAD handling in those cases where it is needed. But this of course leaves a lot of possibilities for mistakes for the users.

/Daniel

Reply via email to