home *** CD-ROM | disk | FTP | other *** search
- package com.zerog.lax;
-
- import com.zerog.util.QuotedStreamTokenizer;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.PrintStream;
- import java.io.StringBufferInputStream;
- import java.lang.reflect.InvocationTargetException;
- import java.lang.reflect.Method;
- import java.util.Enumeration;
- import java.util.Properties;
- import java.util.Vector;
-
- public class LAX {
- public static final String PROPERTYPREFIX = "lax.";
- public static final String VERSION = "lax.version";
- public static final String APP_NAME = "lax.application.name";
- public static final String MAIN_CLASS = "lax.main.class";
- public static final String MAIN_METHOD = "lax.main.method";
- public static final String CMD_LINE_ARGS = "lax.command.line.args";
- public static final String USER_DIR = "lax.user.dir";
- public static final String INSTALL_DIRECTORY = "lax.root.install.dir";
- public static final String NATIVE_LAUNCHER_INSTALL_DIRECTORY = "lax.dir";
- public static final String LAX_MAIN_CLASS = "lax.nl.java.launcher.main.class";
- public static final String LAX_MAIN_METHOD = "lax.nl.java.launcher.main.method";
- public static final String CLASS_PATH = "lax.class.path";
- public static final String CURRENT_VM = "lax.nl.current.vm";
- public static final String STDOUT = "lax.stdout.redirect";
- public static final String STDERR = "lax.stderr.redirect";
- private Thread waitThread;
- private String[] nativeArgs;
- private Properties props;
-
- public void getProperties(String var1) {
- new Integer(4);
- new StringBuffer();
- this.props = new Properties(System.getProperties());
-
- try {
- FileInputStream var2 = new FileInputStream(new File(var1));
- this.props.load(var2);
- ((InputStream)var2).close();
- Enumeration var3 = System.getProperties().propertyNames();
-
- while(var3.hasMoreElements()) {
- String var4 = ((String)var3.nextElement()).toLowerCase();
- if (var4.startsWith("lax.")) {
- this.props.remove(var4);
- }
- }
-
- var3 = this.props.propertyNames();
-
- while(var3.hasMoreElements()) {
- String var13 = (String)var3.nextElement();
- if (var13.startsWith("LAX.")) {
- String var5 = this.props.getProperty(var13);
- this.props.put(var13.toLowerCase(), var5);
- }
- }
-
- System.setProperties(this.props);
- String var14 = System.getProperty("os.name").toLowerCase();
- 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) {
- this.setStdOutStdErr();
- }
-
- System.out.println("LaunchAnywhere(tm) - The Universal Java Application Launcher");
- System.out.println(" Version 2.5 - Copyright 1998 Zero G Software, Inc.");
- System.out.println("");
- if (!System.getProperty("lax.stdout.redirect", "").equals(System.getProperty("lax.stderr.redirect", ""))) {
- System.err.println("LaunchAnywhere(tm) - The Universal Java Application Launcher");
- System.err.println(" Version 2.5 - Copyright 1998 Zero G Software, Inc.");
- System.err.println("");
- }
-
- String var15 = System.getProperty("LISTARGS");
- if (var15 != null) {
- PrintStream var6 = System.out;
- if (var15.length() != 0) {
- try {
- var6 = new PrintStream(new FileOutputStream(new File(var15)));
- } catch (IOException var10) {
- }
- }
-
- var6.println("Args");
- var6.println("----");
-
- for(int var7 = 0; var7 < this.nativeArgs.length; ++var7) {
- var6.println("arg[" + var7 + "]= '" + this.nativeArgs[var7] + "'");
- }
-
- var6.println("");
- }
-
- var15 = System.getProperty("LISTPROPS");
- if (var15 != null) {
- PrintStream var17 = System.out;
- if (var15.length() != 0) {
- try {
- var17 = new PrintStream(new FileOutputStream(new File(var15)));
- } catch (IOException var9) {
- }
- }
-
- var17.println("Properties");
- var17.println("----------");
- Enumeration var18 = this.props.propertyNames();
-
- while(var18.hasMoreElements()) {
- String var8 = (String)var18.nextElement();
- var17.println(var8 + " = " + this.props.getProperty(var8));
- }
-
- var17.println("");
- }
- } catch (IOException var11) {
- ((Throwable)var11).printStackTrace();
- }
-
- }
-
- private void setStdOutStdErr() {
- new Integer(4);
- new StringBuffer();
- String var1;
- if ((var1 = System.getProperty("lax.stdout.redirect")) != null && var1.length() > 0 && !var1.toLowerCase().trim().equals("console") && !var1.toLowerCase().trim().equals("")) {
- try {
- System.setOut(new PrintStream(new FileOutputStream(var1, true)));
- } catch (IOException var5) {
- ((Throwable)var5).printStackTrace();
- }
- }
-
- String var2;
- if ((var2 = System.getProperty("lax.stderr.redirect")) != null && var2.length() > 0 && !var2.toLowerCase().trim().equals("console") && !var2.toLowerCase().trim().equals("")) {
- if (var2.equals(var1)) {
- System.setErr(System.out);
- } else {
- try {
- System.setErr(new PrintStream(new FileOutputStream(var2, true)));
- } catch (IOException var4) {
- ((Throwable)var4).printStackTrace();
- }
- }
- }
-
- }
-
- private void launch() throws Throwable {
- new Integer(4);
- new StringBuffer();
- Class var1 = null;
- String var2 = this.props.getProperty("lax.main.class");
- if (var2 == null) {
- throw new RuntimeException("lax.main.class was not found in the properties file.");
- } else {
- Method var3 = null;
- String var4 = this.props.getProperty("lax.main.method");
- if (var4 == null) {
- throw new RuntimeException("lax.main.method was not found in class " + var2);
- } else {
- String var5 = this.props.getProperty("lax.command.line.args");
-
- try {
- var1 = Class.forName(var2);
- } catch (ClassNotFoundException var13) {
- ((Throwable)var13).printStackTrace();
- }
-
- try {
- Class[] var6 = new Class[]{(new String[0]).getClass()};
- var3 = var1.getMethod(var4, var6);
- } catch (NoSuchMethodException var12) {
- ((Throwable)var12).printStackTrace();
- }
-
- try {
- Object[] var14 = new Object[]{this.parseArgs(var5)};
- var3.invoke((Object)null, var14);
- } catch (IllegalAccessException var7) {
- System.err.println("LAX: Method is inaccessible.");
- System.err.println("The class " + var2 + " must be public and");
- System.err.println("have a public static void " + var4 + "(String[]) method.");
- System.exit(-1);
- } catch (IllegalArgumentException var8) {
- System.err.println("LAX: Method is inaccessible.");
- System.err.println("The class " + var2 + " must be public and");
- System.err.println("have a public static void " + var4 + "(String[]) method.");
- System.exit(-1);
- } catch (InvocationTargetException var9) {
- throw var9.getTargetException();
- } catch (NullPointerException var10) {
- System.err.println("LAX: Method.invoke() threw NullPointerException:");
- Thread.dumpStack();
- ((Throwable)var10).printStackTrace(System.err);
- System.err.println("LAX: exiting.");
- System.exit(-1);
- } catch (Exception var11) {
- System.err.println("LAX: Method.invoke() threw Exception:");
- Thread.dumpStack();
- ((Throwable)var11).printStackTrace(System.err);
- System.err.println("LAX: exiting.");
- System.exit(-1);
- }
-
- }
- }
- }
-
- private String[] parseArgs(String var1) {
- new Integer(4);
- new StringBuffer();
- if (var1 != null && var1.length() > 0) {
- StringBuffer var2 = new StringBuffer();
-
- for(int var3 = 1; var3 < this.nativeArgs.length; ++var3) {
- String var4 = this.nativeArgs[var3].trim();
- if (var4.startsWith("\"") && var4.endsWith("\"") && !var4.startsWith("\\\"") && !var4.endsWith("\\\"")) {
- var2.append(this.nativeArgs[var3] + " ");
- } else if (var4.startsWith("\"") && !var4.startsWith("\\\"")) {
- var2.append(this.nativeArgs[var3] + "\" ");
- } else if (var4.endsWith("\"") && !var4.endsWith("\\\"")) {
- var2.append("\"" + this.nativeArgs[var3]);
- } else {
- var2.append("\"" + this.nativeArgs[var3] + "\" ");
- }
- }
-
- String var5;
- String var6;
- int var14;
- for(var14 = 0; (var14 = var1.indexOf("$CMD_LINE_ARGUMENTS$")) >= 0; var1 = var5 + " " + var2.toString() + " " + var6) {
- var5 = var1.substring(0, var14);
- var6 = var1.substring(var14 + 20, var1.length());
- }
-
- QuotedStreamTokenizer var7 = new QuotedStreamTokenizer(new StringBufferInputStream(var1));
- Vector var9 = new Vector();
-
- String var8;
- try {
- while((var8 = var7.getNextToken()) != null) {
- if (var7.getType() == -10) {
- var9.addElement(var8);
- } else if (var7.getType() == -11) {
- var9.addElement(var8);
- } else if (var7.getType() == -12) {
- var9.addElement(var8);
- }
- }
- } catch (Exception var12) {
- ((Throwable)var12).printStackTrace();
- }
-
- if (var9.size() <= 0) {
- return new String[0];
- } else {
- String[] var10 = new String[var9.size()];
-
- for(int var11 = 0; var11 < var9.size(); ++var11) {
- var10[var11] = (String)var9.elementAt(var11);
- }
-
- return var10;
- }
- } else {
- return new String[0];
- }
- }
-
- public LAX(String[] var1) throws Throwable {
- new Integer(4);
- new StringBuffer();
- this.nativeArgs = var1;
- if (var1 != null & var1.length > 0) {
- if (var1[0].toUpperCase().endsWith(".LAX")) {
- this.getProperties(var1[0]);
- } else {
- this.getProperties(var1[0].substring(0, var1[0].indexOf(".")) + ".lax");
- }
- } else {
- System.out.println("Path not supplied to properties file");
- }
-
- this.launch();
- }
-
- public static void main(String[] var0) throws Throwable {
- new Integer(4);
- new StringBuffer();
- new LAX(var0);
- }
- }
-