in src/main/java/org/apache/bsf/Main.java [55:140]
public static void main(final String[] args) throws IOException {
try {
if ((args.length == 0) || (args.length % 2 != 0)) {
printHelp();
System.exit(1);
}
final Hashtable argsTable = new Hashtable();
argsTable.put(ARG_OUT, DEFAULT_CLASS_NAME);
argsTable.put(ARG_MODE, DEFAULT_MODE);
for (int i = 0; i < args.length; i += 2) {
argsTable.put(args[i], args[i + 1]);
}
String inFileName = (String) argsTable.get(ARG_IN);
String language = (String) argsTable.get(ARG_LANG);
if (language == null) {
if (inFileName != null) {
language = BSFManager.getLangFromFilename(inFileName);
} else {
throw new BSFException(BSFException.REASON_OTHER_ERROR, "unable to determine language");
}
}
Reader in;
if (inFileName != null) {
in = new FileReader(inFileName);
} else {
in = new InputStreamReader(System.in);
inFileName = DEFAULT_IN_FILE_NAME;
}
final BSFManager mgr = new BSFManager();
final String mode = (String) argsTable.get(ARG_MODE);
if (mode.equals(ARG_VAL_COMPILE)) {
final String outClassName = (String) argsTable.get(ARG_OUT);
final FileWriter out = new FileWriter(outClassName + ".java");
final PrintWriter pw = new PrintWriter(out);
final CodeBuffer cb = new CodeBuffer();
cb.setClassName(outClassName);
mgr.compileScript(language, inFileName, 0, 0, IOUtils.getStringFromReader(in), cb);
cb.print(pw, true);
out.close();
} else {
if (mode.equals(ARG_VAL_EXEC)) {
mgr.exec(language, inFileName, 0, 0, IOUtils.getStringFromReader(in));
} else { /* eval */
final Object obj = mgr.eval(language, inFileName, 0, 0, IOUtils.getStringFromReader(in));
// Try to display the result.
if (obj instanceof java.awt.Component) {
Frame f;
if (obj instanceof Frame) {
f = (Frame) obj;
} else {
f = new Frame("BSF Result: " + inFileName);
f.add((java.awt.Component) obj);
}
// Add a window listener to quit on closing.
f.addWindowListener(new WindowAdapter() {
public void windowClosing(final WindowEvent e) {
System.exit(0);
}
});
f.pack();
// f.show(); // javac 1.5 warns to use f.show(), Apache build scripts abort as a result :(
f.setVisible(true); // available since Java 1.1
} else {
System.err.println("Result: " + obj);
}
System.err.println("Result: " + obj);
}
}
} catch (final BSFException e) {
e.printStackTrace();
}
}