home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD 31 / SUPERCDa.iso / Inet / HotJava / hjava.exe / InstallerData / lax.jar / com / zerog / lax / LAX.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-01-21  |  7.3 KB  |  299 lines

  1. package com.zerog.lax;
  2.  
  3. import com.zerog.util.QuotedStreamTokenizer;
  4. import java.io.File;
  5. import java.io.FileInputStream;
  6. import java.io.FileOutputStream;
  7. import java.io.IOException;
  8. import java.io.InputStream;
  9. import java.io.PrintStream;
  10. import java.io.StringBufferInputStream;
  11. import java.lang.reflect.InvocationTargetException;
  12. import java.lang.reflect.Method;
  13. import java.util.Enumeration;
  14. import java.util.Properties;
  15. import java.util.Vector;
  16.  
  17. public class LAX {
  18.    public static final String PROPERTYPREFIX = "lax.";
  19.    public static final String VERSION = "lax.version";
  20.    public static final String APP_NAME = "lax.application.name";
  21.    public static final String MAIN_CLASS = "lax.main.class";
  22.    public static final String MAIN_METHOD = "lax.main.method";
  23.    public static final String CMD_LINE_ARGS = "lax.command.line.args";
  24.    public static final String USER_DIR = "lax.user.dir";
  25.    public static final String INSTALL_DIRECTORY = "lax.root.install.dir";
  26.    public static final String NATIVE_LAUNCHER_INSTALL_DIRECTORY = "lax.dir";
  27.    public static final String LAX_MAIN_CLASS = "lax.nl.java.launcher.main.class";
  28.    public static final String LAX_MAIN_METHOD = "lax.nl.java.launcher.main.method";
  29.    public static final String CLASS_PATH = "lax.class.path";
  30.    public static final String CURRENT_VM = "lax.nl.current.vm";
  31.    public static final String STDOUT = "lax.stdout.redirect";
  32.    public static final String STDERR = "lax.stderr.redirect";
  33.    private Thread waitThread;
  34.    private String[] nativeArgs;
  35.    private Properties props;
  36.  
  37.    public void getProperties(String var1) {
  38.       new Integer(4);
  39.       new StringBuffer();
  40.       this.props = new Properties(System.getProperties());
  41.  
  42.       try {
  43.          FileInputStream var2 = new FileInputStream(new File(var1));
  44.          this.props.load(var2);
  45.          ((InputStream)var2).close();
  46.          Enumeration var3 = System.getProperties().propertyNames();
  47.  
  48.          while(var3.hasMoreElements()) {
  49.             String var4 = ((String)var3.nextElement()).toLowerCase();
  50.             if (var4.startsWith("lax.")) {
  51.                this.props.remove(var4);
  52.             }
  53.          }
  54.  
  55.          var3 = this.props.propertyNames();
  56.  
  57.          while(var3.hasMoreElements()) {
  58.             String var13 = (String)var3.nextElement();
  59.             if (var13.startsWith("LAX.")) {
  60.                String var5 = this.props.getProperty(var13);
  61.                this.props.put(var13.toLowerCase(), var5);
  62.             }
  63.          }
  64.  
  65.          System.setProperties(this.props);
  66.          String var14 = System.getProperty("os.name").toLowerCase();
  67.          if (var14.indexOf("unix") != -1 || var14.indexOf("irix") != -1 || var14.indexOf("netbsd") != -1 || var14.indexOf("freebsd") != -1 || var14.indexOf("bsdi") != -1 || var14.indexOf("bsd") != -1 || var14.indexOf("unixware") != -1 || var14.indexOf("aix") != -1 || var14.indexOf("dg/ux") != -1 || var14.indexOf("dgux") != -1 || var14.indexOf("linux") != -1 || var14.indexOf("machten") != -1 || var14.indexOf("nextstep") != -1 || var14.indexOf("rhapsody") != -1 || var14.indexOf("hp-ux") != -1 || var14.indexOf("hpux") != -1 || var14.indexOf("sunos") != -1 || var14.indexOf("solaris") != -1 || var14.indexOf("windows") != -1) {
  68.             this.setStdOutStdErr();
  69.          }
  70.  
  71.          System.out.println("LaunchAnywhere(tm) - The Universal Java Application Launcher");
  72.          System.out.println("       Version 2.5 - Copyright 1998 Zero G Software, Inc.");
  73.          System.out.println("");
  74.          if (!System.getProperty("lax.stdout.redirect", "").equals(System.getProperty("lax.stderr.redirect", ""))) {
  75.             System.err.println("LaunchAnywhere(tm) - The Universal Java Application Launcher");
  76.             System.err.println("       Version 2.5 - Copyright 1998 Zero G Software, Inc.");
  77.             System.err.println("");
  78.          }
  79.  
  80.          String var15 = System.getProperty("LISTARGS");
  81.          if (var15 != null) {
  82.             PrintStream var6 = System.out;
  83.             if (var15.length() != 0) {
  84.                try {
  85.                   var6 = new PrintStream(new FileOutputStream(new File(var15)));
  86.                } catch (IOException var10) {
  87.                }
  88.             }
  89.  
  90.             var6.println("Args");
  91.             var6.println("----");
  92.  
  93.             for(int var7 = 0; var7 < this.nativeArgs.length; ++var7) {
  94.                var6.println("arg[" + var7 + "]= '" + this.nativeArgs[var7] + "'");
  95.             }
  96.  
  97.             var6.println("");
  98.          }
  99.  
  100.          var15 = System.getProperty("LISTPROPS");
  101.          if (var15 != null) {
  102.             PrintStream var17 = System.out;
  103.             if (var15.length() != 0) {
  104.                try {
  105.                   var17 = new PrintStream(new FileOutputStream(new File(var15)));
  106.                } catch (IOException var9) {
  107.                }
  108.             }
  109.  
  110.             var17.println("Properties");
  111.             var17.println("----------");
  112.             Enumeration var18 = this.props.propertyNames();
  113.  
  114.             while(var18.hasMoreElements()) {
  115.                String var8 = (String)var18.nextElement();
  116.                var17.println(var8 + " = " + this.props.getProperty(var8));
  117.             }
  118.  
  119.             var17.println("");
  120.          }
  121.       } catch (IOException var11) {
  122.          ((Throwable)var11).printStackTrace();
  123.       }
  124.  
  125.    }
  126.  
  127.    private void setStdOutStdErr() {
  128.       new Integer(4);
  129.       new StringBuffer();
  130.       String var1;
  131.       if ((var1 = System.getProperty("lax.stdout.redirect")) != null && var1.length() > 0 && !var1.toLowerCase().trim().equals("console") && !var1.toLowerCase().trim().equals("")) {
  132.          try {
  133.             System.setOut(new PrintStream(new FileOutputStream(var1, true)));
  134.          } catch (IOException var5) {
  135.             ((Throwable)var5).printStackTrace();
  136.          }
  137.       }
  138.  
  139.       String var2;
  140.       if ((var2 = System.getProperty("lax.stderr.redirect")) != null && var2.length() > 0 && !var2.toLowerCase().trim().equals("console") && !var2.toLowerCase().trim().equals("")) {
  141.          if (var2.equals(var1)) {
  142.             System.setErr(System.out);
  143.          } else {
  144.             try {
  145.                System.setErr(new PrintStream(new FileOutputStream(var2, true)));
  146.             } catch (IOException var4) {
  147.                ((Throwable)var4).printStackTrace();
  148.             }
  149.          }
  150.       }
  151.  
  152.    }
  153.  
  154.    private void launch() throws Throwable {
  155.       new Integer(4);
  156.       new StringBuffer();
  157.       Class var1 = null;
  158.       String var2 = this.props.getProperty("lax.main.class");
  159.       if (var2 == null) {
  160.          throw new RuntimeException("lax.main.class was not found in the properties file.");
  161.       } else {
  162.          Method var3 = null;
  163.          String var4 = this.props.getProperty("lax.main.method");
  164.          if (var4 == null) {
  165.             throw new RuntimeException("lax.main.method was not found in class " + var2);
  166.          } else {
  167.             String var5 = this.props.getProperty("lax.command.line.args");
  168.  
  169.             try {
  170.                var1 = Class.forName(var2);
  171.             } catch (ClassNotFoundException var13) {
  172.                ((Throwable)var13).printStackTrace();
  173.             }
  174.  
  175.             try {
  176.                Class[] var6 = new Class[]{(new String[0]).getClass()};
  177.                var3 = var1.getMethod(var4, var6);
  178.             } catch (NoSuchMethodException var12) {
  179.                ((Throwable)var12).printStackTrace();
  180.             }
  181.  
  182.             try {
  183.                Object[] var14 = new Object[]{this.parseArgs(var5)};
  184.                var3.invoke((Object)null, var14);
  185.             } catch (IllegalAccessException var7) {
  186.                System.err.println("LAX: Method is inaccessible.");
  187.                System.err.println("The class " + var2 + " must be public and");
  188.                System.err.println("have a public static void " + var4 + "(String[]) method.");
  189.                System.exit(-1);
  190.             } catch (IllegalArgumentException var8) {
  191.                System.err.println("LAX: Method is inaccessible.");
  192.                System.err.println("The class " + var2 + " must be public and");
  193.                System.err.println("have a public static void " + var4 + "(String[]) method.");
  194.                System.exit(-1);
  195.             } catch (InvocationTargetException var9) {
  196.                throw var9.getTargetException();
  197.             } catch (NullPointerException var10) {
  198.                System.err.println("LAX: Method.invoke() threw NullPointerException:");
  199.                Thread.dumpStack();
  200.                ((Throwable)var10).printStackTrace(System.err);
  201.                System.err.println("LAX: exiting.");
  202.                System.exit(-1);
  203.             } catch (Exception var11) {
  204.                System.err.println("LAX: Method.invoke() threw Exception:");
  205.                Thread.dumpStack();
  206.                ((Throwable)var11).printStackTrace(System.err);
  207.                System.err.println("LAX: exiting.");
  208.                System.exit(-1);
  209.             }
  210.  
  211.          }
  212.       }
  213.    }
  214.  
  215.    private String[] parseArgs(String var1) {
  216.       new Integer(4);
  217.       new StringBuffer();
  218.       if (var1 != null && var1.length() > 0) {
  219.          StringBuffer var2 = new StringBuffer();
  220.  
  221.          for(int var3 = 1; var3 < this.nativeArgs.length; ++var3) {
  222.             String var4 = this.nativeArgs[var3].trim();
  223.             if (var4.startsWith("\"") && var4.endsWith("\"") && !var4.startsWith("\\\"") && !var4.endsWith("\\\"")) {
  224.                var2.append(this.nativeArgs[var3] + " ");
  225.             } else if (var4.startsWith("\"") && !var4.startsWith("\\\"")) {
  226.                var2.append(this.nativeArgs[var3] + "\" ");
  227.             } else if (var4.endsWith("\"") && !var4.endsWith("\\\"")) {
  228.                var2.append("\"" + this.nativeArgs[var3]);
  229.             } else {
  230.                var2.append("\"" + this.nativeArgs[var3] + "\" ");
  231.             }
  232.          }
  233.  
  234.          String var5;
  235.          String var6;
  236.          int var14;
  237.          for(var14 = 0; (var14 = var1.indexOf("$CMD_LINE_ARGUMENTS$")) >= 0; var1 = var5 + " " + var2.toString() + " " + var6) {
  238.             var5 = var1.substring(0, var14);
  239.             var6 = var1.substring(var14 + 20, var1.length());
  240.          }
  241.  
  242.          QuotedStreamTokenizer var7 = new QuotedStreamTokenizer(new StringBufferInputStream(var1));
  243.          Vector var9 = new Vector();
  244.  
  245.          String var8;
  246.          try {
  247.             while((var8 = var7.getNextToken()) != null) {
  248.                if (var7.getType() == -10) {
  249.                   var9.addElement(var8);
  250.                } else if (var7.getType() == -11) {
  251.                   var9.addElement(var8);
  252.                } else if (var7.getType() == -12) {
  253.                   var9.addElement(var8);
  254.                }
  255.             }
  256.          } catch (Exception var12) {
  257.             ((Throwable)var12).printStackTrace();
  258.          }
  259.  
  260.          if (var9.size() <= 0) {
  261.             return new String[0];
  262.          } else {
  263.             String[] var10 = new String[var9.size()];
  264.  
  265.             for(int var11 = 0; var11 < var9.size(); ++var11) {
  266.                var10[var11] = (String)var9.elementAt(var11);
  267.             }
  268.  
  269.             return var10;
  270.          }
  271.       } else {
  272.          return new String[0];
  273.       }
  274.    }
  275.  
  276.    public LAX(String[] var1) throws Throwable {
  277.       new Integer(4);
  278.       new StringBuffer();
  279.       this.nativeArgs = var1;
  280.       if (var1 != null & var1.length > 0) {
  281.          if (var1[0].toUpperCase().endsWith(".LAX")) {
  282.             this.getProperties(var1[0]);
  283.          } else {
  284.             this.getProperties(var1[0].substring(0, var1[0].indexOf(".")) + ".lax");
  285.          }
  286.       } else {
  287.          System.out.println("Path not supplied to properties file");
  288.       }
  289.  
  290.       this.launch();
  291.    }
  292.  
  293.    public static void main(String[] var0) throws Throwable {
  294.       new Integer(4);
  295.       new StringBuffer();
  296.       new LAX(var0);
  297.    }
  298. }
  299.