You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by cz...@apache.org on 2004/02/02 09:39:09 UTC
cvs commit: cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/source CopletSource.java
cziegeler 2004/02/02 00:39:09
Modified: src/blocks/portal/java/org/apache/cocoon/portal/source
CopletSource.java
Log:
Implement streaming of coplets
Revision Changes Path
1.5 +29 -2 cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/source/CopletSource.java
Index: CopletSource.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/source/CopletSource.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- CopletSource.java 20 Oct 2003 13:37:10 -0000 1.4
+++ CopletSource.java 2 Feb 2004 08:39:09 -0000 1.5
@@ -50,15 +50,23 @@
*/
package org.apache.cocoon.portal.source;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
+import org.apache.avalon.framework.component.ComponentException;
+import org.apache.avalon.framework.component.ComponentManager;
+import org.apache.avalon.framework.component.ComponentSelector;
import org.apache.avalon.framework.service.ServiceException;
import org.apache.avalon.framework.service.ServiceManager;
import org.apache.avalon.framework.service.ServiceSelector;
import org.apache.avalon.framework.service.Serviceable;
+import org.apache.cocoon.CascadingIOException;
+import org.apache.cocoon.components.CocoonComponentManager;
import org.apache.cocoon.portal.coplet.CopletInstanceData;
import org.apache.cocoon.portal.coplet.adapter.CopletAdapter;
+import org.apache.cocoon.serialization.Serializer;
import org.apache.excalibur.source.Source;
import org.apache.excalibur.source.SourceNotFoundException;
import org.apache.excalibur.source.SourceValidity;
@@ -105,7 +113,26 @@
* @see org.apache.excalibur.source.Source#getInputStream()
*/
public InputStream getInputStream() throws IOException, SourceNotFoundException {
- return null;
+ ComponentManager sitemapManager = CocoonComponentManager.getSitemapComponentManager();
+ ComponentSelector serializerSelector = null;
+ Serializer serializer = null;
+ try {
+ serializerSelector = (ComponentSelector) sitemapManager.lookup(Serializer.ROLE+"Selector");
+ serializer = (Serializer) serializerSelector.select("html");
+ ByteArrayOutputStream os = new ByteArrayOutputStream();
+ serializer.setOutputStream(os);
+ this.toSAX(serializer);
+ return new ByteArrayInputStream(os.toByteArray());
+ } catch (SAXException se) {
+ throw new CascadingIOException("Unable to stream content.", se);
+ } catch (ComponentException ce) {
+ throw new CascadingIOException("Unable to get components for serializing.", ce);
+ } finally {
+ if ( serializer != null ) {
+ serializerSelector.release(serializer);
+ }
+ sitemapManager.release(serializerSelector);
+ }
}
/**