public static void main()

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();
        }
    }