123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240 |
- 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()
- );
- }
-
|