stevel      2005/02/08 10:50:37

  Modified:    src/main/org/apache/tools/ant Diagnostics.java
               .        WHATSNEW
  Log:
  diagnostics probes temp dir by writing a file to it.
  
  Revision  Changes    Path
  1.21      +66 -28    ant/src/main/org/apache/tools/ant/Diagnostics.java
  
  Index: Diagnostics.java
  ===================================================================
  RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/Diagnostics.java,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- Diagnostics.java  2 Feb 2005 09:05:26 -0000       1.20
  +++ Diagnostics.java  8 Feb 2005 18:50:35 -0000       1.21
  @@ -17,6 +17,7 @@
   package org.apache.tools.ant;
   
   import org.apache.tools.ant.util.LoaderUtils;
  +import org.apache.tools.ant.util.FileUtils;
   import org.apache.tools.ant.launch.Launcher;
   
   import javax.xml.parsers.SAXParserFactory;
  @@ -26,6 +27,8 @@
   import java.io.PrintStream;
   import java.io.InputStream;
   import java.io.IOException;
  +import java.io.BufferedOutputStream;
  +import java.io.FileOutputStream;
   import java.util.Enumeration;
   import java.util.Properties;
   import java.lang.reflect.Method;
  @@ -202,10 +205,8 @@
       public static void doReport(PrintStream out) {
           out.println("------- Ant diagnostics report -------");
           out.println(Main.getAntVersion());
  -        out.println();
  -        out.println("-------------------------------------------");
  -        out.println(" Implementation Version ");
  -        out.println("-------------------------------------------");
  +        header(out, "Implementation Version");
  +
           out.println("core tasks     : " + 
getImplementationVersion(Main.class));
   
           Class optional = null;
  @@ -218,44 +219,35 @@
               out.println("optional tasks : not available");
           }
   
  -        out.println();
  -        out.println("-------------------------------------------");
  -        out.println(" ANT_HOME/lib jar listing");
  -        out.println("-------------------------------------------");
  +        header(out, "ANT_HOME/lib jar listing");
           doReportAntHomeLibraries(out);
   
  -        out.println();
  -        out.println("-------------------------------------------");
  -        out.println(" USER_HOME/.ant/lib jar listing");
  -        out.println("-------------------------------------------");
  +        header(out, "USER_HOME/.ant/lib jar listing");
           doReportUserHomeLibraries(out);
   
  -        out.println();
  -        out.println("-------------------------------------------");
  -        out.println(" Tasks availability");
  -        out.println("-------------------------------------------");
  +        header(out, "Tasks availability");
           doReportTasksAvailability(out);
   
  -        out.println();
  -        out.println("-------------------------------------------");
  -        out.println(" org.apache.env.Which diagnostics");
  -        out.println("-------------------------------------------");
  +        header(out, "org.apache.env.Which diagnostics");
           doReportWhich(out);
   
  +        header(out, "XML Parser information");
  +        doReportParserInfo(out);
   
  +        header(out, "System properties");
  +        doReportSystemProperties(out);
  +
  +        header(out, "Temp dir");
  +        doReportTempDir(out);
           out.println();
  -        out.println("-------------------------------------------");
  -        out.println(" XML Parser information");
  -        out.println("-------------------------------------------");
  -        doReportParserInfo(out);
  +    }
   
  +    private static void header(PrintStream out, String section) {
           out.println();
           out.println("-------------------------------------------");
  -        out.println(" System properties");
  +        out.print(" ");
  +        out.println(section);
           out.println("-------------------------------------------");
  -        doReportSystemProperties(out);
  -
  -        out.println();
       }
   
       /**
  @@ -395,4 +387,50 @@
           out.println("XML Parser : " + parserName);
           out.println("XML Parser Location: " + parserLocation);
       }
  +
  +    /**
  +     * try and create a temp file in our temp dir; this
  +     * checks that it has space and access.
  +     * @param out
  +     */
  +    private static void doReportTempDir(PrintStream out) {
  +        String tempdir=System.getProperty("java.io.tmpdir");
  +        if( tempdir == null ) {
  +            out.println("Warning: java.io.tmpdir is undefined");
  +            return;
  +        }
  +        out.println("Temp dir is "+ tempdir);
  +        File tempDirectory=new File(tempdir);
  +        if(!tempDirectory.exists()) {
  +            out.println("Warning, java.io.tmpdir directory does not exist: "+
  +                    tempdir);
  +            return;
  +        }
  +        //create the file
  +        File tempFile=null;
  +        FileOutputStream fileout = null;
  +        try {
  +            tempFile = File.createTempFile("diag","txt",tempDirectory);
  +            //do some writing to it
  +            fileout = new FileOutputStream(tempFile);
  +            byte buffer[]=new byte[1024];
  +            for(int i=0;i<32;i++) {
  +                fileout.write(buffer);
  +            }
  +            fileout.close();
  +            fileout=null;
  +            tempFile.delete();
  +            out.println("Temp dir is writeable");
  +        } catch (IOException e) {
  +            out.println("Failed to create a temporary file in the temp dir "
  +                + tempdir);
  +            out.println("File  "+ tempFile + " could not be created/written 
to");
  +        } finally {
  +            FileUtils.close(fileout);
  +            if(tempFile!=null && tempFile.exists()) {
  +                tempFile.delete();
  +            }
  +        }
  +
  +    }
   }
  
  
  
  1.742     +2 -1      ant/WHATSNEW
  
  Index: WHATSNEW
  ===================================================================
  RCS file: /home/cvs/ant/WHATSNEW,v
  retrieving revision 1.741
  retrieving revision 1.742
  diff -u -r1.741 -r1.742
  --- WHATSNEW  4 Feb 2005 08:08:06 -0000       1.741
  +++ WHATSNEW  8 Feb 2005 18:50:35 -0000       1.742
  @@ -97,7 +97,8 @@
   
   * Added <scriptselector> selector for scripted file selection
   
  -* ant -diagnostics lists contents of ${user.home}/.ant/lib
  +* ant -diagnostics lists contents of ${user.home}/.ant/lib , and
  +  checks that the java.io.tmpdir directory exists and is writeable. 
   
   * mail task accepts nested header element.  Bugzilla report 24713.
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to