org.mozilla.javascript.optimizer
Class ClassCompiler

java.lang.Object
  extended by org.mozilla.javascript.optimizer.ClassCompiler

public class ClassCompiler
extends java.lang.Object

Generates class files from script sources. since 1.5 Release 5

Author:
Igor Bukanov

Constructor Summary
ClassCompiler(CompilerEnvirons compilerEnv)
          Construct ClassCompiler that uses the specified compiler environment when generating classes.
 
Method Summary
 java.lang.Object[] compileToClassFiles(java.lang.String source, java.lang.String sourceLocation, int lineno, java.lang.String mainClassName)
          Compile JavaScript source into one or more Java class files.
 CompilerEnvirons getCompilerEnv()
          Get the compiler environment the compiler uses.
 java.lang.String getMainMethodClass()
          Get the name of the class for main method implementation.
 java.lang.Class getTargetExtends()
          Get the class that the generated target will extend.
 java.lang.Class[] getTargetImplements()
          Get the interfaces that the generated target will implement.
protected  java.lang.String makeAuxiliaryClassName(java.lang.String mainClassName, java.lang.String auxMarker)
          Build class name for a auxiliary class generated by compiler.
 void setMainMethodClass(java.lang.String className)
          Set the class name to use for main method implementation.
 void setTargetExtends(java.lang.Class extendsClass)
          Set the class that the generated target will extend.
 void setTargetImplements(java.lang.Class[] implementsClasses)
          Set the interfaces that the generated target will implement.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ClassCompiler

public ClassCompiler(CompilerEnvirons compilerEnv)
Construct ClassCompiler that uses the specified compiler environment when generating classes.

Method Detail

setMainMethodClass

public void setMainMethodClass(java.lang.String className)
Set the class name to use for main method implementation. The class must have a method matching public static void main(Script sc, String[] args), it will be called when main(String[] args) is called in the generated class. The class name should be fully qulified name and include the package name like in org.foo.Bar.


getMainMethodClass

public java.lang.String getMainMethodClass()
Get the name of the class for main method implementation.

See Also:
setMainMethodClass(String)

getCompilerEnv

public CompilerEnvirons getCompilerEnv()
Get the compiler environment the compiler uses.


getTargetExtends

public java.lang.Class getTargetExtends()
Get the class that the generated target will extend.


setTargetExtends

public void setTargetExtends(java.lang.Class extendsClass)
Set the class that the generated target will extend.

Parameters:
extendsClass - the class it extends

getTargetImplements

public java.lang.Class[] getTargetImplements()
Get the interfaces that the generated target will implement.


setTargetImplements

public void setTargetImplements(java.lang.Class[] implementsClasses)
Set the interfaces that the generated target will implement.

Parameters:
implementsClasses - an array of Class objects, one for each interface the target will extend

makeAuxiliaryClassName

protected java.lang.String makeAuxiliaryClassName(java.lang.String mainClassName,
                                                  java.lang.String auxMarker)
Build class name for a auxiliary class generated by compiler. If the compiler needs to generate extra classes beyond the main class, it will call this function to build the auxiliary class name. The default implementation simply appends auxMarker to mainClassName but this can be overridden.


compileToClassFiles

public java.lang.Object[] compileToClassFiles(java.lang.String source,
                                              java.lang.String sourceLocation,
                                              int lineno,
                                              java.lang.String mainClassName)
Compile JavaScript source into one or more Java class files. The first compiled class will have name mainClassName. If the results of getTargetExtends() or getTargetImplements() are not null, then the first compiled class will extend the specified super class and implement specified interfaces.

Returns:
array where elements with even indexes specifies class name and the following odd index gives class file body as byte[] array. The initial element of the array always holds mainClassName and array[1] holds its byte code.