+++ /dev/null
-Index: src/blocks/fop/java/org/apache/cocoon/serialization/FOPSerializer.java
-===================================================================
-RCS file: /home/cvspublic/xml-cocoon2/src/blocks/fop/java/org/apache/cocoon/serialization/FOPSerializer.java,v
-retrieving revision 1.4
-diff -u -r1.4 FOPSerializer.java
---- src/blocks/fop/java/org/apache/cocoon/serialization/FOPSerializer.java 21 Nov 2002 18:18:48 -0000 1.4
-+++ src/blocks/fop/java/org/apache/cocoon/serialization/FOPSerializer.java 5 Dec 2002 09:21:13 -0000
-@@ -63,18 +63,28 @@
- import org.apache.cocoon.components.url.URLFactory;
- import org.apache.cocoon.util.ClassUtils;
- import org.apache.cocoon.environment.URLFactorySourceResolver;
--import org.apache.cocoon.environment.Source;
-+import org.apache.cocoon.environment.Environment;
-+import org.apache.excalibur.source.Source;
-+import org.apache.excalibur.source.SourceResolver;
- import org.apache.excalibur.source.SourceValidity;
- import org.apache.excalibur.source.impl.validity.NOPValidity;
- import org.apache.fop.apps.Driver;
--import org.apache.fop.apps.Options;
--import org.apache.fop.messaging.MessageHandler;
- import org.apache.fop.render.Renderer;
--import org.apache.fop.configuration.ConfigurationParser;
-+import org.apache.fop.fo.FOUserAgent;
-+import org.apache.cocoon.components.RequestLifecycleComponent;
-+import org.apache.avalon.framework.component.Component;
-+import org.apache.cocoon.ProcessingException;
-+import org.xml.sax.SAXException;
-+import org.apache.cocoon.components.RequestLifecycleComponent;
-+
-+import java.io.IOException;
-+import java.util.Map;
-
- import java.io.OutputStream;
- import java.io.File;
- import java.io.Serializable;
-+import java.io.InputStream;
-+import java.net.URL;
- import java.net.MalformedURLException;
-
- /**
-@@ -84,7 +94,7 @@
- */
- public class FOPSerializer
- extends AbstractSerializer
--implements Composable, Configurable, CacheableProcessingComponent {
-+implements Composable, Configurable, CacheableProcessingComponent, RequestLifecycleComponent {
-
- /**
- * The Renderer Factory to use
-@@ -97,6 +107,11 @@
- protected Driver driver;
-
- /**
-+ * The current <code>FOUserAgent</code>.
-+ */
-+ protected FOUserAgent userAgent;
-+
-+ /**
- * The current <code>Renderer</code>.
- */
- protected Renderer renderer;
-@@ -145,24 +160,6 @@
- public void configure(Configuration conf) throws ConfigurationException {
-
- this.logger = getLogger().getChildLogger("fop");
-- MessageHandler.setScreenLogger(this.logger);
--
-- // FIXME: VG: Initialize static FOP configuration with defaults, only once.
-- // FOP has static config, but that's going to change in the near future.
-- // Then this code should be reviewed.
-- synchronized (FOPSerializer.class) {
-- if (!configured) {
-- try {
-- if (getLogger().isDebugEnabled()) {
-- getLogger().debug("Loading default configuration");
-- }
-- new Options();
-- } catch (Exception e) {
-- getLogger().error("Cannot load default configuration. Proceeding.", e);
-- }
-- configured = true;
-- }
-- }
-
- this.setContentLength = conf.getChild("set-content-length").getValueAsBoolean(true);
-
-@@ -180,28 +177,6 @@
- // New syntax: Element user-config contains URL
- configUrl = conf.getChild("user-config").getValue(null);
- }
-- if(configUrl != null) {
-- URLFactory urlFactory = null;
-- Source configSource = null;
-- try {
-- // FIXME: How to do without URLFactory but relative to context?
-- urlFactory = (URLFactory)manager.lookup(URLFactory.ROLE);
-- URLFactorySourceResolver urlResolver = new URLFactorySourceResolver(urlFactory, manager);
-- configSource = urlResolver.resolve(configUrl);
-- if (getLogger().isDebugEnabled()) {
-- getLogger().debug("Loading configuration from " + configSource.getSystemId());
-- }
-- configSource.toSAX(new ConfigurationParser());
-- } catch (Exception e) {
-- getLogger().warn("Cannot load configuration from " + configUrl);
-- throw new ConfigurationException("Cannot load configuration from " + configUrl, e);
-- } finally {
-- manager.release(urlFactory);
-- if (configSource != null) {
-- configSource.recycle();
-- }
-- }
-- }
-
- // Get the mime type.
- this.mimetype = conf.getAttribute("mime-type");
-@@ -233,6 +208,22 @@
- + "no renderer was specified in the sitemap configuration."
- );
- }
-+ this.renderer.setCreator("Cocoon");
-+
-+ userAgent = new FOUserAgent();
-+ userAgent.enableLogging(this.logger);
-+ //userAgent.setBaseURL(source.getSystemId());
-+
-+ // load the fop driver
-+ this.driver = new Driver();
-+ driver.enableLogging(this.logger);
-+ driver.setUserAgent(userAgent);
-+
-+ driver.setRenderer(this.renderer);
-+
-+ //driver.configure(conf);
-+ driver.initialize();
-+
- }
-
- /**
-@@ -242,27 +233,39 @@
- return mimetype;
- }
-
-+ public void setup(final org.apache.cocoon.environment.SourceResolver resolver, Map objectModel)
-+ throws ProcessingException, SAXException, IOException {
-+
-+ userAgent = new FOUserAgent() {
-+ public InputStream getStream(String uri) {
-+ try {
-+ Environment env = (Environment) resolver;
-+ org.apache.cocoon.environment.Source source = null;
-+ org.apache.cocoon.components.source.CocoonSourceFactory ccf;
-+ ccf = new org.apache.cocoon.components.source.CocoonSourceFactory(null, manager);
-+ ccf.enableLogging(logger);
-+ source = ccf.getSource(env, "/" + uri);
-+ getLogger().debug("Loading image from " + source.getSystemId());
-+ InputStream is = source.getInputStream();
-+ getLogger().debug("input stream: " + is + ":" + is.available());
-+ return is;
-+ } catch (Exception e) {
-+ getLogger().error("Cannot load source", e);
-+ }
-+ return null;
-+ }
-+ };
-+ userAgent.enableLogging(this.logger);
-+ //userAgent.setBaseURL(source.getSystemId());
-+
-+ driver.setUserAgent(userAgent);
-+ }
-+
- /**
- * Create the FOP driver
- * Set the <code>OutputStream</code> where the XML should be serialized.
- */
- public void setOutputStream(OutputStream out) {
-- // load the fop driver
-- this.driver = new Driver();
-- this.driver.setLogger(this.logger);
-- if (this.rendererName == null) {
-- this.renderer = factory.createRenderer(mimetype);
-- } else {
-- try {
-- this.renderer = (Renderer)ClassUtils.newInstance(this.rendererName);
-- } catch (Exception e) {
-- if (getLogger().isWarnEnabled()) {
-- getLogger().warn("Cannot load class " + this.rendererName, e);
-- }
-- throw new CascadingRuntimeException("Cannot load class " + this.rendererName, e);
-- }
-- }
-- this.driver.setRenderer(this.renderer);
- this.driver.setOutputStream(out);
- setContentHandler(this.driver.getContentHandler());
- }
-@@ -296,8 +299,7 @@
- */
- public void recycle() {
- super.recycle();
-- this.driver = null;
-- this.renderer = null;
-+ this.driver.reset();
- }
-
- /**
-@@ -307,3 +309,4 @@
- return this.setContentLength;
- }
- }
-+
-Index: src/java/org/apache/cocoon/components/pipeline/AbstractProcessingPipeline.java
-===================================================================
-RCS file: /home/cvspublic/xml-cocoon2/src/java/org/apache/cocoon/components/pipeline/AbstractProcessingPipeline.java,v
-retrieving revision 1.24
-diff -u -r1.24 AbstractProcessingPipeline.java
---- src/java/org/apache/cocoon/components/pipeline/AbstractProcessingPipeline.java 11 Oct 2002 08:36:30 -0000 1.24
-+++ src/java/org/apache/cocoon/components/pipeline/AbstractProcessingPipeline.java 5 Dec 2002 09:21:13 -0000
-@@ -62,6 +62,7 @@
- import org.apache.cocoon.ConnectionResetException;
- import org.apache.cocoon.ProcessingException;
- import org.apache.cocoon.components.CocoonComponentManager;
-+import org.apache.cocoon.components.RequestLifecycleComponent;
- import org.apache.cocoon.components.treeprocessor.ProcessingNode;
- import org.apache.cocoon.environment.Environment;
- import org.apache.cocoon.environment.ObjectModelHelper;
-@@ -392,6 +393,15 @@
- environment.getObjectModel(),
- (String)transformerSourceItt.next(),
- (Parameters)transformerParamItt.next()
-+ );
-+ }
-+
-+ // WARNING: quick hack
-+ // setup the serializer
-+ if(this.serializer instanceof RequestLifecycleComponent) {
-+ ((RequestLifecycleComponent)this.serializer).setup(
-+ environment,
-+ environment.getObjectModel()
- );
- }
-