From 546f7aa8cf4861075accf492c398c75a50d07a08 Mon Sep 17 00:00:00 2001 From: Mikhail Sennikovsky Date: Fri, 23 Mar 2007 16:39:44 +0000 Subject: [PATCH] 1. Update for built-in settings remove mechanism 2. Cfg-to-Cfg Des consisteny check --- .../core/ManagedBuildManager.java | 28 +++++++++++++++++-- .../core/settings/model/util/EntryStore.java | 6 ++-- .../core/settings/model/CLanguageSetting.java | 2 +- 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ManagedBuildManager.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ManagedBuildManager.java index 81f6d29c4b3..4c5f6ee72e7 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ManagedBuildManager.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ManagedBuildManager.java @@ -3556,12 +3556,25 @@ public class ManagedBuildManager extends AbstractCExtension implements IScannerI return null; } */ + private static final boolean TEST_CONSISTANCE = false; + public static IConfiguration getConfigurationForDescription(ICConfigurationDescription cfgDes){ + return getConfigurationForDescription(cfgDes, TEST_CONSISTANCE); + } + + public static IConfiguration getConfigurationForDescription(ICConfigurationDescription cfgDes, boolean checkConsistance){ if(cfgDes == null) return null; CConfigurationData cfgData = cfgDes.getConfigurationData(); - if(cfgData instanceof BuildConfigurationData) - return ((BuildConfigurationData)cfgData).getConfiguration(); + if(cfgData instanceof BuildConfigurationData){ + IConfiguration cfg = ((BuildConfigurationData)cfgData).getConfiguration(); + if(checkConsistance){ + if(cfgDes != getDescriptionForConfiguration(cfg, false)){ + throw new IllegalStateException(); + } + } + return cfg; + } return null; } @@ -3641,8 +3654,14 @@ public class ManagedBuildManager extends AbstractCExtension implements IScannerI return 0; } public static ICConfigurationDescription getDescriptionForConfiguration(IConfiguration cfg){ + return getDescriptionForConfiguration(cfg, TEST_CONSISTANCE); + } + + private static ICConfigurationDescription getDescriptionForConfiguration(IConfiguration cfg, boolean checkConsistance){ ICConfigurationDescription des = ((Configuration)cfg).getConfigurationDescription(); if(des == null){ + if(checkConsistance) + throw new IllegalStateException(); if(((Configuration)cfg).isPreference()){ try { des = CCorePlugin.getDefault().getPreferenceConfiguration(CFG_DATA_PROVIDER_ID); @@ -3657,6 +3676,11 @@ public class ManagedBuildManager extends AbstractCExtension implements IScannerI } } } + if(checkConsistance){ + if(cfg != getConfigurationForDescription(des, false)){ + throw new IllegalStateException(); + } + } return des; } diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/util/EntryStore.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/util/EntryStore.java index c9bd08c6329..42d112f6a5a 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/util/EntryStore.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/settings/model/util/EntryStore.java @@ -63,9 +63,9 @@ public class EntryStore { return (ICLanguageSettingEntry[])result.toArray(new ICLanguageSettingEntry[result.size()]); } - public boolean containsEntries(int kind){ - List list = getEntriesList(kind); - return list != null && list.size() != 0; + public boolean containsEntriesList(int kind){ + List list = getEntriesList(kind, false); + return list != null; } public ICLanguageSettingEntry[] getEntries(int kind){ diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CLanguageSetting.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CLanguageSetting.java index d3edfdfce90..51b8e8bd494 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CLanguageSetting.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CLanguageSetting.java @@ -309,7 +309,7 @@ public class CLanguageSetting extends CDataProxy implements // int kinds[] = KindBasedStore.getSupportedKinds(); for(int i = 0; i < kinds.length; i++){ - ICLanguageSettingEntry sortedEntries[] = store.containsEntries(kinds[i]) ? store.getEntries(kinds[i]) : null; + ICLanguageSettingEntry sortedEntries[] = store.containsEntriesList(kinds[i]) ? store.getEntries(kinds[i]) : null; if((kind & kinds[i]) != 0) data.setEntries(kinds[i], sortedEntries); }