The
Library class represents a SWC archive or a RSL. It implements the
Builder interface which allows for building the library incrementally. The following example defines a SWC archive or RSL:
Library lib = new Library();
You can add components to the
Library object in the following ways:
1. String - Specify a fully-qualified name. 2. File - Specify a source file. 3. VirtualLocalFile - Specify an in-memory source object. 4. URI - Specify a namespace URI.
To add resource bundles to the Library, you can use the addResourceBundle() method, as the following example shows:
lib.addResourceBundle("mx.controls")); To add archive files to the Library, you can use the addArchiveFile() method, as the following example shows:
lib.addArchiveFile("defaults.css", new File("path1/myStyle.css")); Before you can compile with a
Library object, you must configure it. The following four methods are the most common methods you use to configure the
Library object:
1. setLogger() - Use this to set a Logger so that the client can be notified of events that occurred during the compilation. 2. setConfiguration() - Optional. Use this to specify compiler options. 3. setOutput() - Optional. Use this to specify an output file name. 4. setDirectory() - Optional. Use this to specify an RSL output directory.
You must implement the
flex2.tools.oem.Logger interface and use the implementation as the
Logger for the compilation. The following is an example
Logger implementation:
lib.setLogger(new flex2.tools.oem.Logger() { public void log(Message message, int errorCode, String source) { System.out.println(message); } }); To specify compiler options for the
Library object, you must get a
Configuration object that is populated with default values. Then, you set compiler options programmatically using methods of the
Configuration class.
The setOutput() method lets you specify where the Library object writes the output to. If you call the setOutput() method, the build(boolean) method writes directly to the specified location; for example:
lib.setOutput(new File("MyLib.swc")); lib.build(true); If you do not call the
setOutput() method, you can use the
build(OutputStream, boolean) method. This requires that you provide a buffered output stream; for example:
lib.build(new BufferedOutputStream(new FileOutputStream("MyLib.swc")), true); The
setDirectory() method lets you output RSLs to the specified directory; for example:
lib.setDirectory(new File("dir1")); lib.build(true); You can save the
Library object compilation data for reuse. You do this using the
save(OutputStream) method. Subsequent compilations can use the
load(OutputStream) method to get the old data into the
Library object; for example:
lib.save(new BufferedOutputStream(new FileOutputStream("MyLib.incr"))); When a cache file (for example,
MyLib.incr) from a previous compilation is available before the compilation, you can call the
load(OutputStream) method before you call the
build() method; for example:
lib.load(new BufferedInputStream(FileInputStream("MyLib.incr"))); lib.build(true); The
build(false) and
build(OutputStream, false) methods always rebuild the library. The first time you build the
Library object, the
build(true)/build(OutputStream, true) methods do a complete build, which is equivalent to the
build(false)/build(OutputStream, false) methods, respectively. After you call the
clean() method, the
Library object always does a full build.
The clean() method cleans up compilation data in the Library object the output file, if the setOutput() method was called.
You can use the Library class to build a library from a combination of source files in the file system and in-memory, dynamically-generated source objects. You must use the addComponent(VirtualLocalFile), addResourceBundle(VirtualLocalFile), and addArchiveFile(String, VirtualLocalFile) methods to use in-memory objects.
The Library class can be part of a Project.
@see flex2.tools.oem.Configuration
@see flex2.tools.oem.Project
@version 2.0.1
@author Clement Wong