You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2014/04/06 07:39:32 UTC

[10/26] fork a bunch of files from SDK's FB compiler integration. Several files are intact, but many have been gutted to reduce the number of files required. It appears that the Report isn't used for basic compilation, so removing all of the compilatio

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dff3a518/flex-compiler-oem/src/flex2/tools/oem/Builder.java
----------------------------------------------------------------------
diff --git a/flex-compiler-oem/src/flex2/tools/oem/Builder.java b/flex-compiler-oem/src/flex2/tools/oem/Builder.java
new file mode 100644
index 0000000..3517ac9
--- /dev/null
+++ b/flex-compiler-oem/src/flex2/tools/oem/Builder.java
@@ -0,0 +1,281 @@
+/*
+ *
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+package flex2.tools.oem;
+
+import flex2.compiler.util.Benchmark;
+import flex2.compiler.util.PerformanceData;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.Map;
+
+/**
+ * The <code>Builder</code> interface lists the common configuration and build-cycle methods.
+ * The <code>Application</code> and <code>Library</code> classes both implement this interface.
+ *  
+ * @see flex2.tools.oem.Application
+ * @see flex2.tools.oem.Library
+ * @version 2.0.1
+ * @author Clement Wong
+ */
+public interface Builder
+{
+    /**
+     * Sets the compiler options for this object. You use the 
+     * <code>getDefaultConfiguration()</code> method to get a <code>Configuration</code> object.
+     * 
+     * @see flex2.tools.oem.Configuration
+     * 
+     * @param configuration An instance of an object that implements the <code>Configuration</code> interface.
+     */
+    void setConfiguration(Configuration configuration);
+    
+    /**
+     * Gets the default compiler options. The default values are specified in the <code>flex-config.xml</code>
+     * file. You can override the default values by using methods of the <code>Configuration</code> interface.
+     * 
+     * <p>
+     * This method returns the default compiler options in new <code>Configuration</code> objects.
+     * 
+     * @see flex2.tools.oem.Configuration
+     * 
+     * @return An instance of an object that implements the <code>Configuration</code> interface.
+     */
+    Configuration getDefaultConfiguration();
+    
+    /**
+     * Gets the compiler options for this object. Unlike the <code>getDefaultConfiguration()</code> method,
+     * this method returns <code>null</code> if the <code>setConfiguration()</code> method was not called.
+     * 
+     * @see flex2.tools.oem.Configuration
+     * 
+     * @return An instance of an object that implements the <code>Configuration</code> interface.
+     */
+    Configuration getConfiguration();
+
+
+    /**
+     * Gets the performance data for each compiler phase for the last build.
+     *
+     * @return A map of compiler phase to PerformanceData.
+     */
+    Map<String, PerformanceData[]> getCompilerBenchmarks();
+
+    /**
+     * Gets the overall performance data for the last build.
+     *
+     * @return a Benchmark object.
+     */
+    Benchmark getBenchmark();
+    
+    /**
+     * Sets the logger for this object. The compiler uses the logger 
+     * to notify clients of events that occurred during the compilation.
+     * 
+     * @see flex2.tools.oem.Logger
+     * 
+     * @param logger An object that implements the <code>Logger</code> interface.
+     */
+    void setLogger(Logger logger);
+    
+    /**
+     * Gets the logger for this object. This method returns <code>null</code> if the <code>setLogger()</code>
+     * method was not called.
+     *  
+     * @see flex2.tools.oem.Logger
+     * 
+     * @return An object that implements the <code>Logger</code> interface.
+     */
+    Logger getLogger();
+    
+    /**
+     * Sets the custom file extensions for this object. For example:
+     * 
+     * <pre>
+     * setSupportedFileExtensions(flex2.compiler.util.MimeMappings.MXML, new String[] {".foo"});
+     * </pre>
+     * 
+     * This example instructs the compiler to treat files with the <code>*.foo</code> extension as MXML documents. 
+     * The supported MIME types are specified in the <code>flex2.compiler.util.MimeMappings</code> class as constants.
+     * 
+     * @param mimeType MIME type.
+     * @param extensions An array of file extensions.
+     */
+    void setSupportedFileExtensions(String mimeType, String[] extensions);
+
+    /**
+     * Sets the progress meter for this object. This method is optional.
+     * You can set a progress meter so that it receives periodic updates
+     * during the compilation. 
+     * 
+     * @see flex2.tools.oem.ProgressMeter
+     * 
+     * @param meter An object that implements the <code>ProgressMeter</code> interface.
+     */
+    void setProgressMeter(ProgressMeter meter);
+    
+    /**
+     * Sets the path resolver for this object. This method is optional.
+     *
+     * @see flex2.tools.oem.PathResolver
+     * 
+     * @param resolver A path resolver
+     */
+    void setPathResolver(PathResolver resolver);
+
+    /**
+     * Sets the application cache to be shared by all the applications
+     * and libraries in the current workspace.
+     *
+     * @param applicationCache The cache.
+     */
+    void setApplicationCache(ApplicationCache applicationCache);
+
+    /**
+     * Sets the library cache to be shared by all the applications and
+     * libraries in the current project.
+     *
+     * @param libraryCache The cache.
+     */
+    void setSwcCache(LibraryCache libraryCache);
+    
+    /**
+     * Builds the object. If the <code>incremental</code> input argument is <code>false</code>, 
+     * this method recompiles all parts of the object. If the <code>incremental</code> 
+     * input argument is <code>true</code>, 
+     * this method compiles only the parts of the object that have changed since the last compilation.
+     * 
+     * <p>
+     * You must call the <code>setOutput()</code> method before calling this method. The result is saved to the location
+     * specified by the <code>getOutput()</code> method. If there is no output destination specified, this method 
+     * does nothing and returns <code>0</code>.
+     * 
+     * @see flex2.tools.oem.Application
+     * @see flex2.tools.oem.Library
+     * 
+     * @param incremental If <code>true</code>, build incrementally; if <code>false</code>, rebuild.
+     * @return The number of bytes written out.
+     * @throws IOException Thrown when an I/O error occurs during compilation.
+     */
+    long build(boolean incremental) throws IOException;
+
+    /**
+     * Builds the object. If the <code>incremental</code> input argument is <code>false</code>, 
+     * this method recompiles all parts of the object. 
+     * If the <code>incremental</code> input argument is <code>true</code>, 
+     * this method compiles only the parts of the object that have changed since the last compilation.
+     * 
+     * <p>
+     * This method only outputs to the specified <code>OutputStream</code>. For better performance, the OutputStream
+     * should be buffered. This method does not output
+     * to the destination specified by the <code>setOutput()</code> method.
+     * 
+     * @param out The <code>OutputStream</code>.
+     * @param incremental If <code>true</code>, build incrementally; if <code>false</code>, rebuild.
+     * @return The number of bytes written out. This method returns <code>0</code> if the object fails to compile.
+     * @throws IOException Thrown when an I/O error occurs during compilation.
+     */
+    long build(OutputStream out, boolean incremental) throws IOException;
+
+    /**
+     * Stops the compilation. If the client runs the compiler in a background thread,
+     * it can use this method to stop the compilation. The compiler does not
+     * stop immediately, but stops the compilation when it reaches a
+     * stable state.
+     */
+    void stop();
+
+    /**
+     * If you called the <code>setOutput()</code> method, this method
+     * deletes the <code>Application</code> or <code>Library</code>
+     * file. Calls to the <code>build()</code> method trigger a full
+     * recompilation.
+     * 
+     * <p>
+     * The <code>clean()</code> method does not remove compiler options or reset the output location.
+     */
+    void clean();
+
+    /**
+     * Loads compilation data from a previous compilation. This method is usually called before the <code>build()</code> method.
+     * 
+     * @param in The <code>InputStream</code>.
+     * @throws IOException Thrown when an I/O error occurs while loading the compilation data.
+     */
+    void load(InputStream in) throws IOException;
+    
+    /**
+     * Saves the current compilation data. This method is usually called after the <code>build()</code> method.
+     * 
+     * <p>
+     * Do not use this to create a SWF or SWC file. Use the <code>build()</code> method instead.
+     * 
+     * @param out The <code>OutputStream</code>.
+     * @return The number of bytes written out.
+     * @throws IOException Thrown when an I/O error occurs while saving the compilation data.
+     */
+    long save(OutputStream out) throws IOException;
+    
+    /**
+     * Reports information about the current compilation. This method returns <code>null</code>
+     * if you have not yet called the <code>build(boolean)</code>, <code>build(OutputStream, boolean)</code>, or 
+     * <code>compile(boolean)</code> methods.
+     * 
+     * <p>
+     * The <code>Report</code> object includes the following information:
+     * <ol>
+     * <li>Number of source files used in the compilation.</li>
+     * <li>The location of the source files.</li>
+     * <li>Number of asset files that are embedded in the <code>Application</code> or <code>Library</code>.</li>
+     * <li>The location of the asset files.</li>
+     * <li>The dependencies of the source files.</li>
+     * </ol>
+     * <p>
+     * You must call the <code>getReport()</code> method to get a new report after each 
+     * call to the <code>build()</code> method.
+     * 
+     * @return An object that implements the <code>Report</code> interface.
+     */
+    Report getReport();
+
+    File getOutput();
+    
+    /**
+     * <code>Application.compile()</code> or <code>Library.compile()</code> did not compile anything.
+     */
+    int SKIP	= 0;
+    
+    /**
+     * <code>Application.compile()</code> or <code>Library.compile()</code> did not compile but advise
+     * the caller to link again.
+     */
+    int LINK	= Integer.MAX_VALUE;
+    
+    /**
+     * <code>Application.compile()</code> or <code>Library.compile()</code> compiled successfully.
+     */
+    int OK		= 1;
+    
+    /**
+     * <code>Application.compile()</code> or <code>Library.compile()</code> failed to compile.
+     */
+    int FAIL	= -1;
+}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/dff3a518/flex-compiler-oem/src/flex2/tools/oem/Configuration.java
----------------------------------------------------------------------
diff --git a/flex-compiler-oem/src/flex2/tools/oem/Configuration.java b/flex-compiler-oem/src/flex2/tools/oem/Configuration.java
new file mode 100644
index 0000000..b99b6f6
--- /dev/null
+++ b/flex-compiler-oem/src/flex2/tools/oem/Configuration.java
@@ -0,0 +1,1442 @@
+/*
+ *
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+package flex2.tools.oem;
+
+import java.io.File;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import macromedia.asc.embedding.WarningConstants;
+
+/**
+ * The <code>Configuration</code> interface allows clients to set compiler options for Application and Library.
+ * The client can not instantiate a <code>Configuration</code> object. It can be obtained by invoking the
+ * <code>getDefaultConfiguration()</code> method in <code>Application</code> and <code>Library</code>.
+ * 
+ * <pre>
+ * Application app = new Application(new File("HelloWorld.mxml"));
+ * Configuration c1 = app.getDefaultConfiguration();
+ * 
+ * Library lib = new Library();
+ * Configuration c2 = lib.getDefaultConfiguration();
+ * </pre>
+ * 
+ * The compiler populates the default <code>Configuration</code> object with the values in <code>flex-config.xml</code>. 
+ * If a local configuration file is also available (for example, <code>HelloWorld-config.xml</code>), the compiler also uses 
+ * values in that file to populate the <code>Configuration</code> object. The local configuration file's values take precedence
+ * over options set in the <code>flex-config.xml</code> file. If you add a configuration file using the <code>addConfiguration()</code>
+ * method, that configuration file's options take precedence over those set in flex-config.xml or in a local configuration file; they
+ * do not take precedence over configuration options set using the <code>Configuration</code> interface's methods such as <code>setExterns()</code>.
+ * 
+ * <p>
+ * The order of configuration option precedence is as follows (highest first):
+ * <PRE>
+ * 1. Methods of the <code>Configuration</code> interface such as <code>setExterns()</code>.
+ * 2. Configuration file loaded with the <code>addConfiguration()</code> method.
+ * 3. Local configuration file (such as <em>app_name</em>-config.xml).
+ * 4. The flex-config.xml file.
+ * 5. Default compiler settings.
+ * </PRE>
+ * 
+ * @version 2.0.1
+ * @author Clement Wong
+ */
+public interface Configuration
+{
+    /**
+     * Enables accessibility in the application.
+     * This is equivalent to using the <code>accessible</code> option of the mxmlc or compc compilers.
+     * 
+     * <p>
+     * The default value is <code>false</code>.
+     * 
+     * @param b Boolean value that enables or disables accessibility.
+     */
+    void enableAccessibility(boolean b);
+    
+    /**
+     * Sets the ActionScript file encoding. The compiler uses this encoding to read
+     * the ActionScript source files.
+     * This is equivalent to using the <code>actionscript-file-encoding</code> option of the mxmlc or compc compilers.
+     * 
+     * <p>
+     * The default encoding is <code>UTF-8</code>.
+     * 
+     * @param encoding The character encoding; for example <code>UTF-8</code> or <code>Big5</code>.
+     */
+    void setActionScriptFileEncoding(String encoding);
+    
+    /**
+     * Allows some source path directories to be subdirectories of the other.
+     * This is equivalent to using the <code>compiler.allow-source-path-overlap</code> option of the mxmlc or compc compilers.
+     * 
+     * <p>
+     * In some J2EE settings, directory overlapping should be allowed; for example:     
+     * 
+     * <pre>
+     * wwwroot/MyAppRoot
+     * wwwroot/WEB-INF/flex/source_path1
+     * </pre>
+     * 
+     * <p>
+     * The default value is <code>false</code>.
+     * 
+     * @param b Boolean value that allows directory overlapping.
+     */
+    void allowSourcePathOverlap(boolean b);
+    
+    /**
+     * Uses the ActionScript 3 class-based object model for greater performance and better error reporting.
+     * In the class-based object model, most built-in functions are implemented as fixed methods of classes.
+     * This is equivalent to using the <code>compiler.as3</code> option of the mxmlc or compc compilers.
+     * 
+     * <p>
+     * The default value is <code>false</code>.
+     * 
+     * @param b Boolean value that determines whether to use the AS3 class-based object model.
+     */
+    void useActionScript3(boolean b);
+    
+    /**
+     * Sets the context root path so that the compiler can replace <code>{context.root}</code> tokens for
+     * service channel endpoints. This is equivalent to using the <code>compiler.context-root</code> option
+     * for the mxmlc or compc compilers.
+     * 
+     * <p>
+     * By default, this value is undefined.
+     * 
+     * @param path An instance of String.
+     */
+    void setContextRoot(String path);
+
+    /**
+     * Enables debugging in the application.
+     * This is equivalent to using the <code>compiler.debug</code> and <code>-debug-password=true|false</code> options
+     * for the mxmlc or compc compilers.
+     * 
+     * <p>
+     * The default value <code>debug</code> is <code>false</code>. The default debug password is "".
+     * 
+     * @param b Boolean value that enables or disables debugging.
+     * @param debugPassword A password that is embedded in the application.
+     */
+    void enableDebugging(boolean b, String debugPassword);
+    
+    /**
+     * Sets the location of the default CSS file.
+     * This is equivalent to using the <code>compiler.defaults-css-url</code> option of the mxmlc or compc compilers</code>.
+     * 
+     * @param url An instance of <code>java.io.File</code>.
+     */
+    void setDefaultCSS(File url);
+    
+    /**
+     * Uses the ECMAScript edition 3 prototype-based object model to allow dynamic overriding
+     * of prototype properties. In the prototype-based object model, built-in functions are
+     * implemented as dynamic properties of prototype objects.
+     * This is equivalent to using the <code>compiler.es</code> option for the mxmlc or compc compilers.
+     * 
+     * <p>
+     * The default value is <code>false</code>.
+     * 
+     * @param b Boolean value that enables or disables the use of the ECMAScript edition 3 prototype-based object model.
+     */
+    void useECMAScript(boolean b);
+
+    /**
+     * Sets the list of SWC files or directories to compile against, but to omit from linking.
+     * This is equivalent to using the <code>compiler.external-library-path</code> option of the 
+     * mxmlc or compc compilers.
+     * 
+     * @param paths A list of paths. The <code>File.isDirectory()</code> method should return 
+     * <code>true</code>; <code>File</code> instances should represent SWC files.
+     */
+    void setExternalLibraryPath(File[] paths);
+
+    /**
+     * Adds to the existing list of SWC files.
+     * 
+     * @see #setExternalLibraryPath(File[])
+     * 
+     * @param paths A list of paths. The <code>File.isDirectory()</code> method should return 
+     * <code>true</code>; <code>File</code> instances should represent SWC files.
+     */
+    void addExternalLibraryPath(File[] paths);
+
+    /**
+     * Sets a range to restrict the number of font glyphs embedded into the application.
+     * This is equivalent to using the <code>compiler.fonts.languages.language-range</code> option
+     * for the mxmlc or compc compilers.
+     * 
+     * <p>
+     * For example:
+     * 
+     * <pre>
+     * setFontLanguageRange("englishRange", "U+0020-U+007E");
+     * </pre>
+     * 
+     * @param language Represents the language name.
+     * @param range Defines range of glyphs.
+     */
+    void setFontLanguageRange(String language, String range);
+    
+    /**
+     * Sets the location of the local font snapshot file. The file contains system font data produced by the 
+     * <code>flex2.tools.FontSnapshot</code> tool. This is equivalent to using the <code>compiler.fonts.local-fonts-snapshot</code>
+     * option for the mxmlc or compc compilers.
+     * 
+     * @param file Local font snapshot file.
+     */
+    void setLocalFontSnapshot(File file);
+
+    /**
+     * Sets the local font file paths to be searched by the compiler.
+     * This is equivalent to using <code>mxmlc/compc --compiler.fonts.local-font-paths</code>.
+     * 
+     * @param paths an array of file paths.
+     */
+    void setLocalFontPaths(String[] paths);
+
+    /**
+     * Adds local font paths to the existing local font path list.
+     * 
+     * @see #setLocalFontPaths(String[])
+     * @param paths an array of local font file paths.
+     */
+    void addLocalFontPaths(String[] paths);
+
+    /**
+     * Sets the font managers used by the compiler. Replaces the existing list of font managers.
+     * The default is <code>flash.fonts.JREFontManager</code>.
+     * This is equivalent to using the <code>compiler.fonts.managers</code> option for the mxmlc or compc compilers.
+     * 
+     * <p>
+     * For example:
+     * 
+     * <pre>
+     * setFontManagers("flash.fonts.BatikFontManager");
+     * </pre>
+     * 
+     * @param classNames An array of Java class names.
+     */
+    void setFontManagers(String[] classNames);
+    
+    /**
+     * Adds font managers to the existing font manager list.
+     * 
+     * @see #setFontManagers(String[])
+     * @param classNames An array of Java class names.
+     */
+    void addFontManagers(String[] classNames);
+    
+    /**
+     * Sets the maximum number of embedded font faces that can be cached.
+     * This is equivalent to using the <code>compiler.fonts.max-cached-fonts</code> option for the 
+     * mxmlc or compc compilers.
+     * 
+     * <p>
+     * The default value is 20.
+     * 
+     * @param size An integer representing the maximum number of embedded font faces.
+     */
+    void setMaximumCachedFonts(int size);
+    
+    /**
+     * Sets the maximum number of character glyph outlines to cache for each font face.
+     * This is equivalent to using the <code>compiler.fonts.max-glyphs-per-face</code> option
+     * for the mxmlc or compc compilers.
+     * 
+     * <p>
+     * The default value is 1000.
+     *  
+     * @param size An integer representing the maximum number of character glyph outlines to cache for each font face.
+     */
+    void setMaximumGlyphsPerFace(int size);
+    
+    /**
+     * Sets the compiler when it runs on a server without a display.
+     * This is equivalent to using the <code>compiler.headless-server</code> option of the mxmlc or compc compilers.
+     * 
+     * @param b Boolean value that determines if the compiler is running on a server without a display.
+     */
+    void useHeadlessServer(boolean b);
+    
+    /**
+     * Sets the ActionScript metadata that the compiler keeps in the SWF.
+     * This is equivalent to using the <code>compiler.keep-actionscript-metadata</code> option of the mxmlc or compc compilers.
+     * 
+     * <p>
+     * The default value is <code>{Bindable, Managed, ChangeEvent, NonCommittingChangeEvent, Transient}</code>.
+     * 
+     * @param md An array of ActionScript metadata names.
+     */
+    void setActionScriptMetadata(String[] md);
+    
+    /**
+     * Adds the list of ActionScript metadata names to the existing list of ActionScript metadata
+     * that the compiler keeps in the SWF.
+     * 
+     * @see #setActionScriptMetadata(String[])
+     * 
+     * @param md An array of ActionScript metadata names.
+     */
+    void addActionScriptMetadata(String[] md);
+    
+    /**
+     * Instructs the compiler to keep a style sheet's type selector in a SWF file, even if that type 
+     * (the class) is not used in the application. 
+     * This is equivalent to using the <code>compiler.keep-all-type-selectors</code> option of the mxmlc or compc compilers.
+     * 
+     * <p>
+     * The default value is <code>false</code>.
+     * 
+     * @param b Boolean value.
+     */
+    void keepAllTypeSelectors(boolean b);
+    
+    /**
+     * Saves temporary source files that are generated during MXML compilation.
+     * This is equivalent to using the <code>compiler.keep-generated-actionscript</code> option of the 
+     * mxmlc and compc compilers.
+     * 
+     * <p>
+     * The default value is <code>false</code>.
+     * 
+     * @param b Boolean value.
+     */
+    void keepCompilerGeneratedActionScript(boolean b);
+
+    /**
+     * Instructs the linker to keep a report of the content that is included in the application.
+     * You can use the <code>Report.writeLinkReport()</code> method to retrieve the linker report.
+     * 
+     * @param b Boolean value.
+     */
+    void keepLinkReport(boolean b);
+    
+    /**
+     * Instructs the linker to keep a SWF size summary.
+     * You can use the <code>Report.writeSizeReport()</code> method to retrieve the linker report.
+     * 
+     * @param b Boolean value.
+     */
+    void keepSizeReport(boolean b);
+    
+    /**
+     * Instructs the compiler to keep a report of the compiler configuration settings.
+     * You can use the <code>Report.writeConfigurationReport()</code> method to retrieve the configuration report.
+     * 
+     * @param b Boolean value.
+     */
+    void keepConfigurationReport(boolean b);
+    
+    /**
+     * Includes a list of SWC files to completely include in the application.
+     * This is equivalent to using the <code>compiler.include-libraries</code> option of the mxmlc and compc compilers.
+     * 
+     * @see #setIncludes(String[])
+     * @see #setExterns(File[])
+     * @see #setExterns(String[])
+     * @see #setExternalLibraryPath(File[])
+     * 
+     * @param libraries An array of <code>File</code> objects. The <code>File.isDirectory()</code> method should return 
+     * <code>true</code>; or instances must represent SWC files.
+     */
+    void includeLibraries(File[] libraries);
+    
+    /**
+     * Sets a list of SWC files or directories that contain SWC files.
+     * This is equivalent to using the <code>compiler.library-path</code> option of the mxmlc or compc compilers.
+     * 
+     * @param paths An array of <code>File</code> objects. The <code>File.isDirectory()</code> method should return 
+     * <code>true</code>; instances must represent SWC files.
+     */
+    void setLibraryPath(File[] paths);
+
+    /**
+     * Adds a list of SWC files or directories to the default library path.
+     * 
+     * @see #setLibraryPath(File[])
+     * 
+     * @param paths An array of <code>File</code> objects. The <code>File.isDirectory()</code> method should return 
+     * <code>true</code>; instances must represent SWC files.
+     */
+    void addLibraryPath(File[] paths);
+    
+    /**
+     * Sets the locales that the compiler uses to replace <code>{locale}</code> tokens that appear in some configuration values.
+     * This is equivalent to using the <code>compiler.locale</code> option of the mxmlc or compc compilers.
+     * 
+     * <p>
+     * For example:
+     * 
+     * <pre>
+     * addSourcePath(new File[] { "locale/{locale}" });
+     * setLocales(new String[] { "en_US" });
+     * </pre>
+     * 
+     * <p>
+     * The compiler adds the <code>locale/en_US</code> directory to the source path.
+     *
+     * @param locales An array of Strings specifying locales.
+     * 
+     * @since 3.0
+     */
+    void setLocale(String[] locales);
+    
+    /**
+     * Sets the locale that the compiler uses to replace <code>{locale}</code> tokens that appear in some configuration values.
+     * This is equivalent to using the <code>compiler.locale</code> option of the mxmlc or compc compilers
+     * to set a single locale.
+     * 
+     * <p>
+     * For example:
+     * 
+     * <pre>
+     * addSourcePath(new File[] { "locale/{locale}" });
+     * setLocale(Locale.US);
+     * </pre>
+     * 
+     * <p>
+     * The compiler adds the <code>locale/en_US</code> directory to the source path.
+     *
+     * @param locale A <code>java.util.Locale</code>.
+     * 
+     * @deprecated As of 3.0, use setLocale(String[])
+     */
+    void setLocale(Locale locale);
+    
+    /**
+     * Specifies a URI to associate with a manifest of components for use as MXML elements.
+     * This is equivalent to using the <code>compiler.namespaces.namespace</code> option of the mxmlc or compc compilers.
+     * 
+     * @param namespaceURI A namespace URI.
+     * @param manifest A component manifest file (XML).
+     */
+    void setComponentManifest(String namespaceURI, File manifest);
+
+    /**
+     * Enables post-link optimization. This is equivalent to using the <code>compiler.optimize</code> option of the
+     * mxmlc or compc compilers. Application sizes are usually smaller with this option enabled.
+     * 
+     * <p>
+     * The default value is <code>true</code>.
+     * 
+     * @param b Boolean value.
+     */
+    void optimize(boolean b);
+    
+    /**
+     * Enables ZLIB compression on SWF file. This is equivalent to using the <code>compiler.compress</code> option of the
+     * mxmlc or compc compilers. Application sizes are usually smaller with this option enabled.
+     * 
+     * @param b Boolean value.
+     */    
+    void compress(boolean b);
+
+    /**
+     * Sets the location of the Flex Data Services service configuration file.
+     * This is equivalent to using the <code>compiler.services</code> option of the mxmlc and compc compilers.
+     * 
+     * @param file Instance of the <code>File</code> class.
+     */
+    void setServiceConfiguration(File file);
+    
+    /**
+     * Runs the ActionScript compiler in a mode that detects legal but potentially incorrect code.
+     * This is equivalent to using the <code>compiler.show-actionscript-warnings</code> option of the 
+     * mxmlc or compc compilers.
+     * 
+     * <p>
+     * The default value is <code>true</code>.
+     * 
+     * @see #checkActionScriptWarning(int, boolean)
+     * 
+     * @param b Boolean value.
+     */
+    void showActionScriptWarnings(boolean b);
+    
+    /**
+     * Toggles whether warnings generated from data binding code are displayed.
+     * This is equivalent to using the <code>compiler.show-binding-warnings</code> option of the mxmlc or compc compilers.
+     * 
+     * <p>
+     * The default value is <code>true</code>.
+     * 
+     * @param b Boolean value.
+     */
+    void showBindingWarnings(boolean b);
+
+    /**
+     * Toggles whether the use of deprecated APIs generates a warning.
+     * This is equivalent to using the <code>compiler.show-deprecation-warnings</code> option of the mxmlc or compc compilers.
+     * 
+     * <p>   
+     * The default value is <code>true</code>.
+     * 
+     * @param b Boolean value.
+     */
+    void showDeprecationWarnings(boolean b);
+    
+    /**
+     * Toggles whether warnings are displayed when an embedded font name shadows
+     * a device font name.
+     * This is equivalent to using the <code>compiler.show-shadowed-device-font-warnings</code> option of the mxmlc or compc compilers.
+     * 
+     * <p>   
+     * The default value is <code>true</code>.
+     * 
+     * @param b Boolean value.
+     */
+    void showShadowedDeviceFontWarnings(boolean b);
+
+    /**
+     * Toggles whether warnings generated from unused type selectors are displayed.
+     * This is equivalent to using the <code>compiler.show-unused-type-selector-warnings</code> option of the mxmlc or compc
+     * compilers.
+     * 
+     * <p>
+     * The default value is <code>true</code>.
+     * 
+     * @param b Boolean value.
+     */
+    void showUnusedTypeSelectorWarnings(boolean b);
+    
+    /**
+     * Sets a list of path elements that form the roots of ActionScript class hierarchies.
+     * This is equivalent to using the <code>compiler.source-path</code> option of the mxmlc or compc compilers.
+     * 
+     * @param paths An array of <code>java.io.File</code> objects. The <code>File.isDirectory()</code> method 
+     * must return <code>true</code>.
+     */
+    void setSourcePath(File[] paths);
+
+    /**
+     * Adds a list of path elements to the existing source path list.
+     * 
+     * @param paths An array of <code>java.io.File</code> objects. The <code>File.isDirectory()</code> method must return <code>true</code>.
+     * @see #setSourcePath(File[])
+     */
+    void addSourcePath(File[] paths);
+    
+    /**
+     * Runs the ActionScript compiler in strict error checking mode.
+     * This is equivalent to using the <code>compiler.strict</code> option of the mxmlc or compc compilers.
+     * 
+     * <p>
+     * The default value is <code>true</code>.
+     * 
+     * @param b Boolean value.
+     */
+    void enableStrictChecking(boolean b);
+    
+    /**
+     * Sets a list of CSS or SWC files to apply as a theme.
+     * This is equivalent to using the <code>compiler.theme</code> option of the mxmlc or compc compilers.
+     * 
+     * @param files An array of <code>java.io.File</code> objects.
+     */
+    void setTheme(File[] files);
+
+    /**
+     * Adds a list of CSS or SWC files to the existing list of theme files.
+     * 
+     * @param files An array of <code>java.io.File</code> objects.
+     * @see #setTheme(File[])
+     */
+    void addTheme(File[] files);
+
+    /**
+     * Determines whether resources bundles are included in the application.
+     * This is equivalent to using the <code>compiler.use-resource-bundle-metadata</code> option of the mxmlc or compc compilers.
+     *
+     * <p>
+     * The default value is <code>true</code>.
+     * 
+     * @param b Boolean value.
+     */
+    void useResourceBundleMetaData(boolean b);
+    
+    /**
+     * Generates bytecodes that include line numbers. When a run-time error occurs,
+     * the stacktrace shows these line numbers. Enabling this option generates larger SWF files.
+     * This is equivalent to using the <code>compiler.verbose-stacktraces</code> option of the mxmlc or compc compilers.
+     * 
+     * <p>
+     * The default value is <code>false</code>.
+     * 
+     * @param b Boolean value.
+     */
+    void enableVerboseStacktraces(boolean b);
+
+    /**
+     * Enables FlashType for embedded fonts, which provides greater clarity for small fonts.
+     * This is equilvalent to using the <code>compiler.fonts.flash-type</code> option for the mxmlc or compc compilers.
+     * 
+     * <p>
+     * The default value is <code>true</code>.
+     * 
+     * @param b Boolean value.
+     * @deprecated
+     */
+    void enableFlashType(boolean b);
+
+    /**
+     * Enables advanced anti-aliasing for embedded fonts, which provides greater clarity for small fonts.
+     * This is equilvalent to using the <code>compiler.fonts.advanced-anti-aliasing</code> option for the mxmlc or compc compilers.
+     * 
+     * <p>
+     * The default value is <code>true</code>.
+     * 
+     * @param b Boolean value.
+     * @since 3.0
+     */
+    void enableAdvancedAntiAliasing(boolean b);
+
+    /**
+     * <code>Array.toString()</code> format has changed.
+     */
+    int WARN_ARRAY_TOSTRING_CHANGES = WarningConstants.kWarning_ArrayToStringChanges;
+
+    /**
+     * Assignment within conditional.
+     */
+    int WARN_ASSIGNMENT_WITHIN_CONDITIONAL = WarningConstants.kWarning_AssignmentWithinConditional;
+
+    /**
+     * Possibly invalid Array cast operation.
+     */
+    int WARN_BAD_ARRAY_CAST = WarningConstants.kWarning_BadArrayCast;
+
+    /**
+     * Non-Boolean value used where a <code>Boolean</code> value was expected.
+     */
+    int WARN_BAD_BOOLEAN_ASSIGNMENT = WarningConstants.kWarning_BadBoolAssignment;
+
+    /**
+     * Invalid <code>Date</code> cast operation.
+     */
+    int WARN_BAD_DATE_CAST = WarningConstants.kWarning_BadDateCast;
+
+    /**
+     * Unknown method.
+     */
+    int WARN_BAD_ES3_TYPE_METHOD = WarningConstants.kWarning_BadES3TypeMethod;
+
+    /**
+     * Unknown property.
+     */
+    int WARN_BAD_ES3_TYPE_PROP = WarningConstants.kWarning_BadES3TypeProp;
+
+    /**
+     * Illogical comparison with <code>NaN</code>. Any comparison operation involving <code>NaN</code> will evaluate to <code>false</code> because <code>NaN != NaN</code>.
+     */
+    int WARN_BAD_NAN_COMPARISON = WarningConstants.kWarning_BadNaNComparision;
+
+    /**
+     * Impossible assignment to <code>null</code>.
+     */
+    int WARN_BAD_NULL_ASSIGNMENT = WarningConstants.kWarning_BadNullAssignment;
+
+    /**
+     * Illogical comparison with <code>null</code>.
+     */
+    int WARN_BAD_NULL_COMPARISON = WarningConstants.kWarning_BadNullComparision;
+
+    /**
+     * Illogical comparison with <code>undefined</code>.  Only untyped variables (or variables of type <code>*</code>) can be <code>undefined</code>.
+     */
+    int WARN_BAD_UNDEFINED_COMPARISON = WarningConstants.kWarning_BadUndefinedComparision;
+
+    /**
+     * <code>Boolean()</code> with no arguments returns <code>false</code> in ActionScript 3.0.
+     * <code>Boolean()</code> returned <code>undefined</code> in ActionScript 2.0.
+     */
+    int WARN_BOOLEAN_CONSTRUCTOR_WITH_NO_ARGS = WarningConstants.kWarning_BooleanConstructorWithNoArgs;
+
+    /**
+     * <code>__resolve</code> is deprecated.
+     */
+    int WARN_CHANGES_IN_RESOLVE = WarningConstants.kWarning_ChangesInResolve;
+
+    /**
+     * <code>Class</code> is sealed. It cannot have members added to it dynamically.
+     */
+    int WARN_CLASS_IS_SEALED = WarningConstants.kWarning_ClassIsSealed;
+
+    /**
+     * Constant not initialized.
+     */
+    int WARN_CONST_NOT_INITIALIZED = WarningConstants.kWarning_ConstNotInitialized;
+
+    /**
+     * Function used in new expression returns a value.  Result will be what the function returns, rather than a new instance of that function.
+     */
+    int WARN_CONSTRUCTOR_RETURNS_VALUE = WarningConstants.kWarning_ConstructorReturnsValue;
+
+    /**
+     * EventHandler was not added as a listener.
+     */
+    int WARN_DEPRECATED_EVENT_HANDLER_ERROR = WarningConstants.kWarning_DepricatedEventHandlerError;
+
+    /**
+     * Unsupported ActionScript 2.0 function.
+     */
+    int WARN_DEPRECATED_FUNCTION_ERROR = WarningConstants.kWarning_DepricatedFunctionError;
+
+    /**
+     * Unsupported ActionScript 2.0 property.
+     */
+    int WARN_DEPRECATED_PROPERTY_ERROR = WarningConstants.kWarning_DepricatedPropertyError;
+
+    /**
+     * More than one argument by the same name.
+     */
+    int WARN_DUPLICATE_ARGUMENT_NAMES = WarningConstants.kWarning_DuplicateArgumentNames;
+
+    /**
+     * Duplicate variable definition
+     */
+    int WARN_DUPLICATE_VARIABLE_DEF = WarningConstants.kWarning_DuplicateVariableDef;
+
+    /**
+     * ActionScript 3.0 iterates over an object's properties within a "<code>for x in target</code>" statement in random order.
+     */
+    int WARN_FOR_VAR_IN_CHANGES = WarningConstants.kWarning_ForVarInChanges;
+
+    /**
+     * Importing a package by the same name as the current class will hide that class identifier in this scope.
+     */
+    int WARN_IMPORT_HIDES_CLASS = WarningConstants.kWarning_ImportHidesClass;
+
+    /**
+     * Use of the <code>instanceof</code> operator.
+     */
+    int WARN_INSTANCEOF_CHANGES = WarningConstants.kWarning_InstanceOfChanges;
+
+    /**
+     * Internal error in compiler.
+     */
+    int WARN_INTERNAL_ERROR = WarningConstants.kWarning_InternalError;
+
+    /**
+     * <code>_level</code> is no longer supported. For more information, see the <code>flash.display</code> package.
+     */
+    int WARN_LEVEL_NOT_SUPPORTED = WarningConstants.kWarning_LevelNotSupported;
+
+    /**
+     * Missing namespace declaration (e.g. variable is not defined to be <code>public</code>, <code>private</code>, etc.).
+     */
+    int WARN_MISSING_NAMESPACE_DECL = WarningConstants.kWarning_MissingNamespaceDecl;
+
+    /**
+     * Negative value will become a large positive value when assigned to a <code>uint</code> data type.
+     */
+    int WARN_NEGATIVE_UINT_LITERAL = WarningConstants.kWarning_NegativeUintLiteral;
+
+    /**
+     * Missing constructor.
+     */
+    int WARN_NO_CONSTRUCTOR = WarningConstants.kWarning_NoConstructor;
+
+    /**
+     * The <code>super()</code> statement was not called within the constructor.
+     */
+    int WARN_NO_EXPLICIT_SUPER_CALL_IN_CONSTRUCTOR = WarningConstants.kWarning_NoExplicitSuperCallInConstructor;
+
+    /**
+     * Missing type declaration.
+     */
+    int WARN_NO_TYPE_DECL = WarningConstants.kWarning_NoTypeDecl;
+
+    /**
+     * In ActionScript 3.0, white space is ignored and <code>''</code> returns <code>0</code>.
+     * <code>Number()</code> returns <code>NaN</code> in ActionScript 2.0 when the parameter is <code>''</code> or contains white space.
+     */
+    int WARN_NUMBER_FROM_STRING_CHANGES = WarningConstants.kWarning_NumberFromStringChanges;
+
+    /**
+     * Change in scoping for the <code>this</code> keyword.
+     * Class methods extracted from an instance of a class will always resolve <code>this</code> back to that instance.
+     * In ActionScript 2.0, <code>this</code> is looked up dynamically based on where the method is invoked from.
+     */
+    int WARN_SCOPING_CHANGE_IN_THIS = WarningConstants.kWarning_ScopingChangeInThis;
+
+    /**
+     * Inefficient use of <code>+=</code> on a <code>TextField</code>.
+     */
+    int WARN_SLOW_TEXTFIELD_ADDITION = WarningConstants.kWarning_SlowTextFieldAddition;
+
+    /**
+     * Possible missing parentheses.
+     */
+    int WARN_UNLIKELY_FUNCTION_VALUE = WarningConstants.kWarning_UnlikelyFunctionValue;
+
+    /**
+     * Possible usage of the ActionScript 2.0 <code>XML</code> class.
+     */
+    int WARN_XML_CLASS_HAS_CHANGED = WarningConstants.kWarning_XML_ClassHasChanged;
+     
+    /**
+     * Enables checking of the following ActionScript warnings:
+     * 
+     * <pre>
+     * --compiler.warn-array-tostring-changes
+     * --compiler.warn-assignment-within-conditional
+     * --compiler.warn-bad-array-cast
+     * --compiler.warn-bad-bool-assignment
+     * --compiler.warn-bad-date-cast
+     * --compiler.warn-bad-es3-type-method
+     * --compiler.warn-bad-es3-type-prop
+     * --compiler.warn-bad-nan-comparison
+     * --compiler.warn-bad-null-assignment
+     * --compiler.warn-bad-null-comparison
+     * --compiler.warn-bad-undefined-comparison
+     * --compiler.warn-boolean-constructor-with-no-args
+     * --compiler.warn-changes-in-resolve
+     * --compiler.warn-class-is-sealed
+     * --compiler.warn-const-not-initialized
+     * --compiler.warn-constructor-returns-value
+     * --compiler.warn-deprecated-event-handler-error
+     * --compiler.warn-deprecated-function-error
+     * --compiler.warn-deprecated-property-error
+     * --compiler.warn-duplicate-argument-names
+     * --compiler.warn-duplicate-variable-def
+     * --compiler.warn-for-var-in-changes
+     * --compiler.warn-import-hides-class
+     * --compiler.warn-instance-of-changes
+     * --compiler.warn-internal-error
+     * --compiler.warn-level-not-supported
+     * --compiler.warn-missing-namespace-decl
+     * --compiler.warn-negative-uint-literal
+     * --compiler.warn-no-constructor
+     * --compiler.warn-no-explicit-super-call-in-constructor
+     * --compiler.warn-no-type-decl
+     * --compiler.warn-number-from-string-changes
+     * --compiler.warn-scoping-change-in-this
+     * --compiler.warn-slow-text-field-addition
+     * --compiler.warn-unlikely-function-value
+     * --compiler.warn-xml-class-has-changed
+     * </pre>
+     * 
+     * @param warningCode Warning code.
+     * @param b Boolean value.
+     * 
+     * @see #WARN_ARRAY_TOSTRING_CHANGES
+     * @see #WARN_ASSIGNMENT_WITHIN_CONDITIONAL
+     * @see #WARN_BAD_ARRAY_CAST
+     * @see #WARN_BAD_BOOLEAN_ASSIGNMENT
+     * @see #WARN_BAD_DATE_CAST
+     * @see #WARN_BAD_ES3_TYPE_METHOD
+     * @see #WARN_BAD_ES3_TYPE_PROP
+     * @see #WARN_BAD_NAN_COMPARISON
+     * @see #WARN_BAD_NULL_ASSIGNMENT
+     * @see #WARN_BAD_NULL_COMPARISON
+     * @see #WARN_BAD_UNDEFINED_COMPARISON
+     * @see #WARN_BOOLEAN_CONSTRUCTOR_WITH_NO_ARGS
+     * @see #WARN_CHANGES_IN_RESOLVE
+     * @see #WARN_CLASS_IS_SEALED
+     * @see #WARN_CONST_NOT_INITIALIZED
+     * @see #WARN_CONSTRUCTOR_RETURNS_VALUE
+     * @see #WARN_DEPRECATED_EVENT_HANDLER_ERROR
+     * @see #WARN_DEPRECATED_FUNCTION_ERROR
+     * @see #WARN_DEPRECATED_PROPERTY_ERROR
+     * @see #WARN_DUPLICATE_ARGUMENT_NAMES
+     * @see #WARN_DUPLICATE_VARIABLE_DEF
+     * @see #WARN_FOR_VAR_IN_CHANGES
+     * @see #WARN_IMPORT_HIDES_CLASS
+     * @see #WARN_INSTANCEOF_CHANGES
+     * @see #WARN_INTERNAL_ERROR
+     * @see #WARN_LEVEL_NOT_SUPPORTED
+     * @see #WARN_MISSING_NAMESPACE_DECL
+     * @see #WARN_NEGATIVE_UINT_LITERAL
+     * @see #WARN_NO_CONSTRUCTOR
+     * @see #WARN_NO_EXPLICIT_SUPER_CALL_IN_CONSTRUCTOR
+     * @see #WARN_NO_TYPE_DECL
+     * @see #WARN_NUMBER_FROM_STRING_CHANGES
+     * @see #WARN_SCOPING_CHANGE_IN_THIS
+     * @see #WARN_SLOW_TEXTFIELD_ADDITION
+     * @see #WARN_UNLIKELY_FUNCTION_VALUE
+     * @see #WARN_XML_CLASS_HAS_CHANGED
+     */
+    void checkActionScriptWarning(int warningCode, boolean b);
+    
+    /**
+     * Sets the default background color. You can override this by using the application code.
+     * This is the equivalent of the <code>default-background-color</code> option of the mxmlc or compc compilers.
+     * 
+     * <p>
+     * The default value is <code>0x869CA7</code>.
+     * 
+     * @param color An RGB value.
+     */
+    void setDefaultBackgroundColor(int color);
+    
+    /**
+     * Sets the default frame rate to be used in the application.
+     * This is the equivalent of the <code>default-frame-rate</code> option of the mxmlc or compc compilers.
+     * 
+     * <p>
+     * The default value is <code>24</code>.
+     * 
+     * @param rate Number of frames per second.
+     */
+    void setDefaultFrameRate(int rate);
+    
+    /**
+     * Sets the default script execution limits (which can be overridden by root attributes).
+     * This is equivalent to using the <code>default-script-limits</code> option of the mxmlc or compc compilers.
+     * 
+     * <p>
+     * The default maximum recursion depth is <code>1000</code>.
+     * The default maximum execution time is <code>60</code>.
+     * 
+     * @param maxRecursionDepth Recursion depth.
+     * @param maxExecutionTime Execution time, in seconds. 
+     */
+    void setDefaultScriptLimits(int maxRecursionDepth, int maxExecutionTime);
+    
+    /**
+     * Sets the default application size.
+     * This is equivalent to using the <code>default-size</code> option of the mxmlc or compc compilers.
+     * 
+     * <p>
+     * The default width is <code>500</code>.
+     * The default height is <code>375</code>.
+     * 
+     * @param width The width of the application, in pixels.
+     * @param height The height of the application, in pixels.
+     */
+    void setDefaultSize(int width, int height);
+    
+    /**
+     * Sets a list of definitions to omit from linking when building an application.
+     * This is equivalent to using the <code>externs</code> option of the mxmlc and compc compilers.
+     * 
+     * @param definitions An array of definitions (for example, classes, functions, variables, or namespaces).
+     */
+    void setExterns(String[] definitions);
+    
+    /**
+     * Adds a list of definitions to the existing list of definitions.
+     *
+     * @see #setExterns(File[])
+     * @see #setExterns(String[])
+     * @param definitions An array of definitions (for example, classes, functions, variables, namespaces).
+     */
+    void addExterns(String[] definitions);
+
+    /**
+     * Loads a file containing configuration options. The file format follows the format of the <code>flex-config.xml</code> file.
+     * This is equivalent to using the <code>load-config</code> option of the mxmlc or compc compilers.
+     * 
+     * @param file An instance of the <code>java.io.File</code> class.
+     */
+    void setConfiguration(File file);
+
+    /**
+     * Adds a file to the existing list of configuration files.
+     * 
+     * @see #setConfiguration(File)
+     * @param file An instance of the <code>java.io.File</code> class.
+     */
+    void addConfiguration(File file);
+    
+	/**
+	 * Sets the configuration parameters. The input should be valid <code>mxmlc/compc</code> command-line arguments.<p>
+	 * 
+	 * @param args <code>mxmlc/compc</code> command-line arguments
+	 */
+	void setConfiguration(String[] args);
+
+    /**
+     * Sets a list of definitions to omit from linking when building an application.
+     * This is equivalent to using the <code>load-externs</code> option of the mxmlc or compc compilers.
+     * This option is similar to the <code>setExterns(String[])</code> method. The following is an example of
+     * the file format:
+     * 
+     * <pre>
+     * &lt;script>
+     *     &lt;!-- use 'dep', 'pre' or 'dep' to specify a definition to be omitted from linking. -->
+     *     &lt;def id="mx.skins:ProgrammaticSkin"/>
+     *     &lt;pre id="mx.core:IFlexDisplayObject"/>
+     *     &lt;dep id="String"/>
+     * &lt;/script>
+     * </pre>
+     * 
+     * @see #setExterns(String[])
+     * @param files An array of <code>java.io.File</code> objects.
+     */
+    void setExterns(File[] files);
+    
+    /**
+     * Adds a list of files to the existing list of definitions to be omitted from linking.
+     * 
+     * @see #setExterns(File[])
+     * @see #setExterns(String[])
+     * @param files An array of <code>java.io.File</code> objects.
+     */
+    void addExterns(File[] files);
+
+    /**
+     * Sets a SWF frame label with a sequence of class names that are linked onto the frame.
+     * This is equivalent to using the <code>frames.frame</code> option of the mxmlc or compc compilers.
+     * 
+     * @param label A string.
+     * @param classNames An array of class names.
+     */
+    void setFrameLabel(String label, String[] classNames);
+    
+    /**
+     * Sets a list of definitions to always link in when building an application.
+     * This is equivalent to using the <code>includes</code> option of the mxmlc or compc compilers.
+     * 
+     * @param definitions An array of definitions (for example, classes, functions, variables, or namespaces).
+     */
+    void setIncludes(String[] definitions);
+    
+    /**
+     * Adds a list of definitions to the existing list of definitions.
+     *
+     * @see #setIncludes(String[])
+     * @param definitions An array of definitions (for example, classes, functions, variables, or namespaces).
+     */
+    void addIncludes(String[] definitions);
+
+    /**
+     * Specifies the licenses that the compiler validates before compiling.
+     * This is equivalent to using the <code>licenses.license</code> option of the mxmlc or compc compilers.
+     * 
+     * @param productName A string representing the product name; for example "flexbuilder3".
+     * @param serialNumber A serial number.
+     */
+    void setLicense(String productName, String serialNumber);
+
+    /**
+     * A contributor's name to store in the SWF metadata.
+     */
+    int CONTRIBUTOR = 1;
+
+    /**
+     * A creator's name to store in the SWF metadata.
+     */
+    int CREATOR     = 2;
+
+    /**
+     * The creation date to store in the SWF metadata.
+     */
+    int DATE        = 4;
+
+    /**
+     * The default and localized RDF/XMP description to store in the SWF metadata.
+     */
+    int DESCRIPTION = 8;
+
+    /**
+     * The default and localized RDF/XMP title to store in the SWF metadata.
+     */
+    int TITLE       = 16;
+
+    /**
+     * The language to store in the SWF metadata (i.e. EN, FR).
+     */
+    int LANGUAGE    = 32;
+
+    /**
+     * A publisher's name to store in the SWF metadata.
+     */
+    int PUBLISHER   = 64;
+    
+    /**
+     * Sets the metadata section of the application SWF. This option is equivalent to using the following options of
+     * the mxmlc and compc compilers:
+     * 
+     * <pre>
+     * metadata.contributor
+     * metadata.creator
+     * metadata.date
+     * metadata.description
+     * metadata.language
+     * metadata.localized-description
+     * metadata.localized-title
+     * metadata.publisher
+     * metadata.title
+     * </pre>
+     * 
+     * <p>
+     * The valid fields and types of value are specified below:
+     * 
+     * <pre>
+     * CONTRIBUTOR      java.lang.String
+     * CREATOR          java.lang.String
+     * DATE             java.util.Date
+     * DESCRIPTION      java.util.Map<String, String>
+     * TITLE            java.util.Map<String, String>
+     * LANGUAGE         java.lang.String
+     * PUBLISHER        java.lang.String
+     * </pre>
+     * 
+     * For example:
+     * 
+     * <pre>
+     * Map titles = new HashMap();
+     * titles.put("EN", "Adobe Flex 2 Application");
+     * 
+     * Map descriptions = new HashMap();
+     * descriptions.put("EN", "http://www.adobe.com/products/flex");
+     * 
+     * setSWFMetaData(Configuration.LANGUAGE, "EN");
+     * setSWFMetaData(Configuration.TITLE, titles);
+     * setSWFMetaData(Configuration.DESCRIPTION, descriptions);
+     * </pre>
+     * 
+     * @param field One of: <code>CONTRIBUTOR</code>, <code>CREATOR</code>, 
+     * <code>DATE</code>, <code>DESCRIPTION</code>, <code>TITLE</code>, 
+     * <code>LANGUAGE</code>, or <code>PUBLISHER</code>.
+     * @param value A <code>String</code>, <code>Date</code>, or 
+     * <code>Map</code> object.
+     * 
+     * @see #CONTRIBUTOR
+     * @see #CREATOR
+     * @see #DATE
+     * @see #DESCRIPTION
+     * @see #TITLE
+     * @see #LANGUAGE
+     * @see #PUBLISHER
+     */
+    void setSWFMetaData(int field, Object value);
+
+    /**
+     * Sets the path to the Flash Player executable when building a projector; for example:
+     * 
+     * <pre>
+     * setProjector(new File("C:/.../SAFlashPlayer.exe"));
+     * </pre>
+     * 
+     * This is equivalent to the <code>projector</code> option of the mxlmc or compc compilers.
+     * 
+     * @param file The Flash Player executable.
+     */
+    // void setProjector(File file);
+    
+    /**
+     * Sets the metadata section of the application SWF.
+     * This is equivalent to the <code>raw-metadata</code> option of the mxmlc or compc compilers.
+     * This option overrides anything set by the <code>setSWFMetaData()</code> method.
+     * 
+     * @see #setSWFMetaData(int, Object)
+     * @param xml A well-formed XML fragment.
+     */
+    void setSWFMetaData(String xml);
+    
+    /**
+     * Sets a list of run-time shared library URLs to be loaded before the application starts.
+     * This is equivalent to the <code>runtime-shared-libraries</code> option of the mxmlc or compc compilers.
+     * 
+     * @param libraries An array of <code>java.lang.String</code> objects.
+     */
+    void setRuntimeSharedLibraries(String[] libraries);
+
+    /**
+     * Adds a list of run-time shared library URLs to the existing list.
+     * 
+     * @see #setRuntimeSharedLibraries(String[])
+     * @param libraries An array of <code>java.lang.String</code> objects.
+     */
+    void addRuntimeSharedLibraries(String[] libraries);
+
+    /**
+     * Toggles whether the application SWF is flagged for access to network resources.
+     * This is equivalent to the <code>use-network</code> option of the mxmlc or compc compilers.
+     * 
+     * <p>
+     * The default value is <code>true</code>.
+     * 
+     * @param b Boolean value.
+     */
+    void useNetwork(boolean b);
+    
+    /**
+     * Set the default output directory for configuration settings.
+     * 
+     */
+    String DEFAULT_OUTPUT_DIRECTORY_TOKEN = "com.adobe.flex.default.output.directory";
+    
+    /**
+     * Defines a token that can be used for token substitutions. On the command line, you use token substitution in 
+     * the following way:
+     * 
+     * <pre>
+     * mxmlc +flexlib=path1 +foo=bar -var=${foo}
+     * </pre>
+     * 
+     * Where <code>var=bar</code> occurs after the substitution of <code>${foo}</code>.
+     * 
+     * @param name The name of the token.
+     * @param value The value of the token.
+     */
+    void setToken(String name, String value);
+
+    
+    /**
+     * Sets the version of the Flash Player that is being targeted by the application.  
+     * Features requiring a later version of the Player will not be compiled into the application.
+     *
+     * The default Player targeted is 9.0.0.
+     * 
+     * @param major The major version. Must be greater than or equal to nine.
+     * @param minor The minor version. Must be greater than or equal to zero.
+     * @param revision The revsion must be greater than or equal to zero.
+     * 
+     * @since 3.0
+     */
+    void setTargetPlayer(int major, int minor, int revision);
+
+    /**
+     * Sets the SDK compatibility version. For this release, the only valid value is 2.0.1.
+     * 
+     * @param major The major version. For this release, this value must be 2.
+     * @param minor The minor version. For this release, this value must be 0.
+     * @param revision For this release, this value must be 1.
+     * 
+     * @since 3.0
+     */
+    void setCompatibilityVersion(int major, int minor, int revision);
+ 
+    /**
+     * Set the arguments required to use an RSL with optional failover RSLs.
+     * The arguments specify a SWC library and a set of RSL URLs and 
+     * Policy File URLs.
+     * 
+     * This method sets RSL information and removes any other RSL
+     * that may be set. To set additional RSLs see the 
+     * <code>addRuntimeSharedLibraryPath</code> method.
+     * 
+     * This is equivalent to the <code>-runtime-shared-library-path</code> 
+     * option of the mxmlc compiler.
+     * 
+     * @param swc path to the swc. The classes in the swc will be excluded from 
+     * 			  the compiled application.
+     * @param rslUrls array of URLs. The first RSL URL in the list is the primary RSL. The
+     * 			   remaining RSL URLs will only be loaded if the primary RSL fails to load.
+     * @param policyFileUrls array of policy file URLs. Each entry in the rslUrls array must
+     * 				   have a corresponding entry in this array. A policy file may be needed in
+     * 				   order to allow the player to read an RSL from another domain. If
+     * 				   a policy file is not required, then set it to an empty string.
+     * @since 3.0
+     * @see #addRuntimeSharedLibraryPath(String, String[], String[])
+     * @throws IllegalArgumentException if the length of the rslUrls array is not equal to
+     * 								    the length of the policyFileUrls array.
+     * @throws NullPointerException if any of the arguments are null.
+     */
+	public void setRuntimeSharedLibraryPath(String swc, String[] rslUrls, String[] policyFileUrls);
+	
+	/**
+	 * This is equivalent to using more than one <code>runtime-shared-library-path</code>
+	 * option when using the mxmlc compiler.
+	 * 
+     * @param swc path to the swc. The classes in the swc will be excluded from 
+     * 			  the compiled application.
+     * @param rslUrls array of URLs. The first RSL URL in the list is the primary RSL. The
+     * 			   remaining RSL URLs will only be loaded if the primary RSL fails to load.
+     * @param policyFileUrls array of policy file URLs. Each entry in the rslUrls array must
+     * 				   have a corresponding entry in this array. A policy file may be needed in
+     * 				   order to allow the player to read an RSL from another domain. If
+     * 				   a policy file is not required, then set it to an empty string.
+	 * @since 3.0
+	 * @see #setRuntimeSharedLibraryPath(String, String[], String[])
+     * @throws IllegalArgumentException if the length of the rslUrls array is not equal to
+     * 								    the length of the policyFileUrls array.
+     * @throws NullPointerException if any of the arguments is null.
+	 */
+	public void addRuntimeSharedLibraryPath(String swc, String[] rslUrls, String[] policyFileUrls);
+	
+    /**
+     * Verifies the RSL loaded 
+     * has the same digest as the RSL specified when the application was compiled.
+     * This is equivalent to using the <code>verify-digests</code>
+     * option in the mxmlc compiler.
+     * 
+     *  The default value is <code>true</code>
+     * 
+     * @param verify set to true to verify
+     * 				 the digest of the loaded RSL matches the digest of the
+     * 				 expected RSL. Set to false to disable the checks during
+     * 				 the development process but it is highly recommend that 
+     * 				 production applications be compiled with <code>verify</code>
+     * 				 set to true.  
+     * 
+     * @since 3.0
+     */
+    void enableDigestVerification(boolean verify);
+
+    /**
+     * Enable or disable the computation of a digest for the created swf library.
+     * This is equivalent to using the <code>compiler.computDigest</code> in the compc
+     * compiler.
+     * 
+     * The default value is <code>true</code>
+     * 
+     * @param compute set to <code>true</code> to create a digest for the compiled library.
+     * 
+     * @since 3.0
+     */
+    void enableDigestComputation(boolean compute);
+    
+    /**
+     * Add a global AS3 compiler configuration value and preserve existing definitions.
+     * 
+     * This is equivalent to a single <code>-define</code> option.
+     * 
+     * @param name The qualified name of the configuration constant, e.g. "CONFIG::debugging" or "APP::version"
+     * @param value The value of the constant, e.g. "true" or "!CONFIG::release" or "3.0"
+     * 
+     * @since 3.0
+     * 
+     * @see #setDefineDirective(String[], String[])
+     */
+    public void addDefineDirective(String name, String value);
+    
+    /**
+     * Set global AS3 compiler configuration values and clear existing definitions.
+     * 
+     * If either parameter is null, <u>or</u> the arrays of different lengths, this will <i>only</i>
+     * clear existing definitions.
+     * 
+     * @param names A list of qualified names/configuration constants, e.g. "CONFIG::debugging" or "APP::version"
+     * @param values A list of values of the constants, e.g. "true" or "!CONFIG::release" or "3.0"
+     * 
+     * @since 3.0
+     * 
+     * @see #addDefineDirective(String, String)
+     */
+    public void setDefineDirective(String[] names, String[] values);
+    
+    
+    /**
+     * @param libraries
+     */
+    public void setExtensionLibraries(Map<File, List<String>> extensions);
+    
+    public void addExtensionLibraries(File extension, List<String> parameters);
+    
+    
+    /**
+     * Enables the removal of RSLs associated with libraries
+     * that are not used by an application.
+     * This is equivalent to using the
+     * <code>remove-unused-rsls</code> option of the mxmlc compiler.
+     * 
+     * <p>
+     * The default value is <code>false</code>.
+     * 
+     * @param b Boolean value that enables or disables the removal.
+     *    
+     * @since 4.5
+     */
+    void removeUnusedRuntimeSharedLibraryPaths(boolean b);
+
+    /**
+     * Sets the SWCs that will have their associated RSLs loaded at runtime.
+     * The RSLs will be loaded whether they are used in the application or not.
+     * This option can be used to override decisions made by the compiler when 
+     * using the <code>removed-used-rsls</code> option.
+     * 
+     * This is equivalent to using the
+     * <code>runtime-shared-library-settings.force-rsls</code> option of the 
+     * mxmlc compiler.
+     * 
+     * @param paths An array of <code>File</code> objects. Each <code>File</code> 
+     * instance should represent a SWC file. May not be null.
+     *    
+     * @since 4.5
+     * @throws NullPointerException if path is null.
+     */
+    void setForceRuntimeSharedLibraryPaths(File[] paths);
+
+    /**
+     * Adds SWCs to the existing set of SWCs whose RSLs will be loaded at runtime. 
+     *  
+     * This is equivalent to using the
+     * <code>runtime-shared-library-settings.force-rsls</code> option of the 
+     * mxmlc compiler.
+     *
+     * @param paths An array of <code>File</code> objects. Each <code>File</code> 
+     * instance should represent a SWC file. May not be null.
+     *    
+     * @since 4.5
+     * @see #setForcedRuntimeSharedLibraryPaths(File[])
+     * @throws NullPointerException if path is null.
+     */
+    void addForceRuntimeSharedLibraryPaths(File[] paths);
+
+    /**
+     * Set the application domain of a configured RSL to override the default
+     * settings. The default value is 'default'. Other valid values are
+     * "current", "parent", or "top-level". The actual application domain is
+     * resolved at runtime by the Flex Framework. The default behavior is to
+     * load an RSL into the topmost module factory's application domain that has
+     * a placeholder RSL. If no placeholder is found the RSL is loaded into the
+     * application domain of the loading module factory. The "current",
+     * "parent", and "top-level" applications are resolved relative to the
+     * module factory loading the RSL.
+     * 
+     * This is equivalent to using the
+     * <code>runtime-shared-library-settings.application-domain</code> option of
+     * the mxmlc compiler.
+     * 
+     * @param path The <code>File</code> instance represents a SWC file with RSL
+     *            linkage. The RSL associated with the SWC will have its
+     *            application domain modified as specified in the
+     *            <code>applicationDomainTarget</code> parameter. Passing null
+     *            resets the application domain settings.
+     * @param applicationDomainTarget The application domain an RSL will be loaded
+     *  into. May only be null when the <code>path</code> parameter is null.
+     * 
+     * @since 4.5
+     * @throws NullPointerException if applicationDomain is null and path is 
+     * not null.
+     */
+    void setApplicationDomainForRuntimeSharedLibraryPath(File path, String applicationDomainTarget);
+
+    /**
+     * Add application domain setting to the existing list of application domain
+     * settings.
+     * 
+     * This is equivalent to using the
+     * <code>runtime-shared-library-settings.application-domain</code> option of
+     * the mxmlc compiler.
+     * 
+     * @param path The <code>File</code> instance represents a SWC file with RSL
+     *            linkage. The RSL associated with the SWC will have its
+     *            application domain modified as specified in the
+     *            <code>applicationDomainTarget</code> parameter. May not be
+     *            null.
+     * @param applicationDomainTarget The application domain an RSL will be 
+     * loaded into. May not be null.
+     * 
+     * @since 4.5
+     * @see #setApplicationDomainForRuntimeSharedLibraryPath(File, String)
+     * @throws NullPointerException if any of the arguments are null.
+     */
+    void addApplicationDomainForRuntimeSharedLibraryPath(File path, String applicationDomainTarget);
+    
+}