1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-06-30 21:55:31 +02:00

Bug #222562 : Regression in per-resource build option settings

This commit is contained in:
Oleg Krasilnikov 2008-03-13 17:29:04 +00:00
parent 69bcea9658
commit b90fa70285
2 changed files with 130 additions and 256 deletions

View file

@ -204,7 +204,7 @@ public class ManagedBuildManager extends AbstractCExtension {
// Tool-chains defined in the manifest files
private static SortedMap extensionToolChainMap;
// Tools defined in the manifest files
private static SortedMap extensionToolMap;
private static SortedMap<String, Tool> extensionToolMap;
// Target Platforms defined in the manifest files
private static Map extensionTargetPlatformMap;
// Builders defined in the manifest files
@ -440,13 +440,13 @@ public class ManagedBuildManager extends AbstractCExtension {
*
* @return Map
*/
public static SortedMap getExtensionToolMap() {
public static SortedMap<String, Tool> getExtensionToolMap() {
try {
loadExtensions();
} catch (BuildException e) {
}
if (extensionToolMap == null) {
extensionToolMap = new TreeMap();
extensionToolMap = new TreeMap<String, Tool>();
}
return extensionToolMap;
}
@ -457,9 +457,9 @@ public class ManagedBuildManager extends AbstractCExtension {
} catch (BuildException e) {
}
if (extensionToolMap == null) {
extensionToolMap = new TreeMap();
extensionToolMap = new TreeMap<String, Tool>();
}
return (Tool[])extensionToolMap.values().toArray(new Tool[extensionToolMap.size()]);
return extensionToolMap.values().toArray(new Tool[extensionToolMap.size()]);
}
/* (non-Javadoc)

View file

@ -14,7 +14,6 @@ import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
@ -119,13 +118,13 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
private Map<String, InputType> inputTypeMap;
private Vector<OutputType> outputTypeList;
private Map<String, OutputType> outputTypeMap;
private List envVarBuildPathList;
private List<IEnvVarBuildPath> envVarBuildPathList;
// Managed Build model attributes
private String unusedChildren;
private Boolean isAbstract;
private String command;
private List<String> inputExtensions;
private List interfaceExtensions;
private List<String> interfaceExtensions;
private Integer natureFilter;
private String outputExtensions;
private String outputFlag;
@ -156,10 +155,10 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
private boolean rebuildState;
private BooleanExpressionApplicabilityCalculator booleanExpressionCalculator;
private HashMap typeToDataMap = new HashMap(2);
private HashMap<IInputType, CLanguageData> typeToDataMap = new HashMap<IInputType, CLanguageData>(2);
private boolean fDataMapInited;
private List identicalList;
private HashMap discoveredInfoMap = new HashMap(2);
private HashMap<Object, PathInfoCache> discoveredInfoMap = new HashMap<Object, PathInfoCache>(2);
private String scannerConfigDiscoveryProfileId;
/*
@ -360,6 +359,7 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
setSuperClassInternal(toolSuperClass);
}
@SuppressWarnings("unchecked")
public Tool(IBuildObject parent, String toolSuperClassId, String Id, String name, Tool tool){
super(resolvedDefault);
this.parent = parent;
@ -404,10 +404,10 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
commandLinePattern = new String(tool.commandLinePattern);
}
if (tool.inputExtensions != null) {
inputExtensions = new ArrayList(tool.inputExtensions);
inputExtensions = new ArrayList<String>(tool.inputExtensions);
}
if (tool.interfaceExtensions != null) {
interfaceExtensions = new ArrayList(tool.interfaceExtensions);
interfaceExtensions = new ArrayList<String>(tool.interfaceExtensions);
}
if (tool.natureFilter != null) {
natureFilter = new Integer(tool.natureFilter.intValue());
@ -441,7 +441,7 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
optionPathConverter = tool.optionPathConverter ;
if(tool.envVarBuildPathList != null)
envVarBuildPathList = new ArrayList(tool.envVarBuildPathList);
envVarBuildPathList = new ArrayList<IEnvVarBuildPath>(tool.envVarBuildPathList);
// tool.updateScannerInfoSettingsToInputTypes();
@ -449,10 +449,8 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
super.copyChildren(tool);
// Clone the children
if (tool.inputTypeList != null) {
discoveredInfoMap = (HashMap)tool.discoveredInfoMap.clone();
Iterator iter = tool.getInputTypeList().listIterator();
while (iter.hasNext()) {
InputType inputType = (InputType) iter.next();
discoveredInfoMap = (HashMap<Object, PathInfoCache>)tool.discoveredInfoMap.clone();
for (InputType inputType : tool.getInputTypeList()) {
PathInfoCache cache = (PathInfoCache)discoveredInfoMap.remove(getTypeKey(inputType));
int nnn = ManagedBuildManager.getRandomNumber();
String subId;
@ -472,9 +470,7 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
}
}
if (tool.outputTypeList != null) {
Iterator iter = tool.getOutputTypeList().listIterator();
while (iter.hasNext()) {
OutputType outputType = (OutputType) iter.next();
for (OutputType outputType : tool.getOutputTypeList()) {
int nnn = ManagedBuildManager.getRandomNumber();
String subId;
String subName;
@ -535,10 +531,10 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
commandLinePattern = tool.commandLinePattern;
}
if (inputExtensions == null && tool.inputExtensions != null) {
inputExtensions = new ArrayList(tool.inputExtensions);
inputExtensions = new ArrayList<String>(tool.inputExtensions);
}
if (interfaceExtensions == null && tool.interfaceExtensions != null) {
interfaceExtensions = new ArrayList(tool.interfaceExtensions);
interfaceExtensions = new ArrayList<String>(tool.interfaceExtensions);
}
if (natureFilter == null) {
natureFilter = tool.natureFilter;
@ -580,15 +576,13 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
optionPathConverter = tool.optionPathConverter ;
if(envVarBuildPathList == null && tool.envVarBuildPathList != null)
envVarBuildPathList = new ArrayList(tool.envVarBuildPathList);
envVarBuildPathList = new ArrayList<IEnvVarBuildPath>(tool.envVarBuildPathList);
// Clone the children in superclass
super.copyNonoverriddenSettings(tool);
// Clone the children
if (inputTypeList == null && tool.inputTypeList != null) {
Iterator iter = tool.getInputTypeList().listIterator();
while (iter.hasNext()) {
InputType inputType = (InputType) iter.next();
for (InputType inputType : tool.getInputTypeList()) {
int nnn = ManagedBuildManager.getRandomNumber();
String subId;
String subName;
@ -604,9 +598,7 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
}
}
if (outputTypeList == null && tool.outputTypeList != null) {
Iterator iter = tool.getOutputTypeList().listIterator();
while (iter.hasNext()) {
OutputType outputType = (OutputType) iter.next();
for (OutputType outputType : tool.getOutputTypeList()) {
int nnn = ManagedBuildManager.getRandomNumber();
String subId;
String subName;
@ -702,7 +694,7 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
if (headers != null) {
StringTokenizer tokenizer = new StringTokenizer(headers, DEFAULT_SEPARATOR);
while (tokenizer.hasMoreElements()) {
getInterfaceExtensionsList().add(tokenizer.nextElement());
getInterfaceExtensionsList().add((String)tokenizer.nextElement());
}
}
@ -867,7 +859,7 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
if (headers != null) {
StringTokenizer tokenizer = new StringTokenizer(headers, DEFAULT_SEPARATOR);
while (tokenizer.hasMoreElements()) {
getInterfaceExtensionsList().add(tokenizer.nextElement());
getInterfaceExtensionsList().add((String)tokenizer.nextElement());
}
}
}
@ -1013,10 +1005,8 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
// input file extensions
if (getInputExtensionsList().size() > 0) {
String inputs;
List list = getInputExtensionsList();
Iterator iter = list.listIterator();
inputs = (String)iter.next();
Iterator<String> iter = getInputExtensionsList().listIterator();
String inputs = iter.next();
while (iter.hasNext()) {
inputs += DEFAULT_SEPARATOR;
inputs += iter.next();
@ -1026,10 +1016,8 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
// interface (header file) extensions
if (getInterfaceExtensionsList().size() > 0) {
String headers;
List list = getInterfaceExtensionsList();
Iterator iter = list.listIterator();
headers = (String)iter.next();
Iterator<String> iter = getInterfaceExtensionsList().listIterator();
String headers = iter.next();
while (iter.hasNext()) {
headers += DEFAULT_SEPARATOR;
headers += iter.next();
@ -1081,23 +1069,11 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
super.serialize(element);
// Serialize my children
// updateScannerInfoSettingsToInputTypes();
Iterator iter;
List typeElements = getInputTypeList();
iter = typeElements.listIterator();
while (iter.hasNext()) {
InputType type = (InputType) iter.next();
ICStorageElement typeElement = element.createChild(INPUT_TYPE);
type.serialize(typeElement);
}
typeElements = getOutputTypeList();
iter = typeElements.listIterator();
while (iter.hasNext()) {
OutputType type = (OutputType) iter.next();
ICStorageElement typeElement = element.createChild(OUTPUT_TYPE);
type.serialize(typeElement);
}
for (InputType type : getInputTypeList())
type.serialize(element.createChild(INPUT_TYPE));
for (OutputType type : getOutputTypeList())
type.serialize(element.createChild(OUTPUT_TYPE));
// Note: command line generator cannot be specified in a project file because
// an IConfigurationElement is needed to load it!
@ -1133,34 +1109,6 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
// TODO: issue an error message
}
}
// private void updateScannerInfoSettingsToInputTypes(){
// if(isExtensionTool)
// return;
//
// HashMap scannerCfgMap = getScannerInfoMap(false);
// if(scannerCfgMap != null){
// scannerCfgMap = (HashMap)scannerCfgMap.clone();
// for(Iterator iter = scannerCfgMap.entrySet().iterator(); iter.hasNext();){
// Map.Entry entry = (Map.Entry)iter.next();
// String id = (String)entry.getKey();
// InputType type = (InputType)getInputTypeById(id);
// if(type == null)
// continue;
//
// ScannerConfigInfoFactory2.BuildProperty info = (ScannerConfigInfoFactory2.BuildProperty)entry.getValue();
// if(info.isDirty()){
// if(type.isExtensionElement()){
// type = (InputType)getEdtableInputType(type);
// }
// type.setScannerConfigBuilderInfo(info);
// } else {
// if(type.getScannerConfigBuilderInfoElement(false) != null)
// type.setScannerConfigBuilderInfo(info);
// }
// }
// }
// }
/*
* P A R E N T A N D C H I L D H A N D L I N G
@ -1201,15 +1149,6 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
data.updateInputType(type);
typeToDataMap.put(type, data);
}
// HashMap scannerInfoMap = getScannerInfoMap(false);
// if(scannerInfoMap != null){
// IScannerConfigBuilderInfo2 info = (IScannerConfigBuilderInfo2)scannerInfoMap.get(getTypeKey(superClass));
// if(info != null){
// info = ScannerConfigInfoFactory2.create(new CfgInfoContext(getParentResourceInfo(), this, type), info, info.getSelectedProfileId());
// scannerInfoMap.put(getTypeKey(type), info);
// }
// }
}
addInputType(type);
setDirty(true);
@ -1241,7 +1180,7 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
types = ((Tool)getSuperClass()).getAllInputTypes();
}
// Our options take precedence.
Vector ourTypes = getInputTypeList();
Vector<InputType> ourTypes = getInputTypeList();
if (types != null) {
for (int i = 0; i < ourTypes.size(); i++) {
IInputType ourType = (IInputType)ourTypes.get(i);
@ -1268,15 +1207,15 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
}
}
} else {
types = (IInputType[])ourTypes.toArray(new IInputType[ourTypes.size()]);
types = ourTypes.toArray(new IInputType[ourTypes.size()]);
}
return types;
}
private boolean hasInputTypes() {
Vector ourTypes = getInputTypeList();
if (ourTypes.size() > 0) return true;
if (getInputTypeList().size() > 0)
return true;
return false;
}
@ -1334,7 +1273,7 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
types = ((Tool)getSuperClass()).getAllOutputTypes();
}
// Our options take precedence.
Vector ourTypes = getOutputTypeList();
Vector<OutputType> ourTypes = getOutputTypeList();
if (types != null) {
for (int i = 0; i < ourTypes.size(); i++) {
IOutputType ourType = (IOutputType)ourTypes.get(i);
@ -1357,7 +1296,7 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
}
}
} else {
types = (IOutputType[])ourTypes.toArray(new IOutputType[ourTypes.size()]);
types = ourTypes.toArray(new IOutputType[ourTypes.size()]);
}
return types;
}
@ -1791,10 +1730,10 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
if (exts.length > 0) return exts;
}
// If none, use the input extensions specified for the Tool (backwards compatibility)
List extsList = getInputExtensionsAttribute();
List<String> extsList = getInputExtensionsAttribute();
// Use the first entry in the list
if (extsList != null && extsList.size() > 0) {
return (String[])extsList.toArray(new String[extsList.size()]);
return extsList.toArray(new String[extsList.size()]);
}
return EMPTY_STRING_ARRAY;
}
@ -1803,32 +1742,13 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
* @see org.eclipse.cdt.managedbuilder.core.ITool#getAllInputExtensions()
*/
public String[] getAllInputExtensions() {
// IInputType[] types = getInputTypes();
// if (types != null && types.length > 0) {
// List allExts = new ArrayList();
// for (int i=0; i<types.length; i++) {
// String[] exts = types[i].getSourceExtensions(this);
// for (int j=0; j<exts.length; j++) {
// allExts.add(exts[j]);
// }
// }
// if (allExts.size() > 0) {
// return (String[])allExts.toArray(new String[allExts.size()]);
// }
// }
// // If none, use the input extensions specified for the Tool (backwards compatibility)
// List extsList = getInputExtensionsAttribute();
// if (extsList != null && extsList.size() > 0) {
// return (String[])extsList.toArray(new String[extsList.size()]);
// }
// return EMPTY_STRING_ARRAY;
return getAllInputExtensions(getProject());
}
public String[] getAllInputExtensions(IProject project) {
IInputType[] types = getInputTypes();
if (types != null && types.length > 0) {
List allExts = new ArrayList();
List<String> allExts = new ArrayList<String>();
for (int i=0; i<types.length; i++) {
String[] exts = ((InputType)types[i]).getSourceExtensions(this, project);
for (int j=0; j<exts.length; j++) {
@ -1836,13 +1756,13 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
}
}
if (allExts.size() > 0) {
return (String[])allExts.toArray(new String[allExts.size()]);
return allExts.toArray(new String[allExts.size()]);
}
}
// If none, use the input extensions specified for the Tool (backwards compatibility)
List extsList = getInputExtensionsAttribute();
List<String> extsList = getInputExtensionsAttribute();
if (extsList != null && extsList.size() > 0) {
return (String[])extsList.toArray(new String[extsList.size()]);
return extsList.toArray(new String[extsList.size()]);
}
return EMPTY_STRING_ARRAY;
}
@ -1886,24 +1806,24 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
/* (non-Javadoc)
* @see org.eclipse.cdt.managedbuilder.core.ITool#getAdditionalDependencies()
*/
@SuppressWarnings("unchecked")
public IPath[] getAdditionalDependencies() {
List allDeps = new ArrayList();
List<IPath> allDeps = new ArrayList<IPath>();
IInputType[] types = getInputTypes();
for (int i=0; i<types.length; i++) {
IInputType type = types[i];
// Additional dependencies come from 2 places.
// 1. From AdditionalInput childen
IPath[] deps = type.getAdditionalDependencies();
for (int j=0; j<deps.length; j++) {
allDeps.add(deps[j]);
}
for (IPath p : type.getAdditionalDependencies())
allDeps.add(p);
// 2. From InputTypes that other than the primary input type
if (type != getPrimaryInputType()) {
if (type.getOptionId() != null) {
IOption option = getOptionBySuperClassId(type.getOptionId());
if (option != null) {
try {
List inputs = new ArrayList();
List<IPath> inputs = new ArrayList<IPath>();
int optType = option.getValueType();
if (optType == IOption.STRING) {
inputs.add(Path.fromOSString(option.getStringValue()));
@ -1916,12 +1836,10 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
optType == IOption.LIBRARY_FILES ||
optType == IOption.MACRO_FILES
) {
List inputNames = (List)option.getValue();
List<String> inputNames = (List<String>)option.getValue();
filterValues(optType, inputNames);
for (int j=0; j<inputNames.size(); j++) {
inputs.add(Path.fromOSString((String)inputNames.get(j)));
}
for (String s : inputNames)
inputs.add(Path.fromOSString(s));
}
allDeps.addAll(inputs);
} catch( BuildException ex ) {
@ -1939,16 +1857,13 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
* @see org.eclipse.cdt.managedbuilder.core.ITool#getAdditionalResources()
*/
public IPath[] getAdditionalResources() {
List allRes = new ArrayList();
IInputType[] types = getInputTypes();
for (int i=0; i<types.length; i++) {
IInputType type = types[i];
List<IPath> allRes = new ArrayList<IPath>();
for (IInputType type : getInputTypes()) {
// Additional resources come from 2 places.
// 1. From AdditionalInput childen
IPath[] res = type.getAdditionalResources();
for (int j=0; j<res.length; j++) {
allRes.add(res[j]);
}
for (IPath r : type.getAdditionalResources())
allRes.add(r);
// 2. From InputTypes that other than the primary input type
if (type != getPrimaryInputType()) {
String var = type.getBuildVariable();
@ -1957,7 +1872,7 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
}
}
}
return (IPath[])allRes.toArray(new IPath[allRes.size()]);
return allRes.toArray(new IPath[allRes.size()]);
}
/* (non-Javadoc)
@ -1966,16 +1881,13 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
public String[] getAllDependencyExtensions() {
IInputType[] types = getInputTypes();
if (types != null && types.length > 0) {
List allExts = new ArrayList();
for (int i=0; i<types.length; i++) {
String[] exts = types[i].getDependencyExtensions(this);
for (int j=0; j<exts.length; j++) {
allExts.add(exts[j]);
}
}
if (allExts.size() > 0) {
return (String[])allExts.toArray(new String[allExts.size()]);
}
List<String> allExts = new ArrayList<String>();
for (IInputType t : types)
for (String s : t.getDependencyExtensions(this))
allExts.add(s);
if (allExts.size() > 0)
return allExts.toArray(new String[allExts.size()]);
}
// If none, use the header extensions specified for the Tool (backwards compatibility)
List<String> extsList = getHeaderExtensionsAttribute();
@ -1989,27 +1901,27 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
* @see org.eclipse.cdt.managedbuilder.core.ITool#getInterfaceExtension()
* @deprecated
*/
public List getInterfaceExtensions() {
public List<String> getInterfaceExtensions() {
return getHeaderExtensionsAttribute();
}
private List getHeaderExtensionsAttribute() {
private List<String> getHeaderExtensionsAttribute() {
if (interfaceExtensions == null || interfaceExtensions.size() == 0) {
// If I have a superClass, ask it
if (getSuperClass() != null) {
return ((Tool)getSuperClass()).getHeaderExtensionsAttribute();
} else {
if (interfaceExtensions == null) {
interfaceExtensions = new ArrayList();
interfaceExtensions = new ArrayList<String>();
}
}
}
return interfaceExtensions;
}
private List getInterfaceExtensionsList() {
private List<String> getInterfaceExtensionsList() {
if (interfaceExtensions == null) {
interfaceExtensions = new ArrayList();
interfaceExtensions = new ArrayList<String>();
}
return interfaceExtensions;
}
@ -2566,12 +2478,14 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
SupplierBasedCdtVariableSubstitutor macroSubstitutor,
IMacroContextInfoProvider provider) throws BuildException {
IOption[] opts = getOptions();
ArrayList flags = new ArrayList();
ArrayList<String> flags = new ArrayList<String>();
StringBuffer sb = new StringBuffer();
for (int index = 0; index < opts.length; index++) {
IOption option = getOptionToSet(opts[index], false);
for (IOption op : opts) {
IOption option = getOptionToSet(op, false);
if (option == null)
continue;
option.setValue(op.getValue());
sb.setLength( 0 );
// check to see if the option has an applicability calculator
@ -2893,23 +2807,16 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
if (isDirty) return true;
// Check my children
List typeElements = getInputTypeList();
Iterator iter = typeElements.listIterator();
while (iter.hasNext()) {
InputType type = (InputType) iter.next();
if (type.isDirty()) return true;
}
typeElements = getOutputTypeList();
iter = typeElements.listIterator();
while (iter.hasNext()) {
OutputType type = (OutputType) iter.next();
if (type.isDirty()) return true;
}
for (InputType type : getInputTypeList())
if (type.isDirty())
return true;
for (OutputType type : getOutputTypeList())
if (type.isDirty())
return true;
// Otherwise see if any options need saving
if (super.isDirty()) {
if (super.isDirty())
return true;
}
return isDirty;
}
@ -2923,18 +2830,11 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
super.setDirty(isDirty);
// Propagate "false" to the children
if (!isDirty) {
List typeElements = getInputTypeList();
Iterator iter = typeElements.listIterator();
while (iter.hasNext()) {
InputType type = (InputType) iter.next();
for (InputType type : getInputTypeList())
type.setDirty(false);
}
typeElements = getOutputTypeList();
iter = typeElements.listIterator();
while (iter.hasNext()) {
OutputType type = (OutputType) iter.next();
for (OutputType type : getOutputTypeList())
type.setDirty(false);
}
}
}
@ -2963,16 +2863,11 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
// Resolve HoldsOptions
super.resolveReferences();
// Call resolveReferences on our children
Iterator typeIter = getInputTypeList().iterator();
while (typeIter.hasNext()) {
InputType current = (InputType)typeIter.next();
for (InputType current : getInputTypeList())
current.resolveReferences();
}
typeIter = getOutputTypeList().iterator();
while (typeIter.hasNext()) {
OutputType current = (OutputType)typeIter.next();
for (OutputType current : getOutputTypeList())
current.resolveReferences();
}
}
}
@ -3110,7 +3005,7 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
if(path == null)
return;
if(envVarBuildPathList == null)
envVarBuildPathList = new ArrayList();
envVarBuildPathList = new ArrayList<IEnvVarBuildPath>();
envVarBuildPathList.add(path);
}
@ -3132,7 +3027,7 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
String high = (String) ManagedBuildManager.getExtensionToolMap()
.lastKey();
SortedMap subMap = null;
SortedMap<String, Tool> subMap = null;
if (superClassId.compareTo(high) <= 0) {
subMap = ManagedBuildManager.getExtensionToolMap().subMap(
superClassId, high + "\0"); //$NON-NLS-1$
@ -3162,12 +3057,7 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
String version = ManagedBuildManager
.getVersionFromIdAndVersion(superClassId);
Collection c = subMap.values();
ITool[] toolElements = (ITool[]) c.toArray(new ITool[c.size()]);
for (int i = 0; i < toolElements.length; i++) {
ITool toolElement = toolElements[i];
for (ITool toolElement : subMap.values()) {
if (ManagedBuildManager.getIdFromIdAndVersion(
toolElement.getId()).compareTo(baseId) > 0)
break;
@ -3381,18 +3271,13 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
return true;
// Check my children
List typeElements = getInputTypeList();
Iterator iter = typeElements.listIterator();
while (iter.hasNext()) {
InputType type = (InputType) iter.next();
if (type.needsRebuild()) return true;
}
typeElements = getOutputTypeList();
iter = typeElements.listIterator();
while (iter.hasNext()) {
OutputType type = (OutputType) iter.next();
if (type.needsRebuild()) return true;
}
for (InputType type : getInputTypeList())
if (type.needsRebuild())
return true;
for (OutputType type : getOutputTypeList())
if (type.needsRebuild())
return true;
return super.needsRebuild();
}
@ -3413,18 +3298,11 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
super.setRebuildState(rebuild);
if (!rebuild) {
List typeElements = getInputTypeList();
Iterator iter = typeElements.listIterator();
while (iter.hasNext()) {
InputType type = (InputType) iter.next();
for (InputType type : getInputTypeList())
type.setRebuildState(false);
}
typeElements = getOutputTypeList();
iter = typeElements.listIterator();
while (iter.hasNext()) {
OutputType type = (OutputType) iter.next();
for (OutputType type : getOutputTypeList())
type.setRebuildState(false);
}
}
}
}
@ -3442,7 +3320,7 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
if(fDataMapInited)
return;
List types = getLanguageInputTypes();
List<IInputType> types = getLanguageInputTypes();
// List datas = new ArrayList();
if(types != null){
@ -3520,11 +3398,11 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
return found;
}
private List getLanguageInputTypes(){
List list = new ArrayList();
IInputType types[] = getInputTypes();
for(int i = 0; i < types.length; i++){
InputType type = (InputType)types[i];
private List<IInputType> getLanguageInputTypes(){
List<IInputType> list = new ArrayList<IInputType>();
IInputType[] types = getInputTypes();
for(IInputType t : types){
InputType type = (InputType)t;
if(isLanguageInputType(type, false))
list.add(type);
}
@ -3532,9 +3410,9 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
if(types.length == 1){
list.add(types[0]);
} else {
for(int i = 0; i < types.length; i++){
if(types[i].getPrimaryInput()){
list.add(types[i]);
for(IInputType t : types){
if(t.getPrimaryInput()){
list.add(t);
break;
}
}
@ -3549,7 +3427,7 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
public CLanguageData[] getCLanguageDatas() {
initDataMap();
return (CLanguageData[])typeToDataMap.values().toArray(new BuildLanguageData[typeToDataMap.size()]);
return typeToDataMap.values().toArray(new BuildLanguageData[typeToDataMap.size()]);
}
public IInputType getInputTypeForCLanguageData(CLanguageData data) {
@ -3811,11 +3689,10 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
}
public IConfigurationElement getConverterModificationElement(ITool toTool){
Map map = ManagedBuildManager.getConversionElements(this);
Map<String, IConfigurationElement> map = ManagedBuildManager.getConversionElements(this);
IConfigurationElement element = null;
if(!map.isEmpty()){
for(Iterator iter = map.values().iterator(); iter.hasNext();){
IConfigurationElement el = (IConfigurationElement)iter.next();
for(IConfigurationElement el : map.values()){
String toId = el.getAttribute("toId"); //$NON-NLS-1$
ITool to = toTool;
if(toId != null){
@ -3868,13 +3745,13 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
supported = props.getSupportedTypeIds();
} else {
BooleanExpressionApplicabilityCalculator calc = getBooleanExpressionCalculator();
List list = new ArrayList();
List<String> list = new ArrayList<String>();
if(calc != null){
list.addAll(Arrays.asList(calc.getReferencedPropertyIds()));
}
list.addAll(Arrays.asList(super.getSupportedTypeIds()));
supported = (String[])list.toArray(new String[list.size()]);
supported = list.toArray(new String[list.size()]);
}
return supported;
}
@ -3886,13 +3763,13 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
supported = props.getSupportedValueIds(typeId);
} else {
BooleanExpressionApplicabilityCalculator calc = getBooleanExpressionCalculator();
List list = new ArrayList();
List<String> list = new ArrayList<String>();
if(calc != null){
list.addAll(Arrays.asList(calc.getReferencedValueIds(typeId)));
}
list.addAll(Arrays.asList(super.getSupportedValueIds(typeId)));
supported = (String[])list.toArray(new String[list.size()]);
supported = list.toArray(new String[list.size()]);
}
return supported;
}
@ -3912,13 +3789,13 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
errorParserIds = null;
}
void removeErrorParsers(Set set){
Set oldSet = contributeErrorParsers(null);
void removeErrorParsers(Set<String> set){
Set<String> oldSet = contributeErrorParsers(null);
if(oldSet == null)
oldSet = new HashSet();
oldSet = new HashSet<String>();
oldSet.removeAll(set);
setErrorParserList((String[])oldSet.toArray(new String[oldSet.size()]));
setErrorParserList(oldSet.toArray(new String[oldSet.size()]));
}
public void setErrorParserList(String[] ids) {
@ -4130,13 +4007,11 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
}
public IOption[] getOptionsOfType(int type){
IOption options[] = getOptions();
List list = new ArrayList();
for(int i = 0; i < options.length; i++){
List<IOption> list = new ArrayList<IOption>();
for(IOption op : getOptions()){
try {
if(options[i].getValueType() == type){
list.add(options[i]);
}
if(op.getValueType() == type)
list.add(op);
} catch (BuildException e) {
ManagedBuilderCorePlugin.log(e);
}
@ -4144,17 +4019,16 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch
return (Option[])list.toArray(new Option[list.size()]);
}
@SuppressWarnings("unchecked")
public void filterValues(int type, List values){
if(values.size() == 0)
return;
int opType = Option.getOppositeType(type);
if(opType != 0){
IOption opOptions[] = getOptionsOfType(opType);
Set filterSet = new HashSet();
for(int i = 0; i < opOptions.length; i++){
List opList = (List)opOptions[i].getValue();
filterSet.addAll(opList);
Set<Object> filterSet = new HashSet<Object>();
for(IOption op : getOptionsOfType(opType)){
filterSet.addAll((List<Object>)op.getValue());
}
if(filterSet.size() != 0){