001 002 package com.perdues.test; 003 004 import java.io.*; 005 import java.util.logging.Logger; 006 import java.util.logging.Level; 007 import com.perdues.ProcessUtils; 008 009 010 public class ProcessUtilsTest { 011 012 /** 013 Main routine that takes the name of the program to run and its 014 arguments are the command line arguments. The system property 015 "style" controls which "exec" method of class 016 com.perdues.ProcessUtils this will invoke. The permitted values 017 are "string", "write", or "filter". These use respectively the 018 form of exec that: returns a string; writes to two output streams; 019 or reads an input stream and writes output streams. The default 020 style is "string". 021 */ 022 public static void main(String[] args) { 023 try { 024 String style = System.getProperty("style"); 025 if ("write".equals(style)) { 026 StringWriter errs = new StringWriter(); 027 ProcessUtils.exec(args, new InputStreamReader(System.in), 028 new OutputStreamWriter(System.out), errs); 029 System.out.println(); 030 System.out.println("Error output:"); 031 System.out.print(errs.toString()); 032 } else if ("filter".equals(style)) { 033 System.out.println 034 ("Exit "+ProcessUtils.exec(args, System.in, System.out, System.err)); 035 } else if ("string".equals(style) || style==null) { 036 System.out.print(ProcessUtils.exec(args)); 037 } else { 038 System.out.println 039 ("Please specify a style of 'write', 'filter', or 'string'"); 040 System.exit(1); 041 } 042 } catch(java.lang.Throwable ex) { 043 Logger.getLogger(ProcessUtilsTest.class.getName()) 044 .log(Level.WARNING, null, ex); 045 } 046 } 047 048 }