jeremy      02/03/22 05:14:55

  Modified:    src/scratchpad/src/org/apache/cocoon/transformation
                        SourceWritingTransformer.java
  Log:
  cleaned up error handling
  
  Revision  Changes    Path
  1.3       +21 -9     
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/transformation/SourceWritingTransformer.java
  
  Index: SourceWritingTransformer.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/scratchpad/src/org/apache/cocoon/transformation/SourceWritingTransformer.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- SourceWritingTransformer.java     14 Mar 2002 22:12:00 -0000      1.2
  +++ SourceWritingTransformer.java     22 Mar 2002 13:14:55 -0000      1.3
  @@ -274,9 +274,6 @@
                                                this.message = "The src attribute 
doesn't resolve to a writeable source";
                                                this.wsource = 
(WriteableSource)this.source;
                                                this.exists = this.wsource.exists();
  -
  -                                             this.message = "Could not open the 
source for writing";
  -                                             this.os = 
this.wsource.getOutputStream();
                                                
                                                // has a Serializer been specified?
                                                String local_serializer = 
a.getValue("",SWT_SERIALIZER_ATTRIBUTE);
  @@ -286,6 +283,8 @@
                                                        this.message = "that 
Serializer does not exist";
                                                        ComponentSelector selector = 
(ComponentSelector)manager.lookup(Serializer.ROLE + "Selector");
                                                        this.ch = 
(Serializer)selector.select(this.serializer_name);
  +                                                     this.message = "Could not open 
the source for writing";
  +                                                     this.os = 
this.wsource.getOutputStream();
                                                        this.message = "could not 
write the file";
                                                        
((Serializer)this.ch).setOutputStream(this.os);                 // Is there a way to 
avoid this casting?
                                                        this.isSerializer = true;
  @@ -362,6 +361,10 @@
                                                        this.source.recycle();
                                                }
                                        }
  +                                     if (!this.failed) {
  +                                             this.wsource = null;
  +                                     }
  +                                     
                                        // Report result
                                        String result = (this.failed) ? 
SWT_RESULT_FAILED : SWT_RESULT_SUCCESS;
                                        String action = SWT_ACTION_NONE;
  @@ -380,7 +383,7 @@
                                        super.startElement(uri, loc, raw, attrs);
                                        if (this.message != null && this.failed == 
true) super.characters(this.message.toCharArray(), 0, this.message.length());
                                        super.endElement(uri, loc, raw);
  -                                     getLogger().debug("SourceWritingTransformer: 
Source Written");
  +                                     getLogger().debug("Source Written");
                                } else if (this.ch != null){
                                        this.ch.endElement(uri, loc, raw);
                                }
  @@ -535,12 +538,21 @@
       public void recycle() {
        if (this.wsource != null) {
                                getLogger().error("cancelled by recycle() method");
  -             try {
  -                     this.wsource.cancel(this.ch);
  -             } catch (Exception e) {
  -                                     getLogger().error("failed to cancel in 
recycle() method");
  -             }       
  +                             if (this.os != null) {
  +                                     try {
  +                                             this.wsource.cancel(this.os);
  +                                     } catch (Exception e) {
  +                                             getLogger().error("failed to cancel in 
recycle() method: OutputStream");
  +                                     }
  +                             } else if (this.ch != null) {
  +                                     try {
  +                                             this.wsource.cancel(this.ch);
  +                                     } catch (Exception e) {
  +                                             getLogger().error("failed to cancel in 
recycle() method: ContentHandler");
  +                                     }
  +                             }
        }
  +
                        if (isSerializer) this.manager.release((Component)this.ch);
         this.sourceResolver = 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