From edd4b9819801606324e31bfedcbb489125b0eab7 Mon Sep 17 00:00:00 2001 From: Mikhail Sennikovsky Date: Fri, 30 Mar 2007 16:58:26 +0000 Subject: [PATCH] Fix for not persisting the configuration removal --- .../model/CConfigurationDescription.java | 5 +++++ .../model/CConfigurationSpecSettings.java | 3 +++ .../model/CProjectDescriptionManager.java | 16 ++++++++++++++++ 3 files changed, 24 insertions(+) diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CConfigurationDescription.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CConfigurationDescription.java index f676b5caff8..f450683e2a5 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CConfigurationDescription.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CConfigurationDescription.java @@ -402,6 +402,11 @@ public class CConfigurationDescription extends CDataProxyContainer implements IC // } catch (CoreException e) { // } + try { + getSpecSettings().removeConfiguration(); + } catch (CoreException e) { + CCorePlugin.log(e); + } ((CProjectDescription)getProjectDescription()).configurationRemoved(this); remove(); } diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CConfigurationSpecSettings.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CConfigurationSpecSettings.java index 73c58f3aa0a..12ec718d7fd 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CConfigurationSpecSettings.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CConfigurationSpecSettings.java @@ -262,6 +262,9 @@ public class CConfigurationSpecSettings implements ICSettingsStorage{ return fRootStorageElement; } + void removeConfiguration() throws CoreException{ + CProjectDescriptionManager.getInstance().removeStorage(fCfg.getProjectDescription(), fCfg.getId()); + } private CStorage getStorageBase() throws CoreException{ if(fStorage == null){ fStorage = new CStorage((InternalXmlStorageElement)getRootStorageElement()); diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java index 2e0824789a3..0aab0ef608d 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java @@ -1477,6 +1477,22 @@ public class CProjectDescriptionManager { return element; } + void removeStorage(ICSettingsStorage storage, String cfgId) throws CoreException{ + ICStorageElement rootElement = storage.getStorage(MODULE_ID, false); + if(rootElement != null){ + ICStorageElement children[] = rootElement.getChildren(); + + for(int i = 0; i < children.length; i++){ + if(CONFIGURATION.equals(children[i].getName()) + && cfgId.equals(children[i].getAttribute(CConfigurationSpecSettings.ID))){ + rootElement.removeChild(children[i]); + break; + } + } + } + } + + CConfigurationData loadData(ICConfigurationDescription des, IProgressMonitor monitor) throws CoreException{ if(monitor == null) monitor = new NullProgressMonitor();