blob: 054de474c6e1b46eec118553ba3b51275aca194b [file] [log] [blame]
/*
*
* 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 org.apache.royale.compiler.internal.config;
import java.io.File;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import org.apache.royale.compiler.config.RSLSettings;
import org.apache.royale.compiler.constants.IASWarningConstants;
import org.apache.royale.compiler.mxml.IMXMLNamespaceMapping;
/**
* An interface that allows any of the compiler settings to be modified.
*/
public interface ICompilerSettings extends IWriteOnlyProjectSettings
{
/**
* Defines a token that can be used for token substitutions. On the command line, you use token substitution in
* the following way:
*
* <pre>
* mxmlc +royalelib=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 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);
/**
* 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(Collection<File> paths);
/**
* Adds to the existing list of SWC files.
*
* @see #setExternalLibraryPath
*
* @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(Collection<File> paths);
/**
* Adds to the existing list of namespace mappings.
*
* @param namespaceMappings
*/
void addNamespaceMappings(Collection<IMXMLNamespaceMapping> namespaceMappings);
/**
* 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(Collection<File> paths);
/**
* Adds a list of path elements to the existing source path list.
*
* @param paths A collection of <code>java.io.File</code> objects. The <code>File.isDirectory()</code> method must return <code>true</code>.
* @see #setSourcePath
*/
void addSourcePath(Collection<File> paths);
/**
* 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);
/**
* 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);
/**
* 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 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);
/**
* Toggles whether warnings generated from two code files with the same name are displayed.
* This is equivalent to using the <code>compiler.show-multiple-definition-warnings</code> option of the mxmlc or compc
* compilers.
*
* <p>
* The default value is <code>true</code>.
*
* @param b Boolean value.
*/
void showMultipleDefinitionWarnings(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(List<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
*/
void addTheme(List<File> files);
/**
* 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(List<String> libraries);
/**
* A list of RSLs to load, complete with all the settings on how to load
* the RSLs. The RSLs will be loaded in the order that they appear in the
* list. This is the complete list of RSLs that could possibly be loaded.
* This list could be reduced if unused RSLs are being removed.
*
* These RSL settings override any settings in configuration files. Set an
* empty list to disable the use of RSLs.
*
* This is equivalent to using the following command line options in the
* mxmlc compiler:
*
* <ul>
* <li> <code>runtime-shared-library-path</code>
* <li> <code>application-domain</code>
* <li> <code>force-rsls</code>
* </ul>
* If <code>rslSettings</code> is null, then all existing RSL settings are
* removed. It will have the effect of removing the RSL related options
* from the command line which will allow settings from configuration files
* to be applied to the configuration.
*
* @param rslSettings A list of {@link RSLSettings}.
*/
void setRuntimeSharedLibraryPath(List<RSLSettings> rslSettings);
/**
* A list of RSLs to load, complete with all the settings on how to load
* the RSLs. The RSLs will be loaded in the order that they appear in the
* list. This is the complete list of RSLs that could possibly be loaded.
* This list could be reduced if unused RSLs are being removed.
*
* The RSL provided to this method append to list of RSLs specified in any
* configuration files.
*
* This is equivalent to using the following command line options in the
* mxmlc compiler:
*
* <ul>
* <li> <code>runtime-shared-library-path+=</code>
* <li> <code>application-domain+=</code>
* <li> <code>force-rsls+=</code>
* </ul>
*
* @param rslSettings A list of {@link RSLSettings}. May not be null.
* @throws NullPointerException if <code>rslSettings</code> is null.
*/
void addRuntimeSharedLibraryPath(List<RSLSettings> rslSettings);
/**
* 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);
/**
* 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 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(Collection<String> definitions);
/**
* 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 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);
/**
* 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);
/**
* Allows some source path directories to be subdirectories of the other.
* This is equivalent to using <code>mxmlc/compc --compiler.allow-source-path-overlap</code>.<p>
* By default, this is disabled.<p>
*
* In some J2EE settings, directory overlapping should be allowed. For example,
*
* <pre>
* wwwroot/MyAppRoot
* wwwroot/WEB-INF/flex/source_path1
* </pre>
*
* @param b boolean value
*/
void allowSourcePathOverlap(boolean b);
/**
* Determines whether resources bundles are included in the application.
* This is equivalent to using <code>mxmlc/compc --compiler.use-resource-bundle-metadata</code>.
* By default, it is set to <code>true</code>.
*
* @param b boolean value
*/
void useResourceBundleMetaData(boolean b);
//---------------------------------------------------------------------------
// Not used by Flash Builder
/**
* <code>Array.toString()</code> format has changed.
*/
int WARN_ARRAY_TO_STRING_CHANGES = IASWarningConstants.ARRAY_TO_STRING_CHANGES;
/**
* Assignment within conditional.
*/
int WARN_ASSIGNMENT_WITHIN_CONDITIONAL = IASWarningConstants.ASSIGNMENT_WITHIN_CONDITIONAL;
/**
* Possibly invalid Array cast operation.
*/
int WARN_BAD_ARRAY_CAST = IASWarningConstants.BAD_ARRAY_CAST;
/**
* Non-Boolean value used where a <code>Boolean</code> value was expected.
*/
int WARN_BAD_BOOLEAN_ASSIGNMENT = IASWarningConstants.BAD_BOOLEAN_ASSIGNMENT;
/**
* Invalid <code>Date</code> cast operation.
*/
int WARN_BAD_DATE_CAST = IASWarningConstants.BAD_DATE_CAST;
/**
* Unknown method.
*/
int WARN_BAD_ES3_TYPE_METHOD = IASWarningConstants.BAD_ES3_TYPE_METHOD;
/**
* Unknown property.
*/
int WARN_BAD_ES3_TYPE_PROP = IASWarningConstants.BAD_ES3_TYPE_PROP;
/**
* 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 = IASWarningConstants.BAD_NAN_COMPARISON;
/**
* Impossible assignment to <code>null</code>.
*/
int WARN_BAD_NULL_ASSIGNMENT = IASWarningConstants.BAD_NULL_ASSIGNMENT;
/**
* Illogical comparison with <code>null</code>.
*/
int WARN_BAD_NULL_COMPARISON = IASWarningConstants.BAD_NULL_COMPARISON;
/**
* 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 = IASWarningConstants.BAD_UNDEFINED_COMPARISON;
/**
* <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 = IASWarningConstants.BOOLEAN_CONSTRUCTOR_WITH_NO_ARGS;
/**
* <code>__resolve</code> is deprecated.
*/
int WARN_CHANGES_IN_RESOLVE = IASWarningConstants.CHANGES_IN_RESOLVE;
/**
* <code>Class</code> is sealed. It cannot have members added to it dynamically.
*/
int WARN_CLASS_IS_SEALED = IASWarningConstants.CLASS_IS_SEALED;
/**
* Constant not initialized.
*/
int WARN_CONST_NOT_INITIALIZED = IASWarningConstants.CONST_NOT_INITIALIZED;
/**
* 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 = IASWarningConstants.CONSTRUCTOR_RETURNS_VALUE;
/**
* EventHandler was not added as a listener.
*/
int WARN_DEPRECATED_EVENT_HANDLER_ERROR = IASWarningConstants.DEPRECATED_EVENT_HANDLER_ERROR;
/**
* Unsupported ActionScript 2.0 function.
*/
int WARN_DEPRECATED_FUNCTION_ERROR = IASWarningConstants.DEPRECATED_FUNCTION_ERROR;
/**
* Unsupported ActionScript 2.0 property.
*/
int WARN_DEPRECATED_PROPERTY_ERROR = IASWarningConstants.DEPRECATED_PROPERTY_ERROR;
/**
* More than one argument by the same name.
*/
int WARN_DUPLICATE_ARGUMENT_NAMES = IASWarningConstants.DUPLICATE_ARGUMENT_NAMES;
/**
* Duplicate variable definition
*/
int WARN_DUPLICATE_VARIABLE_DEF = IASWarningConstants.DUPLICATE_VARIABLE_DEF;
/**
* 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 = IASWarningConstants.FOR_VAR_IN_CHANGES;
/**
* Importing a package by the same name as the current class will hide that class identifier in this scope.
*/
int WARN_IMPORT_HIDES_CLASS = IASWarningConstants.IMPORT_HIDES_CLASS;
/**
* Use of the <code>instanceof</code> operator.
*/
int WARN_INSTANCEOF_CHANGES = IASWarningConstants.INSTANCEOF_CHANGES;
/**
* Internal error in compiler.
*/
int WARN_INTERNAL_ERROR = IASWarningConstants.INTERNAL_ERROR;
/**
* <code>_level</code> is no longer supported. For more information, see the <code>flash.display</code> package.
*/
int WARN_LEVEL_NOT_SUPPORTED = IASWarningConstants.LEVEL_NOT_SUPPORTED;
/**
* Missing namespace declaration (e.g. variable is not defined to be <code>public</code>, <code>private</code>, etc.).
*/
int WARN_MISSING_NAMESPACE_DECL = IASWarningConstants.MISSING_NAMESPACE_DECL;
/**
* Negative value will become a large positive value when assigned to a <code>uint</code> data type.
*/
int WARN_NEGATIVE_UINT_LITERAL = IASWarningConstants.NEGATIVE_UINT_LITERAL;
/**
* Missing constructor.
*/
int WARN_NO_CONSTRUCTOR = IASWarningConstants.NO_CONSTRUCTOR;
/**
* The <code>super()</code> statement was not called within the constructor.
*/
int WARN_NO_EXPLICIT_SUPER_CALL_IN_CONSTRUCTOR = IASWarningConstants.NO_EXPLICIT_SUPER_CALL_IN_CONSTRUCTOR;
/**
* Missing type declaration.
*/
int WARN_NO_TYPE_DECL = IASWarningConstants.NO_TYPE_DECL;
/**
* 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 = IASWarningConstants.NUMBER_FROM_STRING_CHANGES;
/**
* 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 = IASWarningConstants.SCOPING_CHANGE_IN_THIS;
/**
* Inefficient use of <code>+=</code> on a <code>TextField</code>.
*/
int WARN_SLOW_TEXTFIELD_ADDITION = IASWarningConstants.SLOW_TEXTFIELD_ADDITION;
/**
* Possible missing parentheses.
*/
int WARN_UNLIKELY_FUNCTION_VALUE = IASWarningConstants.UNLIKELY_FUNCTION_VALUE;
/**
* Possible usage of the ActionScript 2.0 <code>XML</code> class.
*/
int WARN_XML_CLASS_HAS_CHANGED = IASWarningConstants.XML_CLASS_HAS_CHANGED;
/**
* Keyword this within closure.
*/
int WARN_THIS_WITHIN_CLOSURE = IASWarningConstants.THIS_WITHIN_CLOSURE;
/**
* 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
* --compiler.warn-this-within-closure
* </pre>
*
* @param warningCode Warning code.
* @param b Boolean value.
*
* @see #WARN_ARRAY_TO_STRING_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
* @see #WARN_THIS_WITHIN_CLOSURE
*/
void checkActionScriptWarning(int warningCode, boolean b);
/**
* 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", "Apache Royale 1.0.0 Application");
*
* Map descriptions = new HashMap();
* descriptions.put("EN", "http://royale.apache.org");
*
* 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 metadata section of the application SWF.
* This is equivalent to using <code>mxmlc/compc --raw-metadata</code>.
* This option overrides everything set by the <code>setSWFMetadata</code> method.
*
* @see #setSWFMetadata
* @param xml a well-formed XML fragment
*/
void setSWFMetadata(String xml);
/**
* Add to the existing list of locales without overriding and locales
* settings in configuration files.
*
* The <code>locale/en_US</code> directory will be added to the source path.
*
*/
void addLocales(Collection<String> locales);
/**
* Set the output of the target.
*
* @param output File that specifies the where the target should be
* created.
*/
void setOutput(File output);
/**
* Includes a list of libraries (SWCs) to completely include in the application
* This is equivalent to using <code>mxmlc/compc --compiler.include-libraries</code>.
*
* @param libraries a collection of <code>java.io.File</code> (<code>File.isDirectory()</code> should return <code>true</code> or instances must represent SWC files).
*/
void setIncludeLibraries(Collection<File> libraries);
/**
* Provides a list of resource bundle names that should be compiled into
* a resource module or library.
*
* @param bundles A collection of resource bundle names.
*/
void setIncludeResourceBundles(Collection<String> bundles);
/**
* 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.
*
* @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.
*
*/
void setTargetPlayer(int major, int minor, int revision);
//
// Library Settings
//
/**
* Adds a class, function, variable, or namespace to the target library.
*
* This is the equilvalent of the <code>include-classes</code> option of
* the compc compiler.
*
* @param includeClasses a collection of fully-qualified class names.
*/
void setIncludeClasses(Collection<String> includeClasses);
/**
* Adds a collection of files to the target library. This is equivalent to the
* <code>include-file</code> option of the compc compiler.
*
* Each entry in the map represents a file to include in the target
* library. The key is the name of the file in the target library and the
* value is the file that will be added to the library.
*
* @param files The collection of files to be added.
*/
void setIncludeFiles(Map<String, File> files);
/**
* Adds a collection of namespaces to include in this target library.
*
* This is equivalent to the <code>include-namespaces</code> option of the
* compc compiler.
*
* @param namespaces A collection of Strings where each String is a
* namespace URI.
*/
void setIncludeNamespaces(Collection<String> namespaces);
/**
* Specifies a map of style sheets to add to the target library. The map's
* key/value pairs are as follows:
* key: the name of the file in the target library
* value: the File to include.
*
* @param styleSheets a map of names to Files to include in the target
* library.
*/
void setIncludeStyleSheet(Map<String, File> styleSheets);
/**
* Controls whether manifest entries with lookupOnly=true are included in
* the SWC catalog.
*
* @param include true only manifest entries with lookupOnly=true are included in
* the SWC catalog, false otherwise.
*/
void enableIncludeLookupOnly(boolean include);
}