cziegeler 01/09/19 02:40:21
Modified: src/org/apache/cocoon/serialization Tag: cocoon_20_branch
FOPSerializer.java
Log:
Create a new renderer object for each invocation otherwise the pdf output is screwed
up
Revision Changes Path
No revision
No revision
1.1.1.1.2.4 +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.1.1.1.2.3
retrieving revision 1.1.1.1.2.4
diff -u -r1.1.1.1.2.3 -r1.1.1.1.2.4
--- FOPSerializer.java 2001/09/05 22:18:14 1.1.1.1.2.3
+++ FOPSerializer.java 2001/09/19 09:40:21 1.1.1.1.2.4
@@ -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]