mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-06-08 02:06:01 +02:00
Fix to the tool-chain modification functionality
This commit is contained in:
parent
cace97bf36
commit
155cfd6798
2 changed files with 45 additions and 17 deletions
|
@ -11,13 +11,15 @@
|
||||||
package org.eclipse.cdt.managedbuilder.internal.core;
|
package org.eclipse.cdt.managedbuilder.internal.core;
|
||||||
|
|
||||||
import org.eclipse.cdt.managedbuilder.core.IBuildObject;
|
import org.eclipse.cdt.managedbuilder.core.IBuildObject;
|
||||||
|
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
|
||||||
import org.eclipse.core.runtime.IConfigurationElement;
|
import org.eclipse.core.runtime.IConfigurationElement;
|
||||||
|
|
||||||
public class ConverterInfo {
|
public class ConverterInfo {
|
||||||
IBuildObject fFromObject;
|
private IBuildObject fFromObject;
|
||||||
IBuildObject fToObject;
|
private IBuildObject fConvertedFromObject;
|
||||||
IConfigurationElement fConverterElement;
|
private IBuildObject fToObject;
|
||||||
boolean fIsConversionPerformed;
|
private IConfigurationElement fConverterElement;
|
||||||
|
private boolean fIsConversionPerformed;
|
||||||
|
|
||||||
public ConverterInfo(IBuildObject fromObject, IBuildObject toObject, IConfigurationElement el){
|
public ConverterInfo(IBuildObject fromObject, IBuildObject toObject, IConfigurationElement el){
|
||||||
fFromObject = fromObject;
|
fFromObject = fromObject;
|
||||||
|
@ -36,4 +38,12 @@ public class ConverterInfo {
|
||||||
public IConfigurationElement getConverterElement(){
|
public IConfigurationElement getConverterElement(){
|
||||||
return fConverterElement;
|
return fConverterElement;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IBuildObject getConvertedFromObject(){
|
||||||
|
if(!fIsConversionPerformed){
|
||||||
|
fConvertedFromObject = ManagedBuildManager.convert(fFromObject, fToObject.getId(), true);
|
||||||
|
fIsConversionPerformed = true;
|
||||||
|
}
|
||||||
|
return fConvertedFromObject;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -732,7 +732,7 @@ public class FolderInfo extends ResourceInfo implements IFolderInfo {
|
||||||
boolean compatible = false;
|
boolean compatible = false;
|
||||||
|
|
||||||
if(tCh != null){
|
if(tCh != null){
|
||||||
if(getToolChainConverterElement(tCh) != null)
|
if(getToolChainConverterInfo(tCh) != null)
|
||||||
compatible = true;
|
compatible = true;
|
||||||
|
|
||||||
if(!compatible)
|
if(!compatible)
|
||||||
|
@ -769,11 +769,11 @@ public class FolderInfo extends ResourceInfo implements IFolderInfo {
|
||||||
if(extTc != null)
|
if(extTc != null)
|
||||||
newSuperClass = extTc;
|
newSuperClass = extTc;
|
||||||
ToolChain oldToolChain = toolChain;
|
ToolChain oldToolChain = toolChain;
|
||||||
IConfigurationElement el = getToolChainConverterElement(newSuperClass);
|
ConverterInfo cInfo = getToolChainConverterInfo(newSuperClass);
|
||||||
ITool oldTools[] = oldToolChain.getTools();
|
ITool oldTools[] = oldToolChain.getTools();
|
||||||
|
|
||||||
if(el != null){
|
if(cInfo != null){
|
||||||
updateToolChainWithConverter(el, newSuperClass, Id, name);
|
updateToolChainWithConverter(cInfo, Id, name);
|
||||||
} else {
|
} else {
|
||||||
updateToolChainWithProperties(usePrefTc ? null : newSuperClass, Id, name);
|
updateToolChainWithProperties(usePrefTc ? null : newSuperClass, Id, name);
|
||||||
}
|
}
|
||||||
|
@ -841,8 +841,8 @@ public class FolderInfo extends ResourceInfo implements IFolderInfo {
|
||||||
toolChain.propertiesChanged();
|
toolChain.propertiesChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
void updateToolChainWithConverter(IConfigurationElement el, IToolChain newSuperClass, String Id, String name) throws BuildException{
|
void updateToolChainWithConverter(ConverterInfo cInfo, String Id, String name) throws BuildException{
|
||||||
IBuildObject bo = ManagedBuildManager.convert(getToolChain(), newSuperClass.getId(), true);
|
IBuildObject bo = cInfo.getConvertedFromObject();
|
||||||
if(!(bo instanceof ToolChain)){
|
if(!(bo instanceof ToolChain)){
|
||||||
throw new BuildException(ManagedMakeMessages.getResourceString("FolderInfo.4")); //$NON-NLS-1$
|
throw new BuildException(ManagedMakeMessages.getResourceString("FolderInfo.4")); //$NON-NLS-1$
|
||||||
}
|
}
|
||||||
|
@ -858,6 +858,27 @@ public class FolderInfo extends ResourceInfo implements IFolderInfo {
|
||||||
tch.updateParentFolderInfo(this);
|
tch.updateParentFolderInfo(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private ConverterInfo getToolChainConverterInfo(IToolChain toTc){
|
||||||
|
IConfigurationElement el = getToolChainConverterElement(toTc);
|
||||||
|
IToolChain foundToTc = toTc;
|
||||||
|
if(el == null){
|
||||||
|
IToolChain[] tcs = ManagedBuildManager.findIdenticalToolChains(toTc);
|
||||||
|
for(int i = 0; i < tcs.length; i++){
|
||||||
|
foundToTc = tcs[i];
|
||||||
|
if(foundToTc == toTc)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
el = getToolChainConverterElement(foundToTc);
|
||||||
|
if(el != null)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(el != null)
|
||||||
|
return new ConverterInfo(getToolChain(), foundToTc, el);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
private IConfigurationElement getToolChainConverterElement(IToolChain tCh){
|
private IConfigurationElement getToolChainConverterElement(IToolChain tCh){
|
||||||
if(tCh == null)
|
if(tCh == null)
|
||||||
return null;
|
return null;
|
||||||
|
@ -922,12 +943,12 @@ public class FolderInfo extends ResourceInfo implements IFolderInfo {
|
||||||
List newTools = new ArrayList(added.length);
|
List newTools = new ArrayList(added.length);
|
||||||
for(Iterator iter = converterMap.values().iterator(); iter.hasNext();){
|
for(Iterator iter = converterMap.values().iterator(); iter.hasNext();){
|
||||||
ConverterInfo info = (ConverterInfo)iter.next();
|
ConverterInfo info = (ConverterInfo)iter.next();
|
||||||
if(info.fIsConversionPerformed){
|
if(info.getConvertedFromObject() instanceof Tool){
|
||||||
Tool newTool = (Tool)info.fToObject;
|
Tool newTool = (Tool)info.getConvertedFromObject();
|
||||||
newTool.updateParent(getToolChain());
|
newTool.updateParent(getToolChain());
|
||||||
newTools.add(newTool);
|
newTools.add(newTool);
|
||||||
} else {
|
} else {
|
||||||
remainingAdded.add(info.fToObject);
|
remainingAdded.add(info.getToObject());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1057,12 +1078,9 @@ public class FolderInfo extends ResourceInfo implements IFolderInfo {
|
||||||
List failed = new ArrayList();
|
List failed = new ArrayList();
|
||||||
for(Iterator iter = converterMap.values().iterator();iter.hasNext();){
|
for(Iterator iter = converterMap.values().iterator();iter.hasNext();){
|
||||||
ConverterInfo info = (ConverterInfo)iter.next();
|
ConverterInfo info = (ConverterInfo)iter.next();
|
||||||
IBuildObject converted = ManagedBuildManager.convert(info.getFromObject(), info.getToObject().getId(), true);
|
IBuildObject converted = info.getConvertedFromObject();
|
||||||
if(converted == null || !converted.getClass().equals(info.getFromObject().getClass())){
|
if(converted == null || !converted.getClass().equals(info.getFromObject().getClass())){
|
||||||
failed.add(info);
|
failed.add(info);
|
||||||
} else {
|
|
||||||
info.fToObject = converted;
|
|
||||||
info.fIsConversionPerformed = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return failed;
|
return failed;
|
||||||
|
|
Loading…
Add table
Reference in a new issue