FileDocCategorySizeDatePackage
RmicAdapterFactory.javaAPI DocApache Ant 1.704091Wed Dec 13 06:16:22 GMT 2006org.apache.tools.ant.taskdefs.rmic

RmicAdapterFactory

public final class RmicAdapterFactory extends Object
Creates the necessary rmic adapter, given basic criteria.
since
1.4

Fields Summary
public static final String
ERROR_UNKNOWN_COMPILER
The error message to be used when the compiler cannot be found.
public static final String
ERROR_NOT_RMIC_ADAPTER
The error message to be used when the class is not an rmic adapter.
public static final String
DEFAULT_COMPILER
If the compiler has this name use a default compiler.
Constructors Summary
private RmicAdapterFactory()
This is a singleton -- can't create instances!!


             
      
    
Methods Summary
public static RmicAdaptergetRmic(java.lang.String rmicType, org.apache.tools.ant.Task task)
Based on the parameter passed in, this method creates the necessary factory desired.

The current mapping for rmic names are as follows:

  • sun = SUN's rmic
  • kaffe = Kaffe's rmic
  • a fully quallified classname = the name of a rmic adapter
  • weblogic = weblogic compiler
  • forking = Sun's RMIC by forking a new JVM

param
rmicType either the name of the desired rmic, or the full classname of the rmic's adapter.
param
task a task to log through.
return
the compiler adapter
throws
BuildException if the rmic type could not be resolved into a rmic adapter.

        //convert to lower case in the English locale,
        String compiler = rmicType.toLowerCase(Locale.ENGLISH);

        //handle default specially by choosing the sun or kaffe compiler
        if (DEFAULT_COMPILER.equals(compiler) || compiler.length() == 0) {
            compiler = KaffeRmic.isAvailable()
                ? KaffeRmic.COMPILER_NAME
                : SunRmic.COMPILER_NAME;
        }
        if (SunRmic.COMPILER_NAME.equals(compiler)) {
            return new SunRmic();
        } else if (KaffeRmic.COMPILER_NAME.equals(compiler)) {
            return new KaffeRmic();
        } else if (WLRmic.COMPILER_NAME.equals(compiler)) {
            return new WLRmic();
        } else if (ForkingSunRmic.COMPILER_NAME.equals(compiler)) {
            return new ForkingSunRmic();
        } else if (XNewRmic.COMPILER_NAME.equals(compiler)) {
            return new XNewRmic();
        }
        //no match? ask for the non-lower-cased type
        return resolveClassName(rmicType);
    
private static RmicAdapterresolveClassName(java.lang.String className)
Tries to resolve the given classname into a rmic adapter. Throws a fit if it can't.

param
className The fully qualified classname to be created.
throws
BuildException This is the fit that is thrown if className isn't an instance of RmicAdapter.

        return (RmicAdapter) ClasspathUtils.newInstance(className,
                RmicAdapterFactory.class.getClassLoader(), RmicAdapter.class);