Package org.mozilla.javascript.optimizer
Class ClassCompiler
- java.lang.Object
-
- org.mozilla.javascript.optimizer.ClassCompiler
-
public class ClassCompiler extends java.lang.Object
Generates class files from script sources. since 1.5 Release 5
-
-
Field Summary
Fields Modifier and Type Field Description private CompilerEnvirons
compilerEnv
private java.lang.String
mainMethodClassName
private java.lang.Class<?>
targetExtends
private java.lang.Class<?>[]
targetImplements
-
Constructor Summary
Constructors Constructor Description ClassCompiler(CompilerEnvirons compilerEnv)
Construct ClassCompiler that uses the specified compiler environment when generating classes.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description 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.
-
-
-
Field Detail
-
mainMethodClassName
private java.lang.String mainMethodClassName
-
compilerEnv
private CompilerEnvirons compilerEnv
-
targetExtends
private java.lang.Class<?> targetExtends
-
targetImplements
private java.lang.Class<?>[] targetImplements
-
-
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 matchingpublic static void main(Script sc, String[] args)
, it will be called whenmain(String[] args)
is called in the generated class. The class name should be fully qulified name and include the package name like inorg.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 ofgetTargetExtends()
orgetTargetImplements()
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.
-
-