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]

Reply via email to