From 6088b4e98032a04534d3fedc7c20ae63b787c990 Mon Sep 17 00:00:00 2001 From: Andrew Gvozdev Date: Sat, 13 Aug 2011 08:28:19 -0400 Subject: [PATCH] More detailed API to allow for separate persistence of attributes and entries --- ...AbstractLanguageSettingsOutputScanner.java | 8 +- .../LanguageSettingsSerializable.java | 76 +++++++++++-------- 2 files changed, 50 insertions(+), 34 deletions(-) diff --git a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/core/scannerconfig/AbstractLanguageSettingsOutputScanner.java b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/core/scannerconfig/AbstractLanguageSettingsOutputScanner.java index 3a19b8f093b..5c35b4dac98 100644 --- a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/core/scannerconfig/AbstractLanguageSettingsOutputScanner.java +++ b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/core/scannerconfig/AbstractLanguageSettingsOutputScanner.java @@ -807,15 +807,15 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett } @Override - public Element serialize(Element parentElement) { - Element elementProvider = super.serialize(parentElement); + public Element serializeAttributes(Element parentElement) { + Element elementProvider = super.serializeAttributes(parentElement); elementProvider.setAttribute(ATTR_EXPAND_RELATIVE_PATHS, Boolean.toString(isResolvingPaths)); return elementProvider; } @Override - public void load(Element providerNode) { - super.load(providerNode); + public void loadAttributes(Element providerNode) { + super.loadAttributes(providerNode); String expandRelativePathsValue = XmlUtil.determineAttributeValue(providerNode, ATTR_EXPAND_RELATIVE_PATHS); if (expandRelativePathsValue!=null) diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsSerializable.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsSerializable.java index 0d0f8aef5ee..abf370119f9 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsSerializable.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/language/settings/providers/LanguageSettingsSerializable.java @@ -235,6 +235,12 @@ public class LanguageSettingsSerializable extends LanguageSettingsBaseProvider { */ // provider/configuration/language/resource/entry public Element serialize(Element parentElement) { + Element elementProvider = serializeAttributes(parentElement); + serializeEntries(elementProvider); + return elementProvider; + } + + public Element serializeAttributes(Element parentElement) { Element elementProvider = XmlUtil.appendElement(parentElement, ELEM_PROVIDER, new String[] { ATTR_ID, getId(), ATTR_NAME, getName(), @@ -248,10 +254,13 @@ public class LanguageSettingsSerializable extends LanguageSettingsBaseProvider { XmlUtil.appendElement(elementProvider, ELEM_LANGUAGE_SCOPE, new String[] {ATTR_ID, langId}); } } + return elementProvider; + } + + public void serializeEntries(Element elementProvider) { for (Entry>> entryLang : fStorage.entrySet()) { serializeLanguage(elementProvider, entryLang); } - return elementProvider; } private void serializeLanguage(Element parentElement, Entry>> entryLang) { @@ -330,40 +339,47 @@ public class LanguageSettingsSerializable extends LanguageSettingsBaseProvider { languageScope = null; if (providerNode!=null) { - String providerId = XmlUtil.determineAttributeValue(providerNode, ATTR_ID); - String providerName = XmlUtil.determineAttributeValue(providerNode, ATTR_NAME); - String providerParameter = XmlUtil.determineAttributeValue(providerNode, ATTR_PARAMETER); - String providerStoreEntries = XmlUtil.determineAttributeValue(providerNode, ATTR_STORE_ENTRIES); + loadAttributes(providerNode); + loadEntries(providerNode); + } + } - this.setId(providerId); - this.setName(providerName); - this.setCustomParameter(providerParameter); - this.setEntriesStorageWithProject(VALUE_PROJECT.equals(providerStoreEntries)); + public void loadAttributes(Element providerNode) { + String providerId = XmlUtil.determineAttributeValue(providerNode, ATTR_ID); + String providerName = XmlUtil.determineAttributeValue(providerNode, ATTR_NAME); + String providerParameter = XmlUtil.determineAttributeValue(providerNode, ATTR_PARAMETER); + String providerStoreEntries = XmlUtil.determineAttributeValue(providerNode, ATTR_STORE_ENTRIES); - List settings = new ArrayList(); - NodeList nodes = providerNode.getChildNodes(); - for (int i=0;i settings = new ArrayList(); + NodeList nodes = providerNode.getChildNodes(); + for (int i=0;i0) { - setSettingEntriesInternal(null, null, settings); - } + } + // set settings + if (settings.size()>0) { + setSettingEntriesInternal(null, null, settings); } }