Grzegorz Kossakowski skrev:
Daniel Fagerstrom pisze:
Grzegorz Kossakowski skrev:
Daniel Fagerstrom pisze:

I wonder how to achieve this less restrictive assumption. In AbstractProcessingPipeline#setMimeTypeForSerializer() there is:
if (mimeType != null) {
  environment.setContentType (mimeType);
} else {
  // No mimeType available
  String message = "Unable to determine MIME type for " +
    environment.getURIPrefix() + "/" + environment.getURI();
  throw new ProcessingException(message);
}

We have to move this checking somewhere further in the processing but I have no good idea where exactly. Ideas?

I don't see any possibility to do this in the pipeline. My idea was to do the mime type setting (on the http response object) in the endDocument method of the ServletServiceSerializer. It could be done after the:

IOUtils.copy(new StringReader(serializedXML), servletSource.getOutputStream());

but before:

IOUtils.copy(servletSource.getInputStream(), super.output);

The http response object is available from the object model.

I understand your intention. I was asking what we should do with the checking above? Surely, I can remove throwing exception but this way we lose check if mime type was set. I was asking if we can move it somewhere else.

Don't think so. After the check the event generation is started, it seem complicated to create an APO for doing e.g. some mime type check callback.

If not, do you feel that removing that check is a good idea?

No.

Couldn't we just give the servlet service serializer e.g. text/xml as default mime type. That will make the check happy. Then we just overwrite the default in the serializer. OK, it is a hack, but it doesn't seem that easy to find a clean solution for this.

See http://svn.apache.org/repos/asf/cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-components/src/main/resources/META-INF/cocoon/spring/cocoon-core-serializers.xml for how you set mime types on serializers.

/Daniel

Reply via email to