On 18.05.2007 16:15, Daniel Fagerstrom wrote:

Right, but how about following situation when we have:
<map:generate src="somefile">
  <map:parameter name="service" value="servlet:B:/service/some"/>
</map:generate>

Original request body cannot be passed to the called service untouched because we also have to pass data of somefile in request body. I was thinking about putting "somefile" data as another part but this surely requires parsing original parts, adding one more and serializing everything back to the request body of service call request.

When calling the servlet service source you are first creating a new request and response object. The "request body" of the request object is represented by the getInputStream method of the request object. For the case above the request object created for the servlet service call will contain the input stream from the FileSource that "somefile" is resolved to.

...

I think that the main thing to keep in mind is that when you are calling as servlet service, you always build a new request and response object that you use for the call.

Now, these new request and response object certainly can refer back to the original request and response objects for reusing some info. But the called servlet service should have *no* direct access to the original request and response objects of the caller.

Grek's idea was about passing a combination of original request data AND additional file data. That's what you can't handle with your notation:

<map:generate src="<requestData>">
  <map:parameter name="service" value="servlet:B:/service/some"/>
</map:generate>

Where to add the need for <fileData>?

But I think the same applies to the other notation since you have only one parameter "postData". In both cases you might need to merge the data in another cocoon:/ pipeline (or are they completely discouraged/removed?).

Joerg

Reply via email to