/* Copyright (c) 2001, 2003 Free Software Foundation, Inc. This file is part of GNU Classpath. GNU Classpath is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. GNU Classpath is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Classpath; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ package gnu.classpath.tools.rmi.rmic; /** * A Compiler object can be used to compile a .java file into a * .class file. This is an abstract class; the * getInstance() method is used to obtain the actual * compiler object. */ public abstract class Compiler { // Can't directly instantiate. protected Compiler () { } /** Create a new compiler instance. */ public static Compiler getInstance () { return getInstance (System.getProperty ("classpath.compiler", "gcj")); } /** Create a new compiler instance given the name of the compiler. */ public static Compiler getInstance (String name) { try { Class k = Class.forName (classPrefix + name); return (Compiler) k.newInstance (); } catch (Throwable _) { } return null; } /** Get the directory where output files will be put. */ public String getDestination () { return dest; } /** Set the directory where output files will be put. */ public void setDestination (String dest) { this.dest = dest; } /** Compile the given file. Throws exception on error. */ public abstract void compile (String name) throws Exception; /** The destination directory, or null if none set. */ protected String dest; /** Class prefix used when trying to find instance. */ private static final String classPrefix = "gnu.java.rmi.rmic.Compile_"; }