You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by gk...@apache.org on 2007/05/17 18:58:12 UTC

svn commit: r539011 - /cocoon/trunk/core/cocoon-servlet-service/cocoon-servlet-service-components/src/main/java/org/apache/cocoon/servletservice/postable/components/ServletServiceSerializer.java

Author: gkossakowski
Date: Thu May 17 09:58:11 2007
New Revision: 539011

URL: http://svn.apache.org/viewvc?view=rev&rev=539011
Log:
Implemented proper handling of mime type in serializer.
Thanks to Daniel Fragerstrom for giving hints for this, see: http://article.gmane.org/gmane.text.xml.cocoon.devel/73261

Modified:
    cocoon/trunk/core/cocoon-servlet-service/cocoon-servlet-service-components/src/main/java/org/apache/cocoon/servletservice/postable/components/ServletServiceSerializer.java

Modified: cocoon/trunk/core/cocoon-servlet-service/cocoon-servlet-service-components/src/main/java/org/apache/cocoon/servletservice/postable/components/ServletServiceSerializer.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-servlet-service/cocoon-servlet-service-components/src/main/java/org/apache/cocoon/servletservice/postable/components/ServletServiceSerializer.java?view=diff&rev=539011&r1=539010&r2=539011
==============================================================================
--- cocoon/trunk/core/cocoon-servlet-service/cocoon-servlet-service-components/src/main/java/org/apache/cocoon/servletservice/postable/components/ServletServiceSerializer.java (original)
+++ cocoon/trunk/core/cocoon-servlet-service/cocoon-servlet-service-components/src/main/java/org/apache/cocoon/servletservice/postable/components/ServletServiceSerializer.java Thu May 17 09:58:11 2007
@@ -24,6 +24,8 @@
 import org.apache.avalon.framework.parameters.Parameters;
 import org.apache.cocoon.ProcessingException;
 import org.apache.cocoon.components.source.util.SourceUtil;
+import org.apache.cocoon.environment.ObjectModelHelper;
+import org.apache.cocoon.environment.Response;
 import org.apache.cocoon.environment.SourceResolver;
 import org.apache.cocoon.serialization.AbstractSerializer;
 import org.apache.cocoon.servletservice.postable.PostableSource;
@@ -42,6 +44,7 @@
 	private Log logger = LogFactory.getLog(getClass());
 
 	private PostableSource servletSource;
+	private Response response;
 
 	private SaxBuffer saxBuffer;
 	
@@ -71,6 +74,18 @@
 
 		saxBuffer = new SaxBuffer();
 		setConsumer(saxBuffer);
+		
+		response = ObjectModelHelper.getResponse(objectModel);
+	}
+	
+	/**
+	 * This method returns dummy mime type to satisfy pipeline's requirement to have mime type determined at setup phase.
+	 * In this serializer case it's not possible to satisfy this requirement so dummy value is returned and real is set in the 
+	 * method {@link #endDocument()}.
+	 * @see http://article.gmane.org/gmane.text.xml.cocoon.devel/73261 for post explaining current (hacky) solution
+	 */
+	public String getMimeType() {
+		return "application/dummy-mime-type";
 	}
 
 	public void endDocument() throws SAXException {
@@ -88,6 +103,9 @@
 			throw new SAXException("Exception occured while writing to the output stream of source '" + servletSource.getURI() + "'", e);
 		}
 		try {
+			//here real mime type is set, see getMimeType() method's comment
+			response.setHeader("Content-Type", servletSource.getMimeType());
+			
 			IOUtils.copy(servletSource.getInputStream(), super.output);
 		} catch (Exception e) {
 			throw new SAXException("Exception occured while copying response from the service to the output stream", e);