sylvain     02/02/22 15:26:31

  Modified:    src/scratchpad/src/org/apache/cocoon/transformation
                        FileWritingTransformer.java
               src/scratchpad/src/org/apache/cocoon/treeprocessor
                        MapStackResolver.java
  Log:
  Update FileWritingTransformer to use WriteableSource
  
  Revision  Changes    Path
  1.7       +101 -73   
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/transformation/FileWritingTransformer.java
  
  Index: FileWritingTransformer.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/scratchpad/src/org/apache/cocoon/transformation/FileWritingTransformer.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- FileWritingTransformer.java       22 Feb 2002 21:49:54 -0000      1.6
  +++ FileWritingTransformer.java       22 Feb 2002 23:26:31 -0000      1.7
  @@ -64,6 +64,7 @@
   import org.apache.cocoon.caching.Cacheable;
   import org.apache.cocoon.environment.Source;
   import org.apache.cocoon.environment.SourceResolver;
  +import org.apache.cocoon.environment.WriteableSource;
   import org.apache.cocoon.ProcessingException;
   import org.apache.cocoon.ResourceNotFoundException;
   import org.xml.sax.Attributes;
  @@ -71,8 +72,7 @@
   import org.xml.sax.helpers.AttributesImpl;
   import java.lang.SecurityException;
   import java.io.IOException;
  -import java.io.File;
  -import java.io.FileOutputStream;
  +import java.io.OutputStream;
   import java.util.Map;
   import java.util.Properties;
   
  @@ -160,7 +160,7 @@
       private String target = null;
   
       /** Current FileOutputStream. */
  -    private FileOutputStream fos = null;
  +    private OutputStream fos = null;
   
       /** Current status of outputting the file. */
       private boolean failed = true;
  @@ -172,10 +172,10 @@
       private String action = null;
   
       /** Target file's final destination. */
  -    private File target_file = null;
  +//    private File target_file = null;
   
       /** Temporary target file. */
  -    private File temp_target_file = null;
  +//    private File temp_target_file = null;
   
   
       /** True when inside <write> element. */
  @@ -526,32 +526,40 @@
        * cloase the file output stream
        */
       private void closeFos() {
  -                     try {
  -                             this.fos.close();
  -                             this.fos = null;
  -                             if (!this.failed) {
  -                                     if (target_file.exists()) {
  -                                             target_file.delete();
  -                                             this.action = FRT_ACTION_OVERWRITE;
  -                                     } else {
  -                                             this.action = FRT_ACTION_NEW;
  -                                     }
  -                                     temp_target_file.renameTo(target_file);
  -                             } else {
  -                                     if (temp_target_file.exists()) {
  -                                             temp_target_file.delete();
  -                                     }
  -                             }
  -                     } catch (Exception e) {
  -                             getLogger().error("FileWritingTransformer failed, 
could not close the file", e);
  -                             this.failed = true;
  -                             this.message = "could not close the file";
  -                             try {
  -                                     temp_target_file.delete();
  -                             } catch (SecurityException se) {
  -                                     getLogger().error("FileWritingTransformer 
failed, could not delete the temp file: " + temp_target_file.toString(), e);
  -                             }
  -                     }
  +        try {
  +            this.fos.close();
  +            this.fos = null;
  +        } catch(Exception e) {
  +            getLogger().warn("Failed to close source", e);
  +            this.message = "Failed to close source";
  +            this.failed = true;
  +        }
  +//                   try {
  +//                           this.fos.close();
  +//                           this.fos = null;
  +//                           if (!this.failed) {
  +//                                   if (target_file.exists()) {
  +//                                           target_file.delete();
  +//                                           this.action = FRT_ACTION_OVERWRITE;
  +//                                   } else {
  +//                                           this.action = FRT_ACTION_NEW;
  +//                                   }
  +//                                   temp_target_file.renameTo(target_file);
  +//                           } else {
  +//                                   if (temp_target_file.exists()) {
  +//                                           temp_target_file.delete();
  +//                                   }
  +//                           }
  +//                   } catch (Exception e) {
  +//                           getLogger().error("FileWritingTransformer failed, 
could not close the file", e);
  +//                           this.failed = true;
  +//                           this.message = "could not close the file";
  +//                           try {
  +//                                   temp_target_file.delete();
  +//                           } catch (SecurityException se) {
  +//                                   getLogger().error("FileWritingTransformer 
failed, could not delete the temp file: " + temp_target_file.toString(), e);
  +//                           }
  +//                   }
                }
   
       /**
  @@ -564,49 +572,69 @@
        * by not overwriting the temporary file.
        */
       private void openFos() {
  +        
  +        Source source = null;
  +        try {
  +            this.message = "The src attribute could not be resolved";
  +            source = this.sourceResolver.resolve(this.target);
  +            
  +            this.message = "The src attribute doesn't resolve to a writeable 
source";
  +            WriteableSource wsource = (WriteableSource)source;
  +            
  +            this.message = "Could not open the source for writing";
  +            this.fos = wsource.getOutputStream();
  +            
  +        } catch(Exception e) {
  +            getLogger().warn(this.message, e);
  +            this.failed = true;
  +        } finally {
  +            if (source != null) {
  +                source.recycle();
  +            }
  +        }
   
  -                     // open the file
  -                     if (!this.target.startsWith(FRT_PROTOCOL)) {
  -                             getLogger().error("FileWritingTransformer failed, the 
src parameter  did not resolve to a file:");
  -                             this.failed = true;
  -                             this.message = "the src parameter did not resolve to a 
file";
  -                     } else {
  -                             try {
  -                                     target_file = new File 
(this.target.substring(5));
  -                                     temp_target_file = new File 
(this.target.substring(5) + ".tmp");
  -                                     if (!target_file.exists()) {
  -                                             File dir = target_file.getParentFile();
  -                                             if (!dir.exists() && dir.mkdirs() == 
true) {
  -                                                             
getLogger().warn("FileWritingTransformer: made new directories: " + dir.toString());
  -                                             }
  -                                     } else if (target_file.isDirectory()) {
  -                                             
getLogger().error("FileWritingTransformer failed, the src parameter cannot point to a 
directory");
  -                                             this.failed = true;
  -                                             this.message = "the src parameter 
pointed to a directory";
  -                                     }                               
  -                                     if (!this.failed) {
  -                                             if (temp_target_file.createNewFile() 
== true) {
  -                                                     this.fos = new 
java.io.FileOutputStream(temp_target_file);
  -                                             } else {
  -                                                     
getLogger().error("FileWritingTransformer failed, the file was busy");
  -                                                     this.failed = true;
  -                                                     this.message = "the file was 
busy";
  -                                             }
  -                                     }
  -                             } catch (SecurityException se) {
  -                                     getLogger().error("FileWritingTransformer 
failed, did not have the required file permissions for writing", se);
  -                                     this.failed = true;
  -                                     this.message = "could not open the file for 
writing";
  -                             } catch (IOException ioe) {
  -                                     getLogger().error("FileWritingTransformer 
failed, could not open the file for writing", ioe);
  -                                     this.failed = true;
  -                                     this.message = "could not open the file for 
writing";
  -                             } catch (NullPointerException npe) {
  -                                     getLogger().error("FileWritingTransformer 
failed, could not resolve the target", npe);
  -                                     this.failed = true;
  -                                     this.message = "could not resolve the target";
  -                             }
  -                     }
  +//                   // open the file
  +//                   if (!this.target.startsWith(FRT_PROTOCOL)) {
  +//                           getLogger().error("FileWritingTransformer failed, the 
src parameter  did not resolve to a file:");
  +//                           this.failed = true;
  +//                           this.message = "the src parameter did not resolve to a 
file";
  +//                   } else {
  +//                           try {
  +//                                   target_file = new File 
(this.target.substring(5));
  +//                                   temp_target_file = new File 
(this.target.substring(5) + ".tmp");
  +//                                   if (!target_file.exists()) {
  +//                                           File dir = target_file.getParentFile();
  +//                                           if (!dir.exists() && dir.mkdirs() == 
true) {
  +//                                                           
getLogger().warn("FileWritingTransformer: made new directories: " + dir.toString());
  +//                                           }
  +//                                   } else if (target_file.isDirectory()) {
  +//                                           
getLogger().error("FileWritingTransformer failed, the src parameter cannot point to a 
directory");
  +//                                           this.failed = true;
  +//                                           this.message = "the src parameter 
pointed to a directory";
  +//                                   }                               
  +//                                   if (!this.failed) {
  +//                                           if (temp_target_file.createNewFile() 
== true) {
  +//                                                   this.fos = new 
java.io.FileOutputStream(temp_target_file);
  +//                                           } else {
  +//                                                   
getLogger().error("FileWritingTransformer failed, the file was busy");
  +//                                                   this.failed = true;
  +//                                                   this.message = "the file was 
busy";
  +//                                           }
  +//                                   }
  +//                           } catch (SecurityException se) {
  +//                                   getLogger().error("FileWritingTransformer 
failed, did not have the required file permissions for writing", se);
  +//                                   this.failed = true;
  +//                                   this.message = "could not open the file for 
writing";
  +//                           } catch (IOException ioe) {
  +//                                   getLogger().error("FileWritingTransformer 
failed, could not open the file for writing", ioe);
  +//                                   this.failed = true;
  +//                                   this.message = "could not open the file for 
writing";
  +//                           } catch (NullPointerException npe) {
  +//                                   getLogger().error("FileWritingTransformer 
failed, could not resolve the target", npe);
  +//                                   this.failed = true;
  +//                                   this.message = "could not resolve the target";
  +//                           }
  +//                   }
       }
   
   }
  
  
  
  1.11      +3 -3      
xml-cocoon2/src/scratchpad/src/org/apache/cocoon/treeprocessor/MapStackResolver.java
  
  Index: MapStackResolver.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/scratchpad/src/org/apache/cocoon/treeprocessor/MapStackResolver.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- MapStackResolver.java     22 Feb 2002 06:58:03 -0000      1.10
  +++ MapStackResolver.java     22 Feb 2002 23:26:31 -0000      1.11
  @@ -60,7 +60,7 @@
    * Utility class for handling {...} pattern substitutions from a List of Maps.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Sylvain Wallez</a>
  - * @version CVS $Id: MapStackResolver.java,v 1.10 2002/02/22 06:58:03 cziegeler Exp 
$
  + * @version CVS $Id: MapStackResolver.java,v 1.11 2002/02/22 23:26:31 sylvain Exp $
    */
   
   public abstract class MapStackResolver {
  @@ -251,7 +251,7 @@
   
                   if (pos >= length || pos == -1) {
                       // no more braces
  -                    if (prev < length - 1) {
  +                    if (prev < length) {
                           stringList.add(this.unescape(expr.substring(prev)));
                           levelList.add(new Integer(-1));
                       }
  @@ -331,7 +331,7 @@
   //    public static void main(String [] args) throws Exception {
   //
   //        new CompiledResolver("&{../../blah}").dump();
  -//        new CompiledResolver("{t1}tt{t2}").dump();
  +//        new CompiledResolver("{t1}tt{t2}x").dump();
   //        new CompiledResolver("\\{t1}tt{t2}xx").dump();
   //        new CompiledResolver("{t1}tt\\{t2}xx").dump();
   //        new CompiledResolver("{t1}tt{t2}xx").dump();
  
  
  

----------------------------------------------------------------------
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