From a16b6dd5ded212e0691cb36a906b8124b8906b60 Mon Sep 17 00:00:00 2001 From: Mikhail Sennikovsky Date: Fri, 1 Jun 2007 11:55:58 +0000 Subject: [PATCH] 1. Fix for the [Bug 190432] Path entries corrupted with old style projects from Gerhard Schaber (Windriver) 2. Additional fixes for the backward compatibility mechanism --- .../PathEntryConfigurationDataProvider.java | 34 ++++++++++++++----- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/PathEntryConfigurationDataProvider.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/PathEntryConfigurationDataProvider.java index 5387f3c685b..4d5ba841b8f 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/PathEntryConfigurationDataProvider.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/PathEntryConfigurationDataProvider.java @@ -236,11 +236,7 @@ public class PathEntryConfigurationDataProvider extends throws CoreException { //TODO: check external/reference info here as well. if(!fFactory.isModified(base)){ - try { - return createData(des); - } catch (Exception e){ - } - return base; + return createData(des, base, false); } @@ -254,14 +250,31 @@ public class PathEntryConfigurationDataProvider extends List list = new ArrayList(); list.addAll(Arrays.asList(entries)); for(int i = 0; i < curRawEntries.length; i++){ - if(curRawEntries[i].getEntryKind() != IPathEntry.CDT_CONTAINER){ + if(curRawEntries[i].getEntryKind() == IPathEntry.CDT_CONTAINER){ list.add(curRawEntries[i]); } } IPathEntry[] newEntries = (IPathEntry[])list.toArray(new IPathEntry[list.size()]); PathEntryManager.getDefault().setRawPathEntries(cproject, newEntries, new NullProgressMonitor()); - return createData(des); + return createData(des, base, false); + } + + private CConfigurationData createData(ICConfigurationDescription des, CConfigurationData fallbackData, boolean modifiedFlag) throws CoreException { + CConfigurationData dataToReturn; + try { + dataToReturn = createData(des); + } catch (Exception e){ + if(fallbackData != null) + dataToReturn = fallbackData; + else if (e instanceof CoreException) + throw (CoreException)e; + else + throw ExceptionFactory.createCoreException(e); + } + fFactory.setModified(dataToReturn, modifiedFlag); + return dataToReturn; + } public CConfigurationData createConfiguration( @@ -337,7 +350,7 @@ public class PathEntryConfigurationDataProvider extends public CConfigurationData loadConfiguration(ICConfigurationDescription des, IProgressMonitor monitor) throws CoreException { - return createData(des); + return createData(des, null, false); } public void removeConfiguration(ICConfigurationDescription des, @@ -346,4 +359,9 @@ public class PathEntryConfigurationDataProvider extends //do nothing for now } + public void dataCached(ICConfigurationDescription cfgDes, + CConfigurationData data, IProgressMonitor monitor) { + fFactory.setModified(data, false); + } + }