| /* |
| * |
| * 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.internal; |
| |
| import java.util.HashMap; |
| import java.util.List; |
| import java.util.Map; |
| import java.util.Set; |
| import java.util.SortedSet; |
| |
| import flex2.compiler.common.Configuration; |
| import flex2.compiler.common.FramesConfiguration.FrameInfo; |
| import flex2.compiler.config.ConfigurationBuffer; |
| import flex2.compiler.config.ConfigurationException; |
| import flex2.tools.ToolsConfiguration; |
| |
| /** |
| * A configuration that extends ToolsConfiguration by adding link |
| * specific options. |
| * |
| * @version 2.0.1 |
| * @author Clement Wong |
| */ |
| /* |
| * TODO Jono: this should really *implement* flex2.linker.Configuration |
| * and not extend ToolsConfiguration to keep us honest about settings |
| * required for linking -- options that were not part of the original |
| * config are currently ignored and their values instead come from the |
| * inherited ToolsConfiguration, and are the default values (rather |
| * than the ones coming from original). |
| * |
| * Example: I forgot to implement getTargetPlayerMajorVersion() here, |
| * and it instead came from super, so the value set on the command line |
| * was totally ignored. |
| */ |
| public class LinkerConfiguration extends ToolsConfiguration implements flex2.linker.LinkerConfiguration |
| { |
| public static Map<String, String> getAliases() |
| { |
| Map<String, String> map = new HashMap<String, String>(); |
| map.putAll(Configuration.getAliases()); |
| map.remove("o"); |
| return map; |
| } |
| |
| public void validate( ConfigurationBuffer cfgbuf ) throws ConfigurationException |
| { |
| super.validate(cfgbuf); |
| } |
| |
| private flex2.linker.LinkerConfiguration original; |
| private Set args; |
| |
| public void setOriginalConfiguration(flex2.linker.LinkerConfiguration original, Set args, Set<String> includes, Set<String> excludes) |
| { |
| this.original = original; |
| this.args = args; |
| |
| Set s = getIncludes(); |
| addIncludes(s == null || s.size() == 0 ? original.getIncludes() : includes); |
| s = getExterns(); |
| addExterns(s == null || s.size() == 0 ? original.getExterns() : excludes); |
| } |
| |
| // flex2.linker.Configuration methods... |
| |
| public int backgroundColor() |
| { |
| if (args.contains(ConfigurationConstants.DEFAULT_BACKGROUND_COLOR)) |
| { |
| return super.backgroundColor(); |
| } |
| else |
| { |
| return original.backgroundColor(); |
| } |
| } |
| |
| public String debugPassword() |
| { |
| if (args.contains(ConfigurationConstants.DEBUG_PASSWORD)) |
| { |
| return super.debugPassword(); |
| } |
| else |
| { |
| return original.debugPassword(); |
| } |
| } |
| |
| public int defaultHeight() |
| { |
| if (args.contains(ConfigurationConstants.DEFAULT_SIZE)) |
| { |
| return super.defaultHeight(); |
| } |
| else |
| { |
| return original.defaultHeight(); |
| } |
| } |
| |
| public int defaultWidth() |
| { |
| if (args.contains(ConfigurationConstants.DEFAULT_SIZE)) |
| { |
| return super.defaultWidth(); |
| } |
| else |
| { |
| return original.defaultWidth(); |
| } |
| } |
| |
| public boolean debug() |
| { |
| if (args.contains(ConfigurationConstants.COMPILER_DEBUG)) |
| { |
| return super.debug(); |
| } |
| else |
| { |
| return original.debug(); |
| } |
| } |
| |
| public Set<String> getExterns() |
| { |
| return super.getExterns(); |
| } |
| |
| public List<FrameInfo> getFrameList() |
| { |
| if (args.contains(ConfigurationConstants.FRAMES_FRAME)) |
| { |
| return super.getFrameList(); |
| } |
| else |
| { |
| return original.getFrameList(); |
| } |
| } |
| |
| public int getFrameRate() |
| { |
| if (args.contains(ConfigurationConstants.DEFAULT_FRAME_RATE)) |
| { |
| return super.getFrameRate(); |
| } |
| else |
| { |
| return original.getFrameRate(); |
| } |
| } |
| |
| public Set<String> getIncludes() |
| { |
| return super.getIncludes(); |
| } |
| |
| public String getLinkReportFileName() |
| { |
| return null; |
| } |
| |
| public String getMainDefinition() |
| { |
| return original.getMainDefinition(); |
| } |
| |
| public String getMetadata() |
| { |
| if (args.contains(ConfigurationConstants.METADATA_CONTRIBUTOR) || |
| args.contains(ConfigurationConstants.METADATA_CREATOR) || |
| args.contains(ConfigurationConstants.METADATA_DATE) || |
| args.contains(ConfigurationConstants.METADATA_LANGUAGE) || |
| args.contains(ConfigurationConstants.METADATA_LOCALIZED_DESCRIPTION) || |
| args.contains(ConfigurationConstants.METADATA_LOCALIZED_TITLE) || |
| args.contains(ConfigurationConstants.METADATA_PUBLISHER) || |
| args.contains(ConfigurationConstants.RAW_METADATA)) |
| { |
| return super.getMetadata(); |
| } |
| else |
| { |
| return original.getMetadata(); |
| } |
| } |
| |
| public String getRBListFileName() |
| { |
| return null; |
| } |
| |
| public SortedSet<String> getResourceBundles() |
| { |
| return original.getResourceBundles(); |
| } |
| |
| public String getRootClassName() |
| { |
| return original.getRootClassName(); |
| } |
| |
| public int getScriptRecursionLimit() |
| { |
| if (args.contains(ConfigurationConstants.DEFAULT_SCRIPT_LIMITS)) |
| { |
| return super.getScriptRecursionLimit(); |
| } |
| else |
| { |
| return original.getScriptRecursionLimit(); |
| } |
| } |
| |
| public int getScriptTimeLimit() |
| { |
| if (args.contains(ConfigurationConstants.DEFAULT_SCRIPT_LIMITS)) |
| { |
| return super.getScriptTimeLimit(); |
| } |
| else |
| { |
| return original.getScriptTimeLimit(); |
| } |
| } |
| |
| public Set<String> getUnresolved() |
| { |
| return original.getUnresolved(); |
| } |
| |
| public String height() |
| { |
| return original.height(); |
| } |
| |
| public String heightPercent() |
| { |
| return original.heightPercent(); |
| } |
| |
| public boolean verboseStacktraces() |
| { |
| if (args.contains(ConfigurationConstants.COMPILER_DEBUG) || |
| args.contains(ConfigurationConstants.COMPILER_VERBOSE_STACKTRACES)) |
| { |
| return super.verboseStacktraces(); |
| } |
| else |
| { |
| return original.verboseStacktraces(); |
| } |
| } |
| |
| public boolean lazyInit() |
| { |
| return original.lazyInit(); |
| } |
| |
| public boolean optimize() |
| { |
| if (args.contains(ConfigurationConstants.COMPILER_OPTIMIZE)) |
| { |
| return super.optimize(); |
| } |
| else |
| { |
| return original.optimize(); |
| } |
| } |
| |
| public String pageTitle() |
| { |
| return original.pageTitle(); |
| } |
| |
| public boolean scriptLimitsSet() |
| { |
| if (args.contains(ConfigurationConstants.DEFAULT_SCRIPT_LIMITS)) |
| { |
| return super.scriptLimitsSet(); |
| } |
| else |
| { |
| return original.scriptLimitsSet(); |
| } |
| } |
| |
| public int getSwfVersion() |
| { |
| if (args.contains(ConfigurationConstants.SWF_VERSION)) |
| { |
| return super.getSwfVersion(); |
| } |
| else |
| { |
| return original.getSwfVersion(); |
| } |
| } |
| |
| public void setMainDefinition(String mainDefinition) |
| { |
| original.setMainDefinition(mainDefinition); |
| } |
| |
| public void setRootClassName(String rootClassName) |
| { |
| original.setRootClassName(rootClassName); |
| } |
| |
| public boolean useNetwork() |
| { |
| if (args.contains(ConfigurationConstants.USE_NETWORK)) |
| { |
| return super.useNetwork(); |
| } |
| else |
| { |
| return original.useNetwork(); |
| } |
| } |
| |
| public String width() |
| { |
| return original.width(); |
| } |
| |
| public String widthPercent() |
| { |
| return original.widthPercent(); |
| } |
| |
| private boolean generateLinkReport; |
| |
| public void keepLinkReport(boolean b) |
| { |
| generateLinkReport = b; |
| } |
| |
| public boolean generateLinkReport() |
| { |
| return generateLinkReport || super.generateLinkReport(); |
| } |
| |
| private boolean generateSizeReport; |
| |
| public void keepSizeReport(boolean b) |
| { |
| generateSizeReport = b; |
| } |
| |
| public boolean generateSizeReport() |
| { |
| return generateSizeReport || super.generateSizeReport(); |
| } |
| |
| public String[] getMetadataToKeep() |
| { |
| if (args.contains(ConfigurationConstants.COMPILER_KEEP_AS3_METADATA)) |
| { |
| return super.getMetadataToKeep(); |
| } |
| else |
| { |
| return original.getMetadataToKeep(); |
| } |
| } |
| |
| public boolean getComputeDigest() |
| { |
| if (args.contains(ConfigurationConstants.COMPILER_COMPUTE_DIGEST)) |
| { |
| return super.getComputeDigest(); |
| } |
| else |
| { |
| return original.getComputeDigest(); |
| } |
| } |
| |
| public String getCompatibilityVersionString() |
| { |
| if (args.contains(ConfigurationConstants.COMPILER_MXML_COMPATIBILITY)) |
| { |
| return super.getCompatibilityVersionString(); |
| } |
| else |
| { |
| return original.getCompatibilityVersionString(); |
| } |
| } |
| |
| |
| public int getCompatibilityVersion() |
| { |
| if (args.contains(ConfigurationConstants.COMPILER_MXML_COMPATIBILITY)) |
| { |
| return super.getCompatibilityVersion(); |
| } |
| else |
| { |
| return original.getCompatibilityVersion(); |
| } |
| } |
| |
| public String getOutput() |
| { |
| return null; |
| } |
| |
| public String getTargetFile() |
| { |
| return null; |
| } |
| |
| public int getTargetPlayerMajorVersion() |
| { |
| if (args.contains(ConfigurationConstants.TARGET_PLAYER)) |
| { |
| return super.getTargetPlayerMajorVersion(); |
| } |
| else |
| { |
| return original.getTargetPlayerMajorVersion(); |
| } |
| } |
| |
| public int getTargetPlayerMinorVersion() |
| { |
| if (args.contains(ConfigurationConstants.TARGET_PLAYER)) |
| { |
| return super.getTargetPlayerMinorVersion(); |
| } |
| else |
| { |
| return original.getTargetPlayerMinorVersion(); |
| } |
| } |
| |
| public int getTargetPlayerRevision() |
| { |
| if (args.contains(ConfigurationConstants.TARGET_PLAYER)) |
| { |
| return super.getTargetPlayerRevision(); |
| } |
| else |
| { |
| return original.getTargetPlayerRevision(); |
| } |
| } |
| } |