/*
*
* 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.flex.compiler.internal.config;
import java.io.File;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import org.apache.flex.compiler.mxml.IMXMLNamespaceMapping;
/**
* Setters for Project settings that can come from command line compiler
* options. This interface is implemented by Configurator and IFlexProject to
* keep the common setters for these interfaces in sync.
*/
public interface IWriteOnlyProjectSettings
{
/**
* Sets a list of path elements that form the roots of ActionScript class hierarchies.
* Calling this method can invalidate a significant amount of incremental compilation results.
* This is equivalent to using <code>mxmlc/compc --compiler.source-path</code>.
*
* @param paths List of directories that should be searched for source files.
*/
void setSourcePath(List<File> paths);
/**
* Sets the locales that the compiler would use to replace <code>{locale}</code> tokens that appear in some configuration values.
* This is equivalent to using <code>mxmlc/compc --compiler.locale</code>.
* For example,
*
* The <code>locale/en_US</code> directory will be added to the source path.
*
*/
void setLocales(Collection<String> locales);
/**
* Sets the ActionScript file encoding. The compiler will use this encoding to read
* the ActionScript source files.
* This is equivalent to using <code>mxmlc/compc --compiler.actionscript-file-encoding</code>.<p>
* By default, the encoding is <code>UTF-8</code>.
*
* @param encoding charactere encoding, e.g. <code>UTF-8</code>, <code>Big5</code>
*/
void setActionScriptFileEncoding(String encoding);
/**
* Set global AS3 compiler configuration values and clear existing definitions.
* This is equivalent to using the <code>mxmlc/compc --define</code> option
* once for each definition in the map.
*
* @param defines A map of qualified names/configuration constants, e.g. "CONFIG::debugging" or "APP::version",
* to value constants, e.g. "true" or "!CONFIG::release" or "3.0". Null clears
* the existing definitions.
*/
void setDefineDirectives(Map<String,String> defines);
/**
* Sets the SDK compatibility version.
*
* @param major The major version.
* @param minor The minor version.
* @param revision The revision component of the version.
*/
void setCompatibilityVersion(int major, int minor, int revision);
/**
* Sets the mappings from MXML namespace URI to manifest files, as specified
* by -namespace options.
*
* @param namespaceMappings An array of {@code MXMLNamespaceMapping}
* objects.
*/
void setNamespaceMappings(List<? extends IMXMLNamespaceMapping> namespaceMappings);
/**
* Configures a list of many extensions mapped to a single Extension URI. <extension>
* <extension>something-extension.jar</extension> <parameters>version=1.1,content=1.2</parameters> </extension>
* The extensions run at the end of a compilation.
*
* @param extensions a map of extension element files to extension paths.
*/
void setExtensionLibraries(Map<File, List<String>> extensions);
/**
* Configure this project to use a services-config.xml file.
* The services-config.xml file is used to configure a Flex client to talk
* to a BlazeDS server.
*
* This is equivalent to using <code>mxmlc/compc <code>--services</code> and
* <code>--context-root</code>.
*
* @param path an absolute path to the services-config.xml file.
* @param contextRoot sets the value of the {context.root} token, which is
* often used in channel definitions in the services-config.xml file.
*/
// TODO: should path be a File instead of a String?
void setServicesXMLPath(String path, String contextRoot);
/**
* A collection of source files or directories to add to the target library.
*
* This is equivalent to the <code>include-sources</code> option of the
* <code>compc</code> compiler.
*
* @param sources A collection of source files or directories.
*/
void setIncludeSources(Collection<File> sources) throws InterruptedException;
/**
* Option to enable or prevent various Flex compiler behaviors. This is
* currently used to enable/disable the generation of a root class for
* library swfs and generation of Flex specific code for application swfs.
*
* @param value true to turn on Flex behaviors, false otherwise.
*/
void setFlex(boolean value);
/**
* Option to remove the Native JS libraries from external-library-path
* and library-path as they shouldn't be any when compiling SWFs / SWCs.
*
* @param value true to turn on the behaviors, false otherwise.
*/
void setExcludeNativeJSLibraries(boolean value);
}