cziegeler 01/09/19 02:40:39
Modified: src/org/apache/cocoon/serialization FOPSerializer.java
Log:
Create a new renderer object for each invocation otherwise the pdf output is screwed
up
Revision Changes Path
1.7 +21 -5
xml-cocoon2/src/org/apache/cocoon/serialization/FOPSerializer.java
Index: FOPSerializer.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/serialization/FOPSerializer.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- FOPSerializer.java 2001/08/21 11:10:20 1.6
+++ FOPSerializer.java 2001/09/19 09:40:39 1.7
@@ -44,19 +44,24 @@
/**
* The current <code>Renderer</code>.
*/
- Renderer renderer = null;
+ protected Renderer renderer;
/**
* The Renderer Factory to use
*/
- RendererFactory factory =
ExtendableRendererFactory.getRendererFactoryImplementation();
+ protected static RendererFactory factory =
ExtendableRendererFactory.getRendererFactoryImplementation();
/**
* The current <code>mime-type</code>.
*/
- private String mimetype = null;
+ protected String mimetype;
/**
+ * The renderer name if configured
+ */
+ protected String rendererName;
+
+ /**
* Set the configurations for this serializer.
*/
public void configure(Configuration conf)
@@ -106,7 +111,7 @@
for (int i = 0; i < parameters.length; i++) {
String name = parameters[i].getAttribute("name");
if ("renderer".equals(name)) {
- String rendererName = parameters[i].getAttribute("value");
+ this.rendererName = parameters[i].getAttribute("value");
try {
this.renderer = (Renderer)ClassUtils.newInstance(rendererName);
} catch (Exception ex) {
@@ -142,8 +147,18 @@
if(driver instanceof Loggable) {
driver.setLogger(getLogger().getChildLogger("fop"));
+ }
+ if (this.rendererName == null) {
+ this.renderer = factory.createRenderer(mimetype);
+ } else {
+ try {
+ this.renderer = (Renderer)ClassUtils.newInstance(rendererName);
+ } catch (Exception ex) {
+ getLogger().error("Cannot load class " + rendererName, ex);
+ throw new RuntimeException("Cannot load class " + rendererName);
+ }
}
- driver.setRenderer(renderer);
+ driver.setRenderer(this.renderer);
driver.setOutputStream(out);
setContentHandler(driver.getContentHandler());
}
@@ -179,6 +194,7 @@
super.recycle();
options = null;
driver = null;
+ this.renderer = null;
}
/**
----------------------------------------------------------------------
In case of troubles, e-mail: [EMAIL PROTECTED]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]