mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
bug 284699: Added some annotations/comments
This commit is contained in:
parent
533c75662e
commit
c7adafb18b
3 changed files with 80 additions and 75 deletions
|
@ -8,15 +8,16 @@
|
|||
* Contributors:
|
||||
* Intel Corporation - Initial API and implementation
|
||||
* James Blackburn (Broadcom Corp.)
|
||||
* Christian Walther (Indel AG) - [335344] test for changing language IDs
|
||||
* Raphael Zulliger (Indel AG) - [284699][237771] test having macros with same
|
||||
* name but different values in same project
|
||||
* Christian Walther (Indel AG) - bug 335344: test for changing language IDs
|
||||
* Raphael Zulliger (Indel AG) - bug 284699: test having macros with same
|
||||
* name but different values in same project
|
||||
* configuration
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.core.settings.model;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
|
||||
import junit.framework.TestSuite;
|
||||
|
||||
import org.eclipse.cdt.core.dom.IPDOMManager;
|
||||
|
@ -33,11 +34,11 @@ import org.eclipse.core.runtime.Path;
|
|||
public class ExternalSettingsProviderTests extends BaseTestCase{
|
||||
private static final String PROJ_NAME_PREFIX = "espt_";
|
||||
ICProject p1, p2, p3, p4, p5, p6;
|
||||
|
||||
|
||||
public static TestSuite suite() {
|
||||
return suite(ExternalSettingsProviderTests.class, "_");
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void setUp() throws Exception {
|
||||
p1 = CProjectHelper.createNewStileCProject(PROJ_NAME_PREFIX + "a", IPDOMManager.ID_NO_INDEXER);
|
||||
|
@ -47,7 +48,7 @@ public class ExternalSettingsProviderTests extends BaseTestCase{
|
|||
p5 = CProjectHelper.createNewStileCProject(PROJ_NAME_PREFIX + "e", IPDOMManager.ID_NO_INDEXER);
|
||||
p6 = CProjectHelper.createNewStileCProject(PROJ_NAME_PREFIX + "f", IPDOMManager.ID_NO_INDEXER);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Test adding a external setting provider to p1 -- the contributed paths should appear
|
||||
* @throws Exception
|
||||
|
@ -56,7 +57,7 @@ public class ExternalSettingsProviderTests extends BaseTestCase{
|
|||
TestExtSettingsProvider.setVariantNum(0);
|
||||
CoreModel model = CoreModel.getDefault();
|
||||
IProject project = p1.getProject();
|
||||
|
||||
|
||||
ICProjectDescription des = model.getProjectDescription(project);
|
||||
ICConfigurationDescription cfgDes = des.getConfigurations()[0];
|
||||
ICLanguageSetting ls = cfgDes.getLanguageSettingForFile(new Path("a.c"), true);
|
||||
|
@ -87,44 +88,44 @@ public class ExternalSettingsProviderTests extends BaseTestCase{
|
|||
new CSourceEntry(project.getFullPath().append("sp_b"), null, 0),
|
||||
};
|
||||
assertTrue(Arrays.equals(newExpectedSourceEntries, sourceEntries));
|
||||
|
||||
|
||||
// insert entry into the mix; check that the new entry appears
|
||||
ICLanguageSettingEntry[] newEntries = new ICLanguageSettingEntry[3];
|
||||
newEntries[0] = expectedEntries[1];
|
||||
newEntries[1] = new CIncludePathEntry("added", 0);
|
||||
newEntries[2] = expectedEntries[0];
|
||||
|
||||
|
||||
ls.setSettingEntries(ICSettingEntry.INCLUDE_PATH, newEntries);
|
||||
entries = ls.getSettingEntries(ICSettingEntry.INCLUDE_PATH);
|
||||
|
||||
|
||||
assertEquals(3, entries.length);
|
||||
assertTrue(Arrays.equals(newEntries, entries));
|
||||
|
||||
|
||||
newEntries = new ICLanguageSettingEntry[1];
|
||||
newEntries[0] = expectedEntries[0];
|
||||
ls.setSettingEntries(ICSettingEntry.INCLUDE_PATH, newEntries);
|
||||
entries = ls.getSettingEntries(ICSettingEntry.INCLUDE_PATH);
|
||||
|
||||
|
||||
assertEquals(1, entries.length);
|
||||
assertTrue(Arrays.equals(newEntries, entries));
|
||||
|
||||
|
||||
newEntries = new ICLanguageSettingEntry[0];
|
||||
ls.setSettingEntries(ICSettingEntry.INCLUDE_PATH, newEntries);
|
||||
entries = ls.getSettingEntries(ICSettingEntry.INCLUDE_PATH);
|
||||
|
||||
|
||||
assertEquals(0, entries.length);
|
||||
|
||||
|
||||
ls.setSettingEntries(ICSettingEntry.INCLUDE_PATH, (ICLanguageSettingEntry[])null);
|
||||
entries = ls.getSettingEntries(ICSettingEntry.INCLUDE_PATH);
|
||||
assertEquals(2, entries.length);
|
||||
assertTrue(Arrays.equals(expectedEntries, entries));
|
||||
}
|
||||
|
||||
|
||||
public void testCreateCfg() throws Exception {
|
||||
TestExtSettingsProvider.setVariantNum(0);
|
||||
CoreModel model = CoreModel.getDefault();
|
||||
IProject project = p2.getProject();
|
||||
|
||||
|
||||
ICProjectDescription des = model.getProjectDescription(project);
|
||||
ICConfigurationDescription cfgDes = des.getConfigurations()[0];
|
||||
ICLanguageSetting ls = cfgDes.getLanguageSettingForFile(new Path("a.c"), true);
|
||||
|
@ -138,24 +139,24 @@ public class ExternalSettingsProviderTests extends BaseTestCase{
|
|||
assertTrue(Arrays.equals(expectedSourceEntries, sourceEntries));
|
||||
String[] extPIds = new String[]{CTestPlugin.PLUGIN_ID + ".testExtSettingsProvider"};
|
||||
cfgDes.setExternalSettingsProviderIds(extPIds);
|
||||
|
||||
|
||||
model.setProjectDescription(project, des);
|
||||
|
||||
|
||||
des = model.getProjectDescription(project, false);
|
||||
cfgDes = des.getConfigurations()[0];
|
||||
assertEquals(extPIds.length, cfgDes.getExternalSettingsProviderIds().length);
|
||||
assertTrue(Arrays.equals(extPIds, cfgDes.getExternalSettingsProviderIds()));
|
||||
|
||||
|
||||
des = model.getProjectDescription(project);
|
||||
cfgDes = des.getConfigurations()[0];
|
||||
assertEquals(extPIds.length, cfgDes.getExternalSettingsProviderIds().length);
|
||||
assertTrue(Arrays.equals(extPIds, cfgDes.getExternalSettingsProviderIds()));
|
||||
|
||||
|
||||
String newCfgId = CDataUtil.genId(null);
|
||||
ICConfigurationDescription cfgDes2 = des.createConfiguration(newCfgId, "cfg2", cfgDes);
|
||||
assertEquals(extPIds.length, cfgDes2.getExternalSettingsProviderIds().length);
|
||||
assertTrue(Arrays.equals(extPIds, cfgDes2.getExternalSettingsProviderIds()));
|
||||
|
||||
|
||||
ls = cfgDes2.getLanguageSettingForFile(new Path("a.c"), true);
|
||||
entries = ls.getSettingEntries(ICSettingEntry.INCLUDE_PATH);
|
||||
ICLanguageSettingEntry[] expectedEntries = new ICLanguageSettingEntry[]{
|
||||
|
@ -165,14 +166,14 @@ public class ExternalSettingsProviderTests extends BaseTestCase{
|
|||
assertTrue(Arrays.equals(expectedEntries, entries));
|
||||
|
||||
}
|
||||
|
||||
|
||||
public void testProviderUpdate() throws Exception {
|
||||
TestExtSettingsProvider.setVariantNum(0);
|
||||
|
||||
CoreModel model = CoreModel.getDefault();
|
||||
ICProjectDescriptionManager mngr = model.getProjectDescriptionManager();
|
||||
IProject project = p2.getProject();
|
||||
|
||||
|
||||
ICProjectDescription des = model.getProjectDescription(project);
|
||||
ICConfigurationDescription cfgDes = des.getConfigurations()[0];
|
||||
ICLanguageSetting ls = cfgDes.getLanguageSettingForFile(new Path("a.c"), true);
|
||||
|
@ -186,7 +187,7 @@ public class ExternalSettingsProviderTests extends BaseTestCase{
|
|||
assertTrue(Arrays.equals(expectedSourceEntries, sourceEntries));
|
||||
String[] extPIds = new String[]{CTestPlugin.PLUGIN_ID + ".testExtSettingsProvider"};
|
||||
cfgDes.setExternalSettingsProviderIds(extPIds);
|
||||
|
||||
|
||||
|
||||
ls = cfgDes.getLanguageSettingForFile(new Path("a.c"), true);
|
||||
entries = ls.getSettingEntries(ICSettingEntry.INCLUDE_PATH);
|
||||
|
@ -197,19 +198,19 @@ public class ExternalSettingsProviderTests extends BaseTestCase{
|
|||
assertTrue(Arrays.equals(expectedEntries, entries));
|
||||
|
||||
model.setProjectDescription(project, des);
|
||||
|
||||
|
||||
des = model.getProjectDescription(project);
|
||||
cfgDes = des.getConfigurations()[0];
|
||||
ls = cfgDes.getLanguageSettingForFile(new Path("a.c"), true);
|
||||
entries = ls.getSettingEntries(ICSettingEntry.INCLUDE_PATH);
|
||||
assertTrue(Arrays.equals(expectedEntries, entries));
|
||||
|
||||
|
||||
ICLanguageSettingEntry[] expectedEntries2 = new ICLanguageSettingEntry[]{
|
||||
new CIncludePathEntry("ip_a2", 0),
|
||||
new CIncludePathEntry("ip_b2", 0),
|
||||
};
|
||||
TestExtSettingsProvider.setVariantNum(1);
|
||||
|
||||
|
||||
mngr.updateExternalSettingsProviders(extPIds, null);
|
||||
des = model.getProjectDescription(project);
|
||||
cfgDes = des.getConfigurations()[0];
|
||||
|
@ -217,14 +218,14 @@ public class ExternalSettingsProviderTests extends BaseTestCase{
|
|||
entries = ls.getSettingEntries(ICSettingEntry.INCLUDE_PATH);
|
||||
assertTrue(Arrays.equals(expectedEntries2, entries));
|
||||
}
|
||||
|
||||
|
||||
public void testRestoreDefaults() throws Exception {
|
||||
TestExtSettingsProvider.setVariantNum(0);
|
||||
|
||||
CoreModel model = CoreModel.getDefault();
|
||||
ICProjectDescriptionManager mngr = model.getProjectDescriptionManager();
|
||||
IProject project = p4.getProject();
|
||||
|
||||
|
||||
ICProjectDescription des = model.getProjectDescription(project);
|
||||
ICConfigurationDescription cfgDes = des.getConfigurations()[0];
|
||||
ICLanguageSetting ls = cfgDes.getLanguageSettingForFile(new Path("a.c"), true);
|
||||
|
@ -238,7 +239,7 @@ public class ExternalSettingsProviderTests extends BaseTestCase{
|
|||
assertTrue(Arrays.equals(expectedSourceEntries, sourceEntries));
|
||||
String[] extPIds = new String[]{CTestPlugin.PLUGIN_ID + ".testExtSettingsProvider"};
|
||||
cfgDes.setExternalSettingsProviderIds(extPIds);
|
||||
|
||||
|
||||
|
||||
ls = cfgDes.getLanguageSettingForFile(new Path("a.c"), true);
|
||||
entries = ls.getSettingEntries(ICSettingEntry.INCLUDE_PATH);
|
||||
|
@ -249,7 +250,7 @@ public class ExternalSettingsProviderTests extends BaseTestCase{
|
|||
assertTrue(Arrays.equals(expectedEntries, entries));
|
||||
|
||||
model.setProjectDescription(project, des);
|
||||
|
||||
|
||||
des = model.getProjectDescription(project);
|
||||
cfgDes = des.getConfigurations()[0];
|
||||
ls = cfgDes.getLanguageSettingForFile(new Path("a.c"), true);
|
||||
|
@ -263,7 +264,7 @@ public class ExternalSettingsProviderTests extends BaseTestCase{
|
|||
cfgDes.setSourceEntries(null);
|
||||
expectedSourceEntries = new ICSourceEntry[]{
|
||||
new CSourceEntry(project.getFullPath().append("sp_a"), null, 0),
|
||||
new CSourceEntry(project.getFullPath().append("sp_b"), null, 0),
|
||||
new CSourceEntry(project.getFullPath().append("sp_b"), null, 0),
|
||||
};
|
||||
sourceEntries = cfgDes.getSourceEntries();
|
||||
assertEquals(2, sourceEntries.length);
|
||||
|
@ -329,7 +330,7 @@ public class ExternalSettingsProviderTests extends BaseTestCase{
|
|||
assertTrue(Arrays.equals(cfgDes.getSourceEntries(), makeProjectRelativePath(project, provided)));
|
||||
break;
|
||||
default:
|
||||
fail("Unhandled entry_kind: " + kind);
|
||||
fail("Unhandled entry_kind: " + kind);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -345,11 +346,11 @@ public class ExternalSettingsProviderTests extends BaseTestCase{
|
|||
for (int i = 0; i < input.length; i ++) {
|
||||
switch (input[i].getKind()) {
|
||||
case ICSettingEntry.OUTPUT_PATH:
|
||||
out[i] = new COutputEntry(project.getFullPath().append(input[i].getValue()),
|
||||
out[i] = new COutputEntry(project.getFullPath().append(input[i].getValue()),
|
||||
((ICOutputEntry)input[i]).getExclusionPatterns(), input[i].getFlags());
|
||||
break;
|
||||
case ICSettingEntry.SOURCE_PATH:
|
||||
out[i] = new CSourceEntry(project.getFullPath().append(input[i].getValue()),
|
||||
out[i] = new CSourceEntry(project.getFullPath().append(input[i].getValue()),
|
||||
((ICSourceEntry)input[i]).getExclusionPatterns(), input[i].getFlags());
|
||||
break;
|
||||
}
|
||||
|
@ -366,14 +367,14 @@ public class ExternalSettingsProviderTests extends BaseTestCase{
|
|||
CoreModel model = CoreModel.getDefault();
|
||||
ICProjectDescriptionManager mngr = model.getProjectDescriptionManager();
|
||||
IProject project = p5.getProject();
|
||||
|
||||
|
||||
// add external settings provider
|
||||
ICProjectDescription des = model.getProjectDescription(project);
|
||||
ICConfigurationDescription cfgDes = des.getConfigurations()[0];
|
||||
String[] extPIds = new String[]{TestExtSettingsProvider.TEST_EXTERNAL_PROVIDER_ID};
|
||||
cfgDes.setExternalSettingsProviderIds(extPIds);
|
||||
model.setProjectDescription(project, des);
|
||||
|
||||
|
||||
// read out the settings it caused
|
||||
des = model.getProjectDescription(project, false);
|
||||
cfgDes = des.getConfigurations()[0];
|
||||
|
@ -382,31 +383,31 @@ public class ExternalSettingsProviderTests extends BaseTestCase{
|
|||
for (ICLanguageSetting s: root.getLanguageSettings()) {
|
||||
languageSettingsById.put(s.getLanguageId(), s);
|
||||
}
|
||||
|
||||
|
||||
ICLanguageSetting ls;
|
||||
ICLanguageSettingEntry[] entries;
|
||||
ICLanguageSettingEntry[] expectedEntriesSet = new ICLanguageSettingEntry[]{
|
||||
new CMacroEntry("m_c", "mv_c", 0)
|
||||
};
|
||||
ICLanguageSettingEntry[] expectedEntriesUnset = new ICLanguageSettingEntry[] {};
|
||||
|
||||
|
||||
// setting should be present for assembly but not for C
|
||||
ls = languageSettingsById.get("org.eclipse.cdt.core.assembly");
|
||||
assertNotNull(ls);
|
||||
entries = ls.getSettingEntries(ICSettingEntry.MACRO);
|
||||
assertEquals(1, entries.length);
|
||||
assertTrue(Arrays.equals(expectedEntriesSet, entries));
|
||||
|
||||
|
||||
ls = languageSettingsById.get("org.eclipse.cdt.core.gcc");
|
||||
assertNotNull(ls);
|
||||
entries = ls.getSettingEntries(ICSettingEntry.MACRO);
|
||||
assertEquals(0, entries.length);
|
||||
assertTrue(Arrays.equals(expectedEntriesUnset, entries));
|
||||
|
||||
|
||||
// update settings provider
|
||||
TestExtSettingsProvider.setVariantNum(3);
|
||||
mngr.updateExternalSettingsProviders(extPIds, null);
|
||||
|
||||
|
||||
// read out the settings it caused
|
||||
des = model.getProjectDescription(project, false);
|
||||
cfgDes = des.getConfigurations()[0];
|
||||
|
@ -415,14 +416,14 @@ public class ExternalSettingsProviderTests extends BaseTestCase{
|
|||
for (ICLanguageSetting s: root.getLanguageSettings()) {
|
||||
languageSettingsById.put(s.getLanguageId(), s);
|
||||
}
|
||||
|
||||
|
||||
// setting should be present for both now
|
||||
ls = languageSettingsById.get("org.eclipse.cdt.core.gcc");
|
||||
assertNotNull(ls);
|
||||
entries = ls.getSettingEntries(ICSettingEntry.MACRO);
|
||||
assertEquals(1, entries.length);
|
||||
assertTrue(Arrays.equals(expectedEntriesSet, entries));
|
||||
|
||||
|
||||
ls = languageSettingsById.get("org.eclipse.cdt.core.assembly");
|
||||
assertNotNull(ls);
|
||||
entries = ls.getSettingEntries(ICSettingEntry.MACRO);
|
||||
|
@ -440,7 +441,7 @@ public class ExternalSettingsProviderTests extends BaseTestCase{
|
|||
CoreModel model = CoreModel.getDefault();
|
||||
ICProjectDescriptionManager mngr = model.getProjectDescriptionManager();
|
||||
IProject project = p6.getProject();
|
||||
|
||||
|
||||
// add external settings provider
|
||||
ICProjectDescription des = model.getProjectDescription(project);
|
||||
ICConfigurationDescription cfgDes = des.getConfigurations()[0];
|
||||
|
@ -448,7 +449,7 @@ public class ExternalSettingsProviderTests extends BaseTestCase{
|
|||
cfgDes.setExternalSettingsProviderIds(extPIds);
|
||||
ICFolderDescription root = cfgDes.getRootFolderDescription();
|
||||
model.setProjectDescription(project, des);
|
||||
|
||||
|
||||
// read out the settings it caused
|
||||
des = model.getProjectDescription(project, false);
|
||||
cfgDes = des.getConfigurations()[0];
|
||||
|
|
|
@ -7,9 +7,9 @@
|
|||
*
|
||||
* Contributors:
|
||||
* Intel Corporation - Initial API and implementation
|
||||
* Christian Walther (Indel AG) - [335344] test for changing language IDs
|
||||
* Raphael Zulliger (Indel AG) - [284699][237771] test having macros with same
|
||||
* name but different values in same project
|
||||
* Christian Walther (Indel AG) - bug 335344: test for changing language IDs
|
||||
* Raphael Zulliger (Indel AG) - bug 284699: test having macros with same
|
||||
* name but different values in same project
|
||||
* configuration
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.core.settings.model;
|
||||
|
@ -19,7 +19,7 @@ import org.eclipse.cdt.core.testplugin.CTestPlugin;
|
|||
import org.eclipse.core.resources.IProject;
|
||||
|
||||
public class TestExtSettingsProvider extends CExternalSettingProvider {
|
||||
|
||||
|
||||
public static final String TEST_EXTERNAL_PROVIDER_ID = CTestPlugin.PLUGIN_ID + ".testExtSettingsProvider";
|
||||
|
||||
private static CExternalSetting[] SETTINGS_1 = new CExternalSetting[]{
|
||||
|
@ -42,7 +42,7 @@ public class TestExtSettingsProvider extends CExternalSettingProvider {
|
|||
new COutputEntry("op_b", null, 0),
|
||||
})
|
||||
};
|
||||
|
||||
|
||||
private static CExternalSetting[] SETTINGS_2 = new CExternalSetting[]{
|
||||
new CExternalSetting(null, null, null, new ICSettingEntry[]{
|
||||
new CIncludePathEntry("ip_a2", 0),
|
||||
|
@ -75,7 +75,7 @@ public class TestExtSettingsProvider extends CExternalSettingProvider {
|
|||
}
|
||||
)
|
||||
};
|
||||
|
||||
|
||||
private static CExternalSetting[] SETTINGS_4 = new CExternalSetting[]{
|
||||
new CExternalSetting(
|
||||
new String[]{
|
||||
|
@ -109,28 +109,28 @@ public class TestExtSettingsProvider extends CExternalSettingProvider {
|
|||
}
|
||||
)
|
||||
};
|
||||
|
||||
|
||||
public static final CExternalSetting[][] SETTINGS_VARIANTS = new CExternalSetting[][]{
|
||||
SETTINGS_1,
|
||||
SETTINGS_1,
|
||||
SETTINGS_2,
|
||||
SETTINGS_3,
|
||||
SETTINGS_4,
|
||||
SETTINGS_5};
|
||||
|
||||
private static int variantNum;
|
||||
|
||||
|
||||
@Override
|
||||
public CExternalSetting[] getSettings(IProject project,
|
||||
ICConfigurationDescription cfg) {
|
||||
return SETTINGS_VARIANTS[variantNum].clone();
|
||||
}
|
||||
|
||||
|
||||
public static void setVariantNum(int num){
|
||||
if(num < 0 || num >= SETTINGS_VARIANTS.length)
|
||||
throw new IllegalArgumentException();
|
||||
variantNum = num;
|
||||
}
|
||||
|
||||
|
||||
public static int getVariantNum(){
|
||||
return variantNum;
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
*
|
||||
* Contributors:
|
||||
* Intel Corporation - Initial API and implementation
|
||||
* Raphael Zulliger (Indel AG) - [284699][237771] fixing issues when using same
|
||||
* Raphael Zulliger (Indel AG) - bug 284699: fixing issues when using same
|
||||
* macro names with different values
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.core.settings.model.util;
|
||||
|
@ -21,14 +21,18 @@ import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
|
|||
import org.eclipse.cdt.core.settings.model.ICSettingEntry;
|
||||
import org.eclipse.core.runtime.IPath;
|
||||
|
||||
/**
|
||||
* Cache of setting entries stored with multidimentional maps.
|
||||
* See bug 284699 comment 7 for a possible insight into it.
|
||||
*/
|
||||
public class CSettingEntryFactory {
|
||||
private static final HashSet<IPath> EMPTY_SET = new HashSet<IPath>(0);
|
||||
|
||||
|
||||
private KindBasedStore<HashMap<String, ?>> fStore = new KindBasedStore<HashMap<String, ?>>(false);
|
||||
|
||||
private <K, V> HashMap<String, HashMap<K, V>> getNameMap(int kind, boolean create, HashMap<K, V> type){
|
||||
|
||||
private <K, V> HashMap<String, HashMap<K, V>> getNameMap(int kind, boolean create){
|
||||
@SuppressWarnings("unchecked")
|
||||
HashMap<String, HashMap<K, V>> map = (HashMap<String, HashMap<K, V>>) fStore.get(kind);
|
||||
HashMap<String/*name*/, HashMap<K, V>> map = (HashMap<String, HashMap<K, V>>) fStore.get(kind);
|
||||
if(map == null && create){
|
||||
map = new HashMap<String, HashMap<K, V>>();
|
||||
fStore.put(kind, map);
|
||||
|
@ -36,18 +40,18 @@ public class CSettingEntryFactory {
|
|||
return map;
|
||||
}
|
||||
|
||||
private <K, V> HashMap<K, V> getValueMap(String name, boolean create, HashMap<K, V> type){
|
||||
HashMap<String, HashMap<K, V>> nameMap = getNameMap(ICSettingEntry.MACRO, create, (HashMap<K, V>)null);
|
||||
private HashMap<String, HashMap<Integer, ICSettingEntry>> getValueMap(String name, boolean create){
|
||||
HashMap<String/*name*/, HashMap<String/*value*/, HashMap<Integer/*flags*/, ICSettingEntry>>> nameMap = getNameMap(ICSettingEntry.MACRO, create);
|
||||
if(nameMap != null){
|
||||
return getMap(nameMap, name, create);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private HashMap<Integer, ICSettingEntry> getFlagMap(int kind, String name, String value, IPath[] exclusionPatters, boolean create){
|
||||
private HashMap<Integer, ICSettingEntry> getFlagMap(int kind, String name, String value, IPath[] exclusionPatterns, boolean create){
|
||||
switch(kind){
|
||||
case ICSettingEntry.MACRO:
|
||||
HashMap<String, HashMap<Integer, ICSettingEntry>> valueMap = getValueMap(name, create, (HashMap<String, HashMap<Integer, ICSettingEntry>>)null);
|
||||
HashMap<String, HashMap<Integer, ICSettingEntry>> valueMap = getValueMap(name, create);
|
||||
if(valueMap != null){
|
||||
return getMap(valueMap, value, create);
|
||||
}
|
||||
|
@ -56,27 +60,27 @@ public class CSettingEntryFactory {
|
|||
case ICSettingEntry.OUTPUT_PATH:
|
||||
HashMap<HashSet<IPath>, HashMap<Integer, ICSettingEntry>> excPatternMap = getExclusionPatternsMap(kind, name, create);
|
||||
if(excPatternMap != null){
|
||||
HashSet<IPath> setKey = exclusionPatters == null || exclusionPatters.length == 0 ? EMPTY_SET : new HashSet<IPath>(Arrays.asList(exclusionPatters));
|
||||
HashSet<IPath> setKey = exclusionPatterns == null || exclusionPatterns.length == 0 ? EMPTY_SET : new HashSet<IPath>(Arrays.asList(exclusionPatterns));
|
||||
return getMap(excPatternMap, setKey, create);
|
||||
}
|
||||
return null;
|
||||
default:
|
||||
HashMap<String, HashMap<Integer, ICSettingEntry>> nameMap = getNameMap(kind, create, (HashMap<Integer, ICSettingEntry>)null);
|
||||
HashMap<String, HashMap<Integer, ICSettingEntry>> nameMap = getNameMap(kind, create);
|
||||
if(nameMap != null){
|
||||
return getMap(nameMap, name, create);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private HashMap<HashSet<IPath>, HashMap<Integer, ICSettingEntry>> getExclusionPatternsMap(int kind, String name, boolean create){
|
||||
HashMap<String, HashMap<HashSet<IPath>, HashMap<Integer, ICSettingEntry>>> nameMap = getNameMap(kind, create, (HashMap<HashSet<IPath>, HashMap<Integer, ICSettingEntry>>)null);
|
||||
HashMap<String/*name*/, HashMap<HashSet<IPath>/*exclusionPatterns*/, HashMap<Integer/*flags*/, ICSettingEntry>>> nameMap = getNameMap(kind, create);
|
||||
if(nameMap != null){
|
||||
return getMap(nameMap, name, create);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
private static <Key, K, V> HashMap<K, V> getMap(HashMap<Key, HashMap<K, V>> container, Key key, boolean create){
|
||||
HashMap<K, V> map = container.get(key);
|
||||
if(map == null && create){
|
||||
|
@ -92,10 +96,10 @@ public class CSettingEntryFactory {
|
|||
case ICSettingEntry.SOURCE_PATH:
|
||||
return getEntry(entry.getKind(), entry.getName(), null, ((ICExclusionPatternPathEntry)entry).getExclusionPatterns(), entry.getFlags(), entry, true);
|
||||
default:
|
||||
return getLanguageSettingEntry((ICLanguageSettingEntry)entry);
|
||||
return getLanguageSettingEntry((ICLanguageSettingEntry)entry);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public ICLanguageSettingEntry getLanguageSettingEntry(ICLanguageSettingEntry lEntry){
|
||||
return (ICLanguageSettingEntry)getEntry(lEntry.getKind(), lEntry.getName(), lEntry.getValue(), null, lEntry.getFlags(), lEntry, true);
|
||||
}
|
||||
|
@ -117,7 +121,7 @@ public class CSettingEntryFactory {
|
|||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
public void clear(){
|
||||
fStore.clear();
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue